#compdef rdesktop local curcontext="$curcontext" state line expl redir ret=1 typeset -A opt_args _arguments -C -s \ '-u[username]:username:_users' \ '-d[domain]:domain' \ '-s[shell]:startup shell' \ '-c[working directory]:directory:_directories' \ '-p[password]:password' \ '-n[hostname]:host:_hosts' \ '-k[keyboard map]:keyboard map' \ '(-f)-g[geometry]:geometry (WxH)' \ '(-g)-f[fullscreen mode]' \ '-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]' \ '-D[hide window decorations]' \ '-K[do not override window manager key bindings]' \ '-S[single application mode]' \ '-T[set window title]:title' \ '-N[enable numlock synchronisation]' \ '-X[embed in another window]:window:_x_window' \ '-a[colour depth]:depth:(8 15 16 24)' \ '-z[enable compression]' \ '-x[bandwidth performance behaviour]:experience:((b\:broadband l\:lan m\:modem))' \ '-P[enable bitmap caching]' \ '*-r[device redirection]: :->redirection' \ '-0[attach to server console]' \ '(-5)-4[use RDP version 4]' \ '(-4)-5[use RDP version 5]' \ ':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 '*='; then curcontext="${curcontext%:*}:$redir" compset -P '*=' 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