hyprctl: add --quiet flag (#6380)

This commit is contained in:
diniamo 2024-06-09 21:16:29 +02:00 committed by GitHub
parent 722b846ac5
commit 121c6ac3ea
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 248 additions and 233 deletions

View file

@ -60,6 +60,7 @@ flags:
--batch Execute a batch of commands, separated by ';' --batch Execute a batch of commands, separated by ';'
--instance (-i) use a specific instance. Can be either signature or --instance (-i) use a specific instance. Can be either signature or
index in hyprctl instances (0, 1, etc) index in hyprctl instances (0, 1, etc)
--quiet (-q) Disable the output of hyprctl
--help: --help:
Can be used to print command's arguments that did not fit into this page Can be used to print command's arguments that did not fit into this page

View file

@ -2,7 +2,7 @@ _hyprctl_cmd_2 () {
hyprctl monitors | grep Monitor | awk '{ print $2 }' hyprctl monitors | grep Monitor | awk '{ print $2 }'
} }
_hyprctl_cmd_1 () { _hyprctl_cmd_3 () {
hyprpm list | grep "Plugin" | awk '{print $4}' hyprpm list | grep "Plugin" | awk '{print $4}'
} }
@ -10,7 +10,7 @@ _hyprctl_cmd_0 () {
hyprctl clients | grep class | awk '{print $2}' hyprctl clients | grep class | awk '{print $2}'
} }
_hyprctl_cmd_3 () { _hyprctl_cmd_1 () {
hyprctl devices | sed -n '/Keyboard at/{n; s/^\s\+//; p}' hyprctl devices | sed -n '/Keyboard at/{n; s/^\s\+//; p}'
} }
@ -23,25 +23,25 @@ _hyprctl () {
local words cword local words cword
_get_comp_words_by_ref -n "$COMP_WORDBREAKS" words cword _get_comp_words_by_ref -n "$COMP_WORDBREAKS" words cword
local -a literals=("cyclenext" "globalshortcuts" "cursorpos" "bordersize" "renameworkspace" "animationstyle" "focuswindow" "0" "auto" "swapnext" "forceallowsinput" "moveactive" "activebordercolor" "alphafullscreen" "wayland" "layers" "minsize" "monitors" "1" "kill" "settiled" "3" "focusmonitor" "swapwindow" "moveoutofgroup" "notify" "movecursor" "setcursor" "seterror" "movecurrentworkspacetomonitor" "4" "nomaxsize" "forcenoanims" "setprop" "-i" "togglefloating" "workspacerules" "movetoworkspace" "disable" "setignoregrouplock" "workspaces" "movegroupwindow" "closewindow" "0" "--instance" "binds" "movewindow" "splitratio" "alpha" "denywindowfromgroup" "workspace" "configerrors" "togglegroup" "getoption" "forceopaque" "keepaspectratio" "killactive" "pass" "decorations" "devices" "focuscurrentorlast" "submap" "global" "alphafullscreenoverride" "forcerendererreload" "movewindowpixel" "headless" "version" "dpms" "resizeactive" "moveintogroup" "5" "alphaoverride" "setfloating" "rollinglog" "::=" "rounding" "layouts" "moveworkspacetomonitor" "exec" "alphainactiveoverride" "alterzorder" "fakefullscreen" "nofocus" "keyword" "forcenoborder" "forcenodim" "pin" "output" "forcenoblur" "togglespecialworkspace" "fullscreen" "toggleopaque" "focusworkspaceoncurrentmonitor" "next" "changegroupactive" "-j" "instances" "execr" "exit" "clients" "all" "--batch" "dismissnotify" "inactivebordercolor" "switchxkblayout" "movetoworkspacesilent" "movewindoworgroup" "-r" "movefocus" "focusurgentorlast" "remove" "activeworkspace" "dispatch" "create" "centerwindow" "2" "hyprpaper" "-1" "reload" "alphainactive" "systeminfo" "plugin" "dimaround" "activewindow" "swapactiveworkspaces" "splash" "maxsize" "lockactivegroup" "windowdancecompat" "forceopaqueoverriden" "lockgroups" "movecursortocorner" "x11" "prev" "1" "resizewindowpixel" "forcenoshadow" "sendshortcut") local -a literals=("cyclenext" "globalshortcuts" "cursorpos" "bordersize" "renameworkspace" "animationstyle" "focuswindow" "0" "auto" "swapnext" "forceallowsinput" "moveactive" "activebordercolor" "alphafullscreen" "wayland" "layers" "minsize" "monitors" "1" "kill" "settiled" "3" "focusmonitor" "swapwindow" "moveoutofgroup" "notify" "movecursor" "setcursor" "seterror" "movecurrentworkspacetomonitor" "4" "nomaxsize" "forcenoanims" "setprop" "-i" "-q" "togglefloating" "workspacerules" "movetoworkspace" "disable" "setignoregrouplock" "workspaces" "movegroupwindow" "closewindow" "0" "--instance" "binds" "movewindow" "splitratio" "alpha" "denywindowfromgroup" "workspace" "configerrors" "togglegroup" "getoption" "forceopaque" "keepaspectratio" "killactive" "pass" "decorations" "devices" "focuscurrentorlast" "submap" "global" "alphafullscreenoverride" "forcerendererreload" "movewindowpixel" "headless" "version" "dpms" "resizeactive" "moveintogroup" "5" "alphaoverride" "setfloating" "rollinglog" "::=" "rounding" "layouts" "moveworkspacetomonitor" "exec" "alphainactiveoverride" "alterzorder" "fakefullscreen" "nofocus" "keyword" "forcenoborder" "forcenodim" "--quiet" "pin" "output" "forcenoblur" "togglespecialworkspace" "fullscreen" "toggleopaque" "focusworkspaceoncurrentmonitor" "next" "changegroupactive" "-j" "instances" "execr" "exit" "clients" "all" "--batch" "dismissnotify" "inactivebordercolor" "switchxkblayout" "movetoworkspacesilent" "tagwindow" "movewindoworgroup" "-r" "movefocus" "focusurgentorlast" "remove" "activeworkspace" "dispatch" "create" "centerwindow" "2" "hyprpaper" "-1" "reload" "alphainactive" "systeminfo" "plugin" "dimaround" "activewindow" "swapactiveworkspaces" "splash" "sendshortcut" "maxsize" "lockactivegroup" "windowdancecompat" "forceopaqueoverriden" "lockgroups" "movecursortocorner" "x11" "prev" "1" "resizewindowpixel" "forcenoshadow")
declare -A literal_transitions declare -A literal_transitions
literal_transitions[0]="([103]=1 [74]=2 [33]=3 [1]=2 [2]=2 [77]=2 [105]=4 [36]=2 [108]=5 [40]=2 [45]=2 [112]=2 [84]=6 [113]=8 [51]=2 [53]=2 [88]=9 [117]=2 [119]=2 [121]=2 [15]=2 [58]=10 [138]=10 [59]=2 [17]=11 [122]=12 [19]=2 [124]=2 [126]=2 [25]=13 [67]=2 [96]=5 [97]=2 [27]=2 [28]=14 [100]=2 [102]=5)" literal_transitions[0]="([105]=1 [75]=2 [33]=3 [35]=4 [1]=2 [2]=2 [78]=2 [107]=5 [37]=2 [111]=4 [41]=2 [46]=2 [115]=2 [85]=6 [116]=8 [52]=2 [88]=4 [54]=2 [90]=9 [120]=2 [122]=2 [124]=2 [15]=2 [59]=10 [60]=2 [17]=11 [125]=12 [19]=2 [127]=2 [129]=2 [25]=13 [68]=2 [98]=4 [99]=2 [27]=2 [28]=14 [102]=2 [104]=4)"
literal_transitions[3]="([72]=18 [13]=2 [32]=18 [54]=18 [55]=18 [89]=18 [104]=2 [120]=2 [76]=1 [16]=2 [123]=18 [3]=1 [5]=2 [63]=18 [127]=2 [129]=18 [80]=18 [130]=18 [83]=18 [31]=18 [48]=2 [12]=2 [85]=18 [10]=18 [86]=18 [137]=18)" literal_transitions[3]="([73]=17 [13]=2 [32]=17 [55]=17 [56]=17 [91]=17 [106]=2 [123]=2 [77]=1 [16]=2 [126]=17 [3]=1 [5]=2 [64]=17 [131]=2 [133]=17 [81]=17 [134]=17 [84]=17 [31]=17 [49]=2 [12]=2 [86]=17 [10]=17 [87]=17 [141]=17)"
literal_transitions[7]="([103]=1 [74]=2 [33]=3 [1]=2 [2]=2 [77]=2 [105]=4 [36]=2 [40]=2 [45]=2 [112]=2 [84]=6 [113]=8 [51]=2 [53]=2 [88]=9 [117]=2 [119]=2 [121]=2 [15]=2 [58]=10 [138]=10 [59]=2 [17]=11 [122]=12 [19]=2 [124]=2 [126]=2 [25]=13 [67]=2 [97]=2 [27]=2 [28]=14 [100]=2)" literal_transitions[7]="([105]=1 [75]=2 [33]=3 [1]=2 [2]=2 [78]=2 [107]=5 [37]=2 [41]=2 [46]=2 [115]=2 [85]=6 [116]=8 [52]=2 [54]=2 [90]=9 [120]=2 [122]=2 [124]=2 [15]=2 [59]=10 [60]=2 [17]=11 [125]=12 [19]=2 [127]=2 [129]=2 [25]=13 [68]=2 [99]=2 [27]=2 [28]=14 [102]=2)"
literal_transitions[8]="([128]=2 [131]=2 [0]=2 [73]=2 [35]=2 [106]=2 [37]=2 [107]=2 [4]=2 [78]=2 [39]=2 [79]=2 [110]=2 [6]=2 [41]=2 [42]=2 [81]=2 [82]=2 [46]=2 [47]=2 [9]=2 [109]=2 [50]=2 [52]=2 [11]=2 [115]=2 [87]=2 [49]=2 [56]=2 [90]=2 [57]=2 [91]=2 [92]=2 [60]=2 [61]=2 [125]=2 [93]=2 [62]=2 [20]=2 [95]=2 [22]=2 [23]=2 [64]=2 [65]=2 [24]=2 [132]=2 [26]=2 [68]=2 [98]=2 [69]=2 [29]=2 [136]=2 [70]=2 [99]=2)" literal_transitions[8]="([101]=2 [130]=2 [132]=2 [0]=2 [74]=2 [36]=2 [108]=2 [109]=2 [38]=2 [110]=2 [4]=2 [79]=2 [40]=2 [80]=2 [113]=2 [6]=2 [42]=2 [43]=2 [82]=2 [83]=2 [47]=2 [48]=2 [9]=2 [50]=2 [51]=2 [53]=2 [11]=2 [112]=2 [89]=2 [118]=2 [57]=2 [92]=2 [58]=2 [93]=2 [94]=2 [61]=2 [62]=2 [128]=2 [95]=2 [63]=2 [20]=2 [97]=2 [22]=2 [23]=2 [65]=2 [66]=2 [135]=2 [136]=2 [24]=2 [26]=2 [69]=2 [100]=2 [70]=2 [140]=2 [29]=2 [71]=2)"
literal_transitions[9]="([114]=15 [111]=16)" literal_transitions[9]="([117]=20 [114]=16)"
literal_transitions[11]="([101]=2)" literal_transitions[11]="([103]=2)"
literal_transitions[13]="([21]=1 [116]=1 [30]=1 [135]=1 [118]=1 [43]=1 [71]=1)" literal_transitions[13]="([21]=1 [119]=1 [30]=1 [139]=1 [121]=1 [44]=1 [72]=1)"
literal_transitions[14]="([38]=2)" literal_transitions[14]="([39]=2)"
literal_transitions[15]="([8]=2 [66]=2 [14]=2 [133]=2)" literal_transitions[15]="([138]=2 [96]=2)"
literal_transitions[17]="([75]=19)" literal_transitions[17]="([18]=2 [7]=2)"
literal_transitions[18]="([18]=2 [7]=2)" literal_transitions[18]="([76]=19)"
literal_transitions[19]="([34]=5 [44]=5)" literal_transitions[19]="([34]=4 [45]=4)"
literal_transitions[20]="([134]=2 [94]=2)" literal_transitions[20]="([8]=2 [67]=2 [14]=2 [137]=2)"
declare -A match_anything_transitions declare -A match_anything_transitions
match_anything_transitions=([1]=2 [0]=7 [6]=2 [20]=2 [10]=2 [2]=17 [7]=7 [12]=2 [14]=17 [16]=2 [4]=20 [11]=17) match_anything_transitions=([1]=2 [0]=7 [6]=2 [15]=2 [10]=2 [5]=15 [14]=18 [7]=7 [2]=18 [16]=2 [12]=2 [11]=18)
declare -A subword_transitions declare -A subword_transitions
local state=0 local state=0
@ -108,7 +108,7 @@ _hyprctl () {
done done
fi fi
declare -A commands declare -A commands
commands=([16]=2 [4]=3 [12]=1 [10]=0) commands=([5]=1 [16]=2 [12]=3 [10]=0)
if [[ -v "commands[$state]" ]]; then if [[ -v "commands[$state]" ]]; then
local command_id=${commands[$state]} local command_id=${commands[$state]}
local completions=() local completions=()

View file

@ -3,7 +3,7 @@ function _hyprctl_3
hyprctl monitors | grep Monitor | awk '{ print $2 }' hyprctl monitors | grep Monitor | awk '{ print $2 }'
end end
function _hyprctl_2 function _hyprctl_4
set 1 $argv[1] set 1 $argv[1]
hyprpm list | grep "Plugin" | awk '{print $4}' hyprpm list | grep "Plugin" | awk '{print $4}'
end end
@ -13,7 +13,7 @@ function _hyprctl_1
hyprctl clients | grep class | awk '{print $2}' hyprctl clients | grep class | awk '{print $2}'
end end
function _hyprctl_4 function _hyprctl_2
set 1 $argv[1] set 1 $argv[1]
hyprctl devices | sed -n '/Keyboard at/{n; s/^\s\+//; p}' hyprctl devices | sed -n '/Keyboard at/{n; s/^\s\+//; p}'
end end
@ -29,7 +29,7 @@ function _hyprctl
set COMP_CWORD (count $COMP_WORDS) set COMP_CWORD (count $COMP_WORDS)
end end
set --local literals "cyclenext" "globalshortcuts" "cursorpos" "bordersize" "renameworkspace" "animationstyle" "focuswindow" "0" "auto" "swapnext" "forceallowsinput" "moveactive" "activebordercolor" "alphafullscreen" "wayland" "layers" "minsize" "monitors" "1" "kill" "settiled" "3" "focusmonitor" "swapwindow" "moveoutofgroup" "notify" "movecursor" "setcursor" "seterror" "movecurrentworkspacetomonitor" "4" "nomaxsize" "forcenoanims" "setprop" "-i" "togglefloating" "workspacerules" "movetoworkspace" "disable" "setignoregrouplock" "workspaces" "movegroupwindow" "closewindow" "0" "--instance" "binds" "movewindow" "splitratio" "alpha" "denywindowfromgroup" "workspace" "configerrors" "togglegroup" "getoption" "forceopaque" "keepaspectratio" "killactive" "pass" "decorations" "devices" "focuscurrentorlast" "submap" "global" "alphafullscreenoverride" "forcerendererreload" "movewindowpixel" "headless" "version" "dpms" "resizeactive" "moveintogroup" "5" "alphaoverride" "setfloating" "rollinglog" "::=" "rounding" "layouts" "moveworkspacetomonitor" "exec" "alphainactiveoverride" "alterzorder" "fakefullscreen" "nofocus" "keyword" "forcenoborder" "forcenodim" "pin" "output" "forcenoblur" "togglespecialworkspace" "fullscreen" "toggleopaque" "focusworkspaceoncurrentmonitor" "next" "changegroupactive" "-j" "instances" "execr" "exit" "clients" "all" "--batch" "dismissnotify" "inactivebordercolor" "switchxkblayout" "movetoworkspacesilent" "movewindoworgroup" "-r" "movefocus" "focusurgentorlast" "remove" "activeworkspace" "dispatch" "create" "centerwindow" "2" "hyprpaper" "-1" "reload" "alphainactive" "systeminfo" "plugin" "dimaround" "activewindow" "swapactiveworkspaces" "splash" "maxsize" "lockactivegroup" "windowdancecompat" "forceopaqueoverriden" "lockgroups" "movecursortocorner" "x11" "prev" "1" "resizewindowpixel" "forcenoshadow" "sendshortcut" set --local literals "cyclenext" "globalshortcuts" "cursorpos" "bordersize" "renameworkspace" "animationstyle" "focuswindow" "0" "auto" "swapnext" "forceallowsinput" "moveactive" "activebordercolor" "alphafullscreen" "wayland" "layers" "minsize" "monitors" "1" "kill" "settiled" "3" "focusmonitor" "swapwindow" "moveoutofgroup" "notify" "movecursor" "setcursor" "seterror" "movecurrentworkspacetomonitor" "4" "nomaxsize" "forcenoanims" "setprop" "-i" "-q" "togglefloating" "workspacerules" "movetoworkspace" "disable" "setignoregrouplock" "workspaces" "movegroupwindow" "closewindow" "0" "--instance" "binds" "movewindow" "splitratio" "alpha" "denywindowfromgroup" "workspace" "configerrors" "togglegroup" "getoption" "forceopaque" "keepaspectratio" "killactive" "pass" "decorations" "devices" "focuscurrentorlast" "submap" "global" "alphafullscreenoverride" "forcerendererreload" "movewindowpixel" "headless" "version" "dpms" "resizeactive" "moveintogroup" "5" "alphaoverride" "setfloating" "rollinglog" "::=" "rounding" "layouts" "moveworkspacetomonitor" "exec" "alphainactiveoverride" "alterzorder" "fakefullscreen" "nofocus" "keyword" "forcenoborder" "forcenodim" "--quiet" "pin" "output" "forcenoblur" "togglespecialworkspace" "fullscreen" "toggleopaque" "focusworkspaceoncurrentmonitor" "next" "changegroupactive" "-j" "instances" "execr" "exit" "clients" "all" "--batch" "dismissnotify" "inactivebordercolor" "switchxkblayout" "movetoworkspacesilent" "tagwindow" "movewindoworgroup" "-r" "movefocus" "focusurgentorlast" "remove" "activeworkspace" "dispatch" "create" "centerwindow" "2" "hyprpaper" "-1" "reload" "alphainactive" "systeminfo" "plugin" "dimaround" "activewindow" "swapactiveworkspaces" "splash" "sendshortcut" "maxsize" "lockactivegroup" "windowdancecompat" "forceopaqueoverriden" "lockgroups" "movecursortocorner" "x11" "prev" "1" "resizewindowpixel" "forcenoshadow"
set --local descriptions set --local descriptions
set descriptions[1] "Focus the next window on a workspace" set descriptions[1] "Focus the next window on a workspace"
@ -54,102 +54,104 @@ function _hyprctl
set descriptions[31] "CONFUSED" set descriptions[31] "CONFUSED"
set descriptions[34] "Set a property of a window" set descriptions[34] "Set a property of a window"
set descriptions[35] "Specify the Hyprland instance" set descriptions[35] "Specify the Hyprland instance"
set descriptions[36] "Toggle the current window's floating state" set descriptions[36] "Disable output"
set descriptions[37] "Get the list of defined workspace rules" set descriptions[37] "Toggle the current window's floating state"
set descriptions[38] "Move the focused window to a workspace" set descriptions[38] "Get the list of defined workspace rules"
set descriptions[40] "Temporarily enable or disable binds:ignore_group_lock" set descriptions[39] "Move the focused window to a workspace"
set descriptions[41] "List all workspaces with their properties" set descriptions[41] "Temporarily enable or disable binds:ignore_group_lock"
set descriptions[42] "Swap the active window with the next or previous in a group" set descriptions[42] "List all workspaces with their properties"
set descriptions[43] "Close a specified window" set descriptions[43] "Swap the active window with the next or previous in a group"
set descriptions[44] "WARNING" set descriptions[44] "Close a specified window"
set descriptions[45] "Specify the Hyprland instance" set descriptions[45] "WARNING"
set descriptions[46] "List all registered binds" set descriptions[46] "Specify the Hyprland instance"
set descriptions[47] "Move the active window in a direction or to a monitor" set descriptions[47] "List all registered binds"
set descriptions[48] "Change the split ratio" set descriptions[48] "Move the active window in a direction or to a monitor"
set descriptions[50] "Prohibit the active window from becoming or being inserted into group" set descriptions[49] "Change the split ratio"
set descriptions[51] "Change the workspace" set descriptions[51] "Prohibit the active window from becoming or being inserted into group"
set descriptions[52] "List all current config parsing errors" set descriptions[52] "Change the workspace"
set descriptions[53] "Toggle the current active window into a group" set descriptions[53] "List all current config parsing errors"
set descriptions[54] "Get the config option status (values)" set descriptions[54] "Toggle the current active window into a group"
set descriptions[57] "Close the active window" set descriptions[55] "Get the config option status (values)"
set descriptions[58] "Pass the key to a specified window" set descriptions[58] "Close the active window"
set descriptions[59] "List all decorations and their info" set descriptions[59] "Pass the key to a specified window"
set descriptions[60] "List all connected keyboards and mice" set descriptions[60] "List all decorations and their info"
set descriptions[61] "Switch focus from current to previously focused window" set descriptions[61] "List all connected keyboards and mice"
set descriptions[62] "Change the current mapping group" set descriptions[62] "Switch focus from current to previously focused window"
set descriptions[63] "Execute a Global Shortcut using the GlobalShortcuts portal" set descriptions[63] "Change the current mapping group"
set descriptions[65] "Force the renderer to reload all resources and outputs" set descriptions[64] "Execute a Global Shortcut using the GlobalShortcuts portal"
set descriptions[66] "Move a selected window" set descriptions[66] "Force the renderer to reload all resources and outputs"
set descriptions[68] "Print the Hyprland version: flags, commit and branch of build" set descriptions[67] "Move a selected window"
set descriptions[69] "Set all monitors' DPMS status" set descriptions[69] "Print the Hyprland version: flags, commit and branch of build"
set descriptions[70] "Resize the active window" set descriptions[70] "Set all monitors' DPMS status"
set descriptions[71] "Move the active window into a group" set descriptions[71] "Resize the active window"
set descriptions[72] "OK" set descriptions[72] "Move the active window into a group"
set descriptions[74] "Set the current window's floating state to true" set descriptions[73] "OK"
set descriptions[75] "Print tail of the log" set descriptions[75] "Set the current window's floating state to true"
set descriptions[78] "List all layouts available (including plugin ones)" set descriptions[76] "Print tail of the log"
set descriptions[79] "Move a workspace to a monitor" set descriptions[79] "List all layouts available (including plugin ones)"
set descriptions[80] "Execute a shell command" set descriptions[80] "Move a workspace to a monitor"
set descriptions[82] "Modify the window stack order of the active or specified window" set descriptions[81] "Execute a shell command"
set descriptions[83] "Toggle the focused window's internal fullscreen state" set descriptions[83] "Modify the window stack order of the active or specified window"
set descriptions[85] "Issue a keyword to call a config keyword dynamically" set descriptions[84] "Toggle the focused window's internal fullscreen state"
set descriptions[88] "Pin a window" set descriptions[86] "Issue a keyword to call a config keyword dynamically"
set descriptions[89] "Allows adding/removing fake outputs to a specific backend" set descriptions[89] "Disable output"
set descriptions[91] "Toggle a special workspace on/off" set descriptions[90] "Pin a window"
set descriptions[92] "Toggle the focused window's fullscreen state" set descriptions[91] "Allows adding/removing fake outputs to a specific backend"
set descriptions[93] "Toggle the current window to always be opaque" set descriptions[93] "Toggle a special workspace on/off"
set descriptions[94] "Focus the requested workspace" set descriptions[94] "Toggle the focused window's fullscreen state"
set descriptions[96] "Switch to the next window in a group" set descriptions[95] "Toggle the current window to always be opaque"
set descriptions[97] "Output in JSON format" set descriptions[96] "Focus the requested workspace"
set descriptions[98] "List all running Hyprland instances and their info" set descriptions[98] "Switch to the next window in a group"
set descriptions[99] "Execute a raw shell command" set descriptions[99] "Output in JSON format"
set descriptions[100] "Exit the compositor with no questions asked" set descriptions[100] "List all running Hyprland instances and their info"
set descriptions[101] "List all windows with their properties" set descriptions[101] "Execute a raw shell command"
set descriptions[103] "Execute a batch of commands separated by ;" set descriptions[102] "Exit the compositor with no questions asked"
set descriptions[104] "Dismiss all or up to amount of notifications" set descriptions[103] "List all windows with their properties"
set descriptions[106] "Set the xkb layout index for a keyboard" set descriptions[105] "Execute a batch of commands separated by ;"
set descriptions[107] "Move window doesnt switch to the workspace" set descriptions[106] "Dismiss all or up to amount of notifications"
set descriptions[108] "Behave as moveintogroup" set descriptions[108] "Set the xkb layout index for a keyboard"
set descriptions[109] "Refresh state after issuing the command" set descriptions[109] "Move window doesnt switch to the workspace"
set descriptions[110] "Move the focus in a direction" set descriptions[110] "Apply a tag to the window"
set descriptions[111] "Focus the urgent window or the last window" set descriptions[111] "Behave as moveintogroup"
set descriptions[113] "Get the active workspace name and its properties" set descriptions[112] "Refresh state after issuing the command"
set descriptions[114] "Issue a dispatch to call a keybind dispatcher with an arg" set descriptions[113] "Move the focus in a direction"
set descriptions[116] "Center the active window" set descriptions[114] "Focus the urgent window or the last window"
set descriptions[117] "HINT" set descriptions[116] "Get the active workspace name and its properties"
set descriptions[118] "Interact with hyprpaper if present" set descriptions[117] "Issue a dispatch to call a keybind dispatcher with an arg"
set descriptions[119] "No Icon" set descriptions[119] "Center the active window"
set descriptions[120] "Force reload the config" set descriptions[120] "HINT"
set descriptions[122] "Print system info" set descriptions[121] "Interact with hyprpaper if present"
set descriptions[123] "Interact with a plugin" set descriptions[122] "No Icon"
set descriptions[125] "Get the active window name and its properties" set descriptions[123] "Force reload the config"
set descriptions[126] "Swap the active workspaces between two monitors" set descriptions[125] "Print system info"
set descriptions[127] "Print the current random splash" set descriptions[126] "Interact with a plugin"
set descriptions[129] "Lock the focused group" set descriptions[128] "Get the active window name and its properties"
set descriptions[132] "Lock the groups" set descriptions[129] "Swap the active workspaces between two monitors"
set descriptions[133] "Move the cursor to the corner of the active window" set descriptions[130] "Print the current random splash"
set descriptions[136] "INFO" set descriptions[131] "On shortcut X sends shortcut Y to a specified window"
set descriptions[137] "Resize a selected window" set descriptions[133] "Lock the focused group"
set descriptions[138] "On shortcut X sends shortcut Y to a specified window" set descriptions[136] "Lock the groups"
set descriptions[137] "Move the cursor to the corner of the active window"
set descriptions[140] "INFO"
set descriptions[141] "Resize a selected window"
set --local literal_transitions set --local literal_transitions
set literal_transitions[1] "set inputs 104 75 34 2 3 78 106 37 109 41 46 113 85 114 52 54 89 118 120 122 16 59 60 18 123 20 125 127 26 68 97 98 28 29 101 103; set tos 2 3 4 3 3 3 5 3 6 3 3 3 7 9 3 3 10 3 3 3 3 11 3 12 13 3 3 3 14 3 6 3 3 15 3 6" set literal_transitions[1] "set inputs 106 76 34 36 2 3 79 108 38 112 42 47 116 86 117 53 89 55 91 121 123 125 16 60 61 18 126 20 128 130 26 69 99 100 28 29 103 105; set tos 2 3 4 5 3 3 3 6 3 5 3 3 3 7 9 3 5 3 10 3 3 3 3 11 3 12 13 3 3 3 14 3 5 3 3 15 3 5"
set literal_transitions[4] "set inputs 73 14 33 55 56 90 105 121 77 17 124 4 6 64 128 130 81 131 84 32 49 13 86 11 87 138; set tos 19 3 19 19 19 19 3 3 2 3 19 2 3 19 3 19 19 19 19 19 3 3 19 19 19 19" set literal_transitions[4] "set inputs 74 14 33 56 57 92 107 124 78 17 127 4 6 65 132 134 82 135 85 32 50 13 87 11 88 142; set tos 18 3 18 18 18 18 3 3 2 3 18 2 3 18 3 18 18 18 18 18 3 3 18 18 18 18"
set literal_transitions[8] "set inputs 104 75 34 2 3 78 106 37 41 46 113 85 114 52 54 89 118 120 122 16 59 60 18 123 20 125 127 26 68 98 28 29 101; set tos 2 3 4 3 3 3 5 3 3 3 3 7 9 3 3 10 3 3 3 3 11 3 12 13 3 3 3 14 3 3 3 15 3" set literal_transitions[8] "set inputs 106 76 34 2 3 79 108 38 42 47 116 86 117 53 55 91 121 123 125 16 60 61 18 126 20 128 130 26 69 100 28 29 103; set tos 2 3 4 3 3 3 6 3 3 3 3 7 9 3 3 10 3 3 3 3 11 3 12 13 3 3 3 14 3 3 3 15 3"
set literal_transitions[9] "set inputs 129 132 1 74 36 107 38 108 5 79 40 80 111 7 42 43 82 83 47 48 10 110 51 53 12 116 88 50 57 91 58 92 93 61 62 126 94 63 21 96 23 24 65 66 25 133 27 69 99 70 30 137 71 100 138; set tos 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3" set literal_transitions[9] "set inputs 102 131 133 1 75 37 109 110 39 111 5 80 41 81 114 7 43 44 83 84 48 49 10 51 52 54 12 113 90 119 58 93 59 94 95 62 63 129 96 64 21 98 23 24 66 67 136 137 25 27 70 101 71 141 30 72; set tos 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3"
set literal_transitions[10] "set inputs 115 112; set tos 16 17" set literal_transitions[10] "set inputs 118 115; set tos 21 17"
set literal_transitions[12] "set inputs 102; set tos 3" set literal_transitions[12] "set inputs 104; set tos 3"
set literal_transitions[14] "set inputs 22 117 31 136 119 44 72; set tos 2 2 2 2 2 2 2" set literal_transitions[14] "set inputs 22 120 31 140 122 45 73; set tos 2 2 2 2 2 2 2"
set literal_transitions[15] "set inputs 39; set tos 3" set literal_transitions[15] "set inputs 40; set tos 3"
set literal_transitions[16] "set inputs 9 67 15 134; set tos 3 3 3 3" set literal_transitions[16] "set inputs 139 97; set tos 3 3"
set literal_transitions[18] "set inputs 76; set tos 20" set literal_transitions[18] "set inputs 19 8; set tos 3 3"
set literal_transitions[19] "set inputs 19 8; set tos 3 3" set literal_transitions[19] "set inputs 77; set tos 20"
set literal_transitions[20] "set inputs 35 45; set tos 6 6" set literal_transitions[20] "set inputs 35 46; set tos 5 5"
set literal_transitions[21] "set inputs 135 95; set tos 3 3" set literal_transitions[21] "set inputs 9 68 15 138; set tos 3 3 3 3"
set --local match_anything_transitions_from 2 1 7 21 11 3 8 13 15 17 5 12 set --local match_anything_transitions_from 2 1 7 16 11 6 15 8 3 17 13 12
set --local match_anything_transitions_to 3 8 3 3 3 18 8 3 18 3 21 18 set --local match_anything_transitions_to 3 8 3 3 3 16 19 8 19 3 3 19
set --local state 1 set --local state 1
set --local word_index 2 set --local word_index 2
@ -201,8 +203,8 @@ function _hyprctl
end end
end end
set command_states 17 5 13 11 set command_states 6 17 13 11
set command_ids 3 4 2 1 set command_ids 2 3 4 1
if contains $state $command_states if contains $state $command_states
set --local index (contains --index $state $command_states) set --local index (contains --index $state $command_states)
set --local function_id $command_ids[$index] set --local function_id $command_ids[$index]

View file

@ -8,6 +8,7 @@ hyprctl [<OPTIONS>]... <ARGUMENTS>
| (-j) "Output in JSON format" | (-j) "Output in JSON format"
| (-r) "Refresh state after issuing the command" | (-r) "Refresh state after issuing the command"
| (--batch) "Execute a batch of commands separated by ;" | (--batch) "Execute a batch of commands separated by ;"
| (-q | --quiet) "Disable output"
; ;
<WINDOWS> ::= {{{ hyprctl clients | grep class | awk '{print $2}' }}}; <WINDOWS> ::= {{{ hyprctl clients | grep class | awk '{print $2}' }}};

View file

@ -1,10 +1,8 @@
#compdef hyprctl
_hyprctl_cmd_2 () { _hyprctl_cmd_2 () {
hyprctl monitors | grep Monitor | awk '{ print $2 }' hyprctl monitors | grep Monitor | awk '{ print $2 }'
} }
_hyprctl_cmd_1 () { _hyprctl_cmd_3 () {
hyprpm list | grep "Plugin" | awk '{print $4}' hyprpm list | grep "Plugin" | awk '{print $4}'
} }
@ -12,12 +10,12 @@ _hyprctl_cmd_0 () {
hyprctl clients | grep class | awk '{print $2}' hyprctl clients | grep class | awk '{print $2}'
} }
_hyprctl_cmd_3 () { _hyprctl_cmd_1 () {
hyprctl devices | sed -n '/Keyboard at/{n; s/^\s\+//; p}' hyprctl devices | sed -n '/Keyboard at/{n; s/^\s\+//; p}'
} }
_hyprctl () { _hyprctl () {
local -a literals=("cyclenext" "globalshortcuts" "cursorpos" "bordersize" "renameworkspace" "animationstyle" "focuswindow" "0" "auto" "swapnext" "forceallowsinput" "moveactive" "activebordercolor" "alphafullscreen" "wayland" "layers" "minsize" "monitors" "1" "kill" "settiled" "3" "focusmonitor" "swapwindow" "moveoutofgroup" "notify" "movecursor" "setcursor" "seterror" "movecurrentworkspacetomonitor" "4" "nomaxsize" "forcenoanims" "setprop" "-i" "togglefloating" "workspacerules" "movetoworkspace" "disable" "setignoregrouplock" "workspaces" "movegroupwindow" "closewindow" "0" "--instance" "binds" "movewindow" "splitratio" "alpha" "denywindowfromgroup" "workspace" "configerrors" "togglegroup" "getoption" "forceopaque" "keepaspectratio" "killactive" "pass" "decorations" "devices" "focuscurrentorlast" "submap" "global" "alphafullscreenoverride" "forcerendererreload" "movewindowpixel" "headless" "version" "dpms" "resizeactive" "moveintogroup" "5" "alphaoverride" "setfloating" "rollinglog" "::=" "rounding" "layouts" "moveworkspacetomonitor" "exec" "alphainactiveoverride" "alterzorder" "fakefullscreen" "nofocus" "keyword" "forcenoborder" "forcenodim" "pin" "output" "forcenoblur" "togglespecialworkspace" "fullscreen" "toggleopaque" "focusworkspaceoncurrentmonitor" "next" "changegroupactive" "-j" "instances" "execr" "exit" "clients" "all" "--batch" "dismissnotify" "inactivebordercolor" "switchxkblayout" "movetoworkspacesilent" "movewindoworgroup" "-r" "movefocus" "focusurgentorlast" "remove" "activeworkspace" "dispatch" "create" "centerwindow" "2" "hyprpaper" "-1" "reload" "alphainactive" "systeminfo" "plugin" "dimaround" "activewindow" "swapactiveworkspaces" "splash" "maxsize" "lockactivegroup" "windowdancecompat" "forceopaqueoverriden" "lockgroups" "movecursortocorner" "x11" "prev" "1" "resizewindowpixel" "forcenoshadow" "sendshortcut") local -a literals=("cyclenext" "globalshortcuts" "cursorpos" "bordersize" "renameworkspace" "animationstyle" "focuswindow" "0" "auto" "swapnext" "forceallowsinput" "moveactive" "activebordercolor" "alphafullscreen" "wayland" "layers" "minsize" "monitors" "1" "kill" "settiled" "3" "focusmonitor" "swapwindow" "moveoutofgroup" "notify" "movecursor" "setcursor" "seterror" "movecurrentworkspacetomonitor" "4" "nomaxsize" "forcenoanims" "setprop" "-i" "-q" "togglefloating" "workspacerules" "movetoworkspace" "disable" "setignoregrouplock" "workspaces" "movegroupwindow" "closewindow" "0" "--instance" "binds" "movewindow" "splitratio" "alpha" "denywindowfromgroup" "workspace" "configerrors" "togglegroup" "getoption" "forceopaque" "keepaspectratio" "killactive" "pass" "decorations" "devices" "focuscurrentorlast" "submap" "global" "alphafullscreenoverride" "forcerendererreload" "movewindowpixel" "headless" "version" "dpms" "resizeactive" "moveintogroup" "5" "alphaoverride" "setfloating" "rollinglog" "::=" "rounding" "layouts" "moveworkspacetomonitor" "exec" "alphainactiveoverride" "alterzorder" "fakefullscreen" "nofocus" "keyword" "forcenoborder" "forcenodim" "--quiet" "pin" "output" "forcenoblur" "togglespecialworkspace" "fullscreen" "toggleopaque" "focusworkspaceoncurrentmonitor" "next" "changegroupactive" "-j" "instances" "execr" "exit" "clients" "all" "--batch" "dismissnotify" "inactivebordercolor" "switchxkblayout" "movetoworkspacesilent" "tagwindow" "movewindoworgroup" "-r" "movefocus" "focusurgentorlast" "remove" "activeworkspace" "dispatch" "create" "centerwindow" "2" "hyprpaper" "-1" "reload" "alphainactive" "systeminfo" "plugin" "dimaround" "activewindow" "swapactiveworkspaces" "splash" "sendshortcut" "maxsize" "lockactivegroup" "windowdancecompat" "forceopaqueoverriden" "lockgroups" "movecursortocorner" "x11" "prev" "1" "resizewindowpixel" "forcenoshadow")
local -A descriptions local -A descriptions
descriptions[1]="Focus the next window on a workspace" descriptions[1]="Focus the next window on a workspace"
@ -42,101 +40,104 @@ _hyprctl () {
descriptions[31]="CONFUSED" descriptions[31]="CONFUSED"
descriptions[34]="Set a property of a window" descriptions[34]="Set a property of a window"
descriptions[35]="Specify the Hyprland instance" descriptions[35]="Specify the Hyprland instance"
descriptions[36]="Toggle the current window's floating state" descriptions[36]="Disable output"
descriptions[37]="Get the list of defined workspace rules" descriptions[37]="Toggle the current window's floating state"
descriptions[38]="Move the focused window to a workspace" descriptions[38]="Get the list of defined workspace rules"
descriptions[40]="Temporarily enable or disable binds:ignore_group_lock" descriptions[39]="Move the focused window to a workspace"
descriptions[41]="List all workspaces with their properties" descriptions[41]="Temporarily enable or disable binds:ignore_group_lock"
descriptions[42]="Swap the active window with the next or previous in a group" descriptions[42]="List all workspaces with their properties"
descriptions[43]="Close a specified window" descriptions[43]="Swap the active window with the next or previous in a group"
descriptions[44]="WARNING" descriptions[44]="Close a specified window"
descriptions[45]="Specify the Hyprland instance" descriptions[45]="WARNING"
descriptions[46]="List all registered binds" descriptions[46]="Specify the Hyprland instance"
descriptions[47]="Move the active window in a direction or to a monitor" descriptions[47]="List all registered binds"
descriptions[48]="Change the split ratio" descriptions[48]="Move the active window in a direction or to a monitor"
descriptions[50]="Prohibit the active window from becoming or being inserted into group" descriptions[49]="Change the split ratio"
descriptions[51]="Change the workspace" descriptions[51]="Prohibit the active window from becoming or being inserted into group"
descriptions[52]="List all current config parsing errors" descriptions[52]="Change the workspace"
descriptions[53]="Toggle the current active window into a group" descriptions[53]="List all current config parsing errors"
descriptions[54]="Get the config option status (values)" descriptions[54]="Toggle the current active window into a group"
descriptions[57]="Close the active window" descriptions[55]="Get the config option status (values)"
descriptions[58]="Pass the key to a specified window" descriptions[58]="Close the active window"
descriptions[59]="List all decorations and their info" descriptions[59]="Pass the key to a specified window"
descriptions[60]="List all connected keyboards and mice" descriptions[60]="List all decorations and their info"
descriptions[61]="Switch focus from current to previously focused window" descriptions[61]="List all connected keyboards and mice"
descriptions[62]="Change the current mapping group" descriptions[62]="Switch focus from current to previously focused window"
descriptions[63]="Execute a Global Shortcut using the GlobalShortcuts portal" descriptions[63]="Change the current mapping group"
descriptions[65]="Force the renderer to reload all resources and outputs" descriptions[64]="Execute a Global Shortcut using the GlobalShortcuts portal"
descriptions[66]="Move a selected window" descriptions[66]="Force the renderer to reload all resources and outputs"
descriptions[68]="Print the Hyprland version: flags, commit and branch of build" descriptions[67]="Move a selected window"
descriptions[69]="Set all monitors' DPMS status" descriptions[69]="Print the Hyprland version: flags, commit and branch of build"
descriptions[70]="Resize the active window" descriptions[70]="Set all monitors' DPMS status"
descriptions[71]="Move the active window into a group" descriptions[71]="Resize the active window"
descriptions[72]="OK" descriptions[72]="Move the active window into a group"
descriptions[74]="Set the current window's floating state to true" descriptions[73]="OK"
descriptions[75]="Print tail of the log" descriptions[75]="Set the current window's floating state to true"
descriptions[78]="List all layouts available (including plugin ones)" descriptions[76]="Print tail of the log"
descriptions[79]="Move a workspace to a monitor" descriptions[79]="List all layouts available (including plugin ones)"
descriptions[80]="Execute a shell command" descriptions[80]="Move a workspace to a monitor"
descriptions[82]="Modify the window stack order of the active or specified window" descriptions[81]="Execute a shell command"
descriptions[83]="Toggle the focused window's internal fullscreen state" descriptions[83]="Modify the window stack order of the active or specified window"
descriptions[85]="Issue a keyword to call a config keyword dynamically" descriptions[84]="Toggle the focused window's internal fullscreen state"
descriptions[88]="Pin a window" descriptions[86]="Issue a keyword to call a config keyword dynamically"
descriptions[89]="Allows adding/removing fake outputs to a specific backend" descriptions[89]="Disable output"
descriptions[91]="Toggle a special workspace on/off" descriptions[90]="Pin a window"
descriptions[92]="Toggle the focused window's fullscreen state" descriptions[91]="Allows adding/removing fake outputs to a specific backend"
descriptions[93]="Toggle the current window to always be opaque" descriptions[93]="Toggle a special workspace on/off"
descriptions[94]="Focus the requested workspace" descriptions[94]="Toggle the focused window's fullscreen state"
descriptions[96]="Switch to the next window in a group" descriptions[95]="Toggle the current window to always be opaque"
descriptions[97]="Output in JSON format" descriptions[96]="Focus the requested workspace"
descriptions[98]="List all running Hyprland instances and their info" descriptions[98]="Switch to the next window in a group"
descriptions[99]="Execute a raw shell command" descriptions[99]="Output in JSON format"
descriptions[100]="Exit the compositor with no questions asked" descriptions[100]="List all running Hyprland instances and their info"
descriptions[101]="List all windows with their properties" descriptions[101]="Execute a raw shell command"
descriptions[103]="Execute a batch of commands separated by ;" descriptions[102]="Exit the compositor with no questions asked"
descriptions[104]="Dismiss all or up to amount of notifications" descriptions[103]="List all windows with their properties"
descriptions[106]="Set the xkb layout index for a keyboard" descriptions[105]="Execute a batch of commands separated by ;"
descriptions[107]="Move window doesnt switch to the workspace" descriptions[106]="Dismiss all or up to amount of notifications"
descriptions[108]="Behave as moveintogroup" descriptions[108]="Set the xkb layout index for a keyboard"
descriptions[109]="Refresh state after issuing the command" descriptions[109]="Move window doesnt switch to the workspace"
descriptions[110]="Move the focus in a direction" descriptions[110]="Apply a tag to the window"
descriptions[111]="Focus the urgent window or the last window" descriptions[111]="Behave as moveintogroup"
descriptions[113]="Get the active workspace name and its properties" descriptions[112]="Refresh state after issuing the command"
descriptions[114]="Issue a dispatch to call a keybind dispatcher with an arg" descriptions[113]="Move the focus in a direction"
descriptions[116]="Center the active window" descriptions[114]="Focus the urgent window or the last window"
descriptions[117]="HINT" descriptions[116]="Get the active workspace name and its properties"
descriptions[118]="Interact with hyprpaper if present" descriptions[117]="Issue a dispatch to call a keybind dispatcher with an arg"
descriptions[119]="No Icon" descriptions[119]="Center the active window"
descriptions[120]="Force reload the config" descriptions[120]="HINT"
descriptions[122]="Print system info" descriptions[121]="Interact with hyprpaper if present"
descriptions[123]="Interact with a plugin" descriptions[122]="No Icon"
descriptions[125]="Get the active window name and its properties" descriptions[123]="Force reload the config"
descriptions[126]="Swap the active workspaces between two monitors" descriptions[125]="Print system info"
descriptions[127]="Print the current random splash" descriptions[126]="Interact with a plugin"
descriptions[129]="Lock the focused group" descriptions[128]="Get the active window name and its properties"
descriptions[132]="Lock the groups" descriptions[129]="Swap the active workspaces between two monitors"
descriptions[133]="Move the cursor to the corner of the active window" descriptions[130]="Print the current random splash"
descriptions[136]="INFO" descriptions[131]="On shortcut X sends shortcut Y to a specified window"
descriptions[137]="Resize a selected window" descriptions[133]="Lock the focused group"
descriptions[138]="On shortcut X sends shortcut Y to a specified window" descriptions[136]="Lock the groups"
descriptions[137]="Move the cursor to the corner of the active window"
descriptions[140]="INFO"
descriptions[141]="Resize a selected window"
local -A literal_transitions local -A literal_transitions
literal_transitions[1]="([104]=2 [75]=3 [34]=4 [2]=3 [3]=3 [78]=3 [106]=5 [37]=3 [109]=6 [41]=3 [46]=3 [113]=3 [85]=7 [114]=9 [52]=3 [54]=3 [89]=10 [118]=3 [120]=3 [122]=3 [16]=3 [59]=11 [60]=3 [18]=12 [123]=13 [20]=3 [125]=3 [127]=3 [26]=14 [68]=3 [97]=6 [98]=3 [28]=3 [29]=15 [101]=3 [103]=6)" literal_transitions[1]="([106]=2 [76]=3 [34]=4 [36]=5 [2]=3 [3]=3 [79]=3 [108]=6 [38]=3 [112]=5 [42]=3 [47]=3 [116]=3 [86]=7 [117]=9 [53]=3 [89]=5 [55]=3 [91]=10 [121]=3 [123]=3 [125]=3 [16]=3 [60]=11 [61]=3 [18]=12 [126]=13 [20]=3 [128]=3 [130]=3 [26]=14 [69]=3 [99]=5 [100]=3 [28]=3 [29]=15 [103]=3 [105]=5)"
literal_transitions[4]="([73]=19 [14]=3 [33]=19 [55]=19 [56]=19 [90]=19 [105]=3 [121]=3 [77]=2 [17]=3 [124]=19 [4]=2 [6]=3 [64]=19 [128]=3 [130]=19 [81]=19 [131]=19 [84]=19 [32]=19 [49]=3 [13]=3 [86]=19 [11]=19 [87]=19 [138]=19)" literal_transitions[4]="([74]=18 [14]=3 [33]=18 [56]=18 [57]=18 [92]=18 [107]=3 [124]=3 [78]=2 [17]=3 [127]=18 [4]=2 [6]=3 [65]=18 [132]=3 [134]=18 [82]=18 [135]=18 [85]=18 [32]=18 [50]=3 [13]=3 [87]=18 [11]=18 [88]=18 [142]=18)"
literal_transitions[8]="([104]=2 [75]=3 [34]=4 [2]=3 [3]=3 [78]=3 [106]=5 [37]=3 [41]=3 [46]=3 [113]=3 [85]=7 [114]=9 [52]=3 [54]=3 [89]=10 [118]=3 [120]=3 [122]=3 [16]=3 [59]=11 [60]=3 [18]=12 [123]=13 [20]=3 [125]=3 [127]=3 [26]=14 [68]=3 [98]=3 [28]=3 [29]=15 [101]=3)" literal_transitions[8]="([106]=2 [76]=3 [34]=4 [2]=3 [3]=3 [79]=3 [108]=6 [38]=3 [42]=3 [47]=3 [116]=3 [86]=7 [117]=9 [53]=3 [55]=3 [91]=10 [121]=3 [123]=3 [125]=3 [16]=3 [60]=11 [61]=3 [18]=12 [126]=13 [20]=3 [128]=3 [130]=3 [26]=14 [69]=3 [100]=3 [28]=3 [29]=15 [103]=3)"
literal_transitions[9]="([129]=3 [132]=3 [1]=3 [74]=3 [36]=3 [107]=3 [38]=3 [108]=3 [5]=3 [79]=3 [40]=3 [80]=3 [111]=3 [7]=3 [42]=3 [43]=3 [82]=3 [83]=3 [47]=3 [48]=3 [10]=3 [110]=3 [51]=3 [53]=3 [12]=3 [116]=3 [88]=3 [50]=3 [57]=3 [91]=3 [58]=3 [92]=3 [93]=3 [61]=3 [62]=3 [126]=3 [94]=3 [63]=3 [21]=3 [96]=3 [23]=3 [24]=3 [65]=3 [66]=3 [25]=3 [133]=3 [27]=3 [69]=3 [99]=3 [70]=3 [30]=3 [137]=3 [71]=3 [100]=3 [138]=3)" literal_transitions[9]="([102]=3 [131]=3 [133]=3 [1]=3 [75]=3 [37]=3 [109]=3 [110]=3 [39]=3 [111]=3 [5]=3 [80]=3 [41]=3 [81]=3 [114]=3 [7]=3 [43]=3 [44]=3 [83]=3 [84]=3 [48]=3 [49]=3 [10]=3 [51]=3 [52]=3 [54]=3 [12]=3 [113]=3 [90]=3 [119]=3 [58]=3 [93]=3 [59]=3 [94]=3 [95]=3 [62]=3 [63]=3 [129]=3 [96]=3 [64]=3 [21]=3 [98]=3 [23]=3 [24]=3 [66]=3 [67]=3 [136]=3 [137]=3 [25]=3 [27]=3 [70]=3 [101]=3 [71]=3 [141]=3 [30]=3 [72]=3)"
literal_transitions[10]="([115]=16 [112]=17)" literal_transitions[10]="([118]=21 [115]=17)"
literal_transitions[12]="([102]=3)" literal_transitions[12]="([104]=3)"
literal_transitions[14]="([22]=2 [117]=2 [31]=2 [136]=2 [119]=2 [44]=2 [72]=2)" literal_transitions[14]="([22]=2 [120]=2 [31]=2 [140]=2 [122]=2 [45]=2 [73]=2)"
literal_transitions[15]="([39]=3)" literal_transitions[15]="([40]=3)"
literal_transitions[16]="([9]=3 [67]=3 [15]=3 [134]=3)" literal_transitions[16]="([139]=3 [97]=3)"
literal_transitions[18]="([76]=20)" literal_transitions[18]="([19]=3 [8]=3)"
literal_transitions[19]="([19]=3 [8]=3)" literal_transitions[19]="([77]=20)"
literal_transitions[20]="([35]=6 [45]=6)" literal_transitions[20]="([35]=5 [46]=5)"
literal_transitions[21]="([135]=3 [95]=3)" literal_transitions[21]="([9]=3 [68]=3 [15]=3 [138]=3)"
local -A match_anything_transitions local -A match_anything_transitions
match_anything_transitions=([2]=3 [1]=8 [7]=3 [21]=3 [11]=3 [3]=18 [8]=8 [13]=3 [15]=18 [17]=3 [5]=21 [12]=18) match_anything_transitions=([2]=3 [1]=8 [7]=3 [16]=3 [11]=3 [6]=16 [15]=19 [8]=8 [3]=19 [17]=3 [13]=3 [12]=19)
declare -A subword_transitions declare -A subword_transitions
@ -196,7 +197,7 @@ _hyprctl () {
fi fi
done done
fi fi
local -A commands=([17]=2 [5]=3 [13]=1 [11]=0) local -A commands=([6]=1 [17]=2 [13]=3 [11]=0)
if [[ -v "commands[$state]" ]]; then if [[ -v "commands[$state]" ]]; then
local command_id=${commands[$state]} local command_id=${commands[$state]}

View file

@ -30,6 +30,7 @@
#define PAD #define PAD
std::string instanceSignature; std::string instanceSignature;
bool quiet = false;
struct SInstanceData { struct SInstanceData {
std::string id; std::string id;
@ -39,6 +40,13 @@ struct SInstanceData {
bool valid = true; bool valid = true;
}; };
void log(std::string str) {
if (quiet)
return;
std::cout << str;
}
std::string getRuntimeDir() { std::string getRuntimeDir() {
const auto XDG = getenv("XDG_RUNTIME_DIR"); const auto XDG = getenv("XDG_RUNTIME_DIR");
@ -96,17 +104,17 @@ int request(std::string arg, int minArgs = 0) {
const auto ARGS = std::count(arg.begin(), arg.end(), ' '); const auto ARGS = std::count(arg.begin(), arg.end(), ' ');
if (ARGS < minArgs) { if (ARGS < minArgs) {
std::cout << "Not enough arguments, expected at least " << minArgs; log("Not enough arguments, expected at least " + minArgs);
return -1; return -1;
} }
if (SERVERSOCKET < 0) { if (SERVERSOCKET < 0) {
std::cout << "Couldn't open a socket (1)"; log("Couldn't open a socket (1)");
return 1; return 1;
} }
if (instanceSignature.empty()) { if (instanceSignature.empty()) {
std::cout << "HYPRLAND_INSTANCE_SIGNATURE was not set! (Is Hyprland running?)"; log("HYPRLAND_INSTANCE_SIGNATURE was not set! (Is Hyprland running?)");
return 2; return 2;
} }
@ -120,14 +128,14 @@ int request(std::string arg, int minArgs = 0) {
strncpy(serverAddress.sun_path, socketPath.c_str(), sizeof(serverAddress.sun_path) - 1); strncpy(serverAddress.sun_path, socketPath.c_str(), sizeof(serverAddress.sun_path) - 1);
if (connect(SERVERSOCKET, (sockaddr*)&serverAddress, SUN_LEN(&serverAddress)) < 0) { if (connect(SERVERSOCKET, (sockaddr*)&serverAddress, SUN_LEN(&serverAddress)) < 0) {
std::cout << "Couldn't connect to " << socketPath << ". (3)"; log("Couldn't connect to " + socketPath + ". (3)");
return 3; return 3;
} }
auto sizeWritten = write(SERVERSOCKET, arg.c_str(), arg.length()); auto sizeWritten = write(SERVERSOCKET, arg.c_str(), arg.length());
if (sizeWritten < 0) { if (sizeWritten < 0) {
std::cout << "Couldn't write (4)"; log("Couldn't write (4)");
return 4; return 4;
} }
@ -137,7 +145,7 @@ int request(std::string arg, int minArgs = 0) {
sizeWritten = read(SERVERSOCKET, buffer, 8192); sizeWritten = read(SERVERSOCKET, buffer, 8192);
if (sizeWritten < 0) { if (sizeWritten < 0) {
std::cout << "Couldn't read (5)"; log("Couldn't read (5)");
return 5; return 5;
} }
@ -146,7 +154,7 @@ int request(std::string arg, int minArgs = 0) {
while (sizeWritten == 8192) { while (sizeWritten == 8192) {
sizeWritten = read(SERVERSOCKET, buffer, 8192); sizeWritten = read(SERVERSOCKET, buffer, 8192);
if (sizeWritten < 0) { if (sizeWritten < 0) {
std::cout << "Couldn't read (5)"; log("Couldn't read (5)");
return 5; return 5;
} }
reply += std::string(buffer, sizeWritten); reply += std::string(buffer, sizeWritten);
@ -154,7 +162,7 @@ int request(std::string arg, int minArgs = 0) {
close(SERVERSOCKET); close(SERVERSOCKET);
std::cout << reply; log(reply);
return 0; return 0;
} }
@ -163,12 +171,12 @@ int requestHyprpaper(std::string arg) {
const auto SERVERSOCKET = socket(AF_UNIX, SOCK_STREAM, 0); const auto SERVERSOCKET = socket(AF_UNIX, SOCK_STREAM, 0);
if (SERVERSOCKET < 0) { if (SERVERSOCKET < 0) {
std::cout << "Couldn't open a socket (1)"; log("Couldn't open a socket (1)");
return 1; return 1;
} }
if (instanceSignature.empty()) { if (instanceSignature.empty()) {
std::cout << "HYPRLAND_INSTANCE_SIGNATURE was not set! (Is Hyprland running?)"; log("HYPRLAND_INSTANCE_SIGNATURE was not set! (Is Hyprland running?)");
return 2; return 2;
} }
@ -182,7 +190,7 @@ int requestHyprpaper(std::string arg) {
strncpy(serverAddress.sun_path, socketPath.c_str(), sizeof(serverAddress.sun_path) - 1); strncpy(serverAddress.sun_path, socketPath.c_str(), sizeof(serverAddress.sun_path) - 1);
if (connect(SERVERSOCKET, (sockaddr*)&serverAddress, SUN_LEN(&serverAddress)) < 0) { if (connect(SERVERSOCKET, (sockaddr*)&serverAddress, SUN_LEN(&serverAddress)) < 0) {
std::cout << "Couldn't connect to " << socketPath << ". (3)"; log("Couldn't connect to " + socketPath + ". (3)");
return 3; return 3;
} }
@ -192,7 +200,7 @@ int requestHyprpaper(std::string arg) {
auto sizeWritten = write(SERVERSOCKET, arg.c_str(), arg.length()); auto sizeWritten = write(SERVERSOCKET, arg.c_str(), arg.length());
if (sizeWritten < 0) { if (sizeWritten < 0) {
std::cout << "Couldn't write (4)"; log("Couldn't write (4)");
return 4; return 4;
} }
@ -201,13 +209,13 @@ int requestHyprpaper(std::string arg) {
sizeWritten = read(SERVERSOCKET, buffer, 8192); sizeWritten = read(SERVERSOCKET, buffer, 8192);
if (sizeWritten < 0) { if (sizeWritten < 0) {
std::cout << "Couldn't read (5)"; log("Couldn't read (5)");
return 5; return 5;
} }
close(SERVERSOCKET); close(SERVERSOCKET);
std::cout << std::string(buffer); log(std::string(buffer));
return 0; return 0;
} }
@ -250,7 +258,7 @@ void instancesRequest(bool json) {
result += "\n]"; result += "\n]";
} }
std::cout << result << "\n"; log(result + "\n");
} }
std::deque<std::string> splitArgs(int argc, char** argv) { std::deque<std::string> splitArgs(int argc, char** argv) {
@ -310,6 +318,8 @@ int main(int argc, char** argv) {
} }
overrideInstance = ARGS[i]; overrideInstance = ARGS[i];
} else if (ARGS[i] == "-q" || ARGS[i] == "--quiet") {
quiet = true;
} else if (ARGS[i] == "--help") { } else if (ARGS[i] == "--help") {
const std::string& cmd = ARGS[0]; const std::string& cmd = ARGS[0];
@ -360,7 +370,7 @@ int main(int argc, char** argv) {
instanceSignature = overrideInstance; instanceSignature = overrideInstance;
else if (!overrideInstance.empty()) { else if (!overrideInstance.empty()) {
if (!isNumber(overrideInstance, false)) { if (!isNumber(overrideInstance, false)) {
std::cout << "instance invalid\n"; log("instance invalid\n");
return 1; return 1;
} }
@ -369,7 +379,7 @@ int main(int argc, char** argv) {
const auto INSTANCES = instances(); const auto INSTANCES = instances();
if (INSTANCENO < 0 || static_cast<std::size_t>(INSTANCENO) >= INSTANCES.size()) { if (INSTANCENO < 0 || static_cast<std::size_t>(INSTANCENO) >= INSTANCES.size()) {
std::cout << "no such instance\n"; log("no such instance\n");
return 1; return 1;
} }
@ -378,7 +388,7 @@ int main(int argc, char** argv) {
const auto ISIG = getenv("HYPRLAND_INSTANCE_SIGNATURE"); const auto ISIG = getenv("HYPRLAND_INSTANCE_SIGNATURE");
if (!ISIG) { if (!ISIG) {
std::cout << "HYPRLAND_INSTANCE_SIGNATURE not set! (is hyprland running?)\n"; log("HYPRLAND_INSTANCE_SIGNATURE not set! (is hyprland running?)\n");
return 1; return 1;
} }
@ -419,6 +429,6 @@ int main(int argc, char** argv) {
exitStatus = request(fullRequest); exitStatus = request(fullRequest);
} }
std::cout << std::endl; std::cout << std::flush;
return exitStatus; return exitStatus;
} }