# 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 0 ;; -encodings) COMPREPLY=( $( compgen -W 'copyrect tight hextile zlib corre rre raw' -- "$cur" ) ) return 0 ;; -via) _known_hosts_real "$cur" return 0 ;; 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. # - Both single dash (-) and double dash (--) are allowed as option prefix _xvnc4viewer() { local cur prev words cword _init_completion || return # Convert double dash to single dash case ${prev/#--/-} in # -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]) COMPREPLY=( $( compgen -W 'zrle hextile raw' -- "$cur" ) ) return 0 ;; # -via -[vV][iI][aA]) _known_hosts_real "$cur" return 0 ;; 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 option oldNoCaseMatch=$(shopt -p nocasematch) shopt -s nocasematch 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" fi } && complete -F _xvnc4viewer xvnc4viewer # ex: ts=4 sw=4 et filetype=sh