FreeRDP/FreeRDP — Issue #205: RemoteApp window resize / placement by local window manager
Author: sunds
Created: 2011-11-16 19:16:25+00:00
State: open

RAIL windows are implemented as normal X windows with hints to the window manager to disable the usual window decorations. However, the X window manager is free to override the X window clients requests for moves or resizes. This commonly happens when you try to drag a window off the screen, or over a menu bar. Some windows managers, like Ubuntu's Compiz, are more aggressive than others, like Metacity.

The problem arises because when the X window is not placed exactly where the RDP server requested, the coordinates of the two are out of sync. Examples of problems this causes include pops, menus, and tooltips not being placed correctly, or the window itself not being drawn correctly.

There are several possible solutions to this problem. One is to simply tell the RDP server the window has been moved. I've implemented this, and while it makes the situation better, it results in some jumping as the two window managers fight each another over where the window should be placed. Another options is to temporarily turn on override redirect for the X window while the RDP server moves it. This may avoid some of the moves by the X window manager, but perhaps not all of them. The solution I'm looking at now is to finish the implementation of local moves, coupled with the update of the RDP server whenever the window is moved for other cases. Local moves delegate window positioning the client, so that the local X manager can decide the final placement rather than having the RDP server and X server fight over where the window is placed.