Small Adjustable Windows Screen
Hi, I’m David Bélanger, a program manager on the Remote Desktop team working on the different Windows Remote Desktop clients.
In Windows 8.1 and Windows Server 2012 R2 we made some changes to Remote Desktop Connection (mstsc.exe) that greatly improve the experience for a few core scenarios that you might be using every day. In this blog, I discuss the improvements made to dynamically update the resolution and scaling level from the local system to the remote session and how this impacts your remote desktop experience.
Changes in Windows 8.1
Let’s start with the actual changes that we made in Windows 8.1 that will improve your remoting experience.
Dynamic resolution update
One of the changes we’ve made as part of RDP 8.1 is the addition of a new message that can be sent from the client to the server to dynamically update the resolution inside the remote session to match what is available on the client without the need to do a complete reconnect of the session. Previously, we only set the remote resolution during the initial connection. With this change, the resolution is set at connect time and can be updated when the client-side resolution changes while the app is in full screen mode, or when the app transitions from windowed mode to full screen. The resolution change is quick enough to be practically the same as a local change.
Dynamic scaling level update
With the proliferation of High DPI devices (high resolution displays in a small screen size) such as the Microsoft Surface Pro 2 device, it is common for folks like me who need a little extra visual help to increase the size of the items on the screen by changing the scaling level in the Display options.
Figure 1: Changing the scaling level in the Display options in Control Panel
The second change I wanted to point out is that Remote Desktop Connection now also updates the scaling level in the remote session to match the client-side configuration. This includes the per-monitor scaling level, which is new in Windows 8.1 and makes it a lot easier to use monitors of different sizes such as a 10-inch Surface device connected to a 24-inch monitor.
In contrast to changing the display resolution, changing the system scaling level requires a logoff/logon so that non-dynamic DPI aware applications can load the appropriate resources for the new scaling level. Between the time you change the scaling level and log off your session, you will still notice a difference as Windows will dynamically scale applications to the new scaling level, but the result might vary slightly. For more details about this, see Windows 8.1 DPI Scaling Enhancements.
Similar to the resolution, the scaling level is sent to the remote system at connection time, when the app is entering full screen mode or when a change happens while it’s in full screen. When connecting to a new session, the scaling level is applied and applications in the session will load the appropriate resources. If connecting to an existing session that had a different scaling level than the client-side system or when the scaling level changes dynamically, the scaling level will be applied but will be handled by Windows as mentioned previously. Changing the scaling factor inside the remote session is disabled; you must change it on the local PC and it will automatically be updated in the session.
We’ve made a few changes around how Remote Desktop Connection handles full screen that are worth calling out.
To leverage the dynamic update features for resolution and scaling level, you must start the desktop session with a Display configuration set to Full Screen on the Display tab. Doing so tells Remote Desktop Connection to manage the resolution and scaling level for you and keep it in sync with changes happening locally.
Figure 2: Selecting the Display Configuration in Remote Desktop Connection
The Display tab also allows you to connect using a specific static resolution (by specifying a different resolution). If you connect with a specific resolution, you will not need to worry about the resolution changing during the session. This can be useful if you have applications or hosts that require a lower resolution.
Note: The dynamic update features are always enabled for RemoteApp programs.
We’ve also made it easier to go from having the remote session in windowed mode to full screen. First, the Ctrl+Alt+Break keyboard shortcut still allows you to switch between window and full screen mode. Next, you can simply maximize the window and it will go to full screen mode if the local and remote resolutions already match. Note that if the connection is started with a Display configuration of Full screen, the remote resolution is updated when maximizing and the app will automatically go into full screen mode on maximize. Lastly, for a more explicit action, there is a new Full screen menu item available in the system menu.
Figure 3: Full screen option in the system menu for Remote Desktop Connection
We’ve made a small change in the way we handle multi-monitor since we now support dynamically changing the resolution including adding and removing monitors. To handle this, the Use all my monitors for the remote session check box on the Display tab is always enabled (even if you only have a single monitor attached to your local PC), so you can choose whether you prefer single or multi-monitor mode at any point.
Figure 4: Use all my monitors for the remote session option in Remote Desktop Connection
This allows you to start a session in multi-monitor mode with only one monitor, attach a new monitor at a later time, and start using it in the session right away without requiring a disconnect and reconnect. You can still start a session in single monitor mode whether you have a single or multiple monitors attached if you only want the session to be using one monitor at a time.
The above changes are great, but what do they really mean for you during your day-to-day remote desktop usage? In this section, I cover 5 improved scenarios resulting from the features above.
Scenario 1: Moving to a different monitor
In this scenario, you are using a system that has multiple monitors and at least two of them have a different resolution. You’ve also decided that you wanted the remote desktop to use only one monitor so you can continue using local applications or a different remote desktop on the second monitor. You did this by leaving the Use all my monitors for the remote session check box unchecked when connecting.
If after some time you decide to move the remote session to a new monitor with a different resolution, it’s as simple as dragging the session to the other monitor and going back to full screen mode. This will update the resolution and everything appears as expected for that monitor. No more letterboxing or dealing with scrollbars.