Skip to content

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

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
felixfung opened this issue Aug 22, 2023 · 8 comments
Labels
bug Something isn't working feature New feature or request

Comments

@felixfung
Copy link
Owner

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 #51 (comment)

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 felixfung added bug Something isn't working feature New feature or request labels Aug 22, 2023
@felixfung
Copy link
Owner Author

felixfung commented Dec 23, 2023

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
Copy link
Owner Author

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

@felixfung
Copy link
Owner Author

Made this inquiries for awesomewm:

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

@felixfung
Copy link
Owner Author

@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
Copy link
Owner Author

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.

awesomeWM/awesome#3707 (comment)
https://www.reddit.com/r/awesomewm/comments/1bbuz8g/comment/kuh985h/?utm_source=share&utm_medium=web2x&context=3

@felixfung felixfung linked a pull request Mar 18, 2024 that will close this issue
@vredesbyyrd
Copy link

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
Copy link
Owner Author

@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
Copy link
Owner Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working feature New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants