mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-24 09:25:59 +01:00
hyprctl: add shell completions
This commit is contained in:
parent
499df49f7b
commit
e0b0070fcb
9 changed files with 648 additions and 0 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -23,6 +23,7 @@ result*
|
|||
*.so
|
||||
|
||||
hyprctl/hyprctl
|
||||
completions/generated/*.usage
|
||||
|
||||
gmon.out
|
||||
*.out
|
||||
|
|
7
Makefile
7
Makefile
|
@ -55,6 +55,10 @@ install:
|
|||
mkdir -p ${PREFIX}/share/hyprland
|
||||
cp ./assets/wall_* ${PREFIX}/share/hyprland
|
||||
|
||||
install -m644 -D ./completions/generated/hyprctl.bash ${PREFIX}/share/bash-completion/completions/hyprctl
|
||||
install -m644 -D ./completions/generated/hyprctl.fish ${PREFIX}/share/fish/vendor_completions.d/
|
||||
install -m644 -D ./completions/generated/hyprctl.zsh ${PREFIX}/share/zsh/site-functions/_hyprctl
|
||||
|
||||
mkdir -p ${PREFIX}/share/man/man1
|
||||
install -m644 ./docs/*.1 ${PREFIX}/share/man/man1
|
||||
|
||||
|
@ -84,6 +88,9 @@ uninstall:
|
|||
rm -rf ${PREFIX}/share/hyprland
|
||||
rm -f ${PREFIX}/share/man/man1/Hyprland.1
|
||||
rm -f ${PREFIX}/share/man/man1/hyprctl.1
|
||||
rm -f ${PREFIX}/share/bash-completion/completions/hyprctl
|
||||
rm -f ${PREFIX}/share/fish/vendor_completions.d/hyprctl.fish
|
||||
rm -f ${PREFIX}/share/zsh/site-functions/_hyprctl
|
||||
|
||||
fixwlr:
|
||||
sed -E -i -e 's/(soversion = 12)([^032]|$$)/soversion = 12032/g' subprojects/wlroots/meson.build
|
||||
|
|
17
completions/build_completions.sh
Executable file
17
completions/build_completions.sh
Executable file
|
@ -0,0 +1,17 @@
|
|||
#!/bin/sh
|
||||
|
||||
generate_grammar() {
|
||||
cat hyprctl.usage
|
||||
echo
|
||||
printf '<CONFIG_OPTION> ::= '
|
||||
sed -n 's/.*configValues\["\(.*\)"\].*/ | \1/p' ../src/config/ConfigManager.cpp |
|
||||
sort | uniq | sed 's/\./\\./g' | tail -c +7
|
||||
echo ';'
|
||||
}
|
||||
|
||||
generate_grammar > generated/hyprctl.usage
|
||||
|
||||
cd generated || exit 1
|
||||
complgen compile --bash-script hyprctl.bash hyprctl.usage
|
||||
complgen compile --zsh-script hyprctl.zsh hyprctl.usage
|
||||
complgen compile --fish-script hyprctl.fish hyprctl.usage
|
141
completions/generated/hyprctl.bash
Normal file
141
completions/generated/hyprctl.bash
Normal file
File diff suppressed because one or more lines are too long
172
completions/generated/hyprctl.fish
Normal file
172
completions/generated/hyprctl.fish
Normal file
File diff suppressed because one or more lines are too long
165
completions/generated/hyprctl.zsh
Normal file
165
completions/generated/hyprctl.zsh
Normal file
File diff suppressed because one or more lines are too long
138
completions/hyprctl.usage
Normal file
138
completions/hyprctl.usage
Normal file
|
@ -0,0 +1,138 @@
|
|||
# https://github.com/adaszko/complgen#syntax
|
||||
hyprctl [<OPTION>]... <COMMAND>;
|
||||
|
||||
<OPTION> ::= -j "JSON output"
|
||||
| (-i | --instance) "use specified Hyprland instance" <INSTANCE>
|
||||
;
|
||||
|
||||
<COMMAND> ::= monitors "list all outputs with their properties"
|
||||
| workspaces "list all workspaces with their properties"
|
||||
| activeworkspace "show info about active workspace"
|
||||
| clients "list all windows with their properties"
|
||||
| activewindow "print active window name"
|
||||
| layers "list all layers"
|
||||
| devices "list all connected input devices"
|
||||
| binds "list all keybindings"
|
||||
| dispatch "run a dispatcher" <DISPATCHER>
|
||||
| keyword "execute a keyword" <KEYWORD>
|
||||
| version "print Hyprland version"
|
||||
| kill "kill an app by clicking on it"
|
||||
| splash "print current random splash"
|
||||
| hyprpaper <PAPERCOMMAND>
|
||||
| reload "reload config file"
|
||||
| setcursor "set cursor theme" <CURSORTHEME>
|
||||
| getoption "print value of config option" <CONFIG_OPTION>
|
||||
| cursorpos "print cursor position"
|
||||
| switchxkblayout "switch keyboard layout" <DEVICE> (next | prev)
|
||||
| seterror "show text in error bar" disable
|
||||
| setprop "set windowrule properties"
|
||||
| plugin ((load | unload) <PATH> | list)
|
||||
| notify "send notification" <ICON>
|
||||
| globalshortcuts "list all global shortcuts"
|
||||
| output "creates/destroys a fake output" (create (wayland | x11 | headless | auto) | remove <MONITOR>)
|
||||
| animations "list animations and beziers"
|
||||
| instances "list running Hyprland instances"
|
||||
| --batch "execute multiple commands, separated by ';'"
|
||||
;
|
||||
|
||||
# see KeybindManager.cpp
|
||||
<DISPATCHER> ::= alterzorder (top | bottom)
|
||||
| bringactivetotop
|
||||
| centerwindow
|
||||
| changegroupactive
|
||||
| closewindow
|
||||
| cyclenext
|
||||
| dpms
|
||||
| exec
|
||||
| execr
|
||||
| exit
|
||||
| fakefullscreen
|
||||
| focuscurrentorlast
|
||||
| focusmonitor
|
||||
| focusurgentorlast
|
||||
| focuswindow
|
||||
| focuswindowbyclass
|
||||
| forcerendererreload
|
||||
| fullscreen
|
||||
| global
|
||||
| killactive
|
||||
| layoutmsg
|
||||
| lockactivegroup
|
||||
| lockgroups
|
||||
| mfact
|
||||
| mouse
|
||||
| moveactive
|
||||
| movecurrentworkspacetomonitor
|
||||
| movecursor
|
||||
| movecursortocorner
|
||||
| movefocus
|
||||
| moveintogroup
|
||||
| moveoutofgroup
|
||||
| movetoworkspace
|
||||
| movetoworkspacesilent
|
||||
| movewindow
|
||||
| movewindoworgroup
|
||||
| movewindowpixel
|
||||
| moveworkspacetomonitor
|
||||
| pass
|
||||
| pin
|
||||
| pseudo
|
||||
| renameworkspace
|
||||
| resizeactive
|
||||
| resizewindowpixel
|
||||
| splitratio
|
||||
| submap
|
||||
| swapactiveworkspaces
|
||||
| swapnext
|
||||
| swapwindow
|
||||
| togglefloating
|
||||
| togglegroup
|
||||
| toggleopaque
|
||||
| togglespecialworkspace
|
||||
| togglesplit
|
||||
| workspace
|
||||
| workspaceopt
|
||||
;
|
||||
|
||||
<ICON> ::= -1 "no icon"
|
||||
| 0 "warning"
|
||||
| 1 "info"
|
||||
| 2 "hint"
|
||||
| 3 "error"
|
||||
| 4 "confused"
|
||||
| 5 "ok"
|
||||
;
|
||||
|
||||
<PAPERCOMMAND> ::= preload <PATH>
|
||||
| unload (<PATH> | all)
|
||||
| wallpaper
|
||||
;
|
||||
|
||||
# See parseKeyword in ConfigManager.cpp
|
||||
<KEYWORD> ::= monitor
|
||||
| exec
|
||||
| exec-once
|
||||
| monitor
|
||||
| bind
|
||||
| unbind
|
||||
| workspace
|
||||
| windowrule
|
||||
| windowrulev2
|
||||
| layerrule
|
||||
| bezier
|
||||
| animation
|
||||
| source <PATH>
|
||||
| submap
|
||||
| blurls
|
||||
| wsbind
|
||||
| env
|
||||
| plugin
|
||||
;
|
||||
|
||||
<DEVICE> ::= {{{ hyprctl devices -j | awk '/^"keyboards"/,/^\],$/' | sed -n 's/.*"name": "\(.*\)".*/\1/p' }}};
|
||||
|
||||
<CURSORTHEME> ::= {{{ printf '%s\n' /usr/share/icons/*/cursors | cut -d/ -f5 }}};
|
||||
|
||||
<MONITOR> ::= {{{ hyprctl monitors | sed -n 's/^Monitor \(.*\) (ID .*/\1/p' }}};
|
||||
|
||||
<INSTANCE> ::= {{{ hyprctl instances -j | sed -n 's/.*"instance": "\(.*\)".*/\1/p' }}};
|
6
completions/meson.build
Normal file
6
completions/meson.build
Normal file
|
@ -0,0 +1,6 @@
|
|||
zsh_install_dir = join_paths(get_option('datadir'), 'zsh', 'site-functions')
|
||||
fish_install_dir = join_paths(get_option('datadir'), 'fish', 'vendor_completions.d')
|
||||
bash_install_dir = join_paths(get_option('datadir'), 'bash-completion', 'completions')
|
||||
install_data('generated/hyprctl.zsh', rename: '_hyprctl', install_dir: zsh_install_dir, install_tag: 'runtime')
|
||||
install_data('generated/hyprctl.fish', install_dir: fish_install_dir, install_tag: 'runtime')
|
||||
install_data('generated/hyprctl.bash', rename: 'hyprctl', install_dir: bash_install_dir, install_tag: 'runtime')
|
|
@ -87,6 +87,7 @@ subdir('hyprctl')
|
|||
subdir('assets')
|
||||
subdir('example')
|
||||
subdir('docs')
|
||||
subdir('completions')
|
||||
|
||||
pkg_install_dir = join_paths(get_option('datadir'), 'pkgconfig')
|
||||
|
||||
|
|
Loading…
Reference in a new issue