# This is a file feeded to complgen to generate bash/fish/zsh completions
# Repo: https://github.com/adaszko/complgen
# Generate completion scripts: "complgen aot --bash-script hyprctl.bash --fish-script hyprctl.fish --zsh-script hyprctl.zsh ./hyprctl.usage"

hyprctl [<OPTIONS>]... <ARGUMENTS>

<OPTIONS>  ::=  (-i | --instance)                                     "Specify the Hyprland instance"
            |   (-j)                                                  "Output in JSON format"
            |   (-r)                                                  "Refresh state after issuing the command"
            |   (--batch)                                             "Execute a batch of commands separated by ;"
            |   (-q | --quiet)                                        "Disable output"
            |   (-h | --help)                                         "Prints the help message"
            ;

<WINDOWS> ::= {{{ hyprctl clients | awk '/class/{print $2}' }}};

<AVAILABLE_PLUGINS> ::= {{{ hyprpm list | awk '/Plugin/{print $4}' }}};

<MONITORS> ::= {{{ hyprctl monitors | awk '/Monitor/{ print $2 }' }}};

<KEYBOARDS> ::= {{{ hyprctl devices | sed -n '/Keyboard at/{n; s/^\s\+//; p}' }}};

<NOTIFICATION_TYPES> ::=  (0)   "WARNING"
                      |   (1)   "INFO"
                      |   (2)   "HINT"
                      |   (3)   "ERROR"
                      |   (4)   "CONFUSED"
                      |   (5)   "OK"
                      |   (-1)  "No Icon"
                      ;

<PROPS> ::=  (animationstyle)
         |   (rounding <NUM>)
         |   (bordersize <NUM>)
         |   (forcenoblur (0 | 1))
         |   (forceopaque (0 | 1))
         |   (forceopaqueoverriden (0 | 1))
         |   (forceallowsinput (0 | 1))
         |   (forcenoanims (0 | 1))
         |   (forcenoborder (0 | 1))
         |   (forcenodim (0 | 1))
         |   (forcenoshadow (0 | 1))
         |   (nofocus (0 | 1))
         |   (windowdancecompat (0 | 1))
         |   (nomaxsize (0 | 1))
         |   (minsize)
         |   (maxsize)
         |   (dimaround (0 | 1))
         |   (keepaspectratio (0 | 1))
         |   (alphaoverride (0 | 1))
         |   (alpha)
         |   (alphainactiveoverride (0 | 1))
         |   (alphainactive)
         |   (alphafullscreenoverride (0 | 1))
         |   (alphafullscreen)
         |   (activebordercolor)
         |   (inactivebordercolor)
         ;


<ARGUMENTS> ::= (activewindow)                                        "Get the active window name and its properties"
            |   (activeworkspace)                                     "Get the active workspace name and its properties"
            |   (animations)                                          "Gets the current config info about animations and beziers"
            |   (binds)                                               "List all registered binds"
            |   (clients)                                             "List all windows with their properties"
            |   (configerrors)                                        "List all current config parsing errors"
            |   (cursorpos)                                           "Get the current cursor pos in global layout coordinates"
            |   (decorations <WINDOWS>)                               "List all decorations and their info"
            |   (descriptions)                                        "Return a parsable JSON with all the config options, descriptions, value types and ranges"
            |   (devices)                                             "List all connected keyboards and mice"
            |   (dismissnotify <NUM>)                                 "Dismiss all or up to amount of notifications"
            |   (dispatch <DISPATCHERS>)                              "Issue a dispatch to call a keybind dispatcher with an arg"
            |   (getoption)                                           "Get the config option status (values)"
            |   (globalshortcuts)                                     "Lists all global shortcuts"
            |   (hyprpaper)                                           "Interact with hyprpaper if present"
            |   (instances)                                           "List all running Hyprland instances and their info"
            |   (keyword <KEYWORDS>)                                  "Issue a keyword to call a config keyword dynamically"
            |   (kill)                                                "Get into a kill mode, where you can kill an app by clicking on it"
            |   (layers)                                              "List the layers"
            |   (layouts)                                             "List all layouts available (including plugin ones)"
            |   (monitors [all])                                      "List active outputs with their properties"
            |   (notify <NOTIFICATION_TYPES> <NUM>)                   "Send a notification using the built-in Hyprland notification system"
            |   (output (create (wayland | x11 | headless | auto) | remove <MONITORS>)) "Allows adding/removing fake outputs to a specific backend"
            |   (plugin <AVAILABLE_PLUGINS>)                          "Interact with a plugin"
            |   (reload [config-only])                                "Force reload the config"
            |   (rollinglog [-f])                                     "Print tail of the log"
            |   (setcursor)                                           "Set the cursor theme and reloads the cursor manager"
            |   (seterror [disable])                                  "Set the hyprctl error string"
            |   (setprop <PROPS>)                                     "Set a property of a window"
            |   (splash)                                              "Print the current random splash"
            |   (switchxkblayout <KEYBOARDS> (next | prev | <NUM>))   "Set the xkb layout index for a keyboard"
            |   (systeminfo)                                          "Print system info"
            |   (version)                                             "Print the Hyprland version: flags, commit and branch of build"
            |   (workspacerules)                                      "Get the list of defined workspace rules"
            |   (workspaces)                                          "List all workspaces with their properties"
            ;

<WINDOW_STATE> ::=  (-1)    "Current"
                |   (0)     "None"
                |   (1)     "Maximize no fullscreen"
                |   (2)     "Fullscreen"
                |   (3)     "Maximize and fullscreen"
                ;

<DISPATCHERS> ::=  (exec)         	                                  "Execute a shell command"
                |  (execr)           	                              "Execute a raw shell command"
                |  (pass)            	                              "Pass the key to a specified window"
                |  (sendshortcut)            	                      "On shortcut X sends shortcut Y to a specified window"
                |  (killactive)          	                          "Close the active window"
                |  (closewindow)         	                          "Close a specified window"
                |  (workspace)           	                          "Change the workspace"
                |  (movetoworkspace)         	                      "Move the focused window to a workspace"
                |  (movetoworkspacesilent)           	              "Move window doesnt switch to the workspace"
                |  (togglefloating)          	                      "Toggle the current window's floating state"
                |  (setfloating)         	                          "Set the current window's floating state to true"
                |  (settiled)            	                          "Set the current window's floating state to false"
                |  (fullscreen)          	                          "Toggle the focused window's fullscreen state"
                |  (fakefullscreen)          	                      "Toggle the focused window's internal fullscreen state"
                |  (fullscreenstate <WINDOW_STATE>)                   "Sets the focused window’s fullscreen mode and the one sent to the client"
                |  (dpms)            	                              "Set all monitors' DPMS status"
                |  (pin)         	                                  "Pin a window"
                |  (movefocus)           	                          "Move the focus in a direction"
                |  (movewindow)          	                          "Move the active window in a direction or to a monitor"
                |  (swapwindow)          	                          "Swap the active window with another window"
                |  (centerwindow)            	                      "Center the active window"
                |  (resizeactive)            	                      "Resize the active window"
                |  (moveactive)          	                          "Move the active window"
                |  (resizewindowpixel)           	                  "Resize a selected window"
                |  (movewindowpixel)         	                      "Move a selected window"
                |  (cyclenext)           	                          "Focus the next window on a workspace"
                |  (swapnext)            	                          "Swap the focused window with the next window"
                |  (tagwindow)           	                          "Apply a tag to the window"
                |  (focuswindow)         	                          "Focus the first window matching"
                |  (focusmonitor)            	                      "Focus a monitor"
                |  (splitratio)          	                          "Change the split ratio"
                |  (toggleopaque)            	                      "Toggle the current window to always be opaque"
                |  (movecursortocorner)          	                  "Move the cursor to the corner of the active window"
                |  (movecursor)          	                          "Move the cursor to a specified position"
                |  (renameworkspace)         	                      "Rename a workspace"
                |  (exit)            	                              "Exit the compositor with no questions asked"
                |  (forcerendererreload)         	                  "Force the renderer to reload all resources and outputs"
                |  (movecurrentworkspacetomonitor)           	      "Move the active workspace to a monitor"
                |  (focusworkspaceoncurrentmonitor)          	      "Focus the requested workspace"
                |  (moveworkspacetomonitor)          	              "Move a workspace to a monitor"
                |  (swapactiveworkspaces)            	              "Swap the active workspaces between two monitors"
                |  (alterzorder)         	                          "Modify the window stack order of the active or specified window"
                |  (togglespecialworkspace)          	              "Toggle a special workspace on/off"
                |  (focusurgentorlast)           	                  "Focus the urgent window or the last window"
                |  (togglegroup)         	                          "Toggle the current active window into a group"
                |  (changegroupactive)           	                  "Switch to the next window in a group"
                |  (focuscurrentorlast)          	                  "Switch focus from current to previously focused window"
                |  (lockgroups)          	                          "Lock the groups"
                |  (lockactivegroup)         	                      "Lock the focused group"
                |  (moveintogroup)           	                      "Move the active window into a group"
                |  (moveoutofgroup)          	                      "Move the active window out of a group"
                |  (movewindoworgroup)           	                  "Behave as moveintogroup"
                |  (movegroupwindow)         	                      "Swap the active window with the next or previous in a group"
                |  (denywindowfromgroup)         	                  "Prohibit the active window from becoming or being inserted into group"
                |  (setignoregrouplock)          	                  "Temporarily enable or disable binds:ignore_group_lock"
                |  (global)          	                              "Execute a Global Shortcut using the GlobalShortcuts portal"
                |  (submap)          	                              "Change the current mapping group"
                |  (event)                                            "Emits a custom event to socket2"
                ;