e35c147cd5
This reduces the impact of keyboard groups on the Keyboard.zig implementation and otherwise improves consistency with patterns used elsewhere in rivers code. There are also two small changes to the riverctl interface: - keyboard-group-add-keyboard is renamed to keyboard-group-add - keyboard-group-remove is added to support removing keyboards from a group.
190 lines
8.5 KiB
Plaintext
190 lines
8.5 KiB
Plaintext
#compdef riverctl
|
|
#
|
|
# Completion script for riverctl, part of river <https://github.com/riverwm/river>
|
|
|
|
_riverctl_subcommands()
|
|
{
|
|
local -a riverctl_subcommands
|
|
|
|
riverctl_subcommands=(
|
|
# Actions
|
|
'close:Close the focused view'
|
|
'csd-filter-add:Add app-id to the CSD filter list'
|
|
'exit:Exit the compositor, terminating the Wayland session'
|
|
'float-filter-add:Add app-id to the float filter list'
|
|
'focus-output:Focus the next or previous output'
|
|
'focus-view:Focus the next or previous view in the stack'
|
|
'move:Move the focused view in the specified direction'
|
|
'resize:Resize the focused view along the given axis'
|
|
'snap:Snap the focused view to the specified screen edge'
|
|
'send-to-output:Send the focused view to the next or the previous output'
|
|
'spawn:Run shell_command using /bin/sh -c'
|
|
'swap:Swap the focused view with the next/previous visible non-floating view'
|
|
'toggle-float:Toggle the floating state of the focused view'
|
|
'toggle-fullscreen:Toggle the fullscreen state of the focused view'
|
|
'zoom:Bump the focused view to the top of the layout stack'
|
|
'default-layout:Set the layout namespace to be used by all outputs by default.'
|
|
'output-layout:Set the layout namespace of currently focused output.'
|
|
'send-layout-cmd:Send command to the layout generator on the currently focused output with matching namespace'
|
|
# Tag management
|
|
'set-focused-tags:Show views with tags corresponding to the set bits of tags'
|
|
'set-view-tags:Assign the currently focused view the tags corresponding to the set bits of tags'
|
|
'toggle-focused-tags:Toggle visibility of views with tags corresponding to the set bits of tags'
|
|
'toggle-view-tags:Toggle the tags of the currently focused view'
|
|
'spawn-tagmask:Set a tagmask to filter the tags assigned to newly spawned views on the focused output'
|
|
'focus-previous-tags:Sets tags to their previous value on the focused output'
|
|
'send-to-previous-tags:Assign the currently focused view the previous tags of the focused output'
|
|
# Mappings
|
|
'declare-mode:Create a new mode'
|
|
'enter-mode:Switch to given mode if it exists'
|
|
'map:Run command when key is pressed while modifiers are held down and in the specified mode'
|
|
'map-pointer:Move or resize views when button and modifiers are held down while in the specified mode'
|
|
'map-switch:Run command when river receives a switch event in the specified mode'
|
|
'unmap:Remove the mapping defined by the arguments'
|
|
'unmap-pointer:Remove the pointer mapping defined by the arguments'
|
|
'unmap-switch:Remove the switch mapping defined by the arguments'
|
|
# Configuration
|
|
'attach-mode:Configure where new views should attach to the view stack'
|
|
'background-color:Set the background color'
|
|
'border-color-focused:Set the border color of focused views'
|
|
'border-color-unfocused:Set the border color of unfocused views'
|
|
'border-color-urgent:Set the border color of urgent views'
|
|
'border-width:Set the border width to pixels'
|
|
'focus-follows-cursor:Configure the focus behavior when moving cursor'
|
|
'hide-cursor:Hide cursor when typing or after inactivity'
|
|
'set-repeat:Set the keyboard repeat rate and repeat delay'
|
|
'set-cursor-warp:Set the cursor warp mode.'
|
|
'xcursor-theme:Set the xcursor theme'
|
|
# Keyboard groups
|
|
'keyboard-group-create:Create a keyboard group'
|
|
'keyboard-group-destroy:Destroy a keyboard group'
|
|
'keyboard-group-add:Add a keyboard to a keyboard group'
|
|
'keyboard-group-remove:Remove a keyboard from a keyboard group'
|
|
# Input
|
|
'input:Configure input devices'
|
|
'list-inputs:List all input devices'
|
|
'list-input-configs:List all input configurations'
|
|
)
|
|
|
|
_describe -t command 'command' riverctl_subcommands
|
|
}
|
|
|
|
_riverctl_input_subcommands()
|
|
{
|
|
local -a input_subcommands
|
|
|
|
input_subcommands=(
|
|
'events:Configure whether the input devices events will be used by river'
|
|
'accel-profile:Set the pointer acceleration profile'
|
|
'pointer-accel:Set the pointer acceleration factor'
|
|
'click-method:Set the click method'
|
|
'drag:Enable or disable the tap-and-drag functionality'
|
|
'drag-lock:Enable or disable the drag lock functionality'
|
|
'disable-while-typing:Enable or disable the disable-while-typing functionality'
|
|
'middle-emulation:Enable or disable the middle click emulation functionality'
|
|
'natural-scroll:Enable or disable the natural scroll functionality'
|
|
'left-handed:Enable or disable the left handed mode'
|
|
'tap:Enable or disable the tap functionality'
|
|
'tap-button-map:Configure the button mapping for tapping'
|
|
'scroll-method:Set the scroll method'
|
|
'scroll-button:Set the scroll button'
|
|
)
|
|
|
|
_describe -t command 'command' input_subcommands
|
|
}
|
|
|
|
_riverctl_input()
|
|
{
|
|
local state
|
|
|
|
_arguments \
|
|
'1: :->commands' \
|
|
'*:: :->args'
|
|
|
|
case $state in
|
|
commands) _alternative 'common-commands:common:_riverctl_input_subcommands' ;;
|
|
args)
|
|
case "$words[1]" in
|
|
events) _alternative 'input-cmds:args:(enabled disabled disabled-on-external-mouse)' ;;
|
|
accel-profile) _alternative 'input-cmds:args:(none flat adaptive)' ;;
|
|
click-method) _alternative 'input-cmds:args:(none button-area clickfinger)' ;;
|
|
drag) _alternative 'input-cmds:args:(enabled disabled)' ;;
|
|
drag-lock) _alternative 'input-cmds:args:(enabled disabled)' ;;
|
|
disable-while-typing) _alternative 'input-cmds:args:(enabled disabled)' ;;
|
|
middle-emulation) _alternative 'input-cmds:args:(enabled disabled)' ;;
|
|
natural-scroll) _alternative 'input-cmds:args:(enabled disabled)' ;;
|
|
left-handed) _alternative 'input-cmds:args:(enabled disabled)' ;;
|
|
tap) _alternative 'input-cmds:args:(enabled disabled)' ;;
|
|
tap-button-map) _alternative 'input-cmds:args:(left-right-middle left-middle-right)' ;;
|
|
scroll-method) _alternative 'input-cmds:args:(none two-finger edge button)' ;;
|
|
*) return 0 ;;
|
|
esac
|
|
;;
|
|
esac
|
|
}
|
|
|
|
_riverctl_hide_cursor_subcommands()
|
|
{
|
|
local -a hide_cursor_subcommands
|
|
|
|
hide_cursor_subcommands=(
|
|
"timeout:Hide cursor if it wasn\'t moved in the last X millisecond, until it is moved again"
|
|
'when-typing:Enable or disable whether the cursor should be hidden when pressing any non-modifier key'
|
|
)
|
|
|
|
_describe -t command 'command' hide_cursor_subcommands
|
|
}
|
|
|
|
_riverctl_hide_cursor()
|
|
{
|
|
local state
|
|
|
|
_arguments \
|
|
'1: :->commands' \
|
|
'*:: :->args'
|
|
|
|
case $state in
|
|
commands) _alternative 'common-commands:common:_riverctl_hide_cursor_subcommands' ;;
|
|
args)
|
|
case "$words[1]" in
|
|
when-typing) _alternative 'hide-cursor-cmds:args:(enabled disabled)' ;;
|
|
*) return 0 ;;
|
|
esac
|
|
;;
|
|
esac
|
|
}
|
|
|
|
_riverctl()
|
|
{
|
|
local state
|
|
|
|
_arguments \
|
|
'1: :->commands' \
|
|
'*:: :->args'
|
|
|
|
case $state in
|
|
commands) _alternative 'common-commands:common:_riverctl_subcommands' ;;
|
|
args)
|
|
case "$words[1]" in
|
|
focus-output) _alternative 'arguments:args:(next previous)' ;;
|
|
focus-view) _alternative 'arguments:args:(next previous)' ;;
|
|
input) _riverctl_input ;;
|
|
move) _alternative 'arguments:args:(up down left right)' ;;
|
|
resize) _alternative 'arguments:args:(horizontal vertical)' ;;
|
|
snap) _alternative 'arguments:args:(up down left right)' ;;
|
|
send-to-output) _alternative 'arguments:args:(next previous)' ;;
|
|
swap) _alternative 'arguments:args:(next previous)' ;;
|
|
map) _alternative 'arguments:optional:(-release -repeat -layout)' ;;
|
|
unmap) _alternative 'arguments:optional:(-release)' ;;
|
|
attach-mode) _alternative 'arguments:args:(top bottom)' ;;
|
|
focus-follows-cursor) _alternative 'arguments:args:(disabled normal always)' ;;
|
|
set-cursor-warp) _alternative 'arguments:args:(disabled on-output-change)' ;;
|
|
hide-cursor) _riverctl_hide_cursor ;;
|
|
*) return 0 ;;
|
|
esac
|
|
;;
|
|
esac
|
|
}
|
|
|
|
_riverctl "$@"
|