papirus-folders/completion/papirus-folders
2021-10-15 22:31:55 +03:00

75 lines
1.6 KiB
Bash

# papirus-folders completion
#
# @author: Sergei Eremenko (https://github.com/SmartFinn)
# @license: MIT license (MIT)
# @link: https://github.com/PapirusDevelopmentTeam/papirus-folders
__get_colors() {
if ! command -v papirus-folders >/dev/null; then
return 1
fi
papirus-folders -l | tr -d '>\n'
}
__get_themes() {
local data_dir icons_dir icon_theme
local -a data_dirs=()
local -a icons_dirs=(
"$HOME/.icons"
"${XDG_DATA_HOME:-$HOME/.local/share}/icons"
)
# Get data directories from XDG_DATA_DIRS variable and
# convert colon-separated list into bash array
IFS=: read -ra data_dirs <<< "${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
for data_dir in "${data_dirs[@]}"; do
[ -d "$data_dir/icons" ] || continue
icons_dirs=( "${icons_dirs[@]}" "${data_dir%/}/icons" )
done
for icons_dir in "${icons_dirs[@]}"; do
for icon_theme in "$icons_dir"/*; do
[ -f "$icon_theme/48x48/places/folder-blue.svg" ] || continue
printf '%s\n' "${icon_theme##*/}"
done
done
return
}
_papirus_folders() {
local cur prev
local -a colors=( $(__get_colors) )
local -a opts=(
-h --help
-V --version
-v --verbose
-C --color
-D --default
-R --restore
-l --list
-o --once
-t --theme
-u --update-caches
)
_get_comp_words_by_ref cur prev
case "$prev" in
-C|--color)
COMPREPLY=( $(compgen -W "${colors[*]}" -- "${cur}") )
return
;;
-t|--theme)
COMPREPLY=( $(compgen -W "$(__get_themes)" -- "${cur}") )
;;
*)
COMPREPLY=( $(compgen -W "${opts[*]}" -- "${cur}") )
;;
esac
}
complete -F _papirus_folders papirus-folders
# ex: ts=4 sw=4 filetype=sh