summaryrefslogtreecommitdiffstats
path: root/completions/vncviewer
diff options
context:
space:
mode:
Diffstat (limited to 'completions/vncviewer')
-rw-r--r--completions/vncviewer99
1 files changed, 99 insertions, 0 deletions
diff --git a/completions/vncviewer b/completions/vncviewer
new file mode 100644
index 0000000..ba55226
--- /dev/null
+++ b/completions/vncviewer
@@ -0,0 +1,99 @@
+# 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