# bash completion for vncviewer -*- shell-script -*- proc _vncviewer_bootstrap { local fname match $[_realcommand vncviewer] { with *xvnc4viewer setglobal fname = '_xvnc4viewer' with *tightvncviewer setglobal fname = '_tightvncviewer' with * setglobal fname = '_known_hosts' } # 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 proc _tightvncviewer { local cur prev words cword _init_completion || return match $prev { with -passwd _filedir return 0 with -encodings setglobal COMPREPLY = ''( $( compgen -W 'copyrect tight hextile zlib corre rre raw' -- "$cur" ) ) return 0 with -via _known_hosts_real $cur return 0 } if [[ "$cur" == -* ]] { setglobal 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 } } && complete -F _tightvncviewer tightvncviewer # NOTE: - VNC Viewer options are case insensitive. # Preferred case is taken from -help. # - Both single dash (-) and double dash (--) are allowed as option prefix proc _xvnc4viewer { local cur prev words cword _init_completion || return # Convert double dash to single dash match $(prev/#--/-) { # -passwd, -PasswordFile with -[pP][aA][sS][sS][wW][dD]|-[pP][aA][sS][sS][wW][oO][rR][dD][fF][iI][lL][eE] _filedir return 0 # -PreferredEncoding with -[pP][rR][eE][fF][eE][rR][rR][eE][dD][eE][nN][cC][oO][dD][iI][nN][gG] setglobal COMPREPLY = ''( $( compgen -W 'zrle hextile raw' -- "$cur" ) ) return 0 # -via with -[vV][iI][aA] _known_hosts_real $cur return 0 } if [[ "$cur" == -* || "$cur" == --* ]] { # 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" == --* ]] && setglobal dash = '--' || setglobal dash = '-' local option oldNoCaseMatch=$[shopt -p nocasematch] shopt -s nocasematch setglobal COMPREPLY = ''( $( for option in "${options[@]}"; do [[ $dash$option == "$cur"* ]] && printf '%s\n' $dash$option done ) ) eval $oldNoCaseMatch !2 >/dev/null } else { _known_hosts_real $cur } } && complete -F _xvnc4viewer xvnc4viewer # ex: ts=4 sw=4 et filetype=sh