# swaymsg(1) completion _swayidle() { local cur prev _get_comp_words_by_ref -n : cur prev local prev2=${COMP_WORDS[COMP_CWORD-2]} local prev3=${COMP_WORDS[COMP_CWORD-3]} events=( 'timeout' 'before-sleep' ) short=( -h -d ) if [ "$prev" = timeout ]; then # timeout return elif [ "$prev2" = timeout ]; then # timeout COMPREPLY=($(compgen -c -- "$cur")) return elif [ "$prev3" = timeout ]; then # timeout [resume ] COMPREPLY=(resume) # optional argument; no return here as user may skip 'resume' fi case "$prev" in resume) COMPREPLY=($(compgen -c -- "$cur")) return ;; before-sleep) COMPREPLY=($(compgen -c -- "$cur")) return ;; esac COMPREPLY+=($(compgen -W "${events[*]}" -- "$cur")) COMPREPLY+=($(compgen -W "${short[*]}" -- "$cur")) } && complete -F _swayidle swayidle