function __riverctl_completion () { if [ "${COMP_CWORD}" -eq 1 ] then OPTS=" \ csd-filter-add \ exit \ float-filter-add \ focus-output \ focus-view \ move \ resize \ snap \ send-to-output \ spawn \ swap \ toggle-float \ toggle-fullscreen \ zoom \ default-layout \ output-layout \ set-layout-value \ mod-layout-value \ set-focused-tags \ set-view-tags \ toggle-focused-tags \ toggle-view-tags \ spawn-tagmask \ declare-mode \ enter-mode \ map \ map-pointer \ unmap \ unmap-pointer \ attach-mode \ background-color \ border-color-focused \ border-color-unfocused \ border-width \ focus-follow-cursor \ opacity \ set-repeat \ xcursor-theme COMPREPLY=($(compgen -W "${OPTS}" -- "${COMP_WORDS[1]}")) elif [ "${COMP_CWORD}" -eq 2 ] then case "${COMP_WORDS[1]}" in "focus-output"|"focus-view"|"send-to-output"|"swap") OPTS="next previous" ;; "move"|"snap") OPTS="up down left right" ;; "resize") OPTS="horizontal vertical" ;; "map"|"unmap") OPTS="-release" ;; "attach-mode") OPTS="top bottom" ;; "focus-follows-cursor") OPTS="disabled normal strict" ;; *) return ;; esac COMPREPLY=($(compgen -W "${OPTS}" -- "${COMP_WORDS[2]}")) else return fi } complete -F __riverctl_completion riverctl