_bspc() { local messages='get set list list_desktops list_monitors list_windows list_rules list_history presel cancel ratio pad focus shift swap push pull cycle nearest circulate grab_pointer track_pointer ungrab_pointer toggle_fullscreen toggle_floating toggle_locked toggle_visibility close kill send_to drop_to send_to_monitor drop_to_monitor use use_monitor alternate alternate_desktop alternate_monitor add add_in rename_monitor rename cycle_monitor cycle_desktop layout cycle_layout rotate flip balance rule remove_rule put_status adopt_orphans restore quit' local settings='focused_border_color active_border_color normal_border_color presel_border_color focused_locked_border_color active_locked_border_color normal_locked_border_color urgent_border_color border_width window_gap split_ratio top_padding right_padding bottom_padding left_padding wm_name borderless_monocle gapless_monocle focus_follows_pointer adaptative_raise apply_shadow_property auto_alternate' COMPREPLY=() if [[ $COMP_CWORD -ge 1 ]] ; then local current_word="${COMP_WORDS[COMP_CWORD]}" if [[ $COMP_CWORD -eq 1 ]] ; then COMPREPLY=( $(compgen -W "$messages" -- "$current_word") ) return 0 else local second_word=${COMP_WORDS[1]} case $second_word in set|get) if [[ $COMP_CWORD -eq 2 ]] ; then COMPREPLY=( $(compgen -W "$settings" -- "$current_word") ) fi ;; esac fi fi } complete -F _bspc bspc # vim: set ft=sh: