granolaonicecream / xdpager

Simple X11 based desktop pager
10 stars 0 forks source link

Windows that span multiple desktops not displaying properly #2

Open granolaonicecream opened 2 years ago

granolaonicecream commented 2 years ago

Problem

Whenever a window has geometry that crosses from one desktop into another, only the subsection on the desktop containing the window origin is rendered. Consequently, if a window's origin is moved out of the bounds of any desktop (e.g. negative coordinates) it is not rendered at all.

Implementation

A first idea is to simply create 1 or more MiniWindow instances as necessary. A theoretical window spread across three desktops would therefore have three MiniWindows to draw. The challenge is to consider scale factor per subsection, and to keep the MiniWindows linked together in order to appropriately highlight selected windows in the search mode.

granolaonicecream commented 2 years ago

I'm unsure if this is possible in X without a window manager extension. The problem comes down to not knowing which virtual desktop/workspace is assigned to each monitor/xinerama screen. Even if you can tell a window extends to another monitor, without knowing the respective workspace(s) for it, the rest of the window preview can't be drawn.

An example extension that I think could solve this is an xprop on the root window akin to: _XINERAMA_DESKTOPS(STRING) = "2:0+0" "5:2560+0" This would have to update similar to _NET_CURRENT_DESKTOP but would allow knowing which Xinerama screen correlates to which desktop.

Until such an extension is implemented or someone has another idea, this issue will get put on hold.