diff options
Diffstat (limited to 'completions/xgamma')
-rw-r--r-- | completions/xgamma | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/completions/xgamma b/completions/xgamma new file mode 100644 index 00000000..4c434cfe --- /dev/null +++ b/completions/xgamma @@ -0,0 +1,57 @@ +# 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 -n \ + -e '/^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 |