Skip to main content

Overview

FreeRDP supports several strategies for handling high-DPI displays and window resizing. The right approach depends on whether you want the remote session to adapt its resolution at runtime or whether you want the client to scale a fixed-resolution session to fit the window.

Build requirements

Graphics scaling (required for /smart-sizing and high-DPI bitmap scaling) requires one of:
At least one scaling backend must be present for /smart-sizing to function. Dynamic resolution (/dynamic-resolution) does not require a scaling library because the remote session changes its own resolution rather than scaling bitmaps on the client.
Example build with swscale:

Dynamic resolution

With /dynamic-resolution, FreeRDP sends a display update to the server whenever the client window is resized. The server re-renders at the new resolution — no client-side bitmap scaling takes place.
/dynamic-resolution and /smart-sizing are mutually exclusive. Specifying both is an error.
Under the hood, enabling /dynamic-resolution sets both FreeRDP_SupportDisplayControl and FreeRDP_DynamicResolutionUpdate. The server must support the Display Control virtual channel (available in Windows 8 / Server 2012 and newer).

Smart-sizing

With /smart-sizing, the remote session keeps its initial resolution and FreeRDP scales the received bitmaps to fit the client window. This works with any server version.
When a target size is supplied, FreeRDP scales to that fixed size regardless of the window dimensions.

Multi-monitor support

Span all monitors

The /multimon flag sends the combined geometry of all connected monitors to the server. Use /multimon:force to send multimon information even if the server has not explicitly advertised support.

Select specific monitors

Up to 16 monitor IDs can be specified as a comma-separated list.

Window size and DPI

For a fixed session resolution without multimon:

Use dynamic resolution so the session always matches the window exactly: