FreeRDP
Loading...
Searching...
No Matches
client/common/cmdline.h
1
20#ifndef CLIENT_COMMON_CMDLINE_H
21#define CLIENT_COMMON_CMDLINE_H
22
23#include <freerdp/config.h>
24
25#include <winpr/cmdline.h>
26
27static const COMMAND_LINE_ARGUMENT_A global_cmd_args[] = {
28 { "a", COMMAND_LINE_VALUE_REQUIRED, "<addin>[,<options>]", nullptr, nullptr, -1, "addin",
29 "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 "[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" },
58#endif
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,
72 nullptr, -1, 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" },
89#endif
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:<"
96 "filename>]",
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 "
100 "hash>]]",
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 "
111 "connection" },
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" },
122#endif
123#ifdef _WIN32
124 { "connect-child-session", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueFalse, nullptr, -1, "",
125 "connect to child session (win32)" },
126#endif
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|"
133 "off]]]",
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" },
143#endif
144 { "compression", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueTrue, nullptr, -1, "z",
145 "compression" },
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]", nullptr, nullptr,
178 -1, nullptr,
179 "floatbar is disabled by default (when enabled defaults to sticky in fullscreen mode)" },
180 { "fonts", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueTrue, nullptr, -1, nullptr,
181 "smooth fonts (ClearType)" },
182 { "force-console-callbacks", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueFalse, nullptr, -1,
183 nullptr, "Use default callbacks (console) for certificate/credential/..." },
184 { "frame-ack", COMMAND_LINE_VALUE_REQUIRED, "<number>", nullptr, nullptr, -1, nullptr,
185 "Number of frame acknowledgement" },
186 { "args-from", COMMAND_LINE_VALUE_REQUIRED, "file:<file>|stdin|fd:<number>|env:<name>", nullptr,
187 nullptr, -1, nullptr,
188 "Read command line from a file, stdin or file descriptor. This argument can not be combined "
189 "with any other. "
190 "Provide one argument per line." },
191 { "from-stdin", COMMAND_LINE_VALUE_OPTIONAL, "force", nullptr, nullptr, -1, nullptr,
192 "Read credentials from stdin. With <force> the prompt is done before connection, otherwise "
193 "on server request." },
194 { "gateway", COMMAND_LINE_VALUE_REQUIRED,
195 "g:<gateway>[:<port>],u:<user>,d:<domain>,p:<password>,usage-method:["
196 "direct|detect],access-token:<"
197 "token>,type:[rpc|http[,no-websockets][,extauth-sspi-ntlm]|auto[,no-websockets][,extauth-"
198 "sspi-ntlm]]|arm,url:<wss://url>,bearer:<oauth2-bearer-token>,timeout:<1-600000 ms>",
199 nullptr, nullptr, -1, "gw", "Gateway Hostname" },
200#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
201 { "g", COMMAND_LINE_VALUE_REQUIRED, "<gateway>[:<port>]", nullptr, nullptr, -1, nullptr,
202 "[DEPRECATED, use /gateway:g:<url>] Gateway Hostname" },
203 { "gateway-usage-method", COMMAND_LINE_VALUE_REQUIRED, "[direct|detect]", nullptr, nullptr, -1,
204 "gum", "[DEPRECATED, use /gateway:usage-method:<method>] Gateway usage method" },
205 { "gd", COMMAND_LINE_VALUE_REQUIRED, "<domain>", nullptr, nullptr, -1, nullptr,
206 "[DEPRECATED, use /gateway:d:<domain>] Gateway domain" },
207#endif
208 { "gdi", COMMAND_LINE_VALUE_REQUIRED, "sw|hw", nullptr, nullptr, -1, nullptr, "GDI rendering" },
209 { "geometry", COMMAND_LINE_VALUE_FLAG, nullptr, nullptr, nullptr, -1, nullptr,
210 "Geometry tracking channel" },
211 { "gestures", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueFalse, nullptr, -1, nullptr,
212 "Consume multitouch input locally" },
213#ifdef WITH_GFX_H264
214 { "gfx", COMMAND_LINE_VALUE_OPTIONAL,
215 "[[progressive[:on|off]|RFX[:on|off]|AVC420[:on|off]AVC444[:on|off]],mask:<value>,small-"
216 "cache[:on|off],thin-client[:on|off],progressive[:on|"
217 "off],frame-ack[:on|off]"
218#if defined(WITH_GFX_AV1)
219 ",AV1[:on|off|i444|i420]]"
220#endif
221 ,
222 nullptr, nullptr, -1, nullptr, "RDP8 graphics pipeline" },
223#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
224 { "gfx-h264", COMMAND_LINE_VALUE_OPTIONAL, "[[AVC420|AVC444],mask:<value>]", nullptr, nullptr,
225 -1, nullptr, "[DEPRECATED, use /gfx:avc420] RDP8.1 graphics pipeline using H264 codec" },
226#endif
227#else
228 { "gfx", COMMAND_LINE_VALUE_OPTIONAL,
229 "[progressive[:on|off]|RFX[:on|off]|AVC420[:on|off]AVC444[:on|off]],mask:<value>,small-cache["
230 ":on|off],thin-client[:on|off],progressive[:on|off]]",
231 nullptr, nullptr, -1, nullptr, "RDP8 graphics pipeline" },
232#endif
233#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
234 { "gfx-progressive", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueFalse, nullptr, -1, nullptr,
235 "[DEPRECATED, use /gfx:progressive] RDP8 graphics pipeline using progressive codec" },
236 { "gfx-small-cache", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueTrue, nullptr, -1, nullptr,
237 "[DEPRECATED, use /gfx:small-cache] RDP8 graphics pipeline using small cache mode" },
238 { "gfx-thin-client", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueFalse, nullptr, -1, nullptr,
239 "[DEPRECATED, use /gfx:thin-client] RDP8 graphics pipeline using thin client mode" },
240 { "glyph-cache", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueFalse, nullptr, -1, nullptr,
241 "[DEPRECATED, use /cache:glyph[:on|off]] Glyph cache (experimental)" },
242#endif
243#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
244 { "gp", COMMAND_LINE_VALUE_REQUIRED, "<password>", nullptr, nullptr, -1, nullptr,
245 "[DEPRECATED, use /gateway:p:<password>] Gateway password" },
246#endif
247 { "grab-keyboard", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueTrue, nullptr, -1, nullptr,
248 "Grab keyboard focus, forward all keys to remote" },
249 { "grab-mouse", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueTrue, nullptr, -1, nullptr,
250 "Grab mouse focus, forward all events to remote" },
251#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
252 { "gt", COMMAND_LINE_VALUE_REQUIRED,
253 "[rpc|http[,no-websockets][,extauth-sspi-ntlm]|auto[,no-websockets][,extauth-sspi-ntlm]]",
254 nullptr, nullptr, -1, nullptr,
255 "[DEPRECATED, use /gateway:type:<type>] Gateway transport type" },
256 { "gu", COMMAND_LINE_VALUE_REQUIRED, "[[<domain>\\]<user>|<user>[@<domain>]]", nullptr, nullptr,
257 -1, nullptr, "[DEPRECATED, use /gateway:u:<user>] Gateway username" },
258 { "gat", COMMAND_LINE_VALUE_REQUIRED, "<access token>", nullptr, nullptr, -1, nullptr,
259 "[DEPRECATED, use /gateway:access-token:<token>] Gateway Access Token" },
260#endif
261 { "h", COMMAND_LINE_VALUE_REQUIRED, "<height>", "768", nullptr, -1, nullptr, "Height" },
262 { "heartbeat", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueTrue, nullptr, -1, nullptr,
263 "Support heartbeat PDUs" },
264 { "help", COMMAND_LINE_VALUE_FLAG | COMMAND_LINE_PRINT_HELP, nullptr, nullptr, nullptr, -1, "?",
265 "Print help" },
266 { "home-drive", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueFalse, nullptr, -1, nullptr,
267 "Redirect user home as share" },
268 { "ipv4", COMMAND_LINE_VALUE_OPTIONAL, "[:force]", nullptr, nullptr, -1, "4",
269 "Prefer IPv4 A record over IPv6 AAAA record" },
270 { "ipv6", COMMAND_LINE_VALUE_OPTIONAL, "[:force]", nullptr, nullptr, -1, "6",
271 "Prefer IPv6 AAAA record over IPv4 A record" },
272#if defined(WITH_JPEG)
273 { "jpeg", COMMAND_LINE_VALUE_FLAG, nullptr, nullptr, nullptr, -1, nullptr,
274 "JPEG codec support" },
275 { "jpeg-quality", COMMAND_LINE_VALUE_REQUIRED, "<percentage>", nullptr, nullptr, -1, nullptr,
276 "JPEG quality" },
277#endif
278 { "kbd", COMMAND_LINE_VALUE_REQUIRED,
279 "[layout:[0x<id>|<name>],lang:<0x<id>>,fn-key:<value>,type:<value>,subtype:<value>,unicode[:"
280 "on|off],remap:<key1>=<value1>,remap:<key2>=<value2>,pipe:<filename>]",
281 nullptr, nullptr, -1, nullptr,
282 "Keyboard related options:\n"
283 " * layout: set the keybouard layout announced to the server\n"
284 " * lang: set the keyboard language identifier sent to the server\n"
285 " * fn-key: Function key value\n"
286 " * remap: RDP scancode to another one. Use /list:kbd-scancode to get the mapping. Example: "
287 "To switch "
288 "'a' and 's' on a US keyboard: /kbd:remap:0x1e=0x1f,remap:0x1f=0x1e\n"
289 " * pipe: Name of a named pipe that can be used to type text into the RDP session\n" },
290#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
291 { "kbd-lang", COMMAND_LINE_VALUE_REQUIRED, "0x<id>", nullptr, nullptr, -1, nullptr,
292 "[DEPRECATED, use / kbd:lang:<value>] Keyboard active language identifier" },
293 { "kbd-fn-key", COMMAND_LINE_VALUE_REQUIRED, "<value>", nullptr, nullptr, -1, nullptr,
294 "[DEPRECATED, use /kbd:fn-key:<value>] Function key value" },
295 { "kbd-list", COMMAND_LINE_VALUE_FLAG | COMMAND_LINE_PRINT, nullptr, nullptr, nullptr, -1,
296 nullptr, "[DEPRECATED, use /list:kbd] List keyboard layouts" },
297 { "kbd-scancode-list", COMMAND_LINE_VALUE_FLAG | COMMAND_LINE_PRINT, nullptr, nullptr, nullptr,
298 -1, nullptr, "[DEPRECATED, use list:kbd-scancode] List keyboard RDP scancodes" },
299 { "kbd-lang-list", COMMAND_LINE_VALUE_OPTIONAL | COMMAND_LINE_PRINT, nullptr, nullptr, nullptr,
300 -1, nullptr, "[DEPRECATED, use /list:kbd-lang] List keyboard languages" },
301 { "kbd-remap", COMMAND_LINE_VALUE_REQUIRED,
302 "[DEPRECATED, use /kbd:remap] List of <key>=<value>,... pairs to remap scancodes", nullptr,
303 nullptr, -1, nullptr, "Keyboard scancode remapping" },
304 { "kbd-subtype", COMMAND_LINE_VALUE_REQUIRED, "<id>", nullptr, nullptr, -1, nullptr,
305 "[DEPRECATED, use /kbd:subtype]Keyboard subtype" },
306 { "kbd-type", COMMAND_LINE_VALUE_REQUIRED, "<id>", nullptr, nullptr, -1, nullptr,
307 "[DEPRECATED, use /kbd:type] Keyboard type" },
308 { "kbd-unicode", COMMAND_LINE_VALUE_FLAG, "", nullptr, nullptr, -1, nullptr,
309 "[DEPRECATED, use /kbd:unicode[:on|off]] Send unicode symbols, e.g. use the local "
310 "keyboard map. ATTENTION: Does not work with every "
311 "RDP server!" },
312#endif
313 { "kerberos", COMMAND_LINE_VALUE_REQUIRED,
314 "[kdc-url:<url>,lifetime:<time>,start-time:<time>,renewable-lifetime:<time>,cache:<path>,"
315 "armor:<path>,pkinit-anchors:<path>,pkcs11-module:<name>]",
316 nullptr, nullptr, -1, nullptr, "Kerberos options" },
317 { "load-balance-info", COMMAND_LINE_VALUE_REQUIRED, "<info-string>", nullptr, nullptr, -1,
318 nullptr, "Load balance info" },
319 { "list", COMMAND_LINE_VALUE_REQUIRED | COMMAND_LINE_PRINT,
320 "[kbd|kbd-scancode|kbd-lang[:<value>]|smartcard[:[pkinit-anchors:<path>][,pkcs11-module:<"
321 "name>]]|"
322 "monitor|tune|timezones]",
323 "List available options for subcommand", nullptr, -1, nullptr,
324 "List available options for subcommand" },
325 { "log-filters", COMMAND_LINE_VALUE_REQUIRED, "<tag>:<level>[,<tag>:<level>[,...]]", nullptr,
326 nullptr, -1, nullptr, "Set logger filters, see wLog(7) for details" },
327 { "log-level", COMMAND_LINE_VALUE_REQUIRED, "[OFF|FATAL|ERROR|WARN|INFO|DEBUG|TRACE]", nullptr,
328 nullptr, -1, nullptr, "Set the default log level, see wLog(7) for details" },
329 { "max-fast-path-size", COMMAND_LINE_VALUE_REQUIRED, "<size>", nullptr, nullptr, -1, nullptr,
330 "Specify maximum fast-path update size" },
331 { "max-loop-time", COMMAND_LINE_VALUE_REQUIRED, "<time>", nullptr, nullptr, -1, nullptr,
332 "Specify maximum time in milliseconds spend treating packets" },
333 { "menu-anims", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueFalse, nullptr, -1, nullptr,
334 "menu animations" },
335 { "microphone", COMMAND_LINE_VALUE_OPTIONAL,
336 "[sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>]", nullptr,
337 nullptr, -1, "mic", "Audio input (microphone)" },
338#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
339 { "smartcard-list", COMMAND_LINE_VALUE_FLAG | COMMAND_LINE_PRINT, nullptr, nullptr, nullptr, -1,
340 nullptr, "[DEPRECATED, use /list:smartcard] List smartcard information" },
341 { "monitor-list", COMMAND_LINE_VALUE_FLAG | COMMAND_LINE_PRINT, nullptr, nullptr, nullptr, -1,
342 nullptr, "[DEPRECATED, use /list:monitor] List detected monitors" },
343#endif
344 { "monitors", COMMAND_LINE_VALUE_REQUIRED, "<id>[,<id>[,...]]", nullptr, nullptr, -1, nullptr,
345 "[experimental] Select monitors to use (only effective in fullscreen or multimonitor mode)" },
346 { "mouse-motion", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueTrue, nullptr, -1, nullptr,
347 "Send mouse motion events" },
348 { "mouse-relative", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueFalse, nullptr, -1, nullptr,
349 "Send mouse motion with relative addressing" },
350 { "mouse", COMMAND_LINE_VALUE_REQUIRED, "[relative:[on|off],grab:[on|off]]", nullptr, nullptr,
351 -1, nullptr,
352 "Mouse related options:\n"
353 " * relative: send relative mouse movements if supported by server\n"
354 " * grab: grab the mouse if within the window" },
355#if defined(CHANNEL_TSMF_CLIENT)
356 { "multimedia", COMMAND_LINE_VALUE_OPTIONAL, "[sys:<sys>,][dev:<dev>,][decoder:<decoder>]",
357 nullptr, nullptr, -1, "mmr", "[DEPRECATED], use /video] Redirect multimedia (video)" },
358#endif
359 { "multimon", COMMAND_LINE_VALUE_BOOL | COMMAND_LINE_VALUE_OPTIONAL, "on|off|force",
360 BoolValueFalse, nullptr, -1, nullptr, "Use multiple monitors" },
361 { "multitouch", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueFalse, nullptr, -1, nullptr,
362 "Redirect multitouch input" },
363 { "multitransport", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueTrue, nullptr, -1, nullptr,
364 "Support multitransport protocol" },
365 { "nego", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueTrue, nullptr, -1, nullptr,
366 "protocol security negotiation" },
367 { "network", COMMAND_LINE_VALUE_REQUIRED,
368 "[invalid|modem|broadband|broadband-low|broadband-high|wan|lan|auto]", nullptr, nullptr, -1,
369 nullptr, "Network connection type" },
370 { "nsc", COMMAND_LINE_VALUE_FLAG, nullptr, nullptr, nullptr, -1, "nscodec", "NSCodec support" },
371#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
372 { "offscreen-cache", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueFalse, nullptr, -1, nullptr,
373 "[DEPRECATED, use /cache:offscreen[:on|off]] offscreen bitmap cache" },
374#endif
375 { "orientation", COMMAND_LINE_VALUE_REQUIRED, "[0|90|180|270]", nullptr, nullptr, -1, nullptr,
376 "Orientation of display in degrees" },
377 { "old-license", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueFalse, nullptr, -1, nullptr,
378 "Use the old license workflow (no CAL and hwId set to 0)" },
379 { "p", COMMAND_LINE_VALUE_OPTIONAL, "<password>", nullptr, nullptr, -1, nullptr,
380 "Password. Pass /p without arguments to silences interactive password prompts if no "
381 "credentials are required for the connection." },
382#if defined(CHANNEL_PARALLEL_CLIENT)
383 { "parallel", COMMAND_LINE_VALUE_OPTIONAL, "<name>[,<path>]", nullptr, nullptr, -1, nullptr,
384 "Redirect parallel device" },
385#endif
386 { "parent-window", COMMAND_LINE_VALUE_REQUIRED, "<window-id>", nullptr, nullptr, -1, nullptr,
387 "Parent window id" },
388 { "pcb", COMMAND_LINE_VALUE_REQUIRED, "<blob>", nullptr, nullptr, -1, nullptr,
389 "Preconnection Blob" },
390 { "pcid", COMMAND_LINE_VALUE_REQUIRED, "<id>", nullptr, nullptr, -1, nullptr,
391 "Preconnection Id" },
392 { "pheight", COMMAND_LINE_VALUE_REQUIRED, "<height>", nullptr, nullptr, -1, nullptr,
393 "Physical height of display (in millimeters)" },
394 { "play-rfx", COMMAND_LINE_VALUE_REQUIRED, "<pcap-file>", nullptr, nullptr, -1, nullptr,
395 "Replay rfx pcap file" },
396 { "port", COMMAND_LINE_VALUE_REQUIRED, "<number>", nullptr, nullptr, -1, nullptr,
397 "Server port" },
398 { "suppress-output", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueTrue, nullptr, -1, nullptr,
399 "suppress output when minimized" },
400 { "print-reconnect-cookie", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueFalse, nullptr, -1,
401 nullptr, "Print base64 reconnect cookie after connecting" },
402 { "printer", COMMAND_LINE_VALUE_OPTIONAL, "<name>[,<driver>[,default]]", nullptr, nullptr, -1,
403 nullptr, "Redirect printer device" },
404 { "proxy", COMMAND_LINE_VALUE_REQUIRED, "[<proto>://][<user>:<password>@]<host>[:<port>]",
405 nullptr, nullptr, -1, nullptr,
406 "Proxy settings: override env. var (see also environment variable below). Protocol "
407 "\"socks5\" should be given explicitly where \"http\" is default." },
408 { "pth", COMMAND_LINE_VALUE_REQUIRED, "<password-hash>", nullptr, nullptr, -1, "pass-the-hash",
409 "Pass the hash (restricted admin mode)" },
410 { "pwidth", COMMAND_LINE_VALUE_REQUIRED, "<width>", nullptr, nullptr, -1, nullptr,
411 "Physical width of display (in millimeters)" },
412#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
413 { "rdp2tcp", COMMAND_LINE_VALUE_REQUIRED, "<executable path[:arg...]>", nullptr, nullptr, -1,
414 nullptr, "TCP redirection" },
415#endif
416 { "reconnect-cookie", COMMAND_LINE_VALUE_REQUIRED, "<base64-cookie>", nullptr, nullptr, -1,
417 nullptr, "Pass base64 reconnect cookie to the connection" },
418 { "redirect-prefer", COMMAND_LINE_VALUE_REQUIRED, "<FQDN|IP|NETBIOS>,[...]", nullptr, nullptr,
419 -1, nullptr, "Override the preferred redirection order" },
420 { "relax-order-checks", COMMAND_LINE_VALUE_FLAG, nullptr, nullptr, nullptr, -1,
421 "relax-order-checks",
422 "Do not check if a RDP order was announced during capability exchange, only use when "
423 "connecting to a buggy server" },
424 { "restricted-admin", COMMAND_LINE_VALUE_FLAG, nullptr, nullptr, nullptr, -1, "restrictedAdmin",
425 "Restricted admin mode" },
426#ifdef CHANNEL_RDPEAR_CLIENT
427 { "remoteGuard", COMMAND_LINE_VALUE_FLAG, nullptr, nullptr, nullptr, -1, "remoteGuard",
428 "Remote guard credentials" },
429#endif
430 { "rfx", COMMAND_LINE_VALUE_FLAG, nullptr, nullptr, nullptr, -1, nullptr, "RemoteFX" },
431 { "rfx-mode", COMMAND_LINE_VALUE_REQUIRED, "[image|video]", nullptr, nullptr, -1, nullptr,
432 "RemoteFX mode" },
433 { "scale", COMMAND_LINE_VALUE_REQUIRED, "[100|140|180]", "100", nullptr, -1, nullptr,
434 "Scaling factor of the display" },
435 { "scale-desktop", COMMAND_LINE_VALUE_REQUIRED, "<percentage>", "100", nullptr, -1, nullptr,
436 "Scaling factor for desktop applications (value between 100 and 500)" },
437 { "scale-device", COMMAND_LINE_VALUE_REQUIRED, "100|140|180", "100", nullptr, -1, nullptr,
438 "Scaling factor for app store applications" },
439 { "sec", COMMAND_LINE_VALUE_REQUIRED,
440 "rdp[:[on|off]]|tls[:[on|off]]|nla[:[on|off]]|ext[:[on|off]]|aad[:[on|off]]", nullptr,
441 nullptr, -1, nullptr,
442 "Force specific protocol security. e.g. /sec:nla enables NLA and disables all others, while "
443 "/sec:nla:[on|off] just toggles NLA" },
444#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
445 { "sec-ext", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueTrue, nullptr, -1, nullptr,
446 "[DEPRECATED, use /sec:ext] NLA extended protocol security" },
447 { "sec-nla", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueTrue, nullptr, -1, nullptr,
448 "[DEPRECATED, use /sec:nla] NLA protocol security" },
449 { "sec-rdp", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueTrue, nullptr, -1, nullptr,
450 "[DEPRECATED, use /sec:rdp] RDP protocol security" },
451 { "sec-tls", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueTrue, nullptr, -1, nullptr,
452 "[DEPRECATED, use /sec:tls] TLS protocol security" },
453#endif
454#if defined(CHANNEL_SERIAL_CLIENT)
455 { "serial", COMMAND_LINE_VALUE_OPTIONAL, "<name>[,<path>[,<driver>[,permissive]]]", nullptr,
456 nullptr, -1, "tty", "Redirect serial device" },
457#endif
458 { "server-name", COMMAND_LINE_VALUE_REQUIRED, "<name>", nullptr, nullptr, -1, nullptr,
459 "User-specified server name to use for validation (TLS, Kerberos)" },
460 { "shell", COMMAND_LINE_VALUE_REQUIRED, "<shell>", nullptr, nullptr, -1, nullptr,
461 "Alternate shell" },
462 { "shell-dir", COMMAND_LINE_VALUE_REQUIRED, "<dir>", nullptr, nullptr, -1, nullptr,
463 "Shell working directory" },
464 { "size", COMMAND_LINE_VALUE_REQUIRED, "<width>x<height> or <percent>%[wh]", "1024x768",
465 nullptr, -1, nullptr, "Screen size" },
466 { "smart-sizing", COMMAND_LINE_VALUE_BOOL | COMMAND_LINE_VALUE_OPTIONAL,
467 "<width>x<height>|on|off", BoolValueFalse, nullptr, -1, nullptr,
468 "Scale remote desktop to window size" },
469 { "smartcard", COMMAND_LINE_VALUE_OPTIONAL, "<str>[,<str>...]", nullptr, nullptr, -1, nullptr,
470 "Redirect the smartcard devices containing any of the <str> in their names." },
471 { "smartcard-logon", COMMAND_LINE_VALUE_OPTIONAL,
472 "[[cert:<path>|cert:<base64(PEM)>],[key:<path>|key:<base64(PEM)>],pin:<pin>,csp:<csp "
473 "name>,reader:<reader>,card:<card>]",
474 nullptr, nullptr, -1, nullptr,
475 "Activates Smartcard (optional certificate) Logon authentication." },
476 { "sound", COMMAND_LINE_VALUE_OPTIONAL,
477 "[sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>,][latency:<"
478 "latency>,][quality:<quality>]",
479 nullptr, nullptr, -1, "audio", "Audio output (sound)" },
480 { "span", COMMAND_LINE_VALUE_FLAG, nullptr, nullptr, nullptr, -1, nullptr,
481 "Span screen over multiple monitors" },
482 { "spn-class", COMMAND_LINE_VALUE_REQUIRED, "<service-class>", nullptr, nullptr, -1, nullptr,
483 "SPN authentication service class" },
484 { "ssh-agent", COMMAND_LINE_VALUE_FLAG, nullptr, nullptr, nullptr, -1, "ssh-agent",
485 "SSH Agent forwarding channel" },
486 { "sspi-module", COMMAND_LINE_VALUE_REQUIRED, "<SSPI module path>", nullptr, nullptr, -1,
487 nullptr, "SSPI shared library module file path" },
488 { "winscard-module", COMMAND_LINE_VALUE_REQUIRED, "<WinSCard module path>", nullptr, nullptr,
489 -1, nullptr, "WinSCard shared library module file path" },
490 { "disable-output", COMMAND_LINE_VALUE_FLAG, nullptr, nullptr, nullptr, -1, nullptr,
491 "Deactivate all graphics decoding in the client session. Useful for load tests with many "
492 "simultaneous connections" },
493 { "t", COMMAND_LINE_VALUE_REQUIRED, "<title>", nullptr, nullptr, -1, "title", "Window title" },
494 { "themes", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueTrue, nullptr, -1, nullptr, "themes" },
495 { "timeout", COMMAND_LINE_VALUE_REQUIRED, "<time in ms>", "9000", nullptr, -1, "timeout",
496 "Advanced setting for high latency links: Adjust connection timeout, use if you encounter "
497 "timeout failures with your connection" },
498 { "timezone", COMMAND_LINE_VALUE_REQUIRED, "<windows timezone>", nullptr, nullptr, -1, nullptr,
499 "Use supplied windows timezone for connection (requires server support), see /list:timezones "
500 "for allowed values" },
501 { "tls", COMMAND_LINE_VALUE_REQUIRED, "[ciphers|seclevel|secrets-file|enforce]", nullptr,
502 nullptr, -1, nullptr,
503 "TLS configuration options:"
504 " * ciphers:[netmon|ma|<cipher names>]\n"
505 " * seclevel:<level>, default: 1, range: [0-5] Override the default TLS security level, "
506 "might be required for older target servers. Details at "
507 "https://docs.openssl.org/3.0/man3/SSL_CTX_set_security_level/\n"
508 " * secrets-file:<filename>\n"
509 " * enforce[:[ssl3|1.0|1.1|1.2|1.3]] Force use of SSL/TLS version for a connection. Some "
510 "servers have a buggy TLS "
511 "version negotiation and might fail without this. Defaults to TLS 1.2 if no argument is "
512 "supplied. Use 1.0 for windows 7" },
513#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
514 { "tls-ciphers", COMMAND_LINE_VALUE_REQUIRED, "[netmon|ma|ciphers]", nullptr, nullptr, -1,
515 nullptr, "[DEPRECATED, use /tls:ciphers] Allowed TLS ciphers" },
516 { "tls-seclevel", COMMAND_LINE_VALUE_REQUIRED, "<level>", "1", nullptr, -1, nullptr,
517 "[DEPRECATED, use /tls:seclevel] TLS security level - defaults to 1" },
518 { "tls-secrets-file", COMMAND_LINE_VALUE_REQUIRED, "<filename>", nullptr, nullptr, -1, nullptr,
519 "[DEPRECATED, use /tls:secrets:file] File were TLS secrets will be stored in the "
520 "SSLKEYLOGFILE format" },
521 { "enforce-tlsv1_2", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueFalse, nullptr, -1, nullptr,
522 "[DEPRECATED, use /tls:enforce:1.2] Force use of TLS1.2 for connection. Some "
523 "servers have a buggy TLS version negotiation and "
524 "might fail without this" },
525#endif
526 { "toggle-fullscreen", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueTrue, nullptr, -1, nullptr,
527 "Alt+Ctrl+Enter to toggle fullscreen" },
528 { "tune", COMMAND_LINE_VALUE_REQUIRED, "<setting:value>,<setting:value>", "", nullptr, -1,
529 nullptr, "[experimental] directly manipulate freerdp settings, use with extreme caution!" },
530#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
531 { "tune-list", COMMAND_LINE_VALUE_FLAG | COMMAND_LINE_PRINT, nullptr, nullptr, nullptr, -1,
532 nullptr, "[DEPRECATED, use /list:tune] Print options allowed for /tune" },
533#endif
534 { "u", COMMAND_LINE_VALUE_REQUIRED, "[[<domain>\\]<user>|<user>[@<domain>]]", nullptr, nullptr,
535 -1, nullptr, "Username" },
536 { "unmap-buttons", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueFalse, nullptr, -1, nullptr,
537 "Let server see real physical pointer button" },
538#ifdef CHANNEL_URBDRC_CLIENT
539 { "usb", COMMAND_LINE_VALUE_REQUIRED,
540 "[dbg,][id:<vid>:<pid>#...,][addr:<bus>:<addr>#...,][auto]", nullptr, nullptr, -1, nullptr,
541 "Redirect USB device" },
542#endif
543 { "v", COMMAND_LINE_VALUE_REQUIRED, "<server>[:port]", nullptr, nullptr, -1, nullptr,
544 "Server hostname|URL|IPv4|IPv6 or vsock://<number> or /some/path/to/pipe or |:1234 to pass a "
545 "TCP socket to use" },
546 { "vc", COMMAND_LINE_VALUE_REQUIRED, "<channel>[,<options>]", nullptr, nullptr, -1, nullptr,
547 "Static virtual channel" },
548 { "version", COMMAND_LINE_VALUE_FLAG | COMMAND_LINE_PRINT_VERSION, nullptr, nullptr, nullptr,
549 -1, nullptr, "Print version" },
550 { "video", COMMAND_LINE_VALUE_FLAG, nullptr, nullptr, nullptr, -1, nullptr,
551 "Video optimized remoting channel" },
552 { "prevent-session-lock", COMMAND_LINE_VALUE_OPTIONAL, "<time in sec>", nullptr, nullptr, -1,
553 nullptr,
554 "Prevent session locking by injecting fake mouse motion events to the server "
555 "when the connection is idle (default interval: 180 seconds)" },
556 { "vmconnect", COMMAND_LINE_VALUE_OPTIONAL, "<vmid>", nullptr, nullptr, -1, nullptr,
557 "Hyper-V console (use port 2179, disable negotiation)" },
558 { "w", COMMAND_LINE_VALUE_REQUIRED, "<width>", "1024", nullptr, -1, nullptr, "Width" },
559 { "wallpaper", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueTrue, nullptr, -1, nullptr,
560 "wallpaper" },
561 { "window-drag", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueFalse, nullptr, -1, nullptr,
562 "full window drag" },
563 { "window-position", COMMAND_LINE_VALUE_REQUIRED, "<xpos>x<ypos>", nullptr, nullptr, -1,
564 nullptr, "window position" },
565 { "wm-class", COMMAND_LINE_VALUE_REQUIRED, "<class-name>", nullptr, nullptr, -1, nullptr,
566 "Set the WM_CLASS hint for the window instance" },
567 { "workarea", COMMAND_LINE_VALUE_FLAG, nullptr, nullptr, nullptr, -1, nullptr,
568 "Use available work area" },
569 { nullptr, 0, nullptr, nullptr, nullptr, -1, nullptr, nullptr }
570};
571#endif /* CLIENT_COMMON_CMDLINE_H */