"Always on top" would be a property of a window, the client could set (or reset) this on the MirWindowSpec. The WM policy gets to decide whether (and how) to respect this property.
There's currently no support for such a property in libmirserver's SurfaceStack - so addressing that would be a pre-requisite to introducing such a property.
Case 3: (comment #6)
If there were some generic "window manager menu" that toolkits could request then that might be requested with a similar mechanism to case 1. But I've not seen a requirement for this (yet).
I think there are distinct cases here:
Case 1: (easy I hope)
The client initiating a user-drag/resize is analogous to the existing input focus request. Vis:
void mir_window_ request_ user_move( MirWindow* window, MirCookie const* cookie); request_ user_resize( MirWindow* window, MirCookie const* cookie);
void mir_window_
Should be passed to the server, validated and handled by the WM policy exactly the same as:
void mir_window_ raise(MirWindow * window, MirCookie const* cookie);
How the client decides on calling these (via a menu or not) isn't really the issue.
This is addressed by lp:~alan-griffiths/mir/client-initiates-user-move-and-resize/+merge/320917
Case 2:
"Always on top" would be a property of a window, the client could set (or reset) this on the MirWindowSpec. The WM policy gets to decide whether (and how) to respect this property.
There's currently no support for such a property in libmirserver's SurfaceStack - so addressing that would be a pre-requisite to introducing such a property.
Case 3: (comment #6)
If there were some generic "window manager menu" that toolkits could request then that might be requested with a similar mechanism to case 1. But I've not seen a requirement for this (yet).