a0ea456ab2
This commit adds position and dimensions rules for configuring the initial position and dimensions of views. When a view is not matched by any position rules, it is centered in the avaliable output space matching the current behavior. If the provided position rule places the view outside of the output, the view's position is clamped to the output bounds (with respect to borders). When a view is not matched by any dimensions rules, no default dimensions is set by the server. If the provided dimensions rule exceeds the minimum or maximum width/height constraints of the view, the view's width/height is clamped to the constraints. Position and dimensions rules have no effect if a view is started fullscreen or is not floating. A view must be matched by a float rule in order for them to take effect.
145 lines
3.8 KiB
Plaintext
145 lines
3.8 KiB
Plaintext
function __riverctl_completion ()
|
|
{
|
|
local rule_actions="float no-float ssd csd tag output position dimensions"
|
|
if [ "${COMP_CWORD}" -eq 1 ]
|
|
then
|
|
OPTS=" \
|
|
keyboard-group-create \
|
|
keyboard-group-destroy \
|
|
keyboard-group-add \
|
|
keyboard-group-remove \
|
|
keyboard-layout \
|
|
exit \
|
|
focus-output \
|
|
focus-view \
|
|
input \
|
|
list-inputs \
|
|
list-input-configs \
|
|
move \
|
|
resize \
|
|
rule-add \
|
|
rule-del \
|
|
list-rules \
|
|
snap \
|
|
send-to-output \
|
|
spawn \
|
|
swap \
|
|
toggle-float \
|
|
toggle-fullscreen \
|
|
zoom \
|
|
default-layout \
|
|
output-layout \
|
|
send-layout-cmd \
|
|
set-focused-tags \
|
|
focus-previous-tags \
|
|
send-to-previous-tags \
|
|
set-view-tags \
|
|
toggle-focused-tags \
|
|
toggle-view-tags \
|
|
spawn-tagmask \
|
|
declare-mode \
|
|
enter-mode \
|
|
map \
|
|
map-pointer \
|
|
map-switch \
|
|
unmap \
|
|
unmap-pointer \
|
|
unmap-switch \
|
|
attach-mode \
|
|
background-color \
|
|
border-color-focused \
|
|
border-color-unfocused \
|
|
border-color-urgent \
|
|
border-width \
|
|
focus-follows-cursor \
|
|
hide-cursor \
|
|
set-repeat \
|
|
set-cursor-warp \
|
|
xcursor-theme"
|
|
COMPREPLY=($(compgen -W "${OPTS}" -- "${COMP_WORDS[1]}"))
|
|
elif [ "${COMP_CWORD}" -eq 2 ]
|
|
then
|
|
case "${COMP_WORDS[1]}" in
|
|
"focus-output"|"send-to-output") OPTS="next previous" ;;
|
|
"focus-view"|"swap") OPTS="next previous up down left right" ;;
|
|
"input") OPTS="$(riverctl list-inputs | sed '/configured:/d')" ;;
|
|
"move"|"snap") OPTS="up down left right" ;;
|
|
"resize") OPTS="horizontal vertical" ;;
|
|
"rule-add"|"rule-del") OPTS="-app-id -title $rule_actions" ;;
|
|
"list-rules") OPTS="float ssd tag output position dimensions" ;;
|
|
"map") OPTS="-release -repeat -layout" ;;
|
|
"unmap") OPTS="-release" ;;
|
|
"attach-mode") OPTS="top bottom" ;;
|
|
"focus-follows-cursor") OPTS="disabled normal always" ;;
|
|
"set-cursor-warp") OPTS="disabled on-output-change on-focus-change" ;;
|
|
"hide-cursor") OPTS="timeout when-typing" ;;
|
|
*) return ;;
|
|
esac
|
|
COMPREPLY=($(compgen -W "${OPTS}" -- "${COMP_WORDS[2]}"))
|
|
elif [ "${COMP_CWORD}" -eq 3 ]
|
|
then
|
|
if [ "${COMP_WORDS[1]}" == "input" ]
|
|
then
|
|
OPTS="events \
|
|
accel-profile \
|
|
pointer-accel \
|
|
click-method \
|
|
drag \
|
|
drag-lock \
|
|
disable-while-typing \
|
|
middle-emulation \
|
|
natural-scroll \
|
|
left-handed \
|
|
tap \
|
|
tap-button-map \
|
|
scroll-method \
|
|
scroll-button"
|
|
COMPREPLY=($(compgen -W "${OPTS}" -- "${COMP_WORDS[3]}"))
|
|
elif [ "${COMP_WORDS[1]}" == "hide-cursor" ]
|
|
then
|
|
case "${COMP_WORDS[2]}" in
|
|
"when-typing") OPTS="enabled disabled" ;;
|
|
*) return ;;
|
|
esac
|
|
COMPREPLY=($(compgen -W "${OPTS}" -- "${COMP_WORDS[3]}"))
|
|
fi
|
|
elif [ "${COMP_CWORD}" -eq 4 ]
|
|
then
|
|
if [ "${COMP_WORDS[1]}" == "input" ]
|
|
then
|
|
case "${COMP_WORDS[3]}" in
|
|
"events") OPTS="enabled disabled disabled-on-external-mouse" ;;
|
|
"accel-profile") OPTS="none flat adaptive" ;;
|
|
"click-method") OPTS="none button-areas clickfinger" ;;
|
|
"drag"|"drag-lock"|"disable-while-typing"|"middle-emulation"|"left-handed"|"tap") OPTS="enabled disabled" ;;
|
|
"tap-button-map") OPTS="left-right-middle left-middle-right" ;;
|
|
"scroll-method") OPTS="none two-finger edge button" ;;
|
|
*) return ;;
|
|
esac
|
|
COMPREPLY=($(compgen -W "${OPTS}" -- "${COMP_WORDS[4]}"))
|
|
elif [ "${COMP_WORDS[1]:0:5}" == "rule-" ]
|
|
then
|
|
case "${COMP_WORDS[2]}" in
|
|
"-app-id") OPTS="-title $rule_actions" ;;
|
|
"-title") OPTS="-app-id $rule_actions" ;;
|
|
*) return ;;
|
|
esac
|
|
COMPREPLY=($(compgen -W "${OPTS}" -- "${COMP_WORDS[4]}"))
|
|
fi
|
|
elif [ "${COMP_CWORD}" -eq 6 ]
|
|
then
|
|
if [ "${COMP_WORDS[1]:0:5}" == "rule-" ]
|
|
then
|
|
case "${COMP_WORDS[4]}" in
|
|
"-app-id"|"-title") OPTS="$rule_actions" ;;
|
|
*) return ;;
|
|
esac
|
|
COMPREPLY=($(compgen -W "${OPTS}" -- "${COMP_WORDS[6]}"))
|
|
fi
|
|
else
|
|
return
|
|
fi
|
|
}
|
|
|
|
complete -F __riverctl_completion riverctl
|