So Windows Vista finally allows to enable ClearType font smoothing for Remote Desktop / Terminal Services sessions. Update: Windows XP SP3 does too!
If you try to connect to a machine running Windows XP SP 3 or later using rdesktop, you won’t get smoothed font typing since at the time of this writing rdesktop does not officially offer an option to control this feature. However, here is a workaround:
rdesktop allows to specify the RDP5 experience via the -x experience switch.
One can either define one of three default experiences (modem, broadband, lan) or one can specify a raw hex value that is send to the server.
NOTE: You can skip over this rather technical part, if you’re not interested in the details. You’ll find the workaround below.
This hex value is actually a combination of defined bit flags. After some tinkering I found that the hex value 0x80 will enable font smoothing for the connection.
The file constants.h of the rdesktop sources contains these flags:
#define RDP5_DISABLE_NOTHING 0x00 #define RDP5_NO_WALLPAPER 0x01 #define RDP5_NO_FULLWINDOWDRAG 0x02 #define RDP5_NO_MENUANIMATIONS 0x04 #define RDP5_NO_THEMING 0x08 #define RDP5_NO_CURSOR_SHADOW 0x20 #define RDP5_NO_CURSORSETTINGS 0x40 /* disables cursor blinking */
So, naturally an additional flag constant can be defined like this:
#define RDP5_ENABLE_FONT_SMOOTHING 0x80
The file rdesktop.c would have to be extended preferably with an additional argument that controls the font smoothing.
If you want to use font smoothing with rdesktop now you have to combine the flags (bitwise OR, addition will do too) and specify the result via the -x switch.
Here is the workaround for the three defaults mentioned above:
rdesktop -x 0x8F mywinserver
# equals the modem default + font smoothing
rdesktop -x 0x81 mywinserver
# equals the broadband default + font smoothing
rdesktop -x 0x80 mywinserver
# equals the LAN default + font smoothing
You can set the new experience options with the IMsRdpClientAdvancedSettings::put_PerformanceFlags, method. The flags for desktop composition and font smoothing are:
TS_PERF_ENABLE_FONT_SMOOTHING 0x00000080
and
TS_PERF_ENABLE_DESKTOP_COMPOSITION 0x00000100
Great Post!
Excellent! Specifying -x 0x80 in my rdesktop command line gives me ClearType fonts when connecting to my Vista system. Thanks!
What can you tell me about using Remote Desktop , connecting a VISTA client to a SERVER 2003 system? I have downloaded a MS hotfix to the server , turned on “Font Smoothing) in the RDC Experience tab, turned OFF “font smooting” in the REC Experience tab with no luck. The basic Windows menu texts are not too bas, but desk in the 3rd party application is horrible.
Turning on font smoothing for the XP clients via the RCD Experience tab works great.
Thank You in Advance.
What can you tell me about using Remote Desktop , connecting a VISTA client to a SERVER 2003 system?
rdesktop to a windows 2003 host, LAN settings font smoothing is:
rdesktop -x 0x90 !
Tim, I’m not sure if Windows Server 2003 already supports Cleartype font smoothing. I know that Windows XP does support it in RDC sessions since SP3. So perhaps there is a hotfix or SP available to enable this feature in Windows Server 2003, too?
Thank you! This tip made my day!
a dream! thx ! :D
greetings from germany
µatthias =)
You rock dude!!!
This makes life so much more pleasant for me.
A big thank you from my colleagues and I!!
The 0x80 0x90 doesn’t work for me, I am connecting to XP from RHEL. Did anyone get this work for XP?
Support for ClearType in RDP sessions was added with Windows XP Service Pack 3. Did you install it?
Also make sure to use the newest version of rdesktop.
Works great using Ubuntu to RDP into a Windows 7 box. Thanks!
Excellent tip. I was getting fed up having to set it manually every time I logged in. Thanks.
Today you should use xfreerdp instead of rdesktop.
Use “-x 180” to get font smoothing and desktop composition. Good for lan.
xfreerdp -u someusername -p somepassword -f –rfx -x 180 some_hostname_or_ipaddress
I’m seing it as a bit slower than without font smoothing – but it’s worth it.
Thanks!
Thanks for the post.
I’m no expert and I do not understand how to combine the flags.
If for example i want all active (0x80) except the window animations (I’m using a powerline and the animation lags a lot)
Thanks again