#compdef rdesktop xfreerdp local curcontext="$curcontext" state line expl args redir ret=1 typeset -A opt_args case $service in rdesktop) args=( '(-5)-4[use RDP version 4]' '(-4)-5[use RDP version 5]' '-b[force server to use bitmaps for screen updates]' '-B[use X server backing store]' '-E[disable encryption]' "-m[don't send mouse motion events]" '-C[use private colormap]' '-S[single application mode]' '-N[enable numlock synchronisation]' '-P[enable bitmap caching]' '*-r[device redirection]: :->redirection' ) ;; xfreerdp) args=( '(-)'{-h,--help}'[display help information]' "-o[don't redirect audio to client]" '-s[set startup-shell]:shell' '-t[connect to specified port]:port:_ports' '--app[RemoteApp connection]' '--ext[load an extension]:extension' '--no-auth[disable authentication]' '--authonly[authentication only, no UI]' '--from-stdin[prompt for username, password, domain and hostname]' '--no-fastpath[disable fast-path]' '--gdi[graphics rendering]:backend:(hw sw)' "--no-motion[don't send mouse motion events]" '--no-osb[disable offscreen bitmaps]' '--no-bmp-cache[disable bitmap cache]' '--plugin[load a virtual channel plugin]:(cliprdr drdynvc rdpsnd rail rdpdbg rdpdr)' '--rfx[enable RemoteFX]' '--rfx-mode[RemoteFX operational flags]:mode:((v\:video i\:image))' '--nsc[enable NSCodec]' '--disable-wallpaper' '--composition[enable desktop composition]' '--disable-full-window-drag' '--disable-menu-animations' '--disable-theming' '--kbd-list[list all keyboard layout ids used by -k]' '--no-rdp[disable Standard RDP encryption]' '--no-tls[disable TLS encryption]' '--no-nla[disable network level authentication]' '--ntlm[force NTLM authentication protocol version]:version:(1 2)' '--certificate-name[specify logon certificate]:certificate' '--ignore-certificate[ignore verification of logon certificate]' '--sec[force protocol security]:security:(rdp tls nla)' '--secure-checksum[use salted checksums with Standard RDP encryption]' '--version[print version information]' ) ;; esac _arguments -C -s $args \ '-u[username]:username:_users' \ '-d[domain]:domain' \ '-s[shell]:startup shell' \ '-c[working directory]:directory:_directories' \ '-p[password]:password' \ '-n[set reported client hostname]:client hostname:_hosts' \ '-k[keyboard map]:keyboard map' \ '(-f)-g[geometry]:geometry (WxH)' \ '(-g)-f[fullscreen mode]' \ '-D[hide window decorations]' \ '-K[do not override window manager key bindings]' \ '-T[set window title]:title' \ '-X[embed in another window]:window:_x_window' \ '-a[colour depth]:depth:(8 15 16 24 32)' \ '-z[enable compression]' \ '-x[bandwidth performance behaviour]:experience:((b\:broadband l\:lan m\:modem))' \ '-0[attach to server console]' \ ':server:->hostsport' && ret=0 case $state in hostsport) if compset -P '*:'; then _ports && ret=0 else compset -S ':*' _hosts && ret=0 fi ;; redirection) redir="${PREFIX%%:*}" if compset -P 1 '*='; then curcontext="${curcontext%:*}:$redir" case $redir in comport|lptport) _wanted devices expl device _files -g '*(-%)' && ret=0 ;; disk) _directories && ret=0 ;; printer) _printers && ret=0 ;; scard) _message -e aliases 'alias name' ;; esac else compset -S '=*' _values -S : 'redirection' \ 'comport:port' \ 'disk:sharename' \ 'lptport:lptport' \ 'printer:printername:_printers -S=' \ 'sound:sound:(local off remote)' \ 'lspci' \ 'scard:sound card name' && ret=0 fi ;; esac return ret