vl409 / rieman

desktop pager for X11
GNU General Public License v3.0
11 stars 1 forks source link

Pager is funky with multiple screens #1

Open kobaz opened 4 years ago

kobaz commented 4 years ago

I'm using awesomwm as my window manager, and I have 5 physical screens and 9 workspaces per screen.

First Issue: Navigating between workspaces does not update the rieman pager.

kobaz commented 4 years ago

It's hard to see since the top of the screen is cut off. I'll try and get a better capture.

But basically I'm arrowing left-right and changing from workspace 1,2,3,4,5..etc

And the only updates that rieman shows is jumping from 37 to 2

kobaz commented 4 years ago

GIFrecord_2020-05-27_103206

Better recording

kobaz commented 4 years ago

Also. Is there a way for Rieman to show which screens are on which workspaces simultaneously? Ie: multiple highlighted yellow squares for each of the current screens in use?

Also. Perhaps an even better solution is individual pagers, each on its own screen, each showing ONLY those workspaces on that screen.

kobaz commented 4 years ago

My physical setup:

0527201035

The sixth top left-screen is on another system.

vl409 commented 3 years ago

ok, I've got it. The issue is that awesome doesn't update _NET_CURRENT_DESKTOP property of the root window on monitors except primary. You can see it by dumping xprop -root | grep CURRENT_DESKTOP and switching desktops around. The event comes to pager, but it cannot get number, different from what it is given from root window. I don't know how awesome implements additional screens (not X11 screens, but the thing you see on extra monitor), probably it hase additional windows that update own property. Since pager is an external program that is supposed to follow spec (https://specifications.freedesktop.org/wm-spec/wm-spec-latest.html) there is nothing much to do. Probably, there is some wm-specific method to get current desktop, but I'm not aware of it. Leaving this as open, with the hope to fix in future.

vl409 commented 3 years ago

Also. Is there a way for Rieman to show which screens are on which workspaces simultaneously? Ie: multiple highlighted yellow squares for each of the current screens in use?

Currently no. To distinguish desktops, some attribute is required, like workspace number for specific desktop. Maybe it's worth to introduce some kind of manual configuration: kinda 'desktop groups'. But since desktop number is global, and geometry is predefined, it would be hard to draw rectangular border.But I'm open to ideas.

kobaz commented 1 year ago

I would agree with a feature like 'desktop groups' How do you think this might be implemented?

Thanks.

vl409 commented 1 year ago

Well, it looks like the NET_CURRENT_DESKTOP handling was fixed in awesome (in commit d2dc428e567e378a3f534c4d748543413fc30172), and awesome version i have here really shows different desktop numbers on different screens. So it looks like it should be possible to deal with it. I see currently following issues in rieman: 1) geometry: givent 2 monitors, we have two desktops representations, but each desktop is 2x width. So right part of left desktop and left part of right are not used; 2) since we have two sets of active desktops, there is no highlight for the second. 3) desktop number in rieman is through, so by default for 2 monitors in awesome we get 1..18 instead of two sets by 1..9. 4) cycling through desktops is only works for the 1st set of desktops (1..9), it does not switch you to further.

I'll take a look at it as time permits.

vl409 commented 1 year ago

Also. Perhaps an even better solution is individual pagers, each on its own screen, each showing ONLY those workspaces on > that screen.

After looking at the problem, this seems to be the only viable solution. I've implemented 'subsets' mode, that does exactly this: only shows subsets of desktops that belongs to specific monitor. Which desktops belong to which screen is determined by configuration. Probably it is possible to auto-generate this configuration from awesome's CLI. To determine geometry, you have to specify RANDR output of corresponding monitor.

Since there is no access to 'current tag' on each of monitors from outside of awesome, there is only one current desktop highlighted. Note that awesome creates virtual desktops only when there exist at least one window.

You may now checkout HEAD and try this subsets mode to see if it works for you. Hopefully, I didn't break things too much in normal mode. Report any issues here.