# bash completion for xgamma(1) -*- shell-script -*- _xgamma() { local cur prev words cword _init_completion -n : || return case "$prev" in -screen) local screens=$(xrandr --query 2>/dev/null | command sed -n \ '/^Screen /s|^Screen \{1,\}\(.*\):.*$|\1|p' 2>/dev/null) COMPREPLY=($(compgen -W "$screens" -- "$cur")) return ;; -gamma | -rgamma | -ggamma | -bgamma) # expect f.f if [[ $cur && $cur != *.* ]]; then COMPREPLY=(.) fi COMPREPLY+=($(compgen -W "{0..9}")) compopt -o nospace return ;; -display) # expect hostname:displaynumber.screennumber if [[ $cur == :* && $cur != :*.* ]]; then # FIXME: where to get local display numbers? local display=${cur#:} COMPREPLY=($(compgen -W "${display:-0}.")) compopt -o nospace elif [[ $cur == :*.* ]]; then # local screen numbers local t screens=$(xrandr --query 2>/dev/null | command sed -ne \ '/^Screen /s|^Screen \{1,\}\(.*\):.*$|\1|p' 2>/dev/null) t="${cur#:}" COMPREPLY=($(compgen -P "${t%.*}." -W "$screens" -- \ "${cur##*.}")) elif [[ $cur != *:* ]]; then # complete hostnames _known_hosts_real -c -- "$cur" if [[ ! $cur ]]; then COMPREPLY+=(:) fi compopt -o nospace fi # no display completion for remote hosts return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur")) if [[ ${COMPREPLY-} ]]; then [[ $COMPREPLY == *= ]] && compopt -o nospace return fi fi } && complete -F _xgamma xgamma # ex: filetype=sh