xfreerdp3(1)
okay bestie π you opened the manual for xfreerdp3, and ngl she's a lot. This is the FreeRDP X11 client, and this page is LONG, so we're doing it in parts β this is part 1, and we are not skipping a single flag. periodt.
β¨ NAME β¨
xfreerdp3 β FreeRDP X11 client. That's the whole thing. Short, sweet, iconic.
π SYNOPSIS π
xfreerdp3 [file] [options] [/v:server[:port]]
π¦ DESCRIPTION π¦
So xfreerdp3 is an X11 Remote Desktop Protocol (RDP) client, and she's part of the FreeRDP project. Fun fact bestie: an RDP server is built-in to many editions of Windows. And if you're not on Windows? Don't even stress β alternative servers include ogon, gnome-remote-desktop, xrdp and VRDP (VirtualBox). You've got options, queen.
π OPTIONS π
okay this is the big one. one bullet per option, nothing skipped, no cap.
/a:addin[,options],/addin:addin[,options]β Addin/azure:[tenantid:id],[use-tenantid[:[on|off]],[ad:url][avd-access:format string],[avd-token:format string],[avd-scope:format string],[auth-helper:path|autodetect]β AzureAD options/action-script:file-nameβ Action script (default:~/.config/freerdp/action.sh)/admin,/consoleβ Admin (or console) session+aeroβ desktop composition (default: off)/app:program:[path|||alias],cmd:command,file:filename,guid:guid,icon:filename,name:name,workdir:directory,hidef:[on|off]β Remote application program/assistance:passwordβ Remote assistance password/auto-request-control:β Automatically request remote assistance input control+async-channelsβ Asynchronous channels (experimental) (default: off)+async-updateβ Asynchronous update (default: off)/audio-mode:[[none|2]|[server|1]|[redirect|0]]β Audio output mode+auth-onlyβ Authenticate only (default: off)/auth-pkg-list:[[none],]!ntlm,kerberos,!u2uβ Authentication package filter (comma-separated list, use!to disable). By default all methods are enabled. Use explicitnoneas first argument to disable all methods, selectively enabling only the ones following.-authenticationβ Authentication (experimental) (default: on)+auto-reconnectβ Automatic reconnection (default: off)/auto-reconnect-max-retries:retriesβ Automatic reconnection maximum retries,0for unlimited[0,1000]/bpp:depthβ Session bpp (color depth) (default:16)/buildconfigβ Print the build configuration/cache:[bitmap[:on|off],codec[:rfx|nsc],glyph[:on|off],offscreen[:on|off],persist,persist-file:filename]β Cache stuff/cert:[deny,ignore,name:name,tofu,fingerprint:hash:hash as hex[,fingerprint:hash:another hash]]β Certificate accept options. Use with care!deny... Automatically abort connection if the certificate does not match, no user interaction.ignore... Ignore the certificate checks altogether (overrules all other options)name... Use the alternate <name> instead of the certificate subject to match locally stored certificatestofu... Accept certificate unconditionally on first connect and deny on subsequent connections if the certificate does not matchfingerprints... A list of certificate hashes that are accepted unconditionally for a connection
/client-build-number:numberβ Client Build Number sent to server (influences smartcard behaviour, see[MS-RDPESC])/client-hostname:nameβ Client Hostname to send to server/clipboard:[[use-selection:atom],[direction-to:[all|local|remote|off]],[files-to[:all|local|remote|off]]]β Redirect clipboard:use-selection:<atom>... (X11) Specify which X selection to access. Default isCLIPBOARD.PRIMARYis the X-style middle-click selection.direction-to:[all|local|remote|off]control enabled clipboard directionfiles-to:[all|local|remote|off]control enabled file clipboard direction (default: on)
-compression,-zβ compression (default: on)/compression-level:levelβ Compression level (0,1,2)+credentials-delegationβ credentials delegation (default: off)/d:domainβ Domain-decorationsβ Window decorations (default: on)/dispβ Display control/drive:name,pathβ Redirect directory <path> as named share <name>. Hotplug support is enabled with/drive:hotplug,*. This argument provides the same function as "Drives that I plug in later" option in MSTSC.+drivesβ Redirect all mount points as shares (default: off)/dump:record|replay,file:file[,nodelay]β record or replay dump/dvc:channel[,options]β Dynamic virtual channel+dynamic-resolutionβ Send resolution updates when the window is resized (default: off)/echo,/echoβ Echo channel (yes, it's listed twice, and honestly? iconic.)-encryptionβ Encryption (experimental) (default: on)/encryption-methods:[40,][56,][128,][FIPS]β RDP standard security encryption methods/endpointfedauth:tokenβ Endpoint FedAuth token for Hyper-V VM console-connect scenarios/fβ Fullscreen mode (<Ctrl>+<Alt>+<Enter>toggles fullscreen)+fipsmodeβ FIPS mode (default: off)/floatbar[:sticky:[on|off],default:[visible|hidden],show:[always|fullscreen|window]]β floatbar is disabled by default (when enabled defaults to sticky in fullscreen mode)-fontsβ smooth fonts (ClearType) (default: on)+force-console-callbacksβ Use default callbacks (console) for certificate/credential/... (default: off)/frame-ack:numberβ Number of frame acknowledgement/args-from:file:file|stdin|fd:number|env:nameβ Read command line from a file, stdin or file descriptor. This argument can not be combined with any other. Provide one argument per line./from-stdin[:force]β Read credentials from stdin. With <force> the prompt is done before connection, otherwise on server request./gateway:g:gateway[:port],u:user,d:domain,p:password,usage-method:[direct|detect],access-token:token,type:[rpc|http[,no-websockets][,extauth-sspi-ntlm]|auto[,no-websockets][,extauth-sspi-ntlm]]|arm,url:wss://url,bearer:oauth2-bearer-token,timeout:1-600000 ms,/gw:g:gateway[:port],u:user,d:domain,p:password,usage-method:[direct|detect],access-token:token,type:[rpc|http[,no-websockets][,extauth-sspi-ntlm]|auto[,no-websockets][,extauth-sspi-ntlm]]|arm,url:wss://url,bearer:oauth2-bearer-token,timeout:1-600000 msβ Gateway Hostname/gdi:sw|hwβ GDI rendering/geometryβ Geometry tracking channel+gesturesβ Consume multitouch input locally (default: off)/gfx[:[progressive[:on|off]|RFX[:on|off]|AVC420[:on|off]AVC444[:on|off]],mask:value,small-cache[:on|off],thin-client[:on|off],progressive[:on|off]]]β RDP8 graphics pipeline-grab-keyboardβ Grab keyboard focus, forward all keys to remote (default: on)-grab-mouseβ Grab mouse focus, forward all events to remote (default: on)/h:heightβ Height (default:768)-heartbeatβ Support heartbeat PDUs (default: on)/help,/?β Print help+home-driveβ Redirect user home as share (default: off)/ipv4[:[:force]],/4[:[:force]]β Prefer IPv4 A record over IPv6 AAAA record/ipv6[:[:force]],/6[:[:force]]β Prefer IPv6 AAAA record over IPv4 A record/jpegβ JPEG codec support/jpeg-quality:percentageβ JPEG quality/kbd:[layout:[0xid|name],lang:0xid,fn-key:value,type:value,subtype:value,unicode[:on|off],remap:key1=value1,remap:key2=value2,pipe:filename]β Keyboard related options:layout: set the keyboard layout announced to the serverlang: set the keyboard language identifier sent to the serverfn-key: Function key valueremap: RDP scancode to another one. Use/list:kbd-scancodeto get the mapping. Example: To switchaandson a US keyboard:/kbd:remap:0x1e=0x1f,remap:0x1f=0x1epipe: Name of a named pipe that can be used to type text into the RDP session
/kerberos:[kdc-url:url,lifetime:time,start-time:time,renewable-lifetime:time,cache:path,armor:path,pkinit-anchors:path,pkcs11-module:name]β Kerberos options/load-balance-info:info-stringβ Load balance info/list:[kbd|kbd-scancode|kbd-lang[:value]|smartcard[:[pkinit-anchors:path][,pkcs11-module:name]]|monitor|tune|timezones]β List available options for subcommand (default: List available options for subcommand)/log-filters:tag:level[,tag:level[,...]]β Set logger filters, seewLog(7)for details/log-level:[OFF|FATAL|ERROR|WARN|INFO|DEBUG|TRACE]β Set the default log level, seewLog(7)for details/max-fast-path-size:sizeβ Specify maximum fast-path update size/max-loop-time:timeβ Specify maximum time in milliseconds spend treating packets+menu-animsβ menu animations (default: off)/microphone[:[sys:sys,][dev:dev,][format:format,][rate:rate,][channel:channel]],/mic[:[sys:sys,][dev:dev,][format:format,][rate:rate,][channel:channel]]β Audio input (microphone)/monitors:id[,id[,...]]β[experimental]Select monitors to use (only effective in fullscreen or multimonitor mode)-mouse-motionβ Send mouse motion events (default: on)+mouse-relativeβ Send mouse motion with relative addressing (default: off)/mouse:[relative:[on|off],grab:[on|off]]β Mouse related options:relative: send relative mouse movements if supported by servergrab: grab the mouse if within the window
/multimon:on|off|forceβ Use multiple monitors (default: off)+multitouchβ Redirect multitouch input (default: off)-multitransportβ Support multitransport protocol (default: on)-negoβ protocol security negotiation (default: on)/network:[invalid|modem|broadband|broadband-low|broadband-high|wan|lan|auto]β Network connection type/nsc,/nscodecβ NSCodec support/orientation:[0|90|180|270]β Orientation of display in degrees+old-licenseβ Use the old license workflow (no CAL and hwId set to 0) (default: off)/p[:password]β Password. Pass/pwithout arguments to silences interactive password prompts if no credentials are required for the connection./parallel[:name[,path]]β Redirect parallel device/parent-window:window-idβ Parent window id/pcb:blobβ Preconnection Blob/pcid:idβ Preconnection Id/pheight:heightβ Physical height of display (in millimeters)/play-rfx:pcap-fileβ Replay rfx pcap file/port:numberβ Server port-suppress-outputβ suppress output when minimized (default: on)+print-reconnect-cookieβ Print base64 reconnect cookie after connecting (default: off)/printer[:name[,driver[,default]]]β Redirect printer device/proxy:[proto://][user:password@]host[:port]β Proxy settings: override env. var (see also environment variable below). Protocolsocks5should be given explicitly wherehttpis default.
and that's only part 1 bestie π there's so much more coming β don't go anywhere.
/pth:password-hash,/pass-the-hash:password-hashβ Pass-the-hash time β¨ (that's restricted admin mode, bestie)/pwidth:widthβ physical width of the display, measured in millimeters π/rdp2tcp:executable path[:arg...]β TCP redirection, go off/reconnect-cookie:base64-cookieβ hand a base64 reconnect cookie over to the connection πͺ/redirect-prefer:FQDN|IP|NETBIOS,[...]β override the preferred redirection order, you get to pick the lineup/relax-order-checks,/relax-order-checksβ nope, it does not check whether an RDP order was announced during capability exchange. Only use this when you're connecting to a buggy server, fr fr π/restricted-admin,/restrictedAdminβ restricted admin mode, unlocked π/rfxβ RemoteFX, that's it, that's the whole thing/rfx-mode:[image|video]β RemoteFX mode, pick your flavor/scale:[100|140|180]β scaling factor of the display (default:100) π¦/scale-desktop:percentageβ scaling factor for desktop applications, value lives between100and500(default:100)/scale-device:100|140|180β scaling factor for app store applications (default:100)/sec:rdp[:[on|off]]|tls[:[on|off]]|nla[:[on|off]]|ext[:[on|off]]|aad[:[on|off]]β force a specific protocol security. Like,/sec:nlaturns NLA on and turns everything else off, while/sec:nla:[on|off]just toggles NLA and leaves the rest alone π/serial[:name[,path[,driver[,permissive]]]],/tty[:name[,path[,driver[,permissive]]]]β redirect a serial device/server-name:nameβ the user-specified server name used for validation (TLS, Kerberos)/shell:shellβ alternate shell π/shell-dir:dirβ shell working directory/size:widthxheightorpercent%[wh]β screen size (default:1024x768)/smart-sizing:widthxheight|on|offβ scale the remote desktop to the window size (default:off)/smartcard[:str[,str...]]β redirects the smartcard devices that have any of the str in their names π³/smartcard-logon[:[[cert:path|cert:base64(PEM)],[key:path|key:base64(PEM)],pin:pin,csp:csp name,reader:reader,card:card]]β activates Smartcard (with optional certificate) Logon authentication π₯/sound[:[sys:sys,][dev:dev,][format:format,][rate:rate,][channel:channel,][latency:latency,][quality:quality]],/audio[:[sys:sys,][dev:dev,][format:format,][rate:rate,][channel:channel,][latency:latency,][quality:quality]]β audio output (sound), make it loud π/spanβ span the screen across multiple monitors π₯οΈ/spn-class:service-classβ SPN authentication service class/ssh-agent,/ssh-agentβ SSH Agent forwarding channel/sspi-module:SSPI module pathβ file path for the SSPI shared library module/winscard-module:WinSCard module pathβ file path for the WinSCard shared library module/disable-outputβ deactivates all graphics decoding in the client session. Genuinely useful for load tests with lots of simultaneous connections π/t:title,/title:titleβ window title-themesβ themes (default:on)/timeout:time in ms,/timeout:time in msβ advanced setting for high latency links: it adjusts the connection timeout, so use it if you're hitting timeout failures on your connection (default:9000)/timezone:windows timezoneβ uses the windows timezone you supply for the connection (server support required), peep/list:timezonesfor the allowed values π/tls:[ciphers|seclevel|secrets-file|enforce]β TLS configuration options, and here's the breakdown:ciphers:[netmon|ma|<cipher names>]seclevel:<level>, default:1, range:[0-5]β overrides the default TLS security level, might be needed for older target servers. Deets at https://docs.openssl.org/3.0/man3/SSL_CTX_set_security_level/secrets-file:<filename>enforce[:[ssl3|1.0|1.1|1.2|1.3]]β forces the SSL/TLS version used for a connection. Some servers have buggy TLS version negotiation and will fail without this. Defaults to TLS 1.2 when you don't hand it an argument. Use1.0for windows 7
-toggle-fullscreenβAlt+Ctrl+Entertoggles fullscreen (default:on)/tune:setting:value,setting:valueβ [experimental] directly manipulates freerdp settings, use with extreme caution! (default: )/u:[[domain]user|user[@domain]]β username+unmap-buttonsβ lets the server see the real physical pointer button (default:off)/usb:[dbg,][id:vid:pid#...,][addr:bus:addr#...,][auto]β redirect a USB device π/v:server[:port]β server hostname|URL|IPv4|IPv6, orvsock://<number>, or/some/path/to/pipe, or|:1234to pass a TCP socket to use/vc:channel[,options]β static virtual channel/versionβ print version π/videoβ video optimized remoting channel/prevent-session-lock[:time in sec]β prevents session locking by injecting fake mouse motion events to the server whenever the connection goes idle (default interval:180seconds) π/vmconnect[:vmid]β Hyper-V console (use port2179, disable negotiation)/w:widthβ width (default:1024)-wallpaperβ wallpaper (default:on) πΌοΈ+window-dragβ full window drag (default:off)/window-position:xposxyposβ window position/wm-class:class-nameβ sets theWM_CLASShint for the window instance/workareaβ use the available work area
β¨οΈ KEYBOARD SHORTCUTS β¨οΈ
<Right CTRL>β releases the keyboard and mouse grab. If the keyboard is grabbed, your local system shortcuts stop working and get sent to the remote system instead. If the mouse is grabbed (which is optional), local gesture detection doesn't work and the mouse might not be able to leave the RDP window. Mouse events themselves are not altered, no cap.<CTRL>+<ALT>+<Return>β toggles the fullscreen state of the application π₯οΈβ¨<CTRL>+<ALT>+<m>β minimizes the application<CTRL>+<ALT>+cβ toggles remote control in a remote assistance session ποΈ<CTRL>+<ALT>+<d>β disconnects the session and terminates the application π- Action Script β executes a predefined script when you press a key. If the script doesn't exist, it's just ignored, no drama. Scripts can live at the default location
$XDG_CONFIG_HOME/freerdp/action.sh, or you can hand one over as a command line argument:/action:script:<path>. The script receives the current key combination as its argument. The script's output is parsed forkey-local, which tells you the script used the key combination β otherwise the combination gets forwarded to the remote π§
π ENVIRONMENT VARIABLES π
- wlog environment variables β
xfreerdp3uses wLog as its log facility, so you can check out the matching man page (wlog(7)) for more info. Arguments passed through/log-levelor/log-filtershave precedence over the environment variables, bestie, they win π - freerdp environment variables β all sorts of configurations for the core library can be set with environment variables too. Consult
freerdp(7)for more info. FREERDP_ASKPASSβ sets a program to ask for passwords, similar toSSH_ASKPASSπ
πΎ GLOBAL CONFIGURATION (client common) πΎ
Format and Location
The configuration files are stored in the global system configuration.
The common certificate settings location is /etc/FreeRDP/certificates.json
File format is JSON β¨
Supported options
deny- JSON boolean
- Deny the certificate if the check against the system SSL store was not successful
ignore- JSON boolean
- Ignore certificate failures, just ignore the certificate entirely π
deny-userconfig- JSON boolean
- If the checks in the global configuration don't accept the certificate, don't ask the user
certificate-db- JSON array
- An array of JSON objects with:
type- JSON string
- a string identifying the hash algorithm used, e.g.
sha256
hash- JSON string
- a string of hex integer values representing the certificate hash, e.g.
0123456789abcdef
π GLOBAL CONFIGURATION (X11 client) π
The X11 client configuration location is /etc/FreeRDP/xfreerdp.json
File format is JSON
Supported options:
isActionScriptAllowed- JSON boolean
- Allow or block action scripts. Default (if the option isn't set) is to allow action scripts π
π EXAMPLES π
okay bestie, this is the part where it all comes together. real-world receipts. no cap. π
#!/bin/bash
# we got a key combination
if [ "$1" = "key" ];
then
# we only got one argument 'key'
# list all supported combinations with echo
if [ $# -eq 1 ];
then
echo "ctrl+alt+f1"
echo "ctrl+alt+f2"
else
# We want the action for a single combination
# use 'key-local' to not forward to RDP session
if [ "$2" = "ctrl+alt+f1" ];
then
echo "key-local"
fi
if [ "$2" = "ctrl+alt+f2" ];
then
echo "/usr/local/bin/somescript.sh"
fi
fi
fi
if [ "$1" = "xevent" ];
then
if [ $# -eq 1 ];
then
echo "FocusIn"
echo "SelectionClear"
else
if [ "$2" = "SelectionNotify" ];
then
echo "/usr/local/bin/someprogram"
fi
fi
fi
Example action script for key events, listing ctrl+alt+f1 to be handled by local window manager and ctrl+alt+f2 executing a script.
β¨ the return value of the program determines if the key is handled locally or remotely (0for local,> 0for remote,< 0for errors)
xfreerdp3 connection.rdp /p:Pwd123! /fβ connect in fullscreen mode using a stored configurationconnection.rdpand the passwordPwd123!π₯οΈxfreerdp3 /u:USER /size:50%h /v:rdp.contoso.comβ connect to hostrdp.contoso.comwith userUSERand a size of 50 percent of the height. If width (w) is set instead of height (h) like/size:50%w, then 50 percent of the width is used. πxfreerdp3 /u:CONTOSO\\JohnDoe /p:Pwd123! /v:rdp.contoso.comβ connect to hostrdp.contoso.comwith userCONTOSO\\JohnDoeand passwordPwd123!πxfreerdp3 /u:JohnDoe /p:Pwd123! /w:1366 /h:768 /v:192.168.1.100:4489β connect to host192.168.1.100on port4489with userJohnDoe, passwordPwd123!. The screen width is set to1366and the height to768πxfreerdp3 /u:JohnDoe /p:Pwd123!/vmconnect:C824F53E-95D2-46C6-9A18-23A5BB403532 /v:192.168.1.100β establish a connection to host192.168.1.100with userJohnDoe, passwordPwd123!and connect to Hyper-V console (use port2179, disable negotiation) with VMIDC824F53E-95D2-46C6-9A18-23A5BB403532π§+clipboardβ activate clipboard redirection π/drive:home,/home/userβ activate drive redirection of/home/useras home drive πΎ/smartcard:<device>β activate smartcard redirection for device device π/printer:<device>,<driver>β activate printer redirection for printer device using driver driver π¨οΈ/serial:<device>β activate serial port redirection for port device π/parallel:<device>β activate parallel port redirection for port device π§΅/sound:sys:alsaβ activate audio output redirection using devicesys:alsaπ/microphone:sys:alsaβ activate audio input redirection using devicesys:alsaπ€/multimedia:sys:alsaβ activate multimedia redirection using devicesys:alsaπ¬/usb:id,dev:054c:0268β activate USB device redirection for the device identified by054c:0268π/kbd:remap:29=58,remap:58=29β swap left Control (29) and Caps Lock (58). π₯
π« LINKS π«
http://www.freerdp.com/ β that's the site, bestie. go look. π¦
π AUTHOR π
The FreeRDP Team β absolute icons, no notes. π
and that's the whole page, babes!! π«Ά this version of xfreerdp3(1) comes from the freerdp source and it's dated 2026-10-05. go forth and remote desktop like the main character you are. periodt. πΈβ¨π
π¦ where this page comes from
- ubuntu noble: freerdp3-x11 3.32.1+dfsg-0ubuntu0.24.04.1 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms