# 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