mirror of
https://github.com/davatorium/rofi.git
synced 2024-11-11 13:50:48 -05:00
Merge remote-tracking branch 'origin/master' into barview
This commit is contained in:
commit
b82e1c7a78
13 changed files with 564 additions and 74 deletions
2
.gitmodules
vendored
2
.gitmodules
vendored
|
@ -1,3 +1,3 @@
|
||||||
[submodule "libgwater"]
|
[submodule "libgwater"]
|
||||||
path = libgwater
|
path = subprojects/libgwater
|
||||||
url = git://github.com/sardemff7/libgwater
|
url = git://github.com/sardemff7/libgwater
|
||||||
|
|
22
.travis.yml
22
.travis.yml
|
@ -56,6 +56,10 @@ before_install:
|
||||||
# TODO: We install libxcb-ewmh-dev here, until it is whitelisted again in Travis
|
# TODO: We install libxcb-ewmh-dev here, until it is whitelisted again in Travis
|
||||||
install:
|
install:
|
||||||
- sudo apt-get install -y --force-yes libxkbcommon-dev libxkbcommon-x11-dev libxcb-ewmh-dev flex/trusty-backports libfl-dev/trusty-backports
|
- sudo apt-get install -y --force-yes libxkbcommon-dev libxkbcommon-x11-dev libxcb-ewmh-dev flex/trusty-backports libfl-dev/trusty-backports
|
||||||
|
- pip3 install meson
|
||||||
|
- wget https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-linux.zip
|
||||||
|
- unzip ninja-linux.zip
|
||||||
|
- export PATH=$(pwd):$PATH
|
||||||
- git clone https://github.com/alobbs/doxy-coverage
|
- git clone https://github.com/alobbs/doxy-coverage
|
||||||
- git clone --recursive https://github.com/Airblader/xcb-util-xrm.git
|
- git clone --recursive https://github.com/Airblader/xcb-util-xrm.git
|
||||||
- cd xcb-util-xrm
|
- cd xcb-util-xrm
|
||||||
|
@ -72,22 +76,16 @@ install:
|
||||||
- cd -
|
- cd -
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- autoreconf -i
|
- meson build -Db_coverage=true
|
||||||
- ./configure --enable-gcov --enable-drun
|
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- make
|
- ninja -C build
|
||||||
- make check
|
- ninja -C build test
|
||||||
- ./theme_parser_test
|
|
||||||
- ulimit -c unlimited
|
- ulimit -c unlimited
|
||||||
- make test-x
|
- ninja -C build test-x
|
||||||
- if [ -f core ]; then echo "bt" | gdb ./rofi core; fi
|
- ninja -C build doc/html 2>&1 > doxygen.log
|
||||||
- make test-x1
|
|
||||||
- make coverage-cli
|
|
||||||
- make distcheck
|
|
||||||
- make doxy 2>&1 > doxygen.log
|
|
||||||
- test $(grep -c warning doxygen.log) -eq 0
|
- test $(grep -c warning doxygen.log) -eq 0
|
||||||
- ./doxy-coverage/doxy-coverage.py doc/html/xml/
|
- ./doxy-coverage/doxy-coverage.py build/doc/html/xml/
|
||||||
|
|
||||||
after_success:
|
after_success:
|
||||||
- bash <(curl -s https://codecov.io/bash)
|
- bash <(curl -s https://codecov.io/bash)
|
||||||
|
|
58
Makefile.am
58
Makefile.am
|
@ -1,7 +1,7 @@
|
||||||
# Specify automake version.
|
# Specify automake version.
|
||||||
AUTOMAKE_OPTIONS = 1.11.3
|
AUTOMAKE_OPTIONS = 1.11.3
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I libgwater ${ACLOCAL_FLAGS}
|
ACLOCAL_AMFLAGS = -I subprojects/libgwater ${ACLOCAL_FLAGS}
|
||||||
|
|
||||||
AM_YFLAGS = -d
|
AM_YFLAGS = -d
|
||||||
|
|
||||||
|
@ -507,53 +507,9 @@ endif
|
||||||
|
|
||||||
.PHONY: test-x
|
.PHONY: test-x
|
||||||
test-x: $(bin_PROGRAMS)
|
test-x: $(bin_PROGRAMS)
|
||||||
echo "Test 2"
|
MESON_SOURCE_ROOT="$(top_srcdir)" \
|
||||||
$(top_srcdir)/test/run_test.sh 200 $(top_srcdir)/test/run_errormsg_test.sh $(top_builddir)
|
MESON_BUILD_ROOT="$(top_builddir)" \
|
||||||
echo "Test 3"
|
$(top_srcdir)/test/run_all_tests.sh
|
||||||
$(top_srcdir)/test/run_test.sh 201 $(top_srcdir)/test/run_switchdialog_test.sh $(top_builddir)
|
|
||||||
echo "Test 4"
|
|
||||||
$(top_srcdir)/test/run_test.sh 202 $(top_srcdir)/test/run_dmenu_test.sh $(top_builddir)
|
|
||||||
echo "Test 5"
|
|
||||||
$(top_srcdir)/test/run_test.sh 203 $(top_srcdir)/test/run_dmenu_custom_test.sh $(top_builddir)
|
|
||||||
echo "Test 6"
|
|
||||||
$(top_srcdir)/test/run_test.sh 204 $(top_srcdir)/test/run_run_test.sh $(top_builddir)
|
|
||||||
echo "Test 7"
|
|
||||||
$(top_srcdir)/test/run_test.sh 205 $(top_srcdir)/test/run_script_test.sh $(top_builddir)
|
|
||||||
echo "Issue 256"
|
|
||||||
$(top_srcdir)/test/run_test.sh 206 $(top_srcdir)/test/run_issue_256.sh $(top_builddir)
|
|
||||||
echo "Issue 275"
|
|
||||||
$(top_srcdir)/test/run_test.sh 207 $(top_srcdir)/test/run_issue_275.sh $(top_builddir)
|
|
||||||
echo "Crash empty list"
|
|
||||||
$(top_srcdir)/test/run_test.sh 208 $(top_srcdir)/test/run_dmenu_empty.sh $(top_builddir)
|
|
||||||
echo "Test multiple select"
|
|
||||||
$(top_srcdir)/test/run_test.sh 209 $(top_srcdir)/test/run_dmenu_issue_292.sh $(top_builddir)
|
|
||||||
echo "Test screenshot"
|
|
||||||
$(top_srcdir)/test/run_test.sh 210 $(top_srcdir)/test/run_screenshot_test.sh $(top_builddir)
|
|
||||||
echo "Test xr dump"
|
|
||||||
$(top_srcdir)/test/run_test.sh 212 $(top_srcdir)/test/xr_dump_test.sh $(top_builddir) $(top_srcdir)
|
|
||||||
echo "Test drun"
|
|
||||||
$(top_srcdir)/test/run_test.sh 213 $(top_srcdir)/test/run_drun_test.sh $(top_builddir)
|
|
||||||
echo "Test combi"
|
|
||||||
$(top_srcdir)/test/run_test.sh 214 $(top_srcdir)/test/run_combi_test.sh $(top_builddir)
|
|
||||||
echo "Test dmenu regex"
|
|
||||||
$(top_srcdir)/test/run_test.sh 215 $(top_srcdir)/test/run_regex_test.sh $(top_builddir)
|
|
||||||
echo "Test dmenu glob"
|
|
||||||
$(top_srcdir)/test/run_test.sh 216 $(top_srcdir)/test/run_glob_test.sh $(top_builddir)
|
|
||||||
echo "Test issue 333"
|
|
||||||
$(top_srcdir)/test/run_test.sh 217 $(top_srcdir)/test/run_issue333_test.sh $(top_builddir)
|
|
||||||
echo "Test help output"
|
|
||||||
$(top_srcdir)/test/run_test.sh 218 $(top_srcdir)/test/help_output_test.sh $(top_builddir) $(top_srcdir)
|
|
||||||
echo "Test theme output"
|
|
||||||
$(top_srcdir)/test/run_test.sh 219 $(top_srcdir)/test/default_theme_test.sh $(top_builddir) $(top_srcdir)
|
|
||||||
echo "Test theme convert output"
|
|
||||||
$(top_srcdir)/test/run_test.sh 220 $(top_srcdir)/test/convert_old_theme_test.sh $(top_builddir) $(top_srcdir)
|
|
||||||
|
|
||||||
test-x1: $(bin_PROGRAMS)
|
|
||||||
echo "Test dmenu-normal-window"
|
|
||||||
$(top_srcdir)/test/run_test.sh 219 $(top_srcdir)/test/run_dmenu_normal_window_test.sh $(top_builddir)
|
|
||||||
echo "Test window"
|
|
||||||
$(top_srcdir)/test/run_test.sh 220 $(top_srcdir)/test/run_window_test.sh $(top_builddir) $(top_srcdir)
|
|
||||||
echo "End tests"
|
|
||||||
|
|
||||||
|
|
||||||
.PHONY: indent
|
.PHONY: indent
|
||||||
|
@ -601,3 +557,9 @@ coverage-clean:
|
||||||
|
|
||||||
.PHONY: .FORCE
|
.PHONY: .FORCE
|
||||||
.FORCE:
|
.FORCE:
|
||||||
|
|
||||||
|
EXTRA_DIST += \
|
||||||
|
doc/meson.build \
|
||||||
|
subprojects/libgwater/xcb/meson.build \
|
||||||
|
meson_options.txt \
|
||||||
|
meson.build
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
|
32
doc/meson.build
Normal file
32
doc/meson.build
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
ronn = find_program('ronn', required: false)
|
||||||
|
if ronn.found()
|
||||||
|
run_target('update-manpage',
|
||||||
|
command: [ ronn, files(
|
||||||
|
'rofi-manpage.markdown',
|
||||||
|
'rofi-theme-manpage.markdown',
|
||||||
|
)]
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
doxy_conf = configuration_data()
|
||||||
|
doxy_conf.set('PACKAGE', meson.project_name())
|
||||||
|
doxy_conf.set('VERSION', meson.project_version())
|
||||||
|
doxy_conf.set('abs_builddir', join_paths(meson.build_root(), meson.current_build_dir()))
|
||||||
|
doxy_conf.set('abs_top_srcdir', meson.source_root())
|
||||||
|
|
||||||
|
doxyfile = configure_file(
|
||||||
|
input: 'rofi.doxy.in',
|
||||||
|
output: 'rofi.doxy',
|
||||||
|
configuration: doxy_conf,
|
||||||
|
install: false,
|
||||||
|
)
|
||||||
|
|
||||||
|
doxygen = find_program('doxygen', required: false)
|
||||||
|
if doxygen.found()
|
||||||
|
html_target = custom_target('doxy',
|
||||||
|
input: doxyfile,
|
||||||
|
output: 'html',
|
||||||
|
command: [doxygen, doxyfile],
|
||||||
|
install: false,
|
||||||
|
)
|
||||||
|
endif
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 173f2f5566636a1de559cc57f3154db70c3f2e9f
|
|
|
@ -1,20 +1,20 @@
|
||||||
noinst_LIBRARIES += \
|
noinst_LIBRARIES += \
|
||||||
libgwater/libgwater-xcb.a
|
libgwater-xcb.a
|
||||||
|
|
||||||
libgwater_libgwater_xcb_a_SOURCES = \
|
libgwater_xcb_a_SOURCES = \
|
||||||
libgwater/xcb/libgwater-xcb.c \
|
subprojects/libgwater/xcb/libgwater-xcb.c \
|
||||||
libgwater/xcb/libgwater-xcb.h
|
subprojects/libgwater/xcb/libgwater-xcb.h
|
||||||
|
|
||||||
libgwater_libgwater_xcb_a_CFLAGS = \
|
libgwater_xcb_a_CFLAGS = \
|
||||||
$(AM_CFLAGS) \
|
$(AM_CFLAGS) \
|
||||||
$(GW_XCB_INTERNAL_CFLAGS)
|
$(GW_XCB_INTERNAL_CFLAGS)
|
||||||
|
|
||||||
|
|
||||||
GW_XCB_CFLAGS = \
|
GW_XCB_CFLAGS = \
|
||||||
-I$(srcdir)/libgwater/xcb \
|
-I$(srcdir)/subprojects/libgwater/xcb \
|
||||||
$(GW_XCB_INTERNAL_CFLAGS)
|
$(GW_XCB_INTERNAL_CFLAGS)
|
||||||
|
|
||||||
GW_XCB_LIBS = \
|
GW_XCB_LIBS = \
|
||||||
libgwater/libgwater-xcb.a \
|
libgwater-xcb.a \
|
||||||
$(GW_XCB_INTERNAL_LIBS)
|
$(GW_XCB_INTERNAL_LIBS)
|
||||||
|
|
||||||
|
|
448
meson.build
Normal file
448
meson.build
Normal file
|
@ -0,0 +1,448 @@
|
||||||
|
project('rofi', 'c',
|
||||||
|
version: '1.3.1',
|
||||||
|
meson_version: '>=0.39.1',
|
||||||
|
license: [ 'MIT' ],
|
||||||
|
default_options: [
|
||||||
|
'c_std=c99',
|
||||||
|
'warning_level=3',
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
c_compiler = meson.get_compiler('c')
|
||||||
|
|
||||||
|
add_project_arguments(
|
||||||
|
'-fvisibility=hidden',
|
||||||
|
'-I@0@'.format(meson.build_root()),
|
||||||
|
'-I@0@'.format(join_paths(meson.source_root(), 'include')),
|
||||||
|
language: 'c'
|
||||||
|
)
|
||||||
|
|
||||||
|
flags = [
|
||||||
|
'-Wparentheses',
|
||||||
|
'-Winline',
|
||||||
|
'-Wunreachable-code',
|
||||||
|
'-Werror=missing-prototypes',
|
||||||
|
]
|
||||||
|
if get_option('enable-asan')
|
||||||
|
flags += [
|
||||||
|
'-fsanitize=address',
|
||||||
|
'-fno-omit-frame-pointer',
|
||||||
|
]
|
||||||
|
endif
|
||||||
|
foreach f : flags
|
||||||
|
if c_compiler.has_argument(f)
|
||||||
|
add_project_arguments(f, language: 'c')
|
||||||
|
endif
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
plugindir = join_paths(get_option('prefix'), get_option('libdir'), meson.project_name())
|
||||||
|
themedir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name(), 'themes')
|
||||||
|
|
||||||
|
deps = [
|
||||||
|
dependency('glib-2.0', version: '>= 2.40'),
|
||||||
|
dependency('gio-unix-2.0'),
|
||||||
|
dependency('gmodule-2.0'),
|
||||||
|
dependency('cairo'),
|
||||||
|
dependency('pango'),
|
||||||
|
dependency('pangocairo'),
|
||||||
|
dependency('xkbcommon', version: '>= 0.5.0'),
|
||||||
|
c_compiler.find_library('m', required: false),
|
||||||
|
]
|
||||||
|
|
||||||
|
# XCB stuff
|
||||||
|
deps += [
|
||||||
|
subproject('libgwater/xcb').get_variable('libgwater_xcb'),
|
||||||
|
dependency('xcb-aux'),
|
||||||
|
dependency('xcb-xkb'),
|
||||||
|
dependency('xkbcommon-x11'),
|
||||||
|
dependency('xcb-ewmh'),
|
||||||
|
dependency('xcb-icccm'),
|
||||||
|
dependency('xcb-xrm'),
|
||||||
|
dependency('xcb-randr'),
|
||||||
|
dependency('xcb-xinerama'),
|
||||||
|
dependency('cairo-xcb'),
|
||||||
|
dependency('libstartup-notification-1.0'),
|
||||||
|
]
|
||||||
|
|
||||||
|
check = dependency('check', version: '>= 0.11.0', required: get_option('enable-check'))
|
||||||
|
|
||||||
|
header_conf = configuration_data()
|
||||||
|
header_conf.set_quoted('PACKAGE_NAME', meson.project_name())
|
||||||
|
header_conf.set_quoted('PACKAGE_VERSION', meson.project_version())
|
||||||
|
header_conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
|
||||||
|
header_conf.set_quoted('PACKAGE_BUGREPORT', 'https://github.com/DaveDavenport/rofi/')
|
||||||
|
header_conf.set_quoted('PACKAGE_URL', 'https://reddit.com/r/qtools/')
|
||||||
|
|
||||||
|
header_conf.set('THEME_CONVERTER', true)
|
||||||
|
header_conf.set('_GNU_SOURCE', true)
|
||||||
|
|
||||||
|
git = find_program('git', required: false)
|
||||||
|
if git.found()
|
||||||
|
git_version = run_command(git, '--git-dir', join_paths(meson.source_root(), '.git'), 'describe', '--tags', '--always', '--dirty')
|
||||||
|
git_branch = run_command(git, '--git-dir', join_paths(meson.source_root(), '.git'), 'describe', '--tags', '--always', '--all')
|
||||||
|
if git_version.returncode() == 0 and git_branch.returncode() == 0
|
||||||
|
git_branch_parts = []
|
||||||
|
foreach b : git_branch.stdout().strip().split('/')
|
||||||
|
if b != 'heads'
|
||||||
|
git_branch_parts += b
|
||||||
|
endif
|
||||||
|
endforeach
|
||||||
|
header_conf.set_quoted('GIT_VERSION', '@0@ - @1@ (@2@)'.format(meson.project_version(), git_version.stdout().strip(), '/'.join(git_branch_parts)))
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
header_conf.set('ENABLE_DRUN', get_option('enable-drun'))
|
||||||
|
header_conf.set('WINDOW_MODE', get_option('enable-window'))
|
||||||
|
|
||||||
|
header_conf.set_quoted('MANPAGE_PATH', join_paths(get_option('prefix'), get_option('mandir')))
|
||||||
|
header_conf.set_quoted('SYSCONFDIR', join_paths(get_option('prefix'), get_option('sysconfdir')))
|
||||||
|
header_conf.set_quoted('PLUGIN_PATH', plugindir)
|
||||||
|
header_conf.set_quoted('THEME_DIR', themedir)
|
||||||
|
|
||||||
|
config_h = configure_file(output: 'config.h', configuration: header_conf)
|
||||||
|
|
||||||
|
|
||||||
|
install_headers([
|
||||||
|
'include/mode.h',
|
||||||
|
'include/mode-private.h',
|
||||||
|
'include/helper.h',
|
||||||
|
],
|
||||||
|
subdir: meson.project_name(),
|
||||||
|
)
|
||||||
|
install_data(
|
||||||
|
'script/rofi-sensible-terminal',
|
||||||
|
'script/rofi-theme-selector',
|
||||||
|
install_dir: join_paths(get_option('prefix'), get_option('bindir'))
|
||||||
|
)
|
||||||
|
|
||||||
|
flex = generator(find_program('flex'),
|
||||||
|
output: '@BASENAME@.c',
|
||||||
|
arguments: [ '-o', '@OUTPUT@', '@INPUT@' ]
|
||||||
|
)
|
||||||
|
bison = generator(find_program('bison'),
|
||||||
|
output: [ '@BASENAME@.c', '@BASENAME@.h' ],
|
||||||
|
arguments: [ '-y', '@INPUT@', '--defines=@OUTPUT1@', '--output=@OUTPUT0@' ]
|
||||||
|
)
|
||||||
|
|
||||||
|
rofi_sources = files(
|
||||||
|
'source/rofi.c',
|
||||||
|
'source/view.c',
|
||||||
|
'source/mode.c',
|
||||||
|
'source/keyb.c',
|
||||||
|
'config/config.c',
|
||||||
|
'source/helper.c',
|
||||||
|
'source/timings.c',
|
||||||
|
'source/history.c',
|
||||||
|
'source/theme.c',
|
||||||
|
'source/css-colors.c',
|
||||||
|
'source/widgets/box.c',
|
||||||
|
'source/widgets/container.c',
|
||||||
|
'source/widgets/widget.c',
|
||||||
|
'source/widgets/textbox.c',
|
||||||
|
'source/widgets/listview.c',
|
||||||
|
'source/widgets/scrollbar.c',
|
||||||
|
'source/xrmoptions.c',
|
||||||
|
'source/x11-helper.c',
|
||||||
|
'source/dialogs/run.c',
|
||||||
|
'source/dialogs/ssh.c',
|
||||||
|
'source/dialogs/drun.c',
|
||||||
|
'source/dialogs/dmenu.c',
|
||||||
|
'source/dialogs/combi.c',
|
||||||
|
'source/dialogs/window.c',
|
||||||
|
'source/dialogs/script.c',
|
||||||
|
'source/dialogs/help-keys.c',
|
||||||
|
'include/xcb.h',
|
||||||
|
'include/xcb-internal.h',
|
||||||
|
'include/rofi.h',
|
||||||
|
'include/mode.h',
|
||||||
|
'include/mode-private.h',
|
||||||
|
'include/settings.h',
|
||||||
|
'include/keyb.h',
|
||||||
|
'include/view.h',
|
||||||
|
'include/view-internal.h',
|
||||||
|
'include/helper.h',
|
||||||
|
'include/helper-theme.h',
|
||||||
|
'include/timings.h',
|
||||||
|
'include/history.h',
|
||||||
|
'include/theme.h',
|
||||||
|
'include/css-colors.h',
|
||||||
|
'include/default-theme.h',
|
||||||
|
'include/widgets/box.h',
|
||||||
|
'include/widgets/container.h',
|
||||||
|
'include/widgets/widget.h',
|
||||||
|
'include/widgets/widget-internal.h',
|
||||||
|
'include/widgets/textbox.h',
|
||||||
|
'include/widgets/listview.h',
|
||||||
|
'include/widgets/scrollbar.h',
|
||||||
|
'include/xrmoptions.h',
|
||||||
|
'include/x11-helper.h',
|
||||||
|
'include/dialogs/ssh.h',
|
||||||
|
'include/dialogs/run.h',
|
||||||
|
'include/dialogs/drun.h',
|
||||||
|
'include/dialogs/dmenu.h',
|
||||||
|
'include/dialogs/combi.h',
|
||||||
|
'include/dialogs/script.h',
|
||||||
|
'include/dialogs/window.h',
|
||||||
|
'include/dialogs/dialogs.h',
|
||||||
|
'include/dialogs/help-keys.h',
|
||||||
|
'include/xkb.h',
|
||||||
|
'include/xkb-internal.h',
|
||||||
|
)
|
||||||
|
theme_lexer_sources = files('lexer/theme-lexer.l')
|
||||||
|
theme_parser_sources = files('lexer/theme-parser.y')
|
||||||
|
|
||||||
|
theme_lexer = flex.process(theme_lexer_sources)
|
||||||
|
theme_parser = bison.process(theme_parser_sources)
|
||||||
|
rofi = executable('rofi', rofi_sources + [
|
||||||
|
theme_lexer,
|
||||||
|
theme_parser,
|
||||||
|
],
|
||||||
|
dependencies: deps,
|
||||||
|
install: true,
|
||||||
|
)
|
||||||
|
|
||||||
|
subdir('doc')
|
||||||
|
install_man(
|
||||||
|
'doc/rofi.1',
|
||||||
|
'doc/rofi-sensible-terminal.1',
|
||||||
|
)
|
||||||
|
|
||||||
|
install_data(
|
||||||
|
'themes/Adapta-Nokto.rasi',
|
||||||
|
'themes/Arc.rasi',
|
||||||
|
'themes/DarkBlue.rasi',
|
||||||
|
'themes/Indego.rasi',
|
||||||
|
'themes/Monokai.rasi',
|
||||||
|
'themes/Paper.rasi',
|
||||||
|
'themes/android_notification.rasi',
|
||||||
|
'themes/arthur.rasi',
|
||||||
|
'themes/blue.rasi',
|
||||||
|
'themes/c64.rasi',
|
||||||
|
'themes/glue_pro_blue.rasi',
|
||||||
|
'themes/gruvbox-dark-hard.rasi',
|
||||||
|
'themes/gruvbox-dark-soft.rasi',
|
||||||
|
'themes/gruvbox-dark.rasi',
|
||||||
|
'themes/gruvbox-light-hard.rasi',
|
||||||
|
'themes/gruvbox-light-soft.rasi',
|
||||||
|
'themes/gruvbox-light.rasi',
|
||||||
|
'themes/lb.rasi',
|
||||||
|
'themes/paper-float.rasi',
|
||||||
|
'themes/purple.rasi',
|
||||||
|
'themes/sidebar.rasi',
|
||||||
|
'themes/solarized.rasi',
|
||||||
|
'themes/solarized_alternate.rasi',
|
||||||
|
install_dir: themedir
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
test('history test', executable('history.test', [
|
||||||
|
'test/history-test.c',
|
||||||
|
],
|
||||||
|
objects: rofi.extract_objects([
|
||||||
|
'source/history.c',
|
||||||
|
'config/config.c',
|
||||||
|
]),
|
||||||
|
dependencies: deps,
|
||||||
|
))
|
||||||
|
|
||||||
|
test('helper_pidfile test', executable('helper_pidfile.test', [
|
||||||
|
'test/helper-pidfile.c',
|
||||||
|
],
|
||||||
|
objects: rofi.extract_objects([
|
||||||
|
'config/config.c',
|
||||||
|
'source/helper.c',
|
||||||
|
'source/xrmoptions.c',
|
||||||
|
'source/x11-helper.c',
|
||||||
|
]),
|
||||||
|
dependencies: deps,
|
||||||
|
))
|
||||||
|
|
||||||
|
test('helper_tokenize test', executable('helper_tokenize.test', [
|
||||||
|
'test/helper-tokenize.c',
|
||||||
|
],
|
||||||
|
objects: rofi.extract_objects([
|
||||||
|
'config/config.c',
|
||||||
|
'source/helper.c',
|
||||||
|
'source/xrmoptions.c',
|
||||||
|
'source/x11-helper.c',
|
||||||
|
]),
|
||||||
|
dependencies: deps,
|
||||||
|
))
|
||||||
|
|
||||||
|
test('widget test', executable('widget.test', [
|
||||||
|
'test/widget-test.c',
|
||||||
|
theme_parser,
|
||||||
|
theme_lexer,
|
||||||
|
],
|
||||||
|
objects: rofi.extract_objects([
|
||||||
|
'source/widgets/widget.c',
|
||||||
|
'source/widgets/textbox.c',
|
||||||
|
'source/theme.c',
|
||||||
|
'source/css-colors.c',
|
||||||
|
'source/helper.c',
|
||||||
|
'source/x11-helper.c',
|
||||||
|
'config/config.c',
|
||||||
|
]),
|
||||||
|
dependencies: deps,
|
||||||
|
))
|
||||||
|
|
||||||
|
test('box test', executable('box.test', [
|
||||||
|
'test/box-test.c',
|
||||||
|
theme_parser,
|
||||||
|
theme_lexer,
|
||||||
|
],
|
||||||
|
objects: rofi.extract_objects([
|
||||||
|
'source/widgets/widget.c',
|
||||||
|
'source/widgets/box.c',
|
||||||
|
'source/theme.c',
|
||||||
|
'source/css-colors.c',
|
||||||
|
'config/config.c',
|
||||||
|
]),
|
||||||
|
dependencies: deps,
|
||||||
|
))
|
||||||
|
|
||||||
|
test('scrollbar test', executable('scrollbar.test', [
|
||||||
|
'test/scrollbar-test.c',
|
||||||
|
theme_parser,
|
||||||
|
theme_lexer,
|
||||||
|
],
|
||||||
|
objects: rofi.extract_objects([
|
||||||
|
'source/widgets/widget.c',
|
||||||
|
'source/widgets/scrollbar.c',
|
||||||
|
'source/theme.c',
|
||||||
|
'source/css-colors.c',
|
||||||
|
'config/config.c',
|
||||||
|
]),
|
||||||
|
dependencies: deps,
|
||||||
|
))
|
||||||
|
|
||||||
|
test('textbox test', executable('textbox.test', [
|
||||||
|
'test/textbox-test.c',
|
||||||
|
theme_parser,
|
||||||
|
theme_lexer,
|
||||||
|
],
|
||||||
|
objects: rofi.extract_objects([
|
||||||
|
'source/widgets/widget.c',
|
||||||
|
'source/widgets/textbox.c',
|
||||||
|
'source/theme.c',
|
||||||
|
'source/css-colors.c',
|
||||||
|
'source/helper.c',
|
||||||
|
'source/x11-helper.c',
|
||||||
|
'config/config.c',
|
||||||
|
]),
|
||||||
|
dependencies: deps,
|
||||||
|
))
|
||||||
|
|
||||||
|
test('helper test', executable('helper.test', [
|
||||||
|
'test/helper-test.c',
|
||||||
|
],
|
||||||
|
objects: rofi.extract_objects([
|
||||||
|
'config/config.c',
|
||||||
|
'source/helper.c',
|
||||||
|
'source/xrmoptions.c',
|
||||||
|
'source/x11-helper.c',
|
||||||
|
]),
|
||||||
|
dependencies: deps,
|
||||||
|
))
|
||||||
|
|
||||||
|
test('helper_expand test', executable('helper_expand.test', [
|
||||||
|
'test/helper-expand.c',
|
||||||
|
],
|
||||||
|
objects: rofi.extract_objects([
|
||||||
|
'config/config.c',
|
||||||
|
'source/helper.c',
|
||||||
|
'source/xrmoptions.c',
|
||||||
|
'source/x11-helper.c',
|
||||||
|
]),
|
||||||
|
dependencies: deps,
|
||||||
|
))
|
||||||
|
|
||||||
|
test('helper_config_cmdline_parser test', executable('helper_config_cmdline_parser.test', [
|
||||||
|
'test/helper-config-cmdline-parser.c',
|
||||||
|
],
|
||||||
|
objects: rofi.extract_objects([
|
||||||
|
'config/config.c',
|
||||||
|
'source/helper.c',
|
||||||
|
'source/xrmoptions.c',
|
||||||
|
'source/x11-helper.c',
|
||||||
|
]),
|
||||||
|
dependencies: deps,
|
||||||
|
))
|
||||||
|
|
||||||
|
if check.found()
|
||||||
|
deps+= [ check ]
|
||||||
|
|
||||||
|
test('theme_parser test', executable('theme_parser.test', [
|
||||||
|
'test/theme-parser-test.c',
|
||||||
|
theme_lexer,
|
||||||
|
theme_parser,
|
||||||
|
],
|
||||||
|
objects: rofi.extract_objects([
|
||||||
|
'config/config.c',
|
||||||
|
'source/helper.c',
|
||||||
|
'source/xrmoptions.c',
|
||||||
|
'source/x11-helper.c',
|
||||||
|
'source/theme.c',
|
||||||
|
'source/css-colors.c',
|
||||||
|
]),
|
||||||
|
dependencies: deps,
|
||||||
|
))
|
||||||
|
|
||||||
|
test('mode test', executable('mode.test', [
|
||||||
|
'test/mode-test.c',
|
||||||
|
],
|
||||||
|
objects: rofi.extract_objects([
|
||||||
|
'config/config.c',
|
||||||
|
'source/dialogs/help-keys.c',
|
||||||
|
'source/helper.c',
|
||||||
|
'source/mode.c',
|
||||||
|
'source/xrmoptions.c',
|
||||||
|
'source/keyb.c',
|
||||||
|
]),
|
||||||
|
dependencies: deps,
|
||||||
|
))
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
run_target('test-x', command: [ 'test/run_all_tests.sh' ])
|
||||||
|
|
||||||
|
uncrustify = find_program('uncrustify', required: false)
|
||||||
|
if uncrustify.found()
|
||||||
|
run_target('indent',
|
||||||
|
command: [
|
||||||
|
uncrustify,
|
||||||
|
'-c', join_paths(meson.source_root(), 'data', 'uncrustify.cfg'),
|
||||||
|
rofi_sources
|
||||||
|
],
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
rofi_sources += theme_lexer_sources
|
||||||
|
rofi_sources += theme_parser_sources
|
||||||
|
|
||||||
|
cppcheck = find_program('cppcheck', required: false)
|
||||||
|
if cppcheck.found()
|
||||||
|
run_target('cppcheck',
|
||||||
|
command: [
|
||||||
|
cppcheck,
|
||||||
|
'--std=@0@'.format(get_option('c_std')),
|
||||||
|
'--platform=unix64',
|
||||||
|
'--enable=all',
|
||||||
|
'-Uerror_dialog',
|
||||||
|
'--inconclusive',
|
||||||
|
'-I@0@'.format(join_paths(meson.source_root(), 'include')),
|
||||||
|
rofi_sources
|
||||||
|
],
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ohcount = find_program('ohcount', required: false)
|
||||||
|
if ohcount.found()
|
||||||
|
run_target('ohcount',
|
||||||
|
command: [
|
||||||
|
ohcount,
|
||||||
|
rofi_sources
|
||||||
|
],
|
||||||
|
)
|
||||||
|
endif
|
5
meson_options.txt
Normal file
5
meson_options.txt
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
option('enable-drun', type: 'boolean', value: true, description: 'Desktop file mode')
|
||||||
|
option('enable-window', type: 'boolean', value: true, description: 'Window switcher mode')
|
||||||
|
option('enable-timings', type: 'boolean', value: true, description: 'Timimngs output')
|
||||||
|
option('enable-asan', type: 'boolean', value: false, description: 'Address sanitizer')
|
||||||
|
option('enable-check', type: 'boolean', value: true, description: 'Build and run libcheck-based tests')
|
|
@ -27,6 +27,7 @@
|
||||||
|
|
||||||
#define G_LOG_DOMAIN "Theme"
|
#define G_LOG_DOMAIN "Theme"
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
1
subprojects/libgwater
Submodule
1
subprojects/libgwater
Submodule
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 60e5e71e09e573bd5c7839ce4a892747ea232526
|
44
test/run_all_tests.sh
Executable file
44
test/run_all_tests.sh
Executable file
|
@ -0,0 +1,44 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
tests=(
|
||||||
|
run_errormsg_test
|
||||||
|
run_switchdialog_test
|
||||||
|
run_dmenu_test
|
||||||
|
run_dmenu_custom_test
|
||||||
|
run_run_test
|
||||||
|
run_script_test
|
||||||
|
run_issue_256
|
||||||
|
run_issue_275
|
||||||
|
run_dmenu_empty
|
||||||
|
run_dmenu_issue_292
|
||||||
|
run_screenshot_test
|
||||||
|
xr_dump_test
|
||||||
|
run_drun_test
|
||||||
|
run_combi_test
|
||||||
|
run_regex_test
|
||||||
|
run_glob_test
|
||||||
|
run_issue333_test
|
||||||
|
help_output_test
|
||||||
|
default_theme_test
|
||||||
|
convert_old_theme_test
|
||||||
|
run_dmenu_normal_window_test
|
||||||
|
run_window_test
|
||||||
|
)
|
||||||
|
|
||||||
|
cd ${MESON_BUILD_ROOT}
|
||||||
|
mkdir -p test-x-logs
|
||||||
|
rm -f core
|
||||||
|
|
||||||
|
display=200
|
||||||
|
for test in "${tests[@]}"; do
|
||||||
|
echo "Test ${test}"
|
||||||
|
${MESON_SOURCE_ROOT}/test/run_test.sh ${display} ${MESON_SOURCE_ROOT}/test/${test}.sh ${MESON_BUILD_ROOT} ${MESON_SOURCE_ROOT}
|
||||||
|
ret=$?
|
||||||
|
if [[ -f core ]]; then
|
||||||
|
echo "bt" | gdb ./rofi core
|
||||||
|
exit ${ret}
|
||||||
|
elif [[ ${ret} != 0 ]]; then
|
||||||
|
exit ${ret}
|
||||||
|
fi
|
||||||
|
display=$(( ${display} + 1 ))
|
||||||
|
done
|
|
@ -6,10 +6,10 @@ function create_fake_x ( )
|
||||||
{
|
{
|
||||||
export DISPLAY=":$1"
|
export DISPLAY=":$1"
|
||||||
echo "Starting fake X: ${DISPLAY}"
|
echo "Starting fake X: ${DISPLAY}"
|
||||||
Xvfb +extension XINERAMA +xinerama -screen 0 1280x1024x24 -screen 1 800x600x24 ${DISPLAY} &
|
Xvfb +extension XINERAMA +xinerama -screen 0 1280x1024x24 -screen 1 800x600x24 ${DISPLAY} &>test-x-logs/xserver-:$1.log &
|
||||||
XPID=$!
|
XPID=$!
|
||||||
sleep 1;
|
sleep 1;
|
||||||
timeout -k 30s 30s fluxbox &
|
timeout -k 30s 30s fluxbox &>test-x-logs/fluxbox-:$1.log &
|
||||||
FPID=$!
|
FPID=$!
|
||||||
sleep 1
|
sleep 1
|
||||||
}
|
}
|
||||||
|
@ -28,14 +28,13 @@ function destroy_fake_x ( )
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
if [ -n "$3" ]
|
if [ -n "$3" ]
|
||||||
then
|
then
|
||||||
export PATH=$3:$PATH
|
export PATH=$3:$PATH
|
||||||
fi
|
fi
|
||||||
|
|
||||||
create_fake_x "$1"
|
create_fake_x "$1"
|
||||||
echo "$DISPLAY"
|
"$2" "$4"
|
||||||
$2 $4
|
|
||||||
RES=$?
|
RES=$?
|
||||||
|
|
||||||
destroy_fake_x
|
destroy_fake_x
|
||||||
|
|
Loading…
Reference in a new issue