1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
# xfreerdp completion -*- shell-script -*-
_comp_cmd_xfreerdp()
{
local cur prev words cword comp_args
_comp_initialize -n : -- "$@" || return
case $prev in
-k)
_comp_compgen_split -- "$("$1" --kbd-list |
_comp_awk '/^0x/ { print $1 }')"
return
;;
-a)
_comp_compgen -- -W '8 15 16 24 32'
return
;;
-x)
_comp_compgen -- -W 'broadband modem lan'
return
;;
--plugin)
_comp_compgen -- -W 'cliprdr rdpsnd rdpdr'
return
;;
/help | /version | -h | --help | --version)
return
;;
esac
case $cur in
/kbd:*)
local kbd_list
kbd_list=$("$1" /kbd-list 2>/dev/null) ||
kbd_list=$("$1" /list:kbd 2>/dev/null)
_comp_compgen -c "${cur#/kbd:}" split -- "$(
_comp_awk '/^0x/ { print $1 }' <<<"$kbd_list"
)"
return
;;
/bpp:*)
_comp_compgen -c "${cur#/bpp:}" -- -W '8 15 16 24 32'
return
;;
/*:*)
return
;;
esac
if [[ $cur == /* ]]; then
_comp_compgen_filedir rdp
_comp_compgen -a split -- "$(
"$1" --help | _comp_awk '$1 ~ /^\// && $1 !~ /^.(flag$|option:)/ {
sub(":.*",":",$1); print $1 }'
)"
[[ ${COMPREPLY-} == *: ]] && compopt -o nospace
elif [[ $cur == [+-]* ]]; then
local char=${cur:0:1}
local help="$("$1" --help)"
if [[ $help == */help* ]]; then # new/slash syntax
_comp_compgen_split -- "$(_comp_awk '$1 ~ /^[+-]/ && $1 !~ /^.toggle$/ {
sub("^.","'"$char"'",$1); print $1 }' <<<"$help")"
else # old/dash syntax
_comp_compgen -R help - <<<"$help"
((${#COMPREPLY[@]})) &&
_comp_compgen -- -W '"${COMPREPLY[@]%:}"'
fi
else
_comp_compgen_filedir rdp
_comp_compgen -a split -- "$(
_comp_awk '{print $1}' ~/.freerdp/known_hosts 2>/dev/null
)"
fi
} &&
complete -F _comp_cmd_xfreerdp xfreerdp
# ex: filetype=sh
|