# swaybar(1) completion _swaybar() { local cur prev _get_comp_words_by_ref cur prev short=( -h -v -s -b -d ) long=( --help --version --socket --bar_id --debug ) case $prev in -s|--socket) _filedir return ;; -b|--bar_id) bars=($(swaymsg -t get_bar_config | jq -r '.[]')) COMPREPLY=($(compgen -W "${bars[*]}" -- "$cur")) return ;; esac if [[ $cur == --* ]]; then COMPREPLY=($(compgen -W "${long[*]}" -- "$cur")) else COMPREPLY=($(compgen -W "${short[*]}" -- "$cur")) COMPREPLY+=($(compgen -W "${long[*]}" -- "$cur")) fi } && complete -F _swaybar swaybar