Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 18 additions & 1 deletion meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ libinput_dep = dependency('libinput',version: '>=1.27.1')
libwayland_client_dep = dependency('wayland-client')
pcre2_dep = dependency('libpcre2-8')
libscenefx_dep = dependency('scenefx-0.4',version: '>=0.4.1')

gperf = find_program('gperf', required : true)

# 获取版本信息
git = find_program('git', required : false)
Expand Down Expand Up @@ -94,11 +94,28 @@ if get_option('asan')
link_args += '-fsanitize=address'
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',
'src/mango.c',
'src/common/util.c',
'src/ext-protocol/wlr_ext_workspace_v1.c',
wayland_sources,
func_names_hash,
option_names_hash,
dependencies : [
libm,
xcb,
Expand Down
148 changes: 148 additions & 0 deletions src/config/func_names.gperf
Original file line number Diff line number Diff line change
@@ -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
%%
Loading