bash completion
This commit is contained in:
parent
2e8cc7f503
commit
3f5141bf22
@ -19,6 +19,7 @@ include(04-targets)
|
||||
include(05-summary)
|
||||
|
||||
add_subdirectory(doc)
|
||||
add_subdirectory(doc/bash)
|
||||
add_subdirectory(doc/zsh)
|
||||
add_subdirectory(include)
|
||||
add_subdirectory(lib)
|
||||
|
6
doc/bash/CMakeLists.txt
Normal file
6
doc/bash/CMakeLists.txt
Normal file
@ -0,0 +1,6 @@
|
||||
#
|
||||
# Bash completion template
|
||||
#
|
||||
install(FILES polybar
|
||||
DESTINATION share/bash-completion/completions
|
||||
COMPONENT tools)
|
93
doc/bash/polybar
Normal file
93
doc/bash/polybar
Normal file
@ -0,0 +1,93 @@
|
||||
_polybar_config_file() {
|
||||
local config_path=${XDG_CONFIG_HOME:-$HOME/.config}/polybar/config
|
||||
|
||||
for ((i = 0; i < COMP_CWORD; i++)); do
|
||||
case ${COMP_WORDS[i]} in
|
||||
--config)
|
||||
config_path=${COMP_WORDS[i + 2]}
|
||||
break
|
||||
;;
|
||||
-c)
|
||||
config_path=${COMP_WORDS[i + 1]}
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Use eval + cd for to get bash's parameter/tilde expansion etc
|
||||
(eval cd $(dirname "$config_path"); echo $PWD/$(basename "$config_path"))
|
||||
}
|
||||
|
||||
_polybar_bars() {
|
||||
local config_file=$(_polybar_config_file)
|
||||
|
||||
if [ -r "$config_file" ]; then
|
||||
grep -Po '\[bar/\K(.*)(?=\])' "$config_file"
|
||||
fi
|
||||
}
|
||||
|
||||
_polybar() {
|
||||
local options='-h --help
|
||||
-v --version
|
||||
-l --log=
|
||||
-q --quiet
|
||||
-c --config=
|
||||
-r --reload
|
||||
-d --dump=
|
||||
-m --list-monitors
|
||||
-w --print-wmname
|
||||
-s --stdout
|
||||
-p --png='
|
||||
|
||||
local log_levels='error
|
||||
warning
|
||||
info
|
||||
trace'
|
||||
|
||||
COMPREPLY=()
|
||||
|
||||
local cur=${COMP_WORDS[COMP_CWORD]}
|
||||
case "$cur" in
|
||||
-*)
|
||||
COMPREPLY=( $(compgen -W "$options" -- "$cur") )
|
||||
;;
|
||||
*)
|
||||
local prev=${COMP_WORDS[COMP_CWORD - 1]}
|
||||
if [ "$prev" = "=" ]; then
|
||||
prev=${COMP_WORDS[COMP_CWORD - 2]}
|
||||
fi
|
||||
|
||||
case "$prev" in
|
||||
-l|--log)
|
||||
COMPREPLY=( $(compgen -W "$log_levels" -- "$cur") )
|
||||
return 0
|
||||
;;
|
||||
-c|--config)
|
||||
COMPREPLY=( $(compgen -f "$cur") )
|
||||
return 0
|
||||
;;
|
||||
-p|--png)
|
||||
COMPREPLY=( $(compgen -f -X "!*.png" "$cur") )
|
||||
return 0
|
||||
;;
|
||||
# TODO: read properties of the selected bar from config
|
||||
-d|--dump)
|
||||
return 0
|
||||
;;
|
||||
*)
|
||||
COMPREPLY=( $(compgen -W "$options $(_polybar_bars)" -- "$cur") )
|
||||
;;
|
||||
esac
|
||||
esac
|
||||
|
||||
for ((i = 0; i < ${#COMPREPLY[@]}; i++)); do
|
||||
case ${COMPREPLY[i]} in
|
||||
--*=) ;;
|
||||
-*) COMPREPLY[i]+=" "
|
||||
esac
|
||||
done
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
complete -o filenames -o noquote -o nospace -F _polybar polybar
|
Loading…
Reference in New Issue
Block a user