diff options
Diffstat (limited to 'completions/xgamma')
-rw-r--r-- | completions/xgamma | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/completions/xgamma b/completions/xgamma new file mode 100644 index 0000000..8d77ba3 --- /dev/null +++ b/completions/xgamma @@ -0,0 +1,61 @@ +# 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 |