diff --git a/hyprctl/Strings.hpp b/hyprctl/Strings.hpp index 951c6a7fe6c..76e87ecbd3c 100644 --- a/hyprctl/Strings.hpp +++ b/hyprctl/Strings.hpp @@ -60,6 +60,7 @@ const std::string_view USAGE = R"#(usage: hyprctl [flags] [args...|--h --batch → Execute a batch of commands, separated by ';' --instance (-i) → use a specific instance. Can be either signature or index in hyprctl instances (0, 1, etc) + --quiet (-q) → Disable the output of hyprctl --help: Can be used to print command's arguments that did not fit into this page @@ -155,4 +156,4 @@ const std::string_view SWITCHXKBLAYOUT_HELP = R"#(usage: [flags] switchxkblayout starting from 0 flags: - See 'hyprctl --help')#"; \ No newline at end of file + See 'hyprctl --help')#"; diff --git a/hyprctl/hyprctl.bash b/hyprctl/hyprctl.bash index 0b4e6b861a2..8386cfbc678 100644 --- a/hyprctl/hyprctl.bash +++ b/hyprctl/hyprctl.bash @@ -2,7 +2,7 @@ _hyprctl_cmd_2 () { hyprctl monitors | grep Monitor | awk '{ print $2 }' } -_hyprctl_cmd_1 () { +_hyprctl_cmd_3 () { hyprpm list | grep "Plugin" | awk '{print $4}' } @@ -10,7 +10,7 @@ _hyprctl_cmd_0 () { hyprctl clients | grep class | awk '{print $2}' } -_hyprctl_cmd_3 () { +_hyprctl_cmd_1 () { hyprctl devices | sed -n '/Keyboard at/{n; s/^\s\+//; p}' } @@ -23,25 +23,25 @@ _hyprctl () { local 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 - 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[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[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[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[9]="([114]=15 [111]=16)" - literal_transitions[11]="([101]=2)" - literal_transitions[13]="([21]=1 [116]=1 [30]=1 [135]=1 [118]=1 [43]=1 [71]=1)" - literal_transitions[14]="([38]=2)" - literal_transitions[15]="([8]=2 [66]=2 [14]=2 [133]=2)" - literal_transitions[17]="([75]=19)" - literal_transitions[18]="([18]=2 [7]=2)" - literal_transitions[19]="([34]=5 [44]=5)" - literal_transitions[20]="([134]=2 [94]=2)" + 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]="([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]="([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]="([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]="([117]=20 [114]=16)" + literal_transitions[11]="([103]=2)" + literal_transitions[13]="([21]=1 [119]=1 [30]=1 [139]=1 [121]=1 [44]=1 [72]=1)" + literal_transitions[14]="([39]=2)" + literal_transitions[15]="([138]=2 [96]=2)" + literal_transitions[17]="([18]=2 [7]=2)" + literal_transitions[18]="([76]=19)" + literal_transitions[19]="([34]=4 [45]=4)" + literal_transitions[20]="([8]=2 [67]=2 [14]=2 [137]=2)" 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 local state=0 @@ -108,7 +108,7 @@ _hyprctl () { done fi 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 local command_id=${commands[$state]} local completions=() diff --git a/hyprctl/hyprctl.fish b/hyprctl/hyprctl.fish index 6d31b25add6..2a75eb12d2e 100644 --- a/hyprctl/hyprctl.fish +++ b/hyprctl/hyprctl.fish @@ -3,7 +3,7 @@ function _hyprctl_3 hyprctl monitors | grep Monitor | awk '{ print $2 }' end -function _hyprctl_2 +function _hyprctl_4 set 1 $argv[1] hyprpm list | grep "Plugin" | awk '{print $4}' end @@ -13,7 +13,7 @@ function _hyprctl_1 hyprctl clients | grep class | awk '{print $2}' end -function _hyprctl_4 +function _hyprctl_2 set 1 $argv[1] hyprctl devices | sed -n '/Keyboard at/{n; s/^\s\+//; p}' end @@ -29,7 +29,7 @@ function _hyprctl set COMP_CWORD (count $COMP_WORDS) 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 descriptions[1] "Focus the next window on a workspace" @@ -54,102 +54,104 @@ function _hyprctl set descriptions[31] "CONFUSED" set descriptions[34] "Set a property of a window" set descriptions[35] "Specify the Hyprland instance" - set descriptions[36] "Toggle the current window's floating state" - set descriptions[37] "Get the list of defined workspace rules" - set descriptions[38] "Move the focused window to a workspace" - set descriptions[40] "Temporarily enable or disable binds:ignore_group_lock" - set descriptions[41] "List all workspaces with their properties" - set descriptions[42] "Swap the active window with the next or previous in a group" - set descriptions[43] "Close a specified window" - set descriptions[44] "WARNING" - set descriptions[45] "Specify the Hyprland instance" - set descriptions[46] "List all registered binds" - set descriptions[47] "Move the active window in a direction or to a monitor" - set descriptions[48] "Change the split ratio" - set descriptions[50] "Prohibit the active window from becoming or being inserted into group" - set descriptions[51] "Change the workspace" - set descriptions[52] "List all current config parsing errors" - set descriptions[53] "Toggle the current active window into a group" - set descriptions[54] "Get the config option status (values)" - set descriptions[57] "Close the active window" - set descriptions[58] "Pass the key to a specified window" - set descriptions[59] "List all decorations and their info" - set descriptions[60] "List all connected keyboards and mice" - set descriptions[61] "Switch focus from current to previously focused window" - set descriptions[62] "Change the current mapping group" - set descriptions[63] "Execute a Global Shortcut using the GlobalShortcuts portal" - set descriptions[65] "Force the renderer to reload all resources and outputs" - set descriptions[66] "Move a selected window" - set descriptions[68] "Print the Hyprland version: flags, commit and branch of build" - set descriptions[69] "Set all monitors' DPMS status" - set descriptions[70] "Resize the active window" - set descriptions[71] "Move the active window into a group" - set descriptions[72] "OK" - set descriptions[74] "Set the current window's floating state to true" - set descriptions[75] "Print tail of the log" - set descriptions[78] "List all layouts available (including plugin ones)" - set descriptions[79] "Move a workspace to a monitor" - set descriptions[80] "Execute a shell command" - set descriptions[82] "Modify the window stack order of the active or specified window" - set descriptions[83] "Toggle the focused window's internal fullscreen state" - set descriptions[85] "Issue a keyword to call a config keyword dynamically" - set descriptions[88] "Pin a window" - set descriptions[89] "Allows adding/removing fake outputs to a specific backend" - set descriptions[91] "Toggle a special workspace on/off" - set descriptions[92] "Toggle the focused window's fullscreen state" - set descriptions[93] "Toggle the current window to always be opaque" - set descriptions[94] "Focus the requested workspace" - set descriptions[96] "Switch to the next window in a group" - set descriptions[97] "Output in JSON format" - set descriptions[98] "List all running Hyprland instances and their info" - set descriptions[99] "Execute a raw shell command" - set descriptions[100] "Exit the compositor with no questions asked" - set descriptions[101] "List all windows with their properties" - set descriptions[103] "Execute a batch of commands separated by ;" - set descriptions[104] "Dismiss all or up to amount of notifications" - set descriptions[106] "Set the xkb layout index for a keyboard" - set descriptions[107] "Move window doesnt switch to the workspace" - set descriptions[108] "Behave as moveintogroup" - set descriptions[109] "Refresh state after issuing the command" - set descriptions[110] "Move the focus in a direction" - set descriptions[111] "Focus the urgent window or the last window" - set descriptions[113] "Get the active workspace name and its properties" - set descriptions[114] "Issue a dispatch to call a keybind dispatcher with an arg" - set descriptions[116] "Center the active window" - set descriptions[117] "HINT" - set descriptions[118] "Interact with hyprpaper if present" - set descriptions[119] "No Icon" - set descriptions[120] "Force reload the config" - set descriptions[122] "Print system info" - set descriptions[123] "Interact with a plugin" - set descriptions[125] "Get the active window name and its properties" - set descriptions[126] "Swap the active workspaces between two monitors" - set descriptions[127] "Print the current random splash" - set descriptions[129] "Lock the focused group" - set descriptions[132] "Lock the groups" - set descriptions[133] "Move the cursor to the corner of the active window" - set descriptions[136] "INFO" - set descriptions[137] "Resize a selected window" - set descriptions[138] "On shortcut X sends shortcut Y to a specified window" - + set descriptions[36] "Disable output" + set descriptions[37] "Toggle the current window's floating state" + set descriptions[38] "Get the list of defined workspace rules" + set descriptions[39] "Move the focused window to a workspace" + set descriptions[41] "Temporarily enable or disable binds:ignore_group_lock" + set descriptions[42] "List all workspaces with their properties" + set descriptions[43] "Swap the active window with the next or previous in a group" + set descriptions[44] "Close a specified window" + set descriptions[45] "WARNING" + set descriptions[46] "Specify the Hyprland instance" + set descriptions[47] "List all registered binds" + set descriptions[48] "Move the active window in a direction or to a monitor" + set descriptions[49] "Change the split ratio" + set descriptions[51] "Prohibit the active window from becoming or being inserted into group" + set descriptions[52] "Change the workspace" + set descriptions[53] "List all current config parsing errors" + set descriptions[54] "Toggle the current active window into a group" + set descriptions[55] "Get the config option status (values)" + set descriptions[58] "Close the active window" + set descriptions[59] "Pass the key to a specified window" + set descriptions[60] "List all decorations and their info" + set descriptions[61] "List all connected keyboards and mice" + set descriptions[62] "Switch focus from current to previously focused window" + set descriptions[63] "Change the current mapping group" + set descriptions[64] "Execute a Global Shortcut using the GlobalShortcuts portal" + set descriptions[66] "Force the renderer to reload all resources and outputs" + set descriptions[67] "Move a selected window" + set descriptions[69] "Print the Hyprland version: flags, commit and branch of build" + set descriptions[70] "Set all monitors' DPMS status" + set descriptions[71] "Resize the active window" + set descriptions[72] "Move the active window into a group" + set descriptions[73] "OK" + set descriptions[75] "Set the current window's floating state to true" + set descriptions[76] "Print tail of the log" + set descriptions[79] "List all layouts available (including plugin ones)" + set descriptions[80] "Move a workspace to a monitor" + set descriptions[81] "Execute a shell command" + set descriptions[83] "Modify the window stack order of the active or specified window" + set descriptions[84] "Toggle the focused window's internal fullscreen state" + set descriptions[86] "Issue a keyword to call a config keyword dynamically" + set descriptions[89] "Disable output" + set descriptions[90] "Pin a window" + set descriptions[91] "Allows adding/removing fake outputs to a specific backend" + set descriptions[93] "Toggle a special workspace on/off" + set descriptions[94] "Toggle the focused window's fullscreen state" + set descriptions[95] "Toggle the current window to always be opaque" + set descriptions[96] "Focus the requested workspace" + set descriptions[98] "Switch to the next window in a group" + set descriptions[99] "Output in JSON format" + set descriptions[100] "List all running Hyprland instances and their info" + set descriptions[101] "Execute a raw shell command" + set descriptions[102] "Exit the compositor with no questions asked" + set descriptions[103] "List all windows with their properties" + set descriptions[105] "Execute a batch of commands separated by ;" + set descriptions[106] "Dismiss all or up to amount of notifications" + set descriptions[108] "Set the xkb layout index for a keyboard" + set descriptions[109] "Move window doesnt switch to the workspace" + set descriptions[110] "Apply a tag to the window" + set descriptions[111] "Behave as moveintogroup" + set descriptions[112] "Refresh state after issuing the command" + set descriptions[113] "Move the focus in a direction" + set descriptions[114] "Focus the urgent window or the last window" + set descriptions[116] "Get the active workspace name and its properties" + set descriptions[117] "Issue a dispatch to call a keybind dispatcher with an arg" + set descriptions[119] "Center the active window" + set descriptions[120] "HINT" + set descriptions[121] "Interact with hyprpaper if present" + set descriptions[122] "No Icon" + set descriptions[123] "Force reload the config" + set descriptions[125] "Print system info" + set descriptions[126] "Interact with a plugin" + set descriptions[128] "Get the active window name and its properties" + set descriptions[129] "Swap the active workspaces between two monitors" + set descriptions[130] "Print the current random splash" + set descriptions[131] "On shortcut X sends shortcut Y to a specified window" + set descriptions[133] "Lock the focused group" + 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 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[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[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[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[10] "set inputs 115 112; set tos 16 17" - set literal_transitions[12] "set inputs 102; 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[15] "set inputs 39; set tos 3" - set literal_transitions[16] "set inputs 9 67 15 134; set tos 3 3 3 3" - set literal_transitions[18] "set inputs 76; set tos 20" - set literal_transitions[19] "set inputs 19 8; set tos 3 3" - set literal_transitions[20] "set inputs 35 45; set tos 6 6" - set literal_transitions[21] "set inputs 135 95; set tos 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_to 3 8 3 3 3 18 8 3 18 3 21 18 + 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 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 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 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 118 115; set tos 21 17" + set literal_transitions[12] "set inputs 104; set tos 3" + 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 40; set tos 3" + set literal_transitions[16] "set inputs 139 97; set tos 3 3" + set literal_transitions[18] "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 46; set tos 5 5" + 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 16 11 6 15 8 3 17 13 12 + set --local match_anything_transitions_to 3 8 3 3 3 16 19 8 19 3 3 19 set --local state 1 set --local word_index 2 @@ -201,8 +203,8 @@ function _hyprctl end end - set command_states 17 5 13 11 - set command_ids 3 4 2 1 + set command_states 6 17 13 11 + set command_ids 2 3 4 1 if contains $state $command_states set --local index (contains --index $state $command_states) set --local function_id $command_ids[$index] diff --git a/hyprctl/hyprctl.usage b/hyprctl/hyprctl.usage index 334eefe7556..64cbbb80098 100644 --- a/hyprctl/hyprctl.usage +++ b/hyprctl/hyprctl.usage @@ -8,6 +8,7 @@ hyprctl []... | (-j) "Output in JSON format" | (-r) "Refresh state after issuing the command" | (--batch) "Execute a batch of commands separated by ;" + | (-q | --quiet) "Disable output" ; ::= {{{ hyprctl clients | grep class | awk '{print $2}' }}}; diff --git a/hyprctl/hyprctl.zsh b/hyprctl/hyprctl.zsh index 82276778135..6babd83566a 100644 --- a/hyprctl/hyprctl.zsh +++ b/hyprctl/hyprctl.zsh @@ -1,10 +1,8 @@ -#compdef hyprctl - _hyprctl_cmd_2 () { hyprctl monitors | grep Monitor | awk '{ print $2 }' } -_hyprctl_cmd_1 () { +_hyprctl_cmd_3 () { hyprpm list | grep "Plugin" | awk '{print $4}' } @@ -12,12 +10,12 @@ _hyprctl_cmd_0 () { hyprctl clients | grep class | awk '{print $2}' } -_hyprctl_cmd_3 () { +_hyprctl_cmd_1 () { hyprctl devices | sed -n '/Keyboard at/{n; s/^\s\+//; p}' } _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 descriptions[1]="Focus the next window on a workspace" @@ -42,101 +40,104 @@ _hyprctl () { descriptions[31]="CONFUSED" descriptions[34]="Set a property of a window" descriptions[35]="Specify the Hyprland instance" - descriptions[36]="Toggle the current window's floating state" - descriptions[37]="Get the list of defined workspace rules" - descriptions[38]="Move the focused window to a workspace" - descriptions[40]="Temporarily enable or disable binds:ignore_group_lock" - descriptions[41]="List all workspaces with their properties" - descriptions[42]="Swap the active window with the next or previous in a group" - descriptions[43]="Close a specified window" - descriptions[44]="WARNING" - descriptions[45]="Specify the Hyprland instance" - descriptions[46]="List all registered binds" - descriptions[47]="Move the active window in a direction or to a monitor" - descriptions[48]="Change the split ratio" - descriptions[50]="Prohibit the active window from becoming or being inserted into group" - descriptions[51]="Change the workspace" - descriptions[52]="List all current config parsing errors" - descriptions[53]="Toggle the current active window into a group" - descriptions[54]="Get the config option status (values)" - descriptions[57]="Close the active window" - descriptions[58]="Pass the key to a specified window" - descriptions[59]="List all decorations and their info" - descriptions[60]="List all connected keyboards and mice" - descriptions[61]="Switch focus from current to previously focused window" - descriptions[62]="Change the current mapping group" - descriptions[63]="Execute a Global Shortcut using the GlobalShortcuts portal" - descriptions[65]="Force the renderer to reload all resources and outputs" - descriptions[66]="Move a selected window" - descriptions[68]="Print the Hyprland version: flags, commit and branch of build" - descriptions[69]="Set all monitors' DPMS status" - descriptions[70]="Resize the active window" - descriptions[71]="Move the active window into a group" - descriptions[72]="OK" - descriptions[74]="Set the current window's floating state to true" - descriptions[75]="Print tail of the log" - descriptions[78]="List all layouts available (including plugin ones)" - descriptions[79]="Move a workspace to a monitor" - descriptions[80]="Execute a shell command" - descriptions[82]="Modify the window stack order of the active or specified window" - descriptions[83]="Toggle the focused window's internal fullscreen state" - descriptions[85]="Issue a keyword to call a config keyword dynamically" - descriptions[88]="Pin a window" - descriptions[89]="Allows adding/removing fake outputs to a specific backend" - descriptions[91]="Toggle a special workspace on/off" - descriptions[92]="Toggle the focused window's fullscreen state" - descriptions[93]="Toggle the current window to always be opaque" - descriptions[94]="Focus the requested workspace" - descriptions[96]="Switch to the next window in a group" - descriptions[97]="Output in JSON format" - descriptions[98]="List all running Hyprland instances and their info" - descriptions[99]="Execute a raw shell command" - descriptions[100]="Exit the compositor with no questions asked" - descriptions[101]="List all windows with their properties" - descriptions[103]="Execute a batch of commands separated by ;" - descriptions[104]="Dismiss all or up to amount of notifications" - descriptions[106]="Set the xkb layout index for a keyboard" - descriptions[107]="Move window doesnt switch to the workspace" - descriptions[108]="Behave as moveintogroup" - descriptions[109]="Refresh state after issuing the command" - descriptions[110]="Move the focus in a direction" - descriptions[111]="Focus the urgent window or the last window" - descriptions[113]="Get the active workspace name and its properties" - descriptions[114]="Issue a dispatch to call a keybind dispatcher with an arg" - descriptions[116]="Center the active window" - descriptions[117]="HINT" - descriptions[118]="Interact with hyprpaper if present" - descriptions[119]="No Icon" - descriptions[120]="Force reload the config" - descriptions[122]="Print system info" - descriptions[123]="Interact with a plugin" - descriptions[125]="Get the active window name and its properties" - descriptions[126]="Swap the active workspaces between two monitors" - descriptions[127]="Print the current random splash" - descriptions[129]="Lock the focused group" - descriptions[132]="Lock the groups" - descriptions[133]="Move the cursor to the corner of the active window" - descriptions[136]="INFO" - descriptions[137]="Resize a selected window" - descriptions[138]="On shortcut X sends shortcut Y to a specified window" + descriptions[36]="Disable output" + descriptions[37]="Toggle the current window's floating state" + descriptions[38]="Get the list of defined workspace rules" + descriptions[39]="Move the focused window to a workspace" + descriptions[41]="Temporarily enable or disable binds:ignore_group_lock" + descriptions[42]="List all workspaces with their properties" + descriptions[43]="Swap the active window with the next or previous in a group" + descriptions[44]="Close a specified window" + descriptions[45]="WARNING" + descriptions[46]="Specify the Hyprland instance" + descriptions[47]="List all registered binds" + descriptions[48]="Move the active window in a direction or to a monitor" + descriptions[49]="Change the split ratio" + descriptions[51]="Prohibit the active window from becoming or being inserted into group" + descriptions[52]="Change the workspace" + descriptions[53]="List all current config parsing errors" + descriptions[54]="Toggle the current active window into a group" + descriptions[55]="Get the config option status (values)" + descriptions[58]="Close the active window" + descriptions[59]="Pass the key to a specified window" + descriptions[60]="List all decorations and their info" + descriptions[61]="List all connected keyboards and mice" + descriptions[62]="Switch focus from current to previously focused window" + descriptions[63]="Change the current mapping group" + descriptions[64]="Execute a Global Shortcut using the GlobalShortcuts portal" + descriptions[66]="Force the renderer to reload all resources and outputs" + descriptions[67]="Move a selected window" + descriptions[69]="Print the Hyprland version: flags, commit and branch of build" + descriptions[70]="Set all monitors' DPMS status" + descriptions[71]="Resize the active window" + descriptions[72]="Move the active window into a group" + descriptions[73]="OK" + descriptions[75]="Set the current window's floating state to true" + descriptions[76]="Print tail of the log" + descriptions[79]="List all layouts available (including plugin ones)" + descriptions[80]="Move a workspace to a monitor" + descriptions[81]="Execute a shell command" + descriptions[83]="Modify the window stack order of the active or specified window" + descriptions[84]="Toggle the focused window's internal fullscreen state" + descriptions[86]="Issue a keyword to call a config keyword dynamically" + descriptions[89]="Disable output" + descriptions[90]="Pin a window" + descriptions[91]="Allows adding/removing fake outputs to a specific backend" + descriptions[93]="Toggle a special workspace on/off" + descriptions[94]="Toggle the focused window's fullscreen state" + descriptions[95]="Toggle the current window to always be opaque" + descriptions[96]="Focus the requested workspace" + descriptions[98]="Switch to the next window in a group" + descriptions[99]="Output in JSON format" + descriptions[100]="List all running Hyprland instances and their info" + descriptions[101]="Execute a raw shell command" + descriptions[102]="Exit the compositor with no questions asked" + descriptions[103]="List all windows with their properties" + descriptions[105]="Execute a batch of commands separated by ;" + descriptions[106]="Dismiss all or up to amount of notifications" + descriptions[108]="Set the xkb layout index for a keyboard" + descriptions[109]="Move window doesnt switch to the workspace" + descriptions[110]="Apply a tag to the window" + descriptions[111]="Behave as moveintogroup" + descriptions[112]="Refresh state after issuing the command" + descriptions[113]="Move the focus in a direction" + descriptions[114]="Focus the urgent window or the last window" + descriptions[116]="Get the active workspace name and its properties" + descriptions[117]="Issue a dispatch to call a keybind dispatcher with an arg" + descriptions[119]="Center the active window" + descriptions[120]="HINT" + descriptions[121]="Interact with hyprpaper if present" + descriptions[122]="No Icon" + descriptions[123]="Force reload the config" + descriptions[125]="Print system info" + descriptions[126]="Interact with a plugin" + descriptions[128]="Get the active window name and its properties" + descriptions[129]="Swap the active workspaces between two monitors" + descriptions[130]="Print the current random splash" + descriptions[131]="On shortcut X sends shortcut Y to a specified window" + descriptions[133]="Lock the focused group" + 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 - 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[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[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[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[10]="([115]=16 [112]=17)" - literal_transitions[12]="([102]=3)" - literal_transitions[14]="([22]=2 [117]=2 [31]=2 [136]=2 [119]=2 [44]=2 [72]=2)" - literal_transitions[15]="([39]=3)" - literal_transitions[16]="([9]=3 [67]=3 [15]=3 [134]=3)" - literal_transitions[18]="([76]=20)" - literal_transitions[19]="([19]=3 [8]=3)" - literal_transitions[20]="([35]=6 [45]=6)" - literal_transitions[21]="([135]=3 [95]=3)" + 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]="([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]="([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]="([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]="([118]=21 [115]=17)" + literal_transitions[12]="([104]=3)" + literal_transitions[14]="([22]=2 [120]=2 [31]=2 [140]=2 [122]=2 [45]=2 [73]=2)" + literal_transitions[15]="([40]=3)" + literal_transitions[16]="([139]=3 [97]=3)" + literal_transitions[18]="([19]=3 [8]=3)" + literal_transitions[19]="([77]=20)" + literal_transitions[20]="([35]=5 [46]=5)" + literal_transitions[21]="([9]=3 [68]=3 [15]=3 [138]=3)" 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 @@ -196,7 +197,7 @@ _hyprctl () { fi done 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 local command_id=${commands[$state]} diff --git a/hyprctl/main.cpp b/hyprctl/main.cpp index bdf354e7636..34abe46fb00 100644 --- a/hyprctl/main.cpp +++ b/hyprctl/main.cpp @@ -30,6 +30,7 @@ #define PAD std::string instanceSignature; +bool quiet = false; struct SInstanceData { std::string id; @@ -39,6 +40,13 @@ struct SInstanceData { bool valid = true; }; +void log(std::string str) { + if (quiet) + return; + + std::cout << str; +} + std::string getRuntimeDir() { 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(), ' '); if (ARGS < minArgs) { - std::cout << "Not enough arguments, expected at least " << minArgs; + log("Not enough arguments, expected at least " + minArgs); return -1; } if (SERVERSOCKET < 0) { - std::cout << "Couldn't open a socket (1)"; + log("Couldn't open a socket (1)"); return 1; } 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; } @@ -120,14 +128,14 @@ int request(std::string arg, int minArgs = 0) { strncpy(serverAddress.sun_path, socketPath.c_str(), sizeof(serverAddress.sun_path) - 1); 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; } auto sizeWritten = write(SERVERSOCKET, arg.c_str(), arg.length()); if (sizeWritten < 0) { - std::cout << "Couldn't write (4)"; + log("Couldn't write (4)"); return 4; } @@ -137,7 +145,7 @@ int request(std::string arg, int minArgs = 0) { sizeWritten = read(SERVERSOCKET, buffer, 8192); if (sizeWritten < 0) { - std::cout << "Couldn't read (5)"; + log("Couldn't read (5)"); return 5; } @@ -146,7 +154,7 @@ int request(std::string arg, int minArgs = 0) { while (sizeWritten == 8192) { sizeWritten = read(SERVERSOCKET, buffer, 8192); if (sizeWritten < 0) { - std::cout << "Couldn't read (5)"; + log("Couldn't read (5)"); return 5; } reply += std::string(buffer, sizeWritten); @@ -154,7 +162,7 @@ int request(std::string arg, int minArgs = 0) { close(SERVERSOCKET); - std::cout << reply; + log(reply); return 0; } @@ -163,12 +171,12 @@ int requestHyprpaper(std::string arg) { const auto SERVERSOCKET = socket(AF_UNIX, SOCK_STREAM, 0); if (SERVERSOCKET < 0) { - std::cout << "Couldn't open a socket (1)"; + log("Couldn't open a socket (1)"); return 1; } 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; } @@ -182,7 +190,7 @@ int requestHyprpaper(std::string arg) { strncpy(serverAddress.sun_path, socketPath.c_str(), sizeof(serverAddress.sun_path) - 1); 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; } @@ -192,7 +200,7 @@ int requestHyprpaper(std::string arg) { auto sizeWritten = write(SERVERSOCKET, arg.c_str(), arg.length()); if (sizeWritten < 0) { - std::cout << "Couldn't write (4)"; + log("Couldn't write (4)"); return 4; } @@ -201,13 +209,13 @@ int requestHyprpaper(std::string arg) { sizeWritten = read(SERVERSOCKET, buffer, 8192); if (sizeWritten < 0) { - std::cout << "Couldn't read (5)"; + log("Couldn't read (5)"); return 5; } close(SERVERSOCKET); - std::cout << std::string(buffer); + log(std::string(buffer)); return 0; } @@ -250,7 +258,7 @@ void instancesRequest(bool json) { result += "\n]"; } - std::cout << result << "\n"; + log(result + "\n"); } std::deque splitArgs(int argc, char** argv) { @@ -310,6 +318,8 @@ int main(int argc, char** argv) { } overrideInstance = ARGS[i]; + } else if (ARGS[i] == "-q" || ARGS[i] == "--quiet") { + quiet = true; } else if (ARGS[i] == "--help") { const std::string& cmd = ARGS[0]; @@ -360,7 +370,7 @@ int main(int argc, char** argv) { instanceSignature = overrideInstance; else if (!overrideInstance.empty()) { if (!isNumber(overrideInstance, false)) { - std::cout << "instance invalid\n"; + log("instance invalid\n"); return 1; } @@ -369,7 +379,7 @@ int main(int argc, char** argv) { const auto INSTANCES = instances(); if (INSTANCENO < 0 || static_cast(INSTANCENO) >= INSTANCES.size()) { - std::cout << "no such instance\n"; + log("no such instance\n"); return 1; } @@ -378,7 +388,7 @@ int main(int argc, char** argv) { const auto ISIG = getenv("HYPRLAND_INSTANCE_SIGNATURE"); 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; } @@ -419,6 +429,6 @@ int main(int argc, char** argv) { exitStatus = request(fullRequest); } - std::cout << std::endl; + std::cout << std::flush; return exitStatus; }