props: Allow setting per-window fullscreen opacity (#5470)

This commit is contained in:
SoSeDiK 2024-04-08 01:19:02 +03:00 committed by GitHub
parent df1a3a978d
commit 43b96f03b5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 287 additions and 275 deletions

View File

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

@ -49,6 +49,8 @@ hyprctl [<OPTIONS>]... <ARGUMENTS>
| (alpha) | (alpha)
| (alphainactiveoverride (0 | 1)) | (alphainactiveoverride (0 | 1))
| (alphainactive) | (alphainactive)
| (alphafullscreenoverride (0 | 1))
| (alphafullscreen)
| (activebordercolor) | (activebordercolor)
| (inactivebordercolor) | (inactivebordercolor)
; ;

View File

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

View File

@ -1922,7 +1922,10 @@ void CCompositor::updateWindowAnimatedDecorationValues(CWindow* pWindow) {
// opacity // opacity
const auto PWORKSPACE = pWindow->m_pWorkspace; const auto PWORKSPACE = pWindow->m_pWorkspace;
if (pWindow->m_bIsFullscreen && PWORKSPACE->m_efFullscreenMode == FULLSCREEN_FULL) { if (pWindow->m_bIsFullscreen && PWORKSPACE->m_efFullscreenMode == FULLSCREEN_FULL) {
pWindow->m_fActiveInactiveAlpha = *PFULLSCREENALPHA; pWindow->m_fActiveInactiveAlpha = pWindow->m_sSpecialRenderData.alphaFullscreen.toUnderlying() != -1 ?
(pWindow->m_sSpecialRenderData.alphaFullscreenOverride.toUnderlying() ? pWindow->m_sSpecialRenderData.alphaFullscreen.toUnderlying() :
pWindow->m_sSpecialRenderData.alphaFullscreen.toUnderlying() * *PFULLSCREENALPHA) :
*PFULLSCREENALPHA;
} else { } else {
if (pWindow == m_pLastWindow) if (pWindow == m_pLastWindow)
pWindow->m_fActiveInactiveAlpha = pWindow->m_sSpecialRenderData.alphaOverride.toUnderlying() ? pWindow->m_sSpecialRenderData.alpha.toUnderlying() : pWindow->m_fActiveInactiveAlpha = pWindow->m_sSpecialRenderData.alphaOverride.toUnderlying() ? pWindow->m_sSpecialRenderData.alpha.toUnderlying() :

View File

@ -1209,6 +1209,10 @@ std::string dispatchSetProp(eHyprCtlOutputFormat format, std::string request) {
PWINDOW->m_sSpecialRenderData.alphaInactiveOverride.forceSetIgnoreLocked(configStringToInt(VAL), lock); PWINDOW->m_sSpecialRenderData.alphaInactiveOverride.forceSetIgnoreLocked(configStringToInt(VAL), lock);
} else if (PROP == "alphainactive") { } else if (PROP == "alphainactive") {
PWINDOW->m_sSpecialRenderData.alphaInactive.forceSetIgnoreLocked(std::stof(VAL), lock); PWINDOW->m_sSpecialRenderData.alphaInactive.forceSetIgnoreLocked(std::stof(VAL), lock);
} else if (PROP == "alphafullscreenoverride") {
PWINDOW->m_sSpecialRenderData.alphaFullscreenOverride.forceSetIgnoreLocked(configStringToInt(VAL), lock);
} else if (PROP == "alphafullscreen") {
PWINDOW->m_sSpecialRenderData.alphaFullscreen.forceSetIgnoreLocked(std::stof(VAL), lock);
} else if (PROP == "activebordercolor") { } else if (PROP == "activebordercolor") {
PWINDOW->m_sSpecialRenderData.activeBorderColor.forceSetIgnoreLocked(CGradientValueData(CColor(configStringToInt(VAL))), lock); PWINDOW->m_sSpecialRenderData.activeBorderColor.forceSetIgnoreLocked(CGradientValueData(CColor(configStringToInt(VAL))), lock);
} else if (PROP == "inactivebordercolor") { } else if (PROP == "inactivebordercolor") {

View File

@ -604,19 +604,26 @@ void CWindow::applyDynamicRule(const SWindowRule& r) {
if (r == "override") { if (r == "override") {
if (opacityIDX == 1) { if (opacityIDX == 1) {
m_sSpecialRenderData.alphaOverride = true; m_sSpecialRenderData.alphaOverride = true;
m_sSpecialRenderData.alphaInactiveOverride = true; m_sSpecialRenderData.alphaInactiveOverride = true;
m_sSpecialRenderData.alphaFullscreenOverride = true;
} else if (opacityIDX == 2) } else if (opacityIDX == 2)
m_sSpecialRenderData.alphaInactiveOverride = true; m_sSpecialRenderData.alphaInactiveOverride = true;
else if (opacityIDX == 3)
m_sSpecialRenderData.alphaFullscreenOverride = true;
} else { } else {
if (opacityIDX == 0) { if (opacityIDX == 0) {
m_sSpecialRenderData.alpha = std::stof(r); m_sSpecialRenderData.alpha = std::stof(r);
m_sSpecialRenderData.alphaInactive = std::stof(r); m_sSpecialRenderData.alphaInactive = std::stof(r);
m_sSpecialRenderData.alphaFullscreen = std::stof(r);
} else if (opacityIDX == 1) { } else if (opacityIDX == 1) {
m_sSpecialRenderData.alphaInactive = std::stof(r); m_sSpecialRenderData.alphaInactive = std::stof(r);
m_sSpecialRenderData.alphaInactiveOverride = false; m_sSpecialRenderData.alphaInactiveOverride = false;
} else if (opacityIDX == 2) {
m_sSpecialRenderData.alphaFullscreen = std::stof(r);
m_sSpecialRenderData.alphaFullscreenOverride = false;
} else { } else {
throw std::runtime_error("more than 2 alpha values"); throw std::runtime_error("more than 3 alpha values");
} }
opacityIDX++; opacityIDX++;

View File

@ -126,10 +126,12 @@ class CWindowOverridableVar {
}; };
struct SWindowSpecialRenderData { struct SWindowSpecialRenderData {
CWindowOverridableVar<bool> alphaOverride = false; CWindowOverridableVar<bool> alphaOverride = false;
CWindowOverridableVar<float> alpha = 1.f; CWindowOverridableVar<float> alpha = 1.f;
CWindowOverridableVar<bool> alphaInactiveOverride = false; CWindowOverridableVar<bool> alphaInactiveOverride = false;
CWindowOverridableVar<float> alphaInactive = -1.f; // -1 means unset CWindowOverridableVar<float> alphaInactive = -1.f; // -1 means unset
CWindowOverridableVar<bool> alphaFullscreenOverride = false;
CWindowOverridableVar<float> alphaFullscreen = -1.f; // -1 means unset
CWindowOverridableVar<CGradientValueData> activeBorderColor = CGradientValueData(); // empty color vector means unset CWindowOverridableVar<CGradientValueData> activeBorderColor = CGradientValueData(); // empty color vector means unset
CWindowOverridableVar<CGradientValueData> inactiveBorderColor = CGradientValueData(); // empty color vector means unset CWindowOverridableVar<CGradientValueData> inactiveBorderColor = CGradientValueData(); // empty color vector means unset