# 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 | 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 | 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 dislpay completion for remote hosts return ;; esac if [[ "$cur" == -* ]]; then COMPREPLY=( $( compgen -W '$( _parse_help "$1" -help )' -- "$cur" ) ) [[ $COMPREPLY == *= ]] && compopt -o nospace [[ $COMPREPLY ]] && return fi } && complete -F _xgamma xgamma # ex: ts=4 sw=4 et filetype=sh