summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bash_completion48
-rw-r--r--contrib/vncviewer (renamed from to_review/vncviewer)63
2 files changed, 78 insertions, 33 deletions
diff --git a/bash_completion b/bash_completion
index 51a23258..ce291601 100644
--- a/bash_completion
+++ b/bash_completion
@@ -541,6 +541,25 @@ _usergroup()
fi
}
+
+# Get real command.
+# - arg: $1 Command
+# - stdout: Filename of command in PATH with possible symbolic links resolved.
+# Empty string if command not found.
+# - return: True (0) if command found, False (> 0) if not.
+_realcommand() {
+ type -P "$1" > /dev/null && {
+ if type -p realpath > /dev/null; then
+ realpath "$(type -P "$1")"
+ elif type -p readlink > /dev/null; then
+ readlink -f "$(type -P "$1")"
+ else
+ type -P "$1"
+ fi
+ }
+}
+
+
# this function count the number of mandatory args
#
_count_args()
@@ -9064,35 +9083,6 @@ _smartctl()
complete -F _smartctl smartctl
}
-# vncviewer(1) completion
-#
-have vncviewer &&
-_vncviewer()
-{
- local cur prev
- local -a config
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -via)
- _known_hosts -a
- ;;
- *)
- # ssh into the the server, find and ping the broadcast address, then
- # sort and show the results.
- COMPREPLY=( $( ssh -o 'Batchmode yes' $prev \
- "ping -bnc 4 255.255.255.255" 2>/dev/null | \
- awk -F ' ' '{print $4}' | \
- sort -n | uniq | egrep '[0-9]+\.[0-9]+\.' 2>/dev/null ) )
- esac
-
- return 0
-} &&
-complete -F _vncviewer vncviewer
-
# sysctl(8) completion
#
have sysctl &&
diff --git a/to_review/vncviewer b/contrib/vncviewer
index 24d90124..933783a4 100644
--- a/to_review/vncviewer
+++ b/contrib/vncviewer
@@ -1,13 +1,68 @@
# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*-
# ex: ts=8 sw=8 noet filetype=sh
#
-# bash completion for vncviewer (4.1.1)
+# bash completion for vncviewer
+
+
+_vncviewer_bootstrap() {
+ local fname
+ case "$(_realcommand vncviewer)" in
+ # If `vncviewer' not installed, default file-dir completion
+ '') _filedir `_get_cword` ;;
+ *xvnc4viewer) fname=_xvnc4viewer ;;
+ *tightvncviewer|*) fname=_tightvncviewer ;;
+ esac
+ if [ $fname ]; then
+ # Install real completion for subsequent completions
+ complete -F $fname vncviewer
+ $fname # Generate completions once for now
+ unset -f _vncviewer_bootstrap
+ fi
+} &&
+complete -F _vncviewer_bootstrap vncviewer
+
+
+_tightvncviewer()
+{
+ local cur prev
+
+ COMPREPLY=()
+ cur=`_get_cword`
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ case $prev in
+ -passwd)
+ _filedir
+ return 0
+ ;;
+ -encodings)
+ COMPREPLY=( $( compgen -W 'copyrect tight hextile zlib \
+ corre rre raw' -- $cur ) )
+ return 0
+ ;;
+ -via)
+ _known_hosts
+ 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
+ fi
+} &&
+complete -F _tightvncviewer tightvncviewer
# NOTE: - VNC Viewer options are case-insensivite. Preferred case is taken from -help.
# - Both single dash (-) and double dash (--) are allowed as option prefix
-have vncviewer &&
-_vncviewer()
+_xvnc4viewer()
{
local cur prev
@@ -68,4 +123,4 @@ _vncviewer()
_known_hosts
fi
} &&
-complete -F _vncviewer vncviewer
+complete -F _xvnc4viewer xvnc4viewer