#compdef polybar # # Completion for polybar (https://github.com/polybar/polybar) # jaagr # _polybar() { local L='-l --log' local Q='-q --quiet' local C='-c --config' local R='-r --reload' local D='-d --dump' local M='-m --list-monitors' local W='-w --print-wmname' local S='-s --stdout' _arguments -n : \ '(-)'{-h,--help}'[Display help text and exit]' \ '(-)'{-v,--version}'[Display build details and exit]' \ "($L $Q)"{-l,--log=}'[Set the logging verbosity (default: warning)]:verbosity level:(error warning info trace)' \ "($L $Q)"{-q,--quiet}'[Be quiet (will override -l)]' \ "($C)"{-c,--config=}'[Path to the configuration file]:configuration file:_files' \ "($R)"{-r,--reload}'[Reload when the configuration has been modified]' \ "($D $R $M $W $S)"{-d,--dump=}'[Print parameter value in bar section and exit]:parameter name' \ "($M $D $R $W $S)"{-m,--list-monitors}'[Print list of available monitors and exit]' \ "($W $R $D $M $S)"{-w,--print-wmname}'[Print the generated WM_NAME and exit]' \ "($S)"{-s,--stdout}'[Output data to stdout instead of drawing the X window]' \ '::bar name:_polybar_list_names' } (( $+functions[_polybar_list_names] )) || _polybar_list_names() { local conf if (( $+opt_args[-c] )); then conf=${(e)opt_args[-c]} elif (( $+opt_args[--config] )); then conf=${(e)opt_args[--config]} else conf=${XDG_CONFIG_HOME:-$HOME/.config}/polybar/config fi local names; names=(${(f)"$(sed -nr 's|\[bar/([^\]+)\]$|\1|p' ${conf} 2>/dev/null)"}) _describe -t names 'configuration name' names } _polybar "$@"