felixfung / skippy-xd

A window selector for X11 with Exposé and live preview Alt-Tab effects and more
GNU General Public License v2.0
19 stars 2 forks source link

PAGING: undefined behaviour when the number of workspaces/virtual desktops are not constant throughout monitors #52

Open felixfung opened 1 year ago

felixfung commented 1 year ago

Reported in #51 by @vredesbyyrd and also in https://www.youtube.com/watch?v=reUDapFGnmQ by @ArijanJ

So far skippy's implementation of multi-monitor paging always assumed that there is constant number of virtual desktops per monitor. E.g. in https://www.youtube.com/watch?v=reUDapFGnmQ in single-monitor setup there are 9 virtual desktops, and in dual-monitor setup there are 9 virtual desktops, each virtual desktop corresponding to 2 monitors.

I have simply assumed this as the EWMH specification.

In awesome and i3 there are "workspaces" which break my assumption and causes undefined/weird behaviour.

image

E.g. here there are 3 workspaces on the main display - main, foto, code, and 2 workspaces on external display - main, photo

copied from https://github.com/felixfung/skippy-xd/issues/51#issuecomment-1684327915

Investigate EWMH specifcation and awesome and i3 workspace specification. Perhaps, paging currently lists/selects EWMH virtual desktops, and listing/selecting of other "workspaces" needs to be supported. Also, the assumption and limitations of libxinerama needs to be explored.

felixfung commented 8 months ago

Update that after long hiatus, I am beginning to work on it. Personal life as well as the amount of research needed has been putting me off this task.

This task might take a bit longer because I need to set up window manager, do research on different workspace specifications and implementations, and the code change I expect would be nontrivial.

felixfung commented 7 months ago

Update that I will have to come back to this task a bit later... been super busy...

felixfung commented 6 months ago

Made this inquiries for awesomewm:

https://www.reddit.com/r/awesomewm/comments/1bbuz8g/awesomewm_workspaces_and_skippyxd/ https://github.com/awesomeWM/awesome/issues/3902

felixfung commented 5 months ago

@vredesbyyrd @ArijanJ

After some investigation it looks like to me (not 100% certain, digging into WMs specifications and implementations.... argggh) it looks to me awesome and i3 are not EWMH compliant, and there are no perfect way to do paging on skippy-xd.

I have made kind of a stupid attempt in #60. Can you please try it out?

felixfung commented 5 months ago

P.S. for awesome, it looks like it requires lua+IPC adapter(s) and then for skippy-xd to read off it... a bit involved particularly when apparently very small effort can replicate expose and paging strictly within the awesome ecosystem.

https://github.com/awesomeWM/awesome/issues/3707#issuecomment-1265800564 https://www.reddit.com/r/awesomewm/comments/1bbuz8g/comment/kuh985h/?utm_source=share&utm_medium=web2x&context=3

vredesbyyrd commented 5 months ago

Hi. Ill test this commit and read that thread asap. Things are a bit extra busy - but I look forward to testing your new work!

felixfung commented 5 months ago

@ArijanJ I tested i3 with multiple monitors, it looks like paging is presenting one more workspace than it should, while the number of screens is correct? I.e., _NET_NUMBER_OF_DESKTOPS is always 1 more than it should, while XineramaQueryScreens() returns correct result.

@vredesbyyrd don't hold too much hope, awesome tags are not supposed to be EWMH, and the above PR may well be wrong.

felixfung commented 5 months ago

Hi, with #87, it would be much easier to see if basic screen and virtual desktop info are incorrect, by executing

skippy-xd --start-daemon -S 2> /dev/null | grep 'virtual desktops'

and starting paging mode