diff options
Diffstat (limited to 'completions/vncviewer')
-rw-r--r-- | completions/vncviewer | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/completions/vncviewer b/completions/vncviewer new file mode 100644 index 00000000..296eb8af --- /dev/null +++ b/completions/vncviewer @@ -0,0 +1,130 @@ +# bash completion for vncviewer + +have vncviewer && +_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 + +have tightvncviewer && +_tightvncviewer() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + 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 +have xvnc4viewer && +_xvnc4viewer() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + # 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=- + # Is a `nocasematch' variable available (bash > v3.1)? + if shopt nocasematch 2> /dev/null | command grep -q ^nocasematch; then + # Variable `nocasematch' is available + # Use vncviewer camelcase options + 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 + # Variable 'nocasematch' isn't available; + # Convert completions to lowercase + COMPREPLY=( $( compgen -W \ + "$( tr [:upper:] [:lower:] <<<${options[@]/#/$dash} )" \ + -- "$( tr [:upper:] [:lower:] <<<"$cur" )" ) ) + fi + else + _known_hosts_real "$cur" + fi +} && +complete -F _xvnc4viewer xvnc4viewer + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh |