summaryrefslogtreecommitdiffstats
path: root/completions/xfreerdp
diff options
context:
space:
mode:
Diffstat (limited to 'completions/xfreerdp')
-rw-r--r--completions/xfreerdp67
1 files changed, 67 insertions, 0 deletions
diff --git a/completions/xfreerdp b/completions/xfreerdp
new file mode 100644
index 0000000..f17414f
--- /dev/null
+++ b/completions/xfreerdp
@@ -0,0 +1,67 @@
+# xfreerdp completion -*- shell-script -*-
+
+_xfreerdp()
+{
+ local cur prev words cword
+ _init_completion -n : || return
+
+ case $prev in # old/dash syntax
+ -k)
+ COMPREPLY=($(compgen -W '$("$1" --kbd-list |
+ awk "/^0x/ { print \$1 }")' -- "$cur"))
+ return
+ ;;
+ -a)
+ COMPREPLY=($(compgen -W '8 15 16 24 32' -- "$cur"))
+ return
+ ;;
+ -x)
+ COMPREPLY=($(compgen -W 'broadband modem lan' -- "$cur"))
+ return
+ ;;
+ --plugin)
+ COMPREPLY=($(compgen -W 'cliprdr rdpsnd rdpdr' -- "$cur"))
+ return
+ ;;
+ esac
+
+ case $cur in # new/slash syntax
+ /kbd:*)
+ COMPREPLY=($(compgen -W '$("$1" /kbd-list |
+ awk "/^0x/ { print \$1 }")' -- "${cur#/kbd:}"))
+ return
+ ;;
+ /bpp:*)
+ COMPREPLY=($(compgen -W '8 15 16 24 32' -- "${cur#/bpp:}"))
+ return
+ ;;
+ /*:* | /help | /version | -h | --help | --version)
+ return
+ ;;
+ esac
+
+ if [[ $cur == /* ]]; then
+ COMPREPLY=($(compgen -W '$("$1" --help |
+ awk "\$1 ~ /^\\// && \$1 !~ /^.(flag\$|option:)/ { sub(\":.*\",\":\",\$1); print \$1 }")' \
+ -- "$cur"))
+ [[ ${COMPREPLY-} == *: ]] && compopt -o nospace
+ elif [[ $cur == [+-]* ]]; then
+ local char=${cur:0:1}
+ local help="$($1 --help)"
+ if [[ $help == */help* ]]; then # new/slash syntax
+ COMPREPLY=($(compgen -W '$(awk "
+ \$1 ~ /^[+-]/ && \$1 !~ /^.toggle\$/ { sub(\"^.\",\"$char\",\$1); print \$1 }
+ " <<<"$help")' -- "$cur"))
+ else # old/dash syntax
+ COMPREPLY=($(_parse_help - <<<"$help"))
+ COMPREPLY=($(compgen -W '${COMPREPLY[@]%:}' -- "$cur"))
+ fi
+ else
+ COMPREPLY=($(compgen -W "$(awk '{print $1}' ~/.freerdp/known_hosts \
+ 2>/dev/null)" -- "$cur"))
+ fi
+
+} &&
+ complete -F _xfreerdp xfreerdp
+
+# ex: filetype=sh