# bash completion for vncviewer -*- shell-script -*- proc _vncviewer_bootstrap { local fname case{ *xvnc4viewer { setvar fname = '_xvnc4viewer' } *tightvncviewer { setvar fname = '_tightvncviewer' } * { setvar 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 case (prev) { -passwd { _filedir return 0 } -encodings { setvar COMPREPLY = ''( $( compgen -W 'copyrect tight hextile zlib corre rre raw' -- "$cur" ) ) return 0 } -via { _known_hosts_real $cur return 0 } } if [[ "$cur" == -* ]] { setvar 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 case{ # -passwd, -PasswordFile -[pP][aA][sS][sS][wW][dD]|-[pP][aA][sS][sS][wW][oO][rR][dD][fF][iI][lL][eE] { _filedir return 0 } # -PreferredEncoding -[pP][rR][eE][fF][eE][rR][rR][eE][dD][eE][nN][cC][oO][dD][iI][nN][gG] { setvar COMPREPLY = ''( $( compgen -W 'zrle hextile raw' -- "$cur" ) ) return 0 } # -via -[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" == --* ]] && setvar dash = '--' || setvar dash = '-' local option oldNoCaseMatch=$(shopt -p nocasematch) shopt -s nocasematch setvar 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