sdl-freerdp(1)
π¦ sdl-freerdp(1) β FreeRDP SDL client π¦
π NAME π
sdl-freerdp β the FreeRDP SDL client. That's it, that's the name, bestie. β¨
π SYNOPSIS π
okay so the whole vibe is literally:
sdl-freerdp [file] [options] [/v:server[:port]]
πΈ DESCRIPTION πΈ
<pink>sdl-freerdp</pink> is an SDL Remote Desktop Protocol (RDP) client, and it's part of the FreeRDP project. No cap. An RDP server is built-in to many editions of Windows. Alternative servers included ogon, gnome-remote-desktop, xrdp and VRDP (VirtualBox). π«Ά
π OPTIONS π
Here's the whole menu β every flag, every default, every little bracket. No skips, 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, 0 for 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 option (this page doesn't give it an extra one-liner, bestie π«Ά)/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-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-600000ms,/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-600000msβ 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 switch'a'and's'on 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 silence 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./pth:password-hash,/pass-the-hash:password-hashβ pass-the-hash, aka restricted admin mode π/pwidth:widthβ physical width of the display, in millimeters (yes, millimeters, it's giving metric system π)/rdp2tcp:executable path[:arg...]β TCP redirection/reconnect-cookie:base64-cookieβ hand the connection a base64 reconnect cookie/redirect-prefer:FQDN|IP|NETBIOS,[...]β override the preferred redirection order/relax-order-checks,/relax-order-checksβ bestie, this one does NOT check whether an RDP order was announced during capability exchange. Only use it when you're connecting to a buggy server, fr fr/restricted-admin,/restrictedAdminβ restricted admin mode/remoteGuard,/remoteGuardβ remote guard credentials/rfxβ RemoteFX/rfx-mode:[image|video]β RemoteFX mode/scale:[100|140|180]β scaling factor of the display (default:100)/scale-desktop:percentageβ scaling factor for desktop applications, value 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:nlaenables NLA and disables all the others, while/sec:nla:[on|off]just toggles NLA π/serial[:name[,path[,driver[,permissive]]]],/tty[:name[,path[,driver[,permissive]]]]β redirect a serial device/server-name:nameβ user-specified server name to use 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...]]β redirect 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) π/spanβ span the screen over multiple monitors/spn-class:service-classβ SPN authentication service class/ssh-agent,/ssh-agentβ SSH Agent forwarding channel/sspi-module:SSPI module pathβ SSPI shared library module file path/winscard-module:WinSCard module pathβ WinSCard shared library module file path/disable-outputβ deactivates ALL graphics decoding in the client session. Genuinely useful for load tests with many 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: adjusts the connection timeout, use it if you're getting timeout failures on your connection (default:9000)/timezone:windows timezoneβ use the supplied windows timezone for the connection (requires server support), check/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 required for older target servers. Details athttps://docs.openssl.org/3.0/man3/SSL_CTX_set_security_level/secrets-file:<filename>enforce[:[ssl3|1.0|1.1|1.2|1.3]]β force the use of a specific SSL/TLS version for a connection. Some servers have buggy TLS version negotiation and might fail without this. Defaults to TLS 1.2 if no argument is supplied. Use1.0for windows 7
-toggle-fullscreenβ Alt+Ctrl+Enter to toggle fullscreen (default:on)/tune:setting:value,setting:valueβ [experimental] directly manipulates freerdp settings, use with extreme caution! (default: )
β οΈ bestie I'm serious, /tune is not a playground. Extreme caution, no cap.
/u:[[domain]user|user[@domain]]β username+unmap-buttonsβ let 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 while the connection is 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
πΈ ENVIRONMENT VARIABLES πΈ
wlog environment variables
sdl-freerdp uses wLog as its log facility, so you can go peek at the matching man page (wlog(7)) for more. Anything you pass through /log-level or /log-filters takes precedence over the environment variables π
freerdp environment variables
Lowkey a bunch of the core library's configuration can be set with environment variables too. Consult (freerdp(7)) for the details π«Ά
FREERDP_ASKPASS
Sets a program to ask for passwords, similar to SSH_ASKPASS.
FREERDP_WLROOTS_HACK
If defined as 0, it disables the multimonitor detection hack entirely. Set it to 1 to enable it for fullscreen sessions. Set it to force to enable it for all sessions.
π WARNING: setting force only works for fullscreen or multimonitor sessions β windowed sessions will start to misbehave!
By default it falls back to detection of sway or other wlroots based compositors by evaluating XDG_SESSION_DESKTOP and XDG_CURRENT_DESKTOP.
Rationale: wlroots based compositors do not expose display information to invisible windows, so we have no proper way to query the current monitor layout. With this hack enabled we fall back and try to determine the resolutions by querying less reliable display resolution and scaling details π
π CONFIGURATION FILE π
Format and Location:
The configuration file is stored per user π«Ά
The XDG_CONFIG_HOME environment variable can be used to override the base directory.
This defaults to ~/.config. The location relative to XDG_CONFIG_HOME is $XDG_CONFIG_HOME/freerdp/sdl-freerdp.json
The configuration is stored in JSON format β¨
Supported options:
SDL_KeyModMask
Defines the key combination required for SDL client shortcuts.
Default KMOD_RSHIFT
An array of SDL_Keymod strings as defined at https://wiki.libsdl.org/SDL3/SDL_Keymod β use KEYMOD_NONE to disable hotkeys.
SDL_Fullscreen
Toggles client fullscreen state.
Default SDL_SCANCODE_RETURN.
A string as defined at https://wiki.libsdl.org/SDL3/SDL_Scancode
SDL_Minimize
Minimizes the client window.
Default SDL_SCANCODE_M.
A string as defined at https://wiki.libsdl.org/SDL3/SDL_Scancode
SDL_Resizeable
Toggles local window resizeable state.
Default SDL_SCANCODE_R.
A string as defined at https://wiki.libsdl.org/SDL3/SDL_Scancode
SDL_Grab
Toggles keyboard and mouse grab state.
If the keyboard is grabbed, the local system shortcuts do no longer work and are sent to the remote system.
If the Mouse is grabbed (optional) local gesture detection does not work and the mouse might not be able to leave the RDP window. Mouse events are not altered..
Default SDL_SCANCODE_G.
A string as defined at https://wiki.libsdl.org/SDL3/SDL_Scancode
SDL_Disconnect
Disconnects from the RDP session.
Default SDL_SCANCODE_D.
A string as defined at https://wiki.libsdl.org/SDL3/SDL_Scancode
π GLOBAL CONFIGURATION (client common) π
Format and Location:
The configuration files are stored in 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.
deny-userconfig
JSON boolean
If the checks in the global configuration do not accept the certificate, do not ask the user.
certificate-db
JSON array
An array of JSON objects with:
typeJSON string
a string identifying the hash algorithm used, e.g. sha256
hashJSON string
a string of hex integer values representing the certificate hash, e.g. 0123456789abcdef
π GLOBAL CONFIGURATION (SDL3 client) π
The SDL3 client configuration location is /etc/FreeRDP/sdl-freerdp.json
File format is JSON β¨
Supported options:
isUserConfigEnabled
JSON boolean
Allow or block per user configuration file support.
All user level options from CONFIGURATION FILE can be set here too π«Ά
β¨ EXAMPLES β¨
okay bestie this is the part where it all clicks π these are real, copy-pasteable vibes β go off:
sdl-freerdp connection.rdp /p:Pwd123! /f
Connect in fullscreen mode using a stored configuration connection.rdp and the password Pwd123! π₯οΈβ¨
sdl-freerdp /u:USER /size:50%h /v:rdp.contoso.com
Connect to host rdp.contoso.com with user USER and a size of 50 percent of the height. And listen β if width (w) is set instead of height (h) like /size:50%w, then 50 percent of the width is used instead. either/or, pick your fighter π
sdl-freerdp /u:CONTOSO\\JohnDoe /p:Pwd123! /v:rdp.contoso.com
Connect to host rdp.contoso.com with user CONTOSO\\JohnDoe and password Pwd123! π«Ά
sdl-freerdp /u:JohnDoe /p:Pwd123! /w:1366 /h:768 /v:192.168.1.100:4489
Connect to host 192.168.1.100 on port 4489 with user JohnDoe, password Pwd123!. The screen width is set to 1366 and the height to 768 π₯
sdl-freerdp /u:JohnDoe /p:Pwd123! /vmconnect:C824F53E-95D2-46C6-9A18-23A5BB403532 /v:192.168.1.100
Establish a connection to host 192.168.1.100 with user JohnDoe, password Pwd123! and connect to the Hyper-V console (use port 2179, disable negotiation) with VMID C824F53E-95D2-46C6-9A18-23A5BB403532 β yeah that's a whole UUID, she's built different ππ
+clipboard
Activate clipboard redirection ππ
/drive:home,/home/user
Activate drive redirection of /home/user as the 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 device sys:alsa π
/microphone:sys:alsa
Activate audio input redirection using device sys:alsa π€
/multimedia:sys:alsa
Activate multimedia redirection using device sys:alsa π¬
/usb:id,dev:054c:0268
Activate USB device redirection for the device identified by 054c:0268 π₯
π LINKS π
the one and only link, no cap:
π AUTHOR π
The FreeRDP Team π go follow them, they ate
okay that's the whole page bestie, you're officially a FreeRDP girlie now πβ¨ this was freerdp β the SDL client β and the page is dated 2026-09-28, manual section sdl-freerdp(1). iykyk π
mwah, go connect to something π¦
π¦ where this page comes from
- ubuntu stonking: freerdp-sdl 3.32.1+dfsg-1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms