mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-05 04:06:08 -05:00
75 lines
2.5 KiB
Text
75 lines
2.5 KiB
Text
# Bash completion script for footclient
|
|
_footclient()
|
|
{
|
|
COMPREPLY=()
|
|
|
|
local cur prev flags word commands match previous_words i offset
|
|
flags=(
|
|
"--app-id"
|
|
"--fullscreen"
|
|
"--help"
|
|
"--hold"
|
|
"--login-shell"
|
|
"--log-level"
|
|
"--log-colorize"
|
|
"--maximized"
|
|
"--override"
|
|
"--server-socket"
|
|
"--term"
|
|
"--title"
|
|
"--version"
|
|
"--window-size-pixels"
|
|
"--window-size-chars"
|
|
"--working-directory"
|
|
)
|
|
flags="${flags[@]}"
|
|
cur=${COMP_WORDS[COMP_CWORD]}
|
|
prev=${COMP_WORDS[COMP_CWORD-1]}
|
|
|
|
# check if positional argument is completed
|
|
previous_words=( "${COMP_WORDS[@]}" )
|
|
unset previous_words[-1]
|
|
commands=$(compgen -c | grep -vFx "$(compgen -k)" | grep -vE '^([.:[]|footclient)$' | sort -u)
|
|
i=0
|
|
for word in "${previous_words[@]}" ; do
|
|
match=$(printf "$commands" | grep -Fx "$word" 2>/dev/null)
|
|
if [[ ! -z "$match" ]] ; then
|
|
if [[ ${COMP_WORDS[i-1]} =~ ^(--app-id|--log-level|--server-socket|--term|--title|--window-size-pixels|--window-size-chars|--working-directory)$ ]] ; then
|
|
(( i++ ))
|
|
continue
|
|
fi
|
|
# positional argument found
|
|
offset=$i
|
|
fi
|
|
(( i++ ))
|
|
done
|
|
|
|
if [[ ! -z "$offset" ]] ; then
|
|
# depends on bash_completion being available
|
|
declare -F _command_offset >/dev/null || return 1
|
|
_command_offset $offset
|
|
elif [[ ${cur} == --* ]] ; then
|
|
COMPREPLY=( $(compgen -W "${flags}" -- ${cur}) )
|
|
elif [[ ${prev} == '--server-socket' ]] ; then
|
|
compopt -o default
|
|
elif [[ ${prev} == '--working-directory' ]] ; then
|
|
compopt -o dirnames
|
|
elif [[ ${prev} == '--term' ]] ; then
|
|
# check if toe is available
|
|
which toe > /dev/null || return 1
|
|
COMPREPLY=( $(compgen -W "$(toe -a | awk '$1 ~ /[+]/ {next}; {print $1}')" -- ${cur}) )
|
|
elif [[ ${prev} == '--log-level' ]] ; then
|
|
COMPREPLY=( $(compgen -W "error warning info" -- ${cur}) )
|
|
elif [[ ${prev} == '--log-colorize' ]] ; then
|
|
COMPREPLY=( $(compgen -W "never always auto" -- ${cur}) )
|
|
elif [[ ${prev} =~ ^(--app-id|--help|--override|--title|--version|--window-size-chars|--window-size-pixels|)$ ]] ; then
|
|
: # don't autocomplete for these flags
|
|
else
|
|
# complete commands from $PATH
|
|
COMPREPLY=( $(compgen -c ${cur}) )
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
complete -F _footclient footclient
|