diff options
Diffstat (limited to 'completions/vncviewer')
-rw-r--r-- | completions/vncviewer | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/completions/vncviewer b/completions/vncviewer new file mode 100644 index 0000000..ba55226 --- /dev/null +++ b/completions/vncviewer @@ -0,0 +1,99 @@ +# bash completion for vncviewer -*- shell-script -*- + +_vncviewer_bootstrap() +{ + local fname + case $(_realcommand vncviewer) in + *xvnc4viewer) fname=_xvnc4viewer ;; + *tightvncviewer) fname=_tightvncviewer ;; + *) fname=_known_hosts ;; + esac + + # Install real completion for subsequent completions + complete -F $fname vncviewer + $fname # Generate completions once for now + unset -f _vncviewer_bootstrap +} && + complete -F _vncviewer_bootstrap vncviewer + +_tightvncviewer() +{ + local cur prev words cword + _init_completion || return + + case $prev in + -passwd) + _filedir + return + ;; + -encodings) + COMPREPLY=($(compgen -W 'copyrect tight hextile zlib corre rre + raw' -- "$cur")) + return + ;; + -via) + _known_hosts_real -- "$cur" + return + ;; + esac + + if [[ $cur == -* ]]; then + COMPREPLY=($(compgen -W '-help -listen -via -shared -noshared + -viewonly -fullscreen -noraiseonbeep -passwd -encodings -bgr233 + -owncmap -truecolour -truecolor -depth -compresslevel -quality + -nojpeg -nocursorshape -x11cursor' -- "$cur")) + else + _known_hosts_real -- "$cur" + fi +} && + complete -F _tightvncviewer tightvncviewer + +# NOTE: - VNC Viewer options are case insensitive. +# Preferred case is taken from -help. +_xvnc4viewer() +{ + local cur prev words cword + _init_completion || return + + # Both single dash (-) and double dash (--) are allowed as option prefix + local opt=${prev/#--/-} + case ${opt,,} in + # -passwd, -PasswordFile + -passwd | -passwordfile) + _filedir + return + ;; + -preferredencoding) + COMPREPLY=($(compgen -W 'zrle hextile raw' -- "$cur")) + return + ;; + -via) + _known_hosts_real -- "$cur" + return + ;; + esac + + if [[ $cur == -* || $cur == --* ]]; then + # Default to vncviewer camelcase options, see `vncviewer -help' + local dash options=(AcceptClipboard AutoSelect DebugDelay display + DotWhenNoCursor FullColor FullColour FullScreen geometry help + listen Log LowColourLevel MenuKey name Parent passwd PasswordFile + PointerEventInterval PreferredEncoding SendClipboard SendPrimary + Shared UseLocalCursor via ViewOnly WMDecorationHeight + WMDecorationWidth ZlibLevel) + [[ $cur == --* ]] && dash=-- || dash=- + + local IFS=$' \t\n' reset=$(shopt -p nocasematch) + shopt -s nocasematch + local option + COMPREPLY=($(for option in "${options[@]}"; do + [[ $dash$option == "$cur"* ]] && printf '%s\n' $dash$option + done)) + $reset + else + _known_hosts_real -- "$cur" + fi +} && + complete -F _xvnc4viewer xvnc4viewer + +# ex: filetype=sh |