# Bash completion script for foot _foot() { COMPREPLY=() local cur prev flags word commands match previous_words i offset flags=( "--app-id" "--check-config" "--config" "--font" "--fullscreen" "--help" "--hold" "--log-colorize" "--log-level" "--log-no-syslog" "--login-shell" "--maximized" "--print-pid" "--server" "--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 '^([.:[]|foot)$' | 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|--config|--font|--log-level|--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} =~ ^(--config|--print-pid|--server)$ ]] ; 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} == '--font' ]] ; then # check if fc-list is available which fc-list > /dev/null || return 1 COMPREPLY=( $(compgen -W "$(fc-list : family | sed 's/,/\n/g' | uniq | tr -d ' ')" -- ${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|--title|--version|--window-size-chars|--window-size-pixels|--check-config)$ ]] ; then : # don't autocomplete for these flags else # complete commands from $PATH COMPREPLY=( $(compgen -c ${cur}) ) fi return 0 } complete -F _foot foot