Improved vncviewer completion
- Split vncviewer completion in _tightvncviewer() and _xvn4viewer() - Vncviewer completion automatically selects right completion at run-time. Default is _tightvncviewer(). - Added _realcommand() global function
This commit is contained in:
parent
6d7d79c32d
commit
c995f10832
@ -540,6 +540,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()
|
||||
@ -9063,35 +9082,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 &&
|
||||
|
@ -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
|
Loading…
x
Reference in New Issue
Block a user