refactor(config parsing): change from if/elif chain to precalculated hash table with switch case and added caching of keysyms

this refactor marginally speeds up config parsing by targetting the 2
biggest bottlenecks, namely iterating over keysyms every time and using
extremely long if/elif chains.

benchmarking each command with 1000 runs:

/home/duck/mango/build/mango -p (the code in this PR)
  Average: 4.88 ms  (std dev: 1.08 ms)

mango -p
  Average: 5.31 ms  (std dev: 1.01 ms)

about 1.09x faster

this PR does somewhat make it harder to add new functions/options in
that they need to be added to both parse_config.h in the switch case and
in the appropriate .gperf file.

that being said the improvements would get more noticeable as mango adds
more options to its configuration.

as for readability, I believe a switch case is more readable.
This commit is contained in:
DuckTapeMan35 2026-04-08 22:01:13 +01:00
parent e83a9dff82
commit 5585128172
4 changed files with 2361 additions and 1353 deletions

View file

@ -39,7 +39,7 @@ libinput_dep = dependency('libinput',version: '>=1.27.1')
libwayland_client_dep = dependency('wayland-client') libwayland_client_dep = dependency('wayland-client')
pcre2_dep = dependency('libpcre2-8') pcre2_dep = dependency('libpcre2-8')
libscenefx_dep = dependency('scenefx-0.4',version: '>=0.4.1') libscenefx_dep = dependency('scenefx-0.4',version: '>=0.4.1')
gperf = find_program('gperf', required : true)
# 获取版本信息 # 获取版本信息
git = find_program('git', required : false) git = find_program('git', required : false)
@ -94,11 +94,28 @@ if get_option('asan')
link_args += '-fsanitize=address' link_args += '-fsanitize=address'
endif endif
# Generate hash files
func_names_hash = custom_target(
'func_names_hash',
input: 'src/config/func_names.gperf',
output: 'func_names_hash.h',
command: [gperf, '@INPUT@', '--output-file', '@OUTPUT@']
)
option_names_hash = custom_target(
'option_names_hash',
input: 'src/config/option_names.gperf',
output: 'option_names_hash.h',
command: [gperf, '@INPUT@', '--output-file', '@OUTPUT@']
)
executable('mango', executable('mango',
'src/mango.c', 'src/mango.c',
'src/common/util.c', 'src/common/util.c',
'src/ext-protocol/wlr_ext_workspace_v1.c', 'src/ext-protocol/wlr_ext_workspace_v1.c',
wayland_sources, wayland_sources,
func_names_hash,
option_names_hash,
dependencies : [ dependencies : [
libm, libm,
xcb, xcb,

148
src/config/func_names.gperf Normal file
View file

@ -0,0 +1,148 @@
%language=ANSI-C
%enum
%readonly-tables
%compare-strncmp
%define hash-function-name func_name_hash
%define lookup-function-name lookup_func_name
%struct-type
%{
#include <string.h>
enum {
FUNC_FOCUSSTACK,
FUNC_FOCUSDIR,
FUNC_INCNMASTER,
FUNC_SETMFACT,
FUNC_ZOOM,
FUNC_EXCHANGE_CLIENT,
FUNC_EXCHANGE_STACK_CLIENT,
FUNC_TOGGLEGLOBAL,
FUNC_TOGGLEOVERVIEW,
FUNC_SET_PROPORTION,
FUNC_SWITCH_PROPORTION_PRESET,
FUNC_VIEWTOLEFT,
FUNC_VIEWTORIGHT,
FUNC_TAGSILENT,
FUNC_TAGTOLEFT,
FUNC_TAGTORIGHT,
FUNC_KILLCLIENT,
FUNC_CENTERWIN,
FUNC_FOCUSLAST,
FUNC_TOGGLE_TRACKPAD_ENABLE,
FUNC_SETOPTION,
FUNC_SETKEYMODE,
FUNC_SWITCH_KEYBOARD_LAYOUT,
FUNC_SETLAYOUT,
FUNC_SWITCH_LAYOUT,
FUNC_TOGGLEFLOATING,
FUNC_TOGGLEFULLSCREEN,
FUNC_TOGGLEFAKEFULLSCREEN,
FUNC_TOGGLEOVERLAY,
FUNC_MINIMIZED,
FUNC_RESTORE_MINIMIZED,
FUNC_TOGGLE_SCRATCHPAD,
FUNC_TOGGLE_RENDER_BORDER,
FUNC_FOCUSMON,
FUNC_TAGMON,
FUNC_INCGAPS,
FUNC_TOGGLEGAPS,
FUNC_CHVT,
FUNC_SPAWN,
FUNC_SPAWN_SHELL,
FUNC_SPAWN_ON_EMPTY,
FUNC_QUIT,
FUNC_CREATE_VIRTUAL_OUTPUT,
FUNC_DESTROY_ALL_VIRTUAL_OUTPUT,
FUNC_MOVERESIZE,
FUNC_TOGGLEMAXIMIZESCREEN,
FUNC_VIEWTOLEFT_HAVE_CLIENT,
FUNC_VIEWTORIGHT_HAVE_CLIENT,
FUNC_RELOAD_CONFIG,
FUNC_TAG,
FUNC_VIEW,
FUNC_VIEWCROSSMON,
FUNC_TAGCROSSMON,
FUNC_TOGGLETAG,
FUNC_TOGGLEVIEW,
FUNC_COMBOVIEW,
FUNC_SMARTMOVEWIN,
FUNC_SMARTRESIZEWIN,
FUNC_RESIZEWIN,
FUNC_MOVEWIN,
FUNC_TOGGLE_NAMED_SCRATCHPAD,
FUNC_DISABLE_MONITOR,
FUNC_ENABLE_MONITOR,
FUNC_TOGGLE_MONITOR,
FUNC_SCROLLER_STACK,
FUNC_TOGGLE_ALL_FLOATING,
};
%}
struct func_entry { const char *name; int id; };
%%
focusstack, FUNC_FOCUSSTACK
focusdir, FUNC_FOCUSDIR
incnmaster, FUNC_INCNMASTER
setmfact, FUNC_SETMFACT
zoom, FUNC_ZOOM
exchange_client, FUNC_EXCHANGE_CLIENT
exchange_stack_client, FUNC_EXCHANGE_STACK_CLIENT
toggleglobal, FUNC_TOGGLEGLOBAL
toggleoverview, FUNC_TOGGLEOVERVIEW
set_proportion, FUNC_SET_PROPORTION
switch_proportion_preset, FUNC_SWITCH_PROPORTION_PRESET
viewtoleft, FUNC_VIEWTOLEFT
viewtoright, FUNC_VIEWTORIGHT
tagsilent, FUNC_TAGSILENT
tagtoleft, FUNC_TAGTOLEFT
tagtoright, FUNC_TAGTORIGHT
killclient, FUNC_KILLCLIENT
centerwin, FUNC_CENTERWIN
focuslast, FUNC_FOCUSLAST
toggle_trackpad_enable, FUNC_TOGGLE_TRACKPAD_ENABLE
setoption, FUNC_SETOPTION
setkeymode, FUNC_SETKEYMODE
switch_keyboard_layout, FUNC_SWITCH_KEYBOARD_LAYOUT
setlayout, FUNC_SETLAYOUT
switch_layout, FUNC_SWITCH_LAYOUT
togglefloating, FUNC_TOGGLEFLOATING
togglefullscreen, FUNC_TOGGLEFULLSCREEN
togglefakefullscreen, FUNC_TOGGLEFAKEFULLSCREEN
toggleoverlay, FUNC_TOGGLEOVERLAY
minimized, FUNC_MINIMIZED
restore_minimized, FUNC_RESTORE_MINIMIZED
toggle_scratchpad, FUNC_TOGGLE_SCRATCHPAD
toggle_render_border, FUNC_TOGGLE_RENDER_BORDER
focusmon, FUNC_FOCUSMON
tagmon, FUNC_TAGMON
incgaps, FUNC_INCGAPS
togglegaps, FUNC_TOGGLEGAPS
chvt, FUNC_CHVT
spawn, FUNC_SPAWN
spawn_shell, FUNC_SPAWN_SHELL
spawn_on_empty, FUNC_SPAWN_ON_EMPTY
quit, FUNC_QUIT
create_virtual_output, FUNC_CREATE_VIRTUAL_OUTPUT
destroy_all_virtual_output, FUNC_DESTROY_ALL_VIRTUAL_OUTPUT
moveresize, FUNC_MOVERESIZE
togglemaximizescreen, FUNC_TOGGLEMAXIMIZESCREEN
viewtoleft_have_client, FUNC_VIEWTOLEFT_HAVE_CLIENT
viewtoright_have_client, FUNC_VIEWTORIGHT_HAVE_CLIENT
reload_config, FUNC_RELOAD_CONFIG
tag, FUNC_TAG
view, FUNC_VIEW
viewcrossmon, FUNC_VIEWCROSSMON
tagcrossmon, FUNC_TAGCROSSMON
toggletag, FUNC_TOGGLETAG
toggleview, FUNC_TOGGLEVIEW
comboview, FUNC_COMBOVIEW
smartmovewin, FUNC_SMARTMOVEWIN
smartresizewin, FUNC_SMARTRESIZEWIN
resizewin, FUNC_RESIZEWIN
movewin, FUNC_MOVEWIN
toggle_named_scratchpad, FUNC_TOGGLE_NAMED_SCRATCHPAD
disable_monitor, FUNC_DISABLE_MONITOR
enable_monitor, FUNC_ENABLE_MONITOR
toggle_monitor, FUNC_TOGGLE_MONITOR
scroller_stack, FUNC_SCROLLER_STACK
toggle_all_floating, FUNC_TOGGLE_ALL_FLOATING
%%

View file

@ -0,0 +1,308 @@
%language=ANSI-C
%enum
%readonly-tables
%compare-strncmp
%struct-type
%define hash-function-name option_name_hash
%define lookup-function-name lookup_option_name
%{
#include <string.h>
enum {
OPT_KEYMODE,
OPT_ANIMATIONS,
OPT_LAYER_ANIMATIONS,
OPT_ANIMATION_TYPE_OPEN,
OPT_ANIMATION_TYPE_CLOSE,
OPT_LAYER_ANIMATION_TYPE_OPEN,
OPT_LAYER_ANIMATION_TYPE_CLOSE,
OPT_ANIMATION_FADE_IN,
OPT_ANIMATION_FADE_OUT,
OPT_TAG_ANIMATION_DIRECTION,
OPT_ZOOM_INITIAL_RATIO,
OPT_ZOOM_END_RATIO,
OPT_FADEIN_BEGIN_OPACITY,
OPT_FADEOUT_BEGIN_OPACITY,
OPT_ANIMATION_DURATION_MOVE,
OPT_ANIMATION_DURATION_OPEN,
OPT_ANIMATION_DURATION_TAG,
OPT_ANIMATION_DURATION_CLOSE,
OPT_ANIMATION_DURATION_FOCUS,
OPT_ANIMATION_CURVE_MOVE,
OPT_ANIMATION_CURVE_OPEN,
OPT_ANIMATION_CURVE_TAG,
OPT_ANIMATION_CURVE_CLOSE,
OPT_ANIMATION_CURVE_FOCUS,
OPT_ANIMATION_CURVE_OPAFADEIN,
OPT_ANIMATION_CURVE_OPAFADEOUT,
OPT_SCROLLER_STRUCTS,
OPT_SCROLLER_DEFAULT_PROPORTION,
OPT_SCROLLER_DEFAULT_PROPORTION_SINGLE,
OPT_SCROLLER_IGNORE_PROPORTION_SINGLE,
OPT_SCROLLER_FOCUS_CENTER,
OPT_SCROLLER_PREFER_CENTER,
OPT_SCROLLER_PREFER_OVERSPREAD,
OPT_EDGE_SCROLLER_POINTER_FOCUS,
OPT_FOCUS_CROSS_MONITOR,
OPT_EXCHANGE_CROSS_MONITOR,
OPT_SCRATCHPAD_CROSS_MONITOR,
OPT_FOCUS_CROSS_TAG,
OPT_VIEW_CURRENT_TO_BACK,
OPT_BLUR,
OPT_BLUR_LAYER,
OPT_BLUR_OPTIMIZED,
OPT_BORDER_RADIUS,
OPT_BLUR_PARAMS_NUM_PASSES,
OPT_BLUR_PARAMS_RADIUS,
OPT_BLUR_PARAMS_NOISE,
OPT_BLUR_PARAMS_BRIGHTNESS,
OPT_BLUR_PARAMS_CONTRAST,
OPT_BLUR_PARAMS_SATURATION,
OPT_SHADOWS,
OPT_SHADOW_ONLY_FLOATING,
OPT_LAYER_SHADOWS,
OPT_SHADOWS_SIZE,
OPT_SHADOWS_BLUR,
OPT_SHADOWS_POSITION_X,
OPT_SHADOWS_POSITION_Y,
OPT_SINGLE_SCRATCHPAD,
OPT_XWAYLAND_PERSISTENCE,
OPT_SYNCOBJ_ENABLE,
OPT_DRAG_TILE_REFRESH_INTERVAL,
OPT_DRAG_FLOATING_REFRESH_INTERVAL,
OPT_ALLOW_TEARING,
OPT_ALLOW_SHORTCUTS_INHIBIT,
OPT_ALLOW_LOCK_TRANSPARENT,
OPT_NO_BORDER_WHEN_SINGLE,
OPT_NO_RADIUS_WHEN_SINGLE,
OPT_SNAP_DISTANCE,
OPT_ENABLE_FLOATING_SNAP,
OPT_DRAG_TILE_TO_TILE,
OPT_SWIPE_MIN_THRESHOLD,
OPT_FOCUSED_OPACITY,
OPT_UNFOCUSED_OPACITY,
OPT_XKB_RULES_RULES,
OPT_XKB_RULES_MODEL,
OPT_XKB_RULES_LAYOUT,
OPT_XKB_RULES_VARIANT,
OPT_XKB_RULES_OPTIONS,
OPT_SCROLLER_PROPORTION_PRESET,
OPT_CIRCLE_LAYOUT,
OPT_NEW_IS_MASTER,
OPT_DEFAULT_MFACT,
OPT_DEFAULT_NMASTER,
OPT_CENTER_MASTER_OVERSPREAD,
OPT_CENTER_WHEN_SINGLE_STACK,
OPT_HOTAREA_SIZE,
OPT_HOTAREA_CORNER,
OPT_ENABLE_HOTAREA,
OPT_OV_TAB_MODE,
OPT_OVERVIEWGAPPI,
OPT_OVERVIEWGAPPO,
OPT_CURSOR_HIDE_TIMEOUT,
OPT_AXIS_BIND_APPLY_TIMEOUT,
OPT_FOCUS_ON_ACTIVATE,
OPT_NUMLOCKON,
OPT_IDLEINHIBIT_IGNORE_VISIBLE,
OPT_SLOPPYFOCUS,
OPT_WARPCURSOR,
OPT_DRAG_CORNER,
OPT_DRAG_WARP_CURSOR,
OPT_SMARTGAPS,
OPT_REPEAT_RATE,
OPT_REPEAT_DELAY,
OPT_DISABLE_TRACKPAD,
OPT_TAP_TO_CLICK,
OPT_TAP_AND_DRAG,
OPT_DRAG_LOCK,
OPT_MOUSE_NATURAL_SCROLLING,
OPT_TRACKPAD_NATURAL_SCROLLING,
OPT_CURSOR_SIZE,
OPT_CURSOR_THEME,
OPT_DISABLE_WHILE_TYPING,
OPT_LEFT_HANDED,
OPT_MIDDLE_BUTTON_EMULATION,
OPT_ACCEL_PROFILE,
OPT_ACCEL_SPEED,
OPT_SCROLL_METHOD,
OPT_SCROLL_BUTTON,
OPT_CLICK_METHOD,
OPT_SEND_EVENTS_MODE,
OPT_BUTTON_MAP,
OPT_AXIS_SCROLL_FACTOR,
OPT_GAPPIH,
OPT_GAPPIV,
OPT_GAPPOH,
OPT_GAPPOV,
OPT_SCRATCHPAD_WIDTH_RATIO,
OPT_SCRATCHPAD_HEIGHT_RATIO,
OPT_BORDERPX,
OPT_ROOTCOLOR,
OPT_SHADOWSCOLOR,
OPT_BORDERCOLOR,
OPT_FOCUSCOLOR,
OPT_MAXIMIZESCREENCOLOR,
OPT_URGENTCOLOR,
OPT_SCRATCHPADCOLOR,
OPT_GLOBALCOLOR,
OPT_OVERLAYCOLOR,
OPT_MONITORRULE,
OPT_TAGRULE,
OPT_LAYERRULE,
OPT_WINDOWRULE,
OPT_ENV,
OPT_EXEC,
OPT_EXEC_ONCE,
OPT_SOURCE_OPTIONAL,
OPT_SOURCE,
};
%}
struct option_entry { const char *name; int id; };
%%
keymode, OPT_KEYMODE
animations, OPT_ANIMATIONS
layer_animations, OPT_LAYER_ANIMATIONS
animation_type_open, OPT_ANIMATION_TYPE_OPEN
animation_type_close, OPT_ANIMATION_TYPE_CLOSE
layer_animation_type_open, OPT_LAYER_ANIMATION_TYPE_OPEN
layer_animation_type_close, OPT_LAYER_ANIMATION_TYPE_CLOSE
animation_fade_in, OPT_ANIMATION_FADE_IN
animation_fade_out, OPT_ANIMATION_FADE_OUT
tag_animation_direction, OPT_TAG_ANIMATION_DIRECTION
zoom_initial_ratio, OPT_ZOOM_INITIAL_RATIO
zoom_end_ratio, OPT_ZOOM_END_RATIO
fadein_begin_opacity, OPT_FADEIN_BEGIN_OPACITY
fadeout_begin_opacity, OPT_FADEOUT_BEGIN_OPACITY
animation_duration_move, OPT_ANIMATION_DURATION_MOVE
animation_duration_open, OPT_ANIMATION_DURATION_OPEN
animation_duration_tag, OPT_ANIMATION_DURATION_TAG
animation_duration_close, OPT_ANIMATION_DURATION_CLOSE
animation_duration_focus, OPT_ANIMATION_DURATION_FOCUS
animation_curve_move, OPT_ANIMATION_CURVE_MOVE
animation_curve_open, OPT_ANIMATION_CURVE_OPEN
animation_curve_tag, OPT_ANIMATION_CURVE_TAG
animation_curve_close, OPT_ANIMATION_CURVE_CLOSE
animation_curve_focus, OPT_ANIMATION_CURVE_FOCUS
animation_curve_opafadein, OPT_ANIMATION_CURVE_OPAFADEIN
animation_curve_opafadeout, OPT_ANIMATION_CURVE_OPAFADEOUT
scroller_structs, OPT_SCROLLER_STRUCTS
scroller_default_proportion, OPT_SCROLLER_DEFAULT_PROPORTION
scroller_default_proportion_single, OPT_SCROLLER_DEFAULT_PROPORTION_SINGLE
scroller_ignore_proportion_single, OPT_SCROLLER_IGNORE_PROPORTION_SINGLE
scroller_focus_center, OPT_SCROLLER_FOCUS_CENTER
scroller_prefer_center, OPT_SCROLLER_PREFER_CENTER
scroller_prefer_overspread, OPT_SCROLLER_PREFER_OVERSPREAD
edge_scroller_pointer_focus, OPT_EDGE_SCROLLER_POINTER_FOCUS
focus_cross_monitor, OPT_FOCUS_CROSS_MONITOR
exchange_cross_monitor, OPT_EXCHANGE_CROSS_MONITOR
scratchpad_cross_monitor, OPT_SCRATCHPAD_CROSS_MONITOR
focus_cross_tag, OPT_FOCUS_CROSS_TAG
view_current_to_back, OPT_VIEW_CURRENT_TO_BACK
blur, OPT_BLUR
blur_layer, OPT_BLUR_LAYER
blur_optimized, OPT_BLUR_OPTIMIZED
border_radius, OPT_BORDER_RADIUS
blur_params_num_passes, OPT_BLUR_PARAMS_NUM_PASSES
blur_params_radius, OPT_BLUR_PARAMS_RADIUS
blur_params_noise, OPT_BLUR_PARAMS_NOISE
blur_params_brightness, OPT_BLUR_PARAMS_BRIGHTNESS
blur_params_contrast, OPT_BLUR_PARAMS_CONTRAST
blur_params_saturation, OPT_BLUR_PARAMS_SATURATION
shadows, OPT_SHADOWS
shadow_only_floating, OPT_SHADOW_ONLY_FLOATING
layer_shadows, OPT_LAYER_SHADOWS
shadows_size, OPT_SHADOWS_SIZE
shadows_blur, OPT_SHADOWS_BLUR
shadows_position_x, OPT_SHADOWS_POSITION_X
shadows_position_y, OPT_SHADOWS_POSITION_Y
single_scratchpad, OPT_SINGLE_SCRATCHPAD
xwayland_persistence, OPT_XWAYLAND_PERSISTENCE
syncobj_enable, OPT_SYNCOBJ_ENABLE
drag_tile_refresh_interval, OPT_DRAG_TILE_REFRESH_INTERVAL
drag_floating_refresh_interval, OPT_DRAG_FLOATING_REFRESH_INTERVAL
allow_tearing, OPT_ALLOW_TEARING
allow_shortcuts_inhibit, OPT_ALLOW_SHORTCUTS_INHIBIT
allow_lock_transparent, OPT_ALLOW_LOCK_TRANSPARENT
no_border_when_single, OPT_NO_BORDER_WHEN_SINGLE
no_radius_when_single, OPT_NO_RADIUS_WHEN_SINGLE
snap_distance, OPT_SNAP_DISTANCE
enable_floating_snap, OPT_ENABLE_FLOATING_SNAP
drag_tile_to_tile, OPT_DRAG_TILE_TO_TILE
swipe_min_threshold, OPT_SWIPE_MIN_THRESHOLD
focused_opacity, OPT_FOCUSED_OPACITY
unfocused_opacity, OPT_UNFOCUSED_OPACITY
xkb_rules_rules, OPT_XKB_RULES_RULES
xkb_rules_model, OPT_XKB_RULES_MODEL
xkb_rules_layout, OPT_XKB_RULES_LAYOUT
xkb_rules_variant, OPT_XKB_RULES_VARIANT
xkb_rules_options, OPT_XKB_RULES_OPTIONS
scroller_proportion_preset, OPT_SCROLLER_PROPORTION_PRESET
circle_layout, OPT_CIRCLE_LAYOUT
new_is_master, OPT_NEW_IS_MASTER
default_mfact, OPT_DEFAULT_MFACT
default_nmaster, OPT_DEFAULT_NMASTER
center_master_overspread, OPT_CENTER_MASTER_OVERSPREAD
center_when_single_stack, OPT_CENTER_WHEN_SINGLE_STACK
hotarea_size, OPT_HOTAREA_SIZE
hotarea_corner, OPT_HOTAREA_CORNER
enable_hotarea, OPT_ENABLE_HOTAREA
ov_tab_mode, OPT_OV_TAB_MODE
overviewgappi, OPT_OVERVIEWGAPPI
overviewgappo, OPT_OVERVIEWGAPPO
cursor_hide_timeout, OPT_CURSOR_HIDE_TIMEOUT
axis_bind_apply_timeout, OPT_AXIS_BIND_APPLY_TIMEOUT
focus_on_activate, OPT_FOCUS_ON_ACTIVATE
numlockon, OPT_NUMLOCKON
idleinhibit_ignore_visible, OPT_IDLEINHIBIT_IGNORE_VISIBLE
sloppyfocus, OPT_SLOPPYFOCUS
warpcursor, OPT_WARPCURSOR
drag_corner, OPT_DRAG_CORNER
drag_warp_cursor, OPT_DRAG_WARP_CURSOR
smartgaps, OPT_SMARTGAPS
repeat_rate, OPT_REPEAT_RATE
repeat_delay, OPT_REPEAT_DELAY
disable_trackpad, OPT_DISABLE_TRACKPAD
tap_to_click, OPT_TAP_TO_CLICK
tap_and_drag, OPT_TAP_AND_DRAG
drag_lock, OPT_DRAG_LOCK
mouse_natural_scrolling, OPT_MOUSE_NATURAL_SCROLLING
trackpad_natural_scrolling, OPT_TRACKPAD_NATURAL_SCROLLING
cursor_size, OPT_CURSOR_SIZE
cursor_theme, OPT_CURSOR_THEME
disable_while_typing, OPT_DISABLE_WHILE_TYPING
left_handed, OPT_LEFT_HANDED
middle_button_emulation, OPT_MIDDLE_BUTTON_EMULATION
accel_profile, OPT_ACCEL_PROFILE
accel_speed, OPT_ACCEL_SPEED
scroll_method, OPT_SCROLL_METHOD
scroll_button, OPT_SCROLL_BUTTON
click_method, OPT_CLICK_METHOD
send_events_mode, OPT_SEND_EVENTS_MODE
button_map, OPT_BUTTON_MAP
axis_scroll_factor, OPT_AXIS_SCROLL_FACTOR
gappih, OPT_GAPPIH
gappiv, OPT_GAPPIV
gappoh, OPT_GAPPOH
gappov, OPT_GAPPOV
scratchpad_width_ratio, OPT_SCRATCHPAD_WIDTH_RATIO
scratchpad_height_ratio, OPT_SCRATCHPAD_HEIGHT_RATIO
borderpx, OPT_BORDERPX
rootcolor, OPT_ROOTCOLOR
shadowscolor, OPT_SHADOWSCOLOR
bordercolor, OPT_BORDERCOLOR
focuscolor, OPT_FOCUSCOLOR
maximizescreencolor, OPT_MAXIMIZESCREENCOLOR
urgentcolor, OPT_URGENTCOLOR
scratchpadcolor, OPT_SCRATCHPADCOLOR
globalcolor, OPT_GLOBALCOLOR
overlaycolor, OPT_OVERLAYCOLOR
monitorrule, OPT_MONITORRULE
tagrule, OPT_TAGRULE
layerrule, OPT_LAYERRULE
windowrule, OPT_WINDOWRULE
env, OPT_ENV
exec, OPT_EXEC
exec-once, OPT_EXEC_ONCE
source-optional, OPT_SOURCE_OPTIONAL
source, OPT_SOURCE
%%

File diff suppressed because it is too large Load diff