Better multi-monitor support in GNOME Flashback

GNOME Flashback 3.36 will have better multi-monitor support. Currently due to limitation in existing Extended Window Manager Hints specification it is impossible to have panels between two monitors. The problem is with existing _NET_WM_STRUT, _NET_WM_STRUT_PARTIAL and _NET_WORKAREA properties.

_NET_WM_STRUT and _NET_WM_STRUT_PARTIAL properties are used by panels and/or docks to reserve space at the edge of screen. _NET_WORKAREA property is calculated by window manager and used by applications that might be interested in available workarea. For example GTK3 use workarea to avoid placing menus under panels or window manager itself use that info when maximizing windows.

This works fine if you have one monitor and not so good if you have multiple monitors. Of course that depends on monitors you have, how they are configured and how you want place your panels/docks.

The first problem is that strut properties can not be used to reserve space at the edge of monitor, second problem is that workarea is single rectangle for whole screen. Most common user visible problem is that windows are maximized under panels.

The original goal was to update Extended Window Manager Hints specification by adding two new properties - _NET_WORKAREAS_Dn and _NET_WM_STRUT_AREA. More info available in this merge request.

As development has shifted to Wayland and there are no active wm-spec maintainers it was decided that it is not good idea to update specification. Last commit updating specification is from 2013...

Thanks to GTK developer Emmanuele Bassi this did not turn into dead end. He suggested to change property namespace from _NET to _GTK, reviewed and merged my merge requests into GTK3 and GTK4.

_GTK_WORKAREAS_Dn property support is merged in Compiz, Metacity and Mutter.

_NET_WM_STRUT_AREA property was renamed to _GNOME_WM_STRUT_AREA and support for it was merged into Metacity and GNOME Panel. There is pending merge request also for Compiz.

No Comments

Leave a reply

You must be logged in to post a comment!