20#ifndef CLIENT_COMMON_CMDLINE_H
21#define CLIENT_COMMON_CMDLINE_H
23#include <freerdp/config.h>
25#include <winpr/cmdline.h>
28 {
"a", COMMAND_LINE_VALUE_REQUIRED,
"<addin>[,<options>]",
nullptr,
nullptr, -1,
"addin",
30 {
"azure", COMMAND_LINE_VALUE_REQUIRED,
31 "[tenantid:<id>],[use-tenantid[:[on|off]],[ad:<url>]"
32 "[avd-access:<format string>],[avd-token:<format string>],[avd-scope:<format string>],"
33 "[user-agent:<string>],[auth-helper:<path|autodetect>]",
34 nullptr,
nullptr, -1,
nullptr,
"AzureAD options" },
35 {
"action-script", COMMAND_LINE_VALUE_REQUIRED,
"<file-name>",
"~/.config/freerdp/action.sh",
36 nullptr, -1,
nullptr,
"Action script" },
37 {
"admin", COMMAND_LINE_VALUE_FLAG,
nullptr,
nullptr,
nullptr, -1,
"console",
38 "Admin (or console) session" },
39 {
"aero", COMMAND_LINE_VALUE_BOOL,
nullptr,
nullptr, BoolValueFalse, -1,
nullptr,
40 "desktop composition" },
41 {
"app", COMMAND_LINE_VALUE_REQUIRED,
42 "program:[<path>|<||alias>],cmd:<command>,file:<filename>,guid:<guid>,icon:<filename>,name:<"
43 "name>,workdir:<directory>,hidef:[on|off]",
44 nullptr,
nullptr, -1,
nullptr,
"Remote application program" },
45#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
46 {
"app-cmd", COMMAND_LINE_VALUE_REQUIRED,
"<parameters>",
nullptr,
nullptr, -1,
nullptr,
47 "[DEPRECATED, use /app:cmd:<command>] Remote application command-line parameters" },
48 {
"app-file", COMMAND_LINE_VALUE_REQUIRED,
"<file-name>",
nullptr,
nullptr, -1,
nullptr,
49 "[DEPRECATED, use /app:file:<filename>] File to open with remote application" },
50 {
"app-guid", COMMAND_LINE_VALUE_REQUIRED,
"<app-guid>",
nullptr,
nullptr, -1,
nullptr,
51 "[DEPRECATED, use /app:guid:<guid>] Remote application GUID" },
52 {
"app-icon", COMMAND_LINE_VALUE_REQUIRED,
"<icon-path>",
nullptr,
nullptr, -1,
nullptr,
53 "[DEPRECATED, use /app:icon:<filename>] Remote application icon for user interface" },
54 {
"app-name", COMMAND_LINE_VALUE_REQUIRED,
"<app-name>",
nullptr,
nullptr, -1,
nullptr,
55 "[DEPRECATED, use /app:name:<name>] Remote application name for user interface" },
56 {
"app-workdir", COMMAND_LINE_VALUE_REQUIRED,
"<workspace path>",
nullptr,
nullptr, -1,
nullptr,
57 "[DEPRECATED, use /app:workdir:<directory>] Remote application workspace path" },
59 {
"assistance", COMMAND_LINE_VALUE_REQUIRED,
"<password>",
nullptr,
nullptr, -1,
nullptr,
60 "Remote assistance password" },
61 {
"auto-request-control", COMMAND_LINE_VALUE_FLAG,
"",
nullptr,
nullptr, -1,
nullptr,
62 "Automatically request remote assistance input control" },
63 {
"async-channels", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
nullptr,
64 "Asynchronous channels (experimental)" },
65 {
"async-update", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
nullptr,
66 "Asynchronous update" },
67 {
"audio-mode", COMMAND_LINE_VALUE_REQUIRED,
"[[none|2]|[server|1]|[redirect|0]]",
nullptr,
68 nullptr, -1,
nullptr,
"Audio output mode" },
69 {
"auth-only", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
nullptr,
70 "Authenticate only" },
71 {
"auth-pkg-list", COMMAND_LINE_VALUE_REQUIRED,
"[[none],]<!ntlm,kerberos,!u2u>",
nullptr,
73 "Authentication package filter (comma-separated list, use '!' to disable). By default "
74 "all methods are enabled. Use explicit 'none' as first argument to disable all methods, "
75 "selectively enabling only the ones following." },
76 {
"authentication", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueTrue,
nullptr, -1,
nullptr,
77 "Authentication (experimental)" },
78 {
"auto-reconnect", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
nullptr,
79 "Automatic reconnection" },
80 {
"auto-reconnect-max-retries", COMMAND_LINE_VALUE_REQUIRED,
"<retries>",
nullptr,
nullptr, -1,
81 nullptr,
"Automatic reconnection maximum retries, 0 for unlimited [0,1000]" },
82#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
83 {
"bitmap-cache", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
nullptr,
84 "[DEPRECATED, use /cache:bitmap[:on|off]] bitmap cache" },
85 {
"persist-cache", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
nullptr,
86 "[DEPRECATED, use /cache:persist[:on|off]] persistent bitmap cache" },
87 {
"persist-cache-file", COMMAND_LINE_VALUE_REQUIRED,
"<filename>",
nullptr,
nullptr, -1,
88 nullptr,
"[DEPRECATED, use /cache:persist-file:<filename>] persistent bitmap cache file" },
90 {
"bpp", COMMAND_LINE_VALUE_REQUIRED,
"<depth>",
"16",
nullptr, -1,
nullptr,
91 "Session bpp (color depth)" },
92 {
"buildconfig", COMMAND_LINE_VALUE_FLAG | COMMAND_LINE_PRINT_BUILDCONFIG,
nullptr,
nullptr,
93 nullptr, -1,
nullptr,
"Print the build configuration" },
94 {
"cache", COMMAND_LINE_VALUE_REQUIRED,
95 "[bitmap[:on|off],codec[:rfx|nsc],glyph[:on|off],offscreen[:on|off],persist,persist-file:<"
97 nullptr,
nullptr, -1,
nullptr,
"" },
98 {
"cert", COMMAND_LINE_VALUE_REQUIRED,
99 "[deny,ignore,name:<name>,tofu,fingerprint:<hash>:<hash as hex>[,fingerprint:<hash>:<another "
101 nullptr,
nullptr, -1,
nullptr,
102 "Certificate accept options. Use with care!\n"
103 " * deny ... Automatically abort connection if the certificate does not match, no "
104 "user interaction.\n"
105 " * ignore ... Ignore the certificate checks altogether (overrules all other options)\n"
106 " * name ... Use the alternate <name> instead of the certificate subject to match "
107 "locally stored certificates\n"
108 " * tofu ... Accept certificate unconditionally on first connect and deny on "
109 "subsequent connections if the certificate does not match\n"
110 " * fingerprints ... A list of certificate hashes that are accepted unconditionally for a "
112#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
113 {
"cert-deny", COMMAND_LINE_VALUE_FLAG,
nullptr,
nullptr,
nullptr, -1,
nullptr,
114 "[DEPRECATED, use /cert:deny] Automatically abort connection for any certificate that can "
115 "not be validated." },
116 {
"cert-ignore", COMMAND_LINE_VALUE_FLAG,
nullptr,
nullptr,
nullptr, -1,
nullptr,
117 "[DEPRECATED, use /cert:ignore] Ignore certificate" },
118 {
"cert-name", COMMAND_LINE_VALUE_REQUIRED,
"<name>",
nullptr,
nullptr, -1,
nullptr,
119 "[DEPRECATED, use /cert:name:<name>] Certificate name" },
120 {
"cert-tofu", COMMAND_LINE_VALUE_FLAG,
nullptr,
nullptr,
nullptr, -1,
nullptr,
121 "[DEPRECATED, use /cert:tofu] Automatically accept certificate on first connect" },
124 {
"connect-child-session", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
"",
125 "connect to child session (win32)" },
127 {
"client-build-number", COMMAND_LINE_VALUE_REQUIRED,
"<number>",
nullptr,
nullptr, -1,
nullptr,
128 "Client Build Number sent to server (influences smartcard behaviour, see [MS-RDPESC])" },
129 {
"client-hostname", COMMAND_LINE_VALUE_REQUIRED,
"<name>",
nullptr,
nullptr, -1,
nullptr,
130 "Client Hostname to send to server" },
131 {
"clipboard", COMMAND_LINE_VALUE_BOOL | COMMAND_LINE_VALUE_OPTIONAL,
132 "[[use-selection:<atom>],[direction-to:[all|local|remote|off]],[files-to[:all|local|remote|"
134 BoolValueTrue,
nullptr, -1,
nullptr,
135 "Redirect clipboard:\n"
136 " * use-selection:<atom> ... (X11) Specify which X selection to access. Default is "
137 "CLIPBOARD. PRIMARY is the X-style middle-click selection.\n"
138 " * direction-to:[all|local|remote|off] control enabled clipboard direction\n"
139 " * files-to:[all|local|remote|off] control enabled file clipboard direction" },
140#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
141 {
"codec-cache", COMMAND_LINE_VALUE_REQUIRED,
"[rfx|nsc|jpeg]",
nullptr,
nullptr, -1,
nullptr,
142 "[DEPRECATED, use /cache:codec:[rfx|nsc|jpeg]] Bitmap codec cache" },
144 {
"compression", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueTrue,
nullptr, -1,
"z",
146 {
"compression-level", COMMAND_LINE_VALUE_REQUIRED,
"<level>",
nullptr,
nullptr, -1,
nullptr,
147 "Compression level (0,1,2)" },
148 {
"credentials-delegation", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
149 nullptr,
"credentials delegation" },
150 {
"d", COMMAND_LINE_VALUE_REQUIRED,
"<domain>",
nullptr,
nullptr, -1,
nullptr,
"Domain" },
151 {
"decorations", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueTrue,
nullptr, -1,
nullptr,
152 "Window decorations" },
153 {
"disp", COMMAND_LINE_VALUE_FLAG,
nullptr,
nullptr,
nullptr, -1,
nullptr,
"Display control" },
154 {
"drive", COMMAND_LINE_VALUE_REQUIRED,
"<name>,<path>",
nullptr,
nullptr, -1,
nullptr,
155 "Redirect directory <path> as named share <name>. Hotplug support is enabled with "
156 "/drive:hotplug,*. This argument provides the same function as \"Drives that I plug in "
157 "later\" option in MSTSC." },
158 {
"drives", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
nullptr,
159 "Redirect all mount points as shares" },
160 {
"dump", COMMAND_LINE_VALUE_REQUIRED,
"<record|replay>,file:<file>[,nodelay]",
nullptr,
161 nullptr, -1,
nullptr,
"record or replay dump" },
162 {
"dvc", COMMAND_LINE_VALUE_REQUIRED,
"<channel>[,<options>]",
nullptr,
nullptr, -1,
nullptr,
163 "Dynamic virtual channel" },
164 {
"dynamic-resolution", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
nullptr,
165 "Send resolution updates when the window is resized" },
166 {
"echo", COMMAND_LINE_VALUE_FLAG,
nullptr,
nullptr,
nullptr, -1,
"echo",
"Echo channel" },
167 {
"encryption", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueTrue,
nullptr, -1,
nullptr,
168 "Encryption (experimental)" },
169 {
"encryption-methods", COMMAND_LINE_VALUE_REQUIRED,
"[40,][56,][128,][FIPS]",
nullptr,
nullptr,
170 -1,
nullptr,
"RDP standard security encryption methods" },
171 {
"endpointfedauth", COMMAND_LINE_VALUE_REQUIRED,
"<token>",
nullptr,
nullptr, -1,
nullptr,
172 "Endpoint FedAuth token for Hyper-V VM console-connect scenarios" },
173 {
"f", COMMAND_LINE_VALUE_FLAG,
nullptr,
nullptr,
nullptr, -1,
nullptr,
174 "Fullscreen mode (<Ctrl>+<Alt>+<Enter> toggles fullscreen)" },
175 {
"fipsmode", COMMAND_LINE_VALUE_BOOL,
nullptr,
nullptr,
nullptr, -1,
nullptr,
"FIPS mode" },
176 {
"floatbar", COMMAND_LINE_VALUE_OPTIONAL,
177 "sticky:[on|off],default:[visible|hidden],show:[always|fullscreen|window],position:[left|"
179 nullptr,
nullptr, -1,
nullptr,
180 "floatbar is disabled by default (when enabled defaults to sticky, centered, in fullscreen "
182 {
"fonts", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueTrue,
nullptr, -1,
nullptr,
183 "smooth fonts (ClearType)" },
184 {
"force-console-callbacks", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
185 nullptr,
"Use default callbacks (console) for certificate/credential/..." },
186 {
"frame-ack", COMMAND_LINE_VALUE_REQUIRED,
"<number>",
nullptr,
nullptr, -1,
nullptr,
187 "Number of frame acknowledgement" },
188 {
"args-from", COMMAND_LINE_VALUE_REQUIRED,
"file:<file>|stdin|fd:<number>|env:<name>",
nullptr,
189 nullptr, -1,
nullptr,
190 "Read command line from a file, stdin or file descriptor. This argument can not be combined "
192 "Provide one argument per line." },
193 {
"from-stdin", COMMAND_LINE_VALUE_OPTIONAL,
"force",
nullptr,
nullptr, -1,
nullptr,
194 "Read credentials from stdin. With <force> the prompt is done before connection, otherwise "
195 "on server request." },
196 {
"gateway", COMMAND_LINE_VALUE_REQUIRED,
197 "g:<gateway>[:<port>],u:<user>,d:<domain>,p:<password>,usage-method:["
198 "direct|detect],access-token:<"
199 "token>,type:[rpc|http[,no-websockets][,extauth-sspi-ntlm]|auto[,no-websockets][,extauth-"
200 "sspi-ntlm]]|arm,url:<wss://url>,bearer:<oauth2-bearer-token>,timeout:<1-600000 ms>",
201 nullptr,
nullptr, -1,
"gw",
"Gateway Hostname" },
202#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
203 {
"g", COMMAND_LINE_VALUE_REQUIRED,
"<gateway>[:<port>]",
nullptr,
nullptr, -1,
nullptr,
204 "[DEPRECATED, use /gateway:g:<url>] Gateway Hostname" },
205 {
"gateway-usage-method", COMMAND_LINE_VALUE_REQUIRED,
"[direct|detect]",
nullptr,
nullptr, -1,
206 "gum",
"[DEPRECATED, use /gateway:usage-method:<method>] Gateway usage method" },
207 {
"gd", COMMAND_LINE_VALUE_REQUIRED,
"<domain>",
nullptr,
nullptr, -1,
nullptr,
208 "[DEPRECATED, use /gateway:d:<domain>] Gateway domain" },
210 {
"gdi", COMMAND_LINE_VALUE_REQUIRED,
"sw|hw",
nullptr,
nullptr, -1,
nullptr,
"GDI rendering" },
211 {
"geometry", COMMAND_LINE_VALUE_FLAG,
nullptr,
nullptr,
nullptr, -1,
nullptr,
212 "Geometry tracking channel" },
213 {
"gestures", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
nullptr,
214 "Consume multitouch input locally" },
215 {
"gfx", COMMAND_LINE_VALUE_OPTIONAL,
216 "[[progressive[:on|off]|RFX[:on|off]"
218 "|AVC420[:on|off]AVC444[:on|off]"
220 "],mask:<value>,small-cache[:on|off],thin-client[:on|off],progressive[:on|"
221 "off],frame-ack[:on|off]"
222#if defined(WITH_GFX_AV1)
223 ",AV1[:on|off|i444|i420]"
225#if defined(WITH_GFX_AV2)
226 ",AV2[:on|off|i444|i420]"
228#if defined(WITH_GFX_AV1)
229 ",AV1[:on|off|i444|i420]]"
232 nullptr,
nullptr, -1,
nullptr,
"RDP8 graphics pipeline" },
233#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
234 {
"gfx-h264", COMMAND_LINE_VALUE_OPTIONAL,
"[[AVC420|AVC444],mask:<value>]",
nullptr,
nullptr,
235 -1,
nullptr,
"[DEPRECATED, use /gfx:avc420] RDP8.1 graphics pipeline using H264 codec" },
237#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
238 {
"gfx-progressive", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
nullptr,
239 "[DEPRECATED, use /gfx:progressive] RDP8 graphics pipeline using progressive codec" },
240 {
"gfx-small-cache", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueTrue,
nullptr, -1,
nullptr,
241 "[DEPRECATED, use /gfx:small-cache] RDP8 graphics pipeline using small cache mode" },
242 {
"gfx-thin-client", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
nullptr,
243 "[DEPRECATED, use /gfx:thin-client] RDP8 graphics pipeline using thin client mode" },
244 {
"glyph-cache", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
nullptr,
245 "[DEPRECATED, use /cache:glyph[:on|off]] Glyph cache (experimental)" },
247#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
248 {
"gp", COMMAND_LINE_VALUE_REQUIRED,
"<password>",
nullptr,
nullptr, -1,
nullptr,
249 "[DEPRECATED, use /gateway:p:<password>] Gateway password" },
251 {
"grab-keyboard", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueTrue,
nullptr, -1,
nullptr,
252 "Grab keyboard focus, forward all keys to remote" },
253 {
"grab-mouse", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueTrue,
nullptr, -1,
nullptr,
254 "Grab mouse focus, forward all events to remote" },
255#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
256 {
"gt", COMMAND_LINE_VALUE_REQUIRED,
257 "[rpc|http[,no-websockets][,extauth-sspi-ntlm]|auto[,no-websockets][,extauth-sspi-ntlm]]",
258 nullptr,
nullptr, -1,
nullptr,
259 "[DEPRECATED, use /gateway:type:<type>] Gateway transport type" },
260 {
"gu", COMMAND_LINE_VALUE_REQUIRED,
"[[<domain>\\]<user>|<user>[@<domain>]]",
nullptr,
nullptr,
261 -1,
nullptr,
"[DEPRECATED, use /gateway:u:<user>] Gateway username" },
262 {
"gat", COMMAND_LINE_VALUE_REQUIRED,
"<access token>",
nullptr,
nullptr, -1,
nullptr,
263 "[DEPRECATED, use /gateway:access-token:<token>] Gateway Access Token" },
265 {
"h", COMMAND_LINE_VALUE_REQUIRED,
"<height>",
"768",
nullptr, -1,
nullptr,
"Height" },
266 {
"heartbeat", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueTrue,
nullptr, -1,
nullptr,
267 "Support heartbeat PDUs" },
268 {
"help", COMMAND_LINE_VALUE_FLAG | COMMAND_LINE_PRINT_HELP,
nullptr,
nullptr,
nullptr, -1,
"?",
270 {
"home-drive", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
nullptr,
271 "Redirect user home as share" },
272 {
"ipv4", COMMAND_LINE_VALUE_OPTIONAL,
"[:force]",
nullptr,
nullptr, -1,
"4",
273 "Prefer IPv4 A record over IPv6 AAAA record" },
274 {
"ipv6", COMMAND_LINE_VALUE_OPTIONAL,
"[:force]",
nullptr,
nullptr, -1,
"6",
275 "Prefer IPv6 AAAA record over IPv4 A record" },
276#if defined(WITH_JPEG)
277 {
"jpeg", COMMAND_LINE_VALUE_FLAG,
nullptr,
nullptr,
nullptr, -1,
nullptr,
278 "JPEG codec support" },
279 {
"jpeg-quality", COMMAND_LINE_VALUE_REQUIRED,
"<percentage>",
nullptr,
nullptr, -1,
nullptr,
282 {
"kbd", COMMAND_LINE_VALUE_REQUIRED,
283 "[layout:[0x<id>|<name>],lang:<0x<id>>,fn-key:<value>,type:<value>,subtype:<value>,unicode[:"
284 "on|off],remap:<key1>=<value1>,remap:<key2>=<value2>,pipe:<filename>]",
285 nullptr,
nullptr, -1,
nullptr,
286 "Keyboard related options:\n"
287 " * layout: set the keybouard layout announced to the server\n"
288 " * lang: set the keyboard language identifier sent to the server\n"
289 " * fn-key: Function key value\n"
290 " * remap: RDP scancode to another one. Use /list:kbd-scancode to get the mapping. Example: "
292 "'a' and 's' on a US keyboard: /kbd:remap:0x1e=0x1f,remap:0x1f=0x1e\n"
293 " * pipe: Name of a named pipe that can be used to type text into the RDP session\n" },
294#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
295 {
"kbd-lang", COMMAND_LINE_VALUE_REQUIRED,
"0x<id>",
nullptr,
nullptr, -1,
nullptr,
296 "[DEPRECATED, use / kbd:lang:<value>] Keyboard active language identifier" },
297 {
"kbd-fn-key", COMMAND_LINE_VALUE_REQUIRED,
"<value>",
nullptr,
nullptr, -1,
nullptr,
298 "[DEPRECATED, use /kbd:fn-key:<value>] Function key value" },
299 {
"kbd-list", COMMAND_LINE_VALUE_FLAG | COMMAND_LINE_PRINT,
nullptr,
nullptr,
nullptr, -1,
300 nullptr,
"[DEPRECATED, use /list:kbd] List keyboard layouts" },
301 {
"kbd-scancode-list", COMMAND_LINE_VALUE_FLAG | COMMAND_LINE_PRINT,
nullptr,
nullptr,
nullptr,
302 -1,
nullptr,
"[DEPRECATED, use list:kbd-scancode] List keyboard RDP scancodes" },
303 {
"kbd-lang-list", COMMAND_LINE_VALUE_OPTIONAL | COMMAND_LINE_PRINT,
nullptr,
nullptr,
nullptr,
304 -1,
nullptr,
"[DEPRECATED, use /list:kbd-lang] List keyboard languages" },
305 {
"kbd-remap", COMMAND_LINE_VALUE_REQUIRED,
306 "[DEPRECATED, use /kbd:remap] List of <key>=<value>,... pairs to remap scancodes",
nullptr,
307 nullptr, -1,
nullptr,
"Keyboard scancode remapping" },
308 {
"kbd-subtype", COMMAND_LINE_VALUE_REQUIRED,
"<id>",
nullptr,
nullptr, -1,
nullptr,
309 "[DEPRECATED, use /kbd:subtype]Keyboard subtype" },
310 {
"kbd-type", COMMAND_LINE_VALUE_REQUIRED,
"<id>",
nullptr,
nullptr, -1,
nullptr,
311 "[DEPRECATED, use /kbd:type] Keyboard type" },
312 {
"kbd-unicode", COMMAND_LINE_VALUE_FLAG,
"",
nullptr,
nullptr, -1,
nullptr,
313 "[DEPRECATED, use /kbd:unicode[:on|off]] Send unicode symbols, e.g. use the local "
314 "keyboard map. ATTENTION: Does not work with every "
317 {
"kerberos", COMMAND_LINE_VALUE_REQUIRED,
318 "[kdc-url:<url>,lifetime:<time>,start-time:<time>,renewable-lifetime:<time>,cache:<path>,"
319 "armor:<path>,pkinit-anchors:<path>,pkcs11-module:<name>]",
320 nullptr,
nullptr, -1,
nullptr,
"Kerberos options" },
321 {
"load-balance-info", COMMAND_LINE_VALUE_REQUIRED,
"<info-string>",
nullptr,
nullptr, -1,
322 nullptr,
"Load balance info" },
323 {
"list", COMMAND_LINE_VALUE_REQUIRED | COMMAND_LINE_PRINT,
324 "[kbd|kbd-scancode|kbd-lang[:<value>]|smartcard[:[pkinit-anchors:<path>][,pkcs11-module:<"
326 "monitor|tune|timezones]",
327 "List available options for subcommand",
nullptr, -1,
nullptr,
328 "List available options for subcommand" },
329 {
"log-filters", COMMAND_LINE_VALUE_REQUIRED,
"<tag>:<level>[,<tag>:<level>[,...]]",
nullptr,
330 nullptr, -1,
nullptr,
"Set logger filters, see wLog(7) for details" },
331 {
"log-level", COMMAND_LINE_VALUE_REQUIRED,
"[OFF|FATAL|ERROR|WARN|INFO|DEBUG|TRACE]",
nullptr,
332 nullptr, -1,
nullptr,
"Set the default log level, see wLog(7) for details" },
333 {
"max-fast-path-size", COMMAND_LINE_VALUE_REQUIRED,
"<size>",
nullptr,
nullptr, -1,
nullptr,
334 "Specify maximum fast-path update size" },
335 {
"max-loop-time", COMMAND_LINE_VALUE_REQUIRED,
"<time>",
nullptr,
nullptr, -1,
nullptr,
336 "Specify maximum time in milliseconds spend treating packets" },
337 {
"menu-anims", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
nullptr,
339 {
"microphone", COMMAND_LINE_VALUE_OPTIONAL,
340 "[sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>]",
nullptr,
341 nullptr, -1,
"mic",
"Audio input (microphone)" },
342#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
343 {
"smartcard-list", COMMAND_LINE_VALUE_FLAG | COMMAND_LINE_PRINT,
nullptr,
nullptr,
nullptr, -1,
344 nullptr,
"[DEPRECATED, use /list:smartcard] List smartcard information" },
345 {
"monitor-list", COMMAND_LINE_VALUE_FLAG | COMMAND_LINE_PRINT,
nullptr,
nullptr,
nullptr, -1,
346 nullptr,
"[DEPRECATED, use /list:monitor] List detected monitors" },
348 {
"monitors", COMMAND_LINE_VALUE_REQUIRED,
"<id>[,<id>[,...]]",
nullptr,
nullptr, -1,
nullptr,
349 "[experimental] Select monitors to use (only effective in fullscreen or multimonitor mode)" },
350 {
"mouse-motion", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueTrue,
nullptr, -1,
nullptr,
351 "Send mouse motion events" },
352 {
"mouse-relative", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
nullptr,
353 "Send mouse motion with relative addressing" },
354 {
"mouse", COMMAND_LINE_VALUE_REQUIRED,
"[relative:[on|off],grab:[on|off]]",
nullptr,
nullptr,
356 "Mouse related options:\n"
357 " * relative: send relative mouse movements if supported by server\n"
358 " * grab: grab the mouse if within the window" },
359#if defined(CHANNEL_TSMF_CLIENT)
360 {
"multimedia", COMMAND_LINE_VALUE_OPTIONAL,
"[sys:<sys>,][dev:<dev>,][decoder:<decoder>]",
361 nullptr,
nullptr, -1,
"mmr",
"[DEPRECATED], use /video] Redirect multimedia (video)" },
363 {
"multimon", COMMAND_LINE_VALUE_BOOL | COMMAND_LINE_VALUE_OPTIONAL,
"on|off|force",
364 BoolValueFalse,
nullptr, -1,
nullptr,
"Use multiple monitors" },
365 {
"multitouch", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
nullptr,
366 "Redirect multitouch input" },
367#if defined(WITH_RDPEUDP)
368 {
"multitransport", COMMAND_LINE_VALUE_BOOL | COMMAND_LINE_VALUE_OPTIONAL,
369 "[tcp-only|udp|udp-preferred]", BoolValueTrue,
nullptr, -1,
nullptr,
370 "Support multitransport protocol. With tcp-only just enable the capability but deny an "
371 "actual switch UDP transport. udp (the default) enables the switch to UDP transport, "
372 "udp-preferred also tunnels the static channels over it" },
374 {
"multitransport", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueTrue,
nullptr, -1,
nullptr,
375 "Support multitransport protocol" },
377 {
"nego", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueTrue,
nullptr, -1,
nullptr,
378 "protocol security negotiation" },
379 {
"network", COMMAND_LINE_VALUE_REQUIRED,
380 "[invalid|modem|broadband|broadband-low|broadband-high|wan|lan|auto]",
nullptr,
nullptr, -1,
381 nullptr,
"Network connection type" },
382 {
"nsc", COMMAND_LINE_VALUE_FLAG,
nullptr,
nullptr,
nullptr, -1,
"nscodec",
"NSCodec support" },
383#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
384 {
"offscreen-cache", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
nullptr,
385 "[DEPRECATED, use /cache:offscreen[:on|off]] offscreen bitmap cache" },
387 {
"orientation", COMMAND_LINE_VALUE_REQUIRED,
"[0|90|180|270]",
nullptr,
nullptr, -1,
nullptr,
388 "Orientation of display in degrees" },
389 {
"old-license", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
nullptr,
390 "Use the old license workflow (no CAL and hwId set to 0)" },
391 {
"p", COMMAND_LINE_VALUE_OPTIONAL,
"<password>",
nullptr,
nullptr, -1,
nullptr,
392 "Password. Pass /p without arguments to silences interactive password prompts if no "
393 "credentials are required for the connection." },
394#if defined(CHANNEL_PARALLEL_CLIENT)
395 {
"parallel", COMMAND_LINE_VALUE_OPTIONAL,
"<name>[,<path>]",
nullptr,
nullptr, -1,
nullptr,
396 "Redirect parallel device" },
398 {
"parent-window", COMMAND_LINE_VALUE_REQUIRED,
"<window-id>",
nullptr,
nullptr, -1,
nullptr,
399 "Parent window id" },
400 {
"pcb", COMMAND_LINE_VALUE_REQUIRED,
"<blob>",
nullptr,
nullptr, -1,
nullptr,
401 "Preconnection Blob" },
402 {
"pcid", COMMAND_LINE_VALUE_REQUIRED,
"<id>",
nullptr,
nullptr, -1,
nullptr,
403 "Preconnection Id" },
404 {
"pheight", COMMAND_LINE_VALUE_REQUIRED,
"<height>",
nullptr,
nullptr, -1,
nullptr,
405 "Physical height of display (in millimeters)" },
406 {
"play-rfx", COMMAND_LINE_VALUE_REQUIRED,
"<pcap-file>",
nullptr,
nullptr, -1,
nullptr,
407 "Replay rfx pcap file" },
408 {
"port", COMMAND_LINE_VALUE_REQUIRED,
"<number>",
nullptr,
nullptr, -1,
nullptr,
410 {
"suppress-output", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueTrue,
nullptr, -1,
nullptr,
411 "suppress output when minimized" },
412 {
"print-reconnect-cookie", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
413 nullptr,
"Print base64 reconnect cookie after connecting" },
414 {
"printer", COMMAND_LINE_VALUE_OPTIONAL,
"<name>[,<driver>[,default]]",
nullptr,
nullptr, -1,
415 nullptr,
"Redirect printer device" },
416 {
"proxy", COMMAND_LINE_VALUE_REQUIRED,
417 "[ignore|[<proto>://][<user>:<password>@]<host>[:<port>]]",
nullptr,
nullptr, -1,
nullptr,
418 "Proxy settings: override env. var (see also environment variable below). Protocol "
419 "\"socks5\" should be given explicitly where \"http\" is default." },
420 {
"pth", COMMAND_LINE_VALUE_REQUIRED,
"<password-hash>",
nullptr,
nullptr, -1,
"pass-the-hash",
421 "Pass the hash (restricted admin mode)" },
422 {
"pwidth", COMMAND_LINE_VALUE_REQUIRED,
"<width>",
nullptr,
nullptr, -1,
nullptr,
423 "Physical width of display (in millimeters)" },
424#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
425 {
"rdp2tcp", COMMAND_LINE_VALUE_REQUIRED,
"<executable path[:arg...]>",
nullptr,
nullptr, -1,
426 nullptr,
"TCP redirection" },
428 {
"reconnect-cookie", COMMAND_LINE_VALUE_REQUIRED,
"<base64-cookie>",
nullptr,
nullptr, -1,
429 nullptr,
"Pass base64 reconnect cookie to the connection" },
430 {
"redirect-prefer", COMMAND_LINE_VALUE_REQUIRED,
"<FQDN|IP|NETBIOS>,[...]",
nullptr,
nullptr,
431 -1,
nullptr,
"Override the preferred redirection order" },
432 {
"relax-order-checks", COMMAND_LINE_VALUE_FLAG,
nullptr,
nullptr,
nullptr, -1,
433 "relax-order-checks",
434 "Do not check if a RDP order was announced during capability exchange, only use when "
435 "connecting to a buggy server" },
436 {
"restricted-admin", COMMAND_LINE_VALUE_FLAG,
nullptr,
nullptr,
nullptr, -1,
"restrictedAdmin",
437 "Restricted admin mode" },
438#ifdef CHANNEL_RDPEAR_CLIENT
439 {
"remoteGuard", COMMAND_LINE_VALUE_FLAG,
nullptr,
nullptr,
nullptr, -1,
"remoteGuard",
440 "Remote guard credentials" },
442 {
"rfx", COMMAND_LINE_VALUE_FLAG,
nullptr,
nullptr,
nullptr, -1,
nullptr,
"RemoteFX" },
443 {
"rfx-mode", COMMAND_LINE_VALUE_REQUIRED,
"[image|video]",
nullptr,
nullptr, -1,
nullptr,
445 {
"scale", COMMAND_LINE_VALUE_REQUIRED,
"[100|140|180]",
"100",
nullptr, -1,
nullptr,
446 "Scaling factor of the display" },
447 {
"scale-desktop", COMMAND_LINE_VALUE_REQUIRED,
"<percentage>",
"100",
nullptr, -1,
nullptr,
448 "Scaling factor for desktop applications (value between 100 and 500)" },
449 {
"scale-device", COMMAND_LINE_VALUE_REQUIRED,
"100|140|180",
"100",
nullptr, -1,
nullptr,
450 "Scaling factor for app store applications" },
451 {
"sec", COMMAND_LINE_VALUE_REQUIRED,
452 "rdp[:[on|off]]|tls[:[on|off]]|nla[:[on|off]]|ext[:[on|off]]|aad[:[on|off]]",
nullptr,
453 nullptr, -1,
nullptr,
454 "Force specific protocol security. e.g. /sec:nla enables NLA and disables all others, while "
455 "/sec:nla:[on|off] just toggles NLA" },
456#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
457 {
"sec-ext", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueTrue,
nullptr, -1,
nullptr,
458 "[DEPRECATED, use /sec:ext] NLA extended protocol security" },
459 {
"sec-nla", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueTrue,
nullptr, -1,
nullptr,
460 "[DEPRECATED, use /sec:nla] NLA protocol security" },
461 {
"sec-rdp", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueTrue,
nullptr, -1,
nullptr,
462 "[DEPRECATED, use /sec:rdp] RDP protocol security" },
463 {
"sec-tls", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueTrue,
nullptr, -1,
nullptr,
464 "[DEPRECATED, use /sec:tls] TLS protocol security" },
466#if defined(CHANNEL_SERIAL_CLIENT)
467 {
"serial", COMMAND_LINE_VALUE_OPTIONAL,
"<name>[,<path>[,<driver>[,permissive]]]",
nullptr,
468 nullptr, -1,
"tty",
"Redirect serial device" },
470 {
"server-name", COMMAND_LINE_VALUE_REQUIRED,
"<name>",
nullptr,
nullptr, -1,
nullptr,
471 "User-specified server name to use for validation (TLS, Kerberos)" },
472 {
"shell", COMMAND_LINE_VALUE_REQUIRED,
"<shell>",
nullptr,
nullptr, -1,
nullptr,
474 {
"shell-dir", COMMAND_LINE_VALUE_REQUIRED,
"<dir>",
nullptr,
nullptr, -1,
nullptr,
475 "Shell working directory" },
476 {
"size", COMMAND_LINE_VALUE_REQUIRED,
"<width>x<height> or <percent>%[wh]",
"1024x768",
477 nullptr, -1,
nullptr,
"Screen size" },
478 {
"smart-sizing", COMMAND_LINE_VALUE_BOOL | COMMAND_LINE_VALUE_OPTIONAL,
479 "<width>x<height>|on|off", BoolValueFalse,
nullptr, -1,
nullptr,
480 "Scale remote desktop to window size" },
481 {
"smartcard", COMMAND_LINE_VALUE_OPTIONAL,
"<str>[,<str>...]",
nullptr,
nullptr, -1,
nullptr,
482 "Redirect the smartcard devices containing any of the <str> in their names." },
483 {
"smartcard-logon", COMMAND_LINE_VALUE_OPTIONAL,
484 "[[cert:<path>|cert:<base64(PEM)>],[key:<path>|key:<base64(PEM)>],pin:<pin>,csp:<csp "
485 "name>,reader:<reader>,card:<card>]",
486 nullptr,
nullptr, -1,
nullptr,
487 "Activates Smartcard (optional certificate) Logon authentication." },
488 {
"sound", COMMAND_LINE_VALUE_OPTIONAL,
489 "[sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>,][latency:<"
490 "latency>,][quality:<quality>]",
491 nullptr,
nullptr, -1,
"audio",
492 "Audio output (sound). <format> is a format tag (e.g. 0x704F) or its WAVE_FORMAT_ "
493 "name with or without the prefix (e.g. opus, pcm, alaw, aac_ms)" },
494 {
"span", COMMAND_LINE_VALUE_FLAG,
nullptr,
nullptr,
nullptr, -1,
nullptr,
495 "Span screen over multiple monitors" },
496 {
"spn-class", COMMAND_LINE_VALUE_REQUIRED,
"<service-class>",
nullptr,
nullptr, -1,
nullptr,
497 "SPN authentication service class" },
498 {
"ssh-agent", COMMAND_LINE_VALUE_FLAG,
nullptr,
nullptr,
nullptr, -1,
"ssh-agent",
499 "SSH Agent forwarding channel" },
500 {
"sspi-module", COMMAND_LINE_VALUE_REQUIRED,
"<SSPI module path>",
nullptr,
nullptr, -1,
501 nullptr,
"SSPI shared library module file path" },
502 {
"winscard-module", COMMAND_LINE_VALUE_REQUIRED,
"<WinSCard module path>",
nullptr,
nullptr,
503 -1,
nullptr,
"WinSCard shared library module file path" },
504 {
"disable-output", COMMAND_LINE_VALUE_FLAG,
nullptr,
nullptr,
nullptr, -1,
nullptr,
505 "Deactivate all graphics decoding in the client session. Useful for load tests with many "
506 "simultaneous connections" },
507 {
"t", COMMAND_LINE_VALUE_REQUIRED,
"<title>",
nullptr,
nullptr, -1,
"title",
"Window title" },
508 {
"themes", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueTrue,
nullptr, -1,
nullptr,
"themes" },
509 {
"timeout", COMMAND_LINE_VALUE_REQUIRED,
"<time in ms>",
"9000",
nullptr, -1,
"timeout",
510 "Advanced setting for high latency links: Adjust connection timeout, use if you encounter "
511 "timeout failures with your connection" },
512 {
"timezone", COMMAND_LINE_VALUE_REQUIRED,
"<windows timezone>",
nullptr,
nullptr, -1,
nullptr,
513 "Use supplied windows timezone for connection (requires server support), see /list:timezones "
514 "for allowed values" },
515 {
"tls", COMMAND_LINE_VALUE_REQUIRED,
"[ciphers|seclevel|secrets-file|enforce]",
nullptr,
516 nullptr, -1,
nullptr,
517 "TLS configuration options:"
518 " * ciphers:[netmon|ma|<cipher names>]\n"
519 " * seclevel:<level>, default: 1, range: [0-5] Override the default TLS security level, "
520 "might be required for older target servers. Details at "
521 "https://docs.openssl.org/3.0/man3/SSL_CTX_set_security_level/\n"
522 " * secrets-file:<filename>\n"
523 " * enforce[:[ssl3|1.0|1.1|1.2|1.3]] Force use of SSL/TLS version for a connection. Some "
524 "servers have a buggy TLS "
525 "version negotiation and might fail without this. Defaults to TLS 1.2 if no argument is "
526 "supplied. Use 1.0 for windows 7" },
527#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
528 {
"tls-ciphers", COMMAND_LINE_VALUE_REQUIRED,
"[netmon|ma|ciphers]",
nullptr,
nullptr, -1,
529 nullptr,
"[DEPRECATED, use /tls:ciphers] Allowed TLS ciphers" },
530 {
"tls-seclevel", COMMAND_LINE_VALUE_REQUIRED,
"<level>",
"1",
nullptr, -1,
nullptr,
531 "[DEPRECATED, use /tls:seclevel] TLS security level - defaults to 1" },
532 {
"tls-secrets-file", COMMAND_LINE_VALUE_REQUIRED,
"<filename>",
nullptr,
nullptr, -1,
nullptr,
533 "[DEPRECATED, use /tls:secrets:file] File were TLS secrets will be stored in the "
534 "SSLKEYLOGFILE format" },
535 {
"enforce-tlsv1_2", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
nullptr,
536 "[DEPRECATED, use /tls:enforce:1.2] Force use of TLS1.2 for connection. Some "
537 "servers have a buggy TLS version negotiation and "
538 "might fail without this" },
540 {
"toggle-fullscreen", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueTrue,
nullptr, -1,
nullptr,
541 "Alt+Ctrl+Enter to toggle fullscreen" },
542 {
"tune", COMMAND_LINE_VALUE_REQUIRED,
"<setting:value>,<setting:value>",
"",
nullptr, -1,
543 nullptr,
"[experimental] directly manipulate freerdp settings, use with extreme caution!" },
544#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
545 {
"tune-list", COMMAND_LINE_VALUE_FLAG | COMMAND_LINE_PRINT,
nullptr,
nullptr,
nullptr, -1,
546 nullptr,
"[DEPRECATED, use /list:tune] Print options allowed for /tune" },
548 {
"u", COMMAND_LINE_VALUE_REQUIRED,
"[[<domain>\\]<user>|<user>[@<domain>]]",
nullptr,
nullptr,
549 -1,
nullptr,
"Username" },
550 {
"unmap-buttons", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
nullptr,
551 "Let server see real physical pointer button" },
552#ifdef CHANNEL_URBDRC_CLIENT
553 {
"usb", COMMAND_LINE_VALUE_REQUIRED,
554 "[dbg,][id:<vid>:<pid>#...,][addr:<bus>:<addr>#...,][auto,][filter:<class>#...|none]",
555 nullptr,
nullptr, -1,
nullptr,
"Redirect USB device" },
557 {
"v", COMMAND_LINE_VALUE_REQUIRED,
"<server>[:port]",
nullptr,
nullptr, -1,
nullptr,
558 "Server hostname|URL|IPv4|IPv6 or vsock://<number> or /some/path/to/pipe or |:1234 to pass a "
559 "TCP socket to use" },
560 {
"vc", COMMAND_LINE_VALUE_REQUIRED,
"<channel>[,<options>]",
nullptr,
nullptr, -1,
nullptr,
561 "Static virtual channel" },
562 {
"version", COMMAND_LINE_VALUE_FLAG | COMMAND_LINE_PRINT_VERSION,
nullptr,
nullptr,
nullptr,
563 -1,
nullptr,
"Print version" },
564 {
"video", COMMAND_LINE_VALUE_FLAG,
nullptr,
nullptr,
nullptr, -1,
nullptr,
565 "Video optimized remoting channel" },
566 {
"prevent-session-lock", COMMAND_LINE_VALUE_OPTIONAL,
"<time in sec>",
nullptr,
nullptr, -1,
568 "Prevent session locking by injecting fake mouse motion events to the server "
569 "when the connection is idle (default interval: 180 seconds)" },
570 {
"vmconnect", COMMAND_LINE_VALUE_OPTIONAL,
"<vmid>",
nullptr,
nullptr, -1,
nullptr,
571 "Hyper-V console (use port 2179, disable negotiation)" },
572 {
"w", COMMAND_LINE_VALUE_REQUIRED,
"<width>",
"1024",
nullptr, -1,
nullptr,
"Width" },
573 {
"wallpaper", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueTrue,
nullptr, -1,
nullptr,
575 {
"window-drag", COMMAND_LINE_VALUE_BOOL,
nullptr, BoolValueFalse,
nullptr, -1,
nullptr,
576 "full window drag" },
577 {
"window-position", COMMAND_LINE_VALUE_REQUIRED,
"<xpos>x<ypos>",
nullptr,
nullptr, -1,
578 nullptr,
"window position" },
579 {
"wm-class", COMMAND_LINE_VALUE_REQUIRED,
"<class-name>",
nullptr,
nullptr, -1,
nullptr,
580 "Set the WM_CLASS hint for the window instance" },
581 {
"workarea", COMMAND_LINE_VALUE_FLAG,
nullptr,
nullptr,
nullptr, -1,
nullptr,
582 "Use available work area" },
583 {
nullptr, 0,
nullptr,
nullptr,
nullptr, -1,
nullptr,
nullptr }