diff options
-rw-r--r-- | bash_completion | 48 | ||||
-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 |