Re: Improving work areas with multiple monitors



Hi Alberts and Martin,

On Mon, Dec 31, 2018 at 09:44:24AM +0100, Martin Flöser wrote:
Am 2018-12-27 22:22, schrieb Alberts Muktupāvels via wm-spec-list:
First I think there should be new property for struts because existing
properties can not be used to set struts on edges between two
monitors. New property could be named _NET_WM_STRUT_AREA and used to
define rectangular area (x, y, width and height) that should be
excluded from work area. This property will need to follow at least
two rules:
- at least one edge of area must match with monitor edge. The window
manager must ignore strut if it is not placed at monitor edge.
- if strut appears on edge between two monitors it should be ignored
when calculating _NET_WORKAREA to ensure backward compatibility.

sounds fine to me.

As a note: in KWin we allow panels on shared edges to set a strut with the existing protocol. We just decided that a strut is not allowed to cover a complete screen. Technically it's a violation of the current protocol, but might be a better idea than introducing yet another property.

It could be a simple textual addition like: "Struts covering a monitor completely are ignored for that monitor"

Note that this was discussed back in 2007 and 2009:
https://mail.gnome.org/archives/wm-spec-list/2007-June/msg00000.html
https://mail.gnome.org/archives/wm-spec-list/2009-November/msg00004.html

There was even a proposal for `_NET_WM_WORKAREAS` and `_NET_WM_STRUT_AREAS`: https://mail.gnome.org/archives/wm-spec-list/2009-November/msg00005.html that was never merged to wm-spec. :-(

Just like KWin, xmonad and likely a few other tiling WMs implement the same workaround of not allowing struts to cover an entire screen. That's been there since 2009, at least.

But I guess I'm late to the party and we'll need to implement `_GNOME_WM_STRUT_AREA` as well, as that's now a thing in gnome-panel and elsewhere, and we're getting bug reports about it. :-/

--
Tomáš "liskin" ("Pivník") Janoušek, https://work.lisk.in/


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]