diff options
Diffstat (limited to 'completions/xrandr')
-rw-r--r-- | completions/xrandr | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/completions/xrandr b/completions/xrandr new file mode 100644 index 0000000..16704e3 --- /dev/null +++ b/completions/xrandr @@ -0,0 +1,63 @@ +# bash completion for xrandr -*- shell-script -*- + +_xrandr() +{ + local cur prev words cword + _init_completion || return + + case "$prev" in + -display | -d | -help | -s | --size | -r | --rate | --refresh | --screen | --fb | --fbmm | \ + --dpi | --pos | --set | --scale | --transform | --crtc | --panning | --gamma | \ + --newmode | --rmmode | --addmode | --delmode) + return + ;; + --output | --left-of | --right-of | --above | --below | --same-as) + local outputs=$("$1" | awk '/connected/ {print $1}') + COMPREPLY=($(compgen -W "$outputs" -- "$cur")) + return + ;; + --mode) + local i output + for ((i = 1; i < cword; i++)); do + if [[ ${words[i]} == --output ]]; then + output=${words[i + 1]} + break + fi + done + if [[ -v output ]]; then + local modes=$("$1" | command sed -e "1,/^$output / d" \ + -e "/connected/,$ d" \ + -e "s/\([^[:space:]]\)[[:space:]].*/\1/") + COMPREPLY=($(compgen -W "$modes" -- "$cur")) + fi + return + ;; + -o | --orientation) + COMPREPLY=($(compgen -W 'normal inverted left right 0 1 2 3' -- \ + "$cur")) + return + ;; + --reflect) + COMPREPLY=($(compgen -W 'normal x y xy' -- "$cur")) + return + ;; + --rotate) + COMPREPLY=($(compgen -W 'normal inverted left right' -- "$cur")) + return + ;; + --setprovideroutputsource | --setprovideroffloadsink) + local providers=$("$1" --listproviders 2>/dev/null | + command sed -ne 's/.* name:\([^ ]*\).*/\1/p') + COMPREPLY=($(compgen -W "$providers" -- "$cur")) + # TODO 2nd arg needed, is that a provider as well? + return + ;; + esac + + COMPREPLY=($(compgen -W '$("$1" -help 2>&1 | + command sed -e "s/ or / /g" -e "s/<[^>]*>]//g" | _parse_help -)' \ + -- "$cur")) +} && + complete -F _xrandr xrandr + +# ex: filetype=sh |