function __riverctl_completion () { if [ "${COMP_CWORD}" -eq 1 ] then OPTS=" \ csd-filter-add \ exit \ float-filter-add \ focus-output \ focus-view \ input \ list-inputs \ list-input-configs \ move \ resize \ 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 \ 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"|"focus-view"|"send-to-output"|"swap") OPTS="next previous" ;; "move"|"snap") OPTS="up down left right" ;; "resize") OPTS="horizontal vertical" ;; "map") OPTS="-release -repeat" ;; "unmap") OPTS="-release" ;; "attach-mode") OPTS="top bottom" ;; "focus-follows-cursor") OPTS="disabled normal" ;; "set-cursor-warp") OPTS="disabled on-output-change" ;; *) 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[2]}")) 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 fi else return fi } complete -F __riverctl_completion riverctl