-
-
Notifications
You must be signed in to change notification settings - Fork 83
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
Support desktop configuration similar to xmonad/herbstluftwm #260
Comments
Issue-Label Bot is automatically applying the label Links: app homepage, dashboard and code for this bot. |
Hi @ThomasAdam I'm reading again and again "Using other workspaces" on Xmodad url which you sent, but I cannot find what is the difference between this and FVWM3 per-monitor DesktopConfiguration. Wha am I missing here? BTW, if we are talking about desk<->monitor modes, I was thinking for a long time about something which can be called "global+presentation" mode: to have primary monitor like in one-monitor setup, and other "presentation" monitor to be independent from the desk/page scheme, so windows can be sent there with commands from menus, shortcuts, moving them by mouse etc ... However, this may significantly alter many parts of the code and commands: MoveToPage, MoveToDesk, StartsOnScreen, GotoPage, GotoDesk, Just some thoughts ... |
Hi @NsCDE Unlike in So for example, let's say you had the following number of desktops:
... and let's say that you have two monitors. You might have this:
Where You could move monitor1 (
If you were to then continue to move monitor1 (
So that now, the desktops have switched over from each monitor. Another way of expressing this, is monitors become "viewports" in to desktops, rather than desktops being attached to specific monitors. |
Hi @ThomasAdam Finally, at the end of explanation I got it. :) This seems more simple and less visually confusing then per-monitor. Aspect ratio is preserved too. You can even make configuration option if overlaping desks will swap places on monitors as in this example, or go at the next right or left place, or beginning/end of the row if they are already there. |
Hi @ThomasAdam One thought I just came on: in such setup, sticky windows (that is, displayed on more than one screen) will be impossible, and should become unsticked across desks when such DesktopConfiguration is applied. This is probably due to X limitation and not doable without compositing, and FVWM and FVWM3 does not compose. |
Hi @NsCDE Yes -- that's a good point. It does make sticky windows useless. It doesn't have anything to do with X or compositing. I'm not sure what you're asking. |
Initially, I was not asking anything, just trying to discuss about this interesting alternative DesktopConfiguration idea. But now, question emerges how sticky windows should be treated in that situation. By sniffing around (I didn't tried personally) Xmonad moves supposed-to-be-sticky windows on monitor where pointer arrives. Maybe FVWM3 can follow that pattern if this kind of desktop configuration is going to be implemented. |
RIght, OK. Well I suppose we could imply the current monitor for sticky windows. Maybe that makes sense. An easier way of testing this, @NsCDE is to use |
Don't use strcmp() to compare the options presented to the DesktopConfiguration command, as not everyone is likely to use all lower-case, and this doesn't match with how other parameters are checked for. Fixes #260
This teaches the DesktopConfiguration command about a new option: shared. When in this mode, a shared state means that's there one set of desktops (defined via the `DesktopName` command), but these desks are global to all monitors, yet monitors may independently selected which desktop to show at that time. If a request to move to a particular desktop matches one already shown on a different monitors, these two desks are exchanged between those monitors. Fixes #260
Hi, If anyone's interested in testing this, I've put together a proof-of-concept patch for this on the
Note that this WILL NOT WORK with a It's probably also going to look strange using a global FvwmPager -- that is, a pager that hasn't been told to look at a specific monitor ( There's still more to do on this, but it's working well enough for me. Comments welcome! |
After playing a bit with 1. Iconified windows jump from screen to screen. 2. Maximize windows and screens with different resolutions 3. Sticky windows only "stick" by screen 4. Drag & Drop windows from one desk to another is a bit buggy |
I suppose adding an option for this might make sense -- however, iconified windows are obeying the same rules as non-iconified windows -- they move with the desk.
This is true in any situation. I'm unsure whether it should -- a window is allowed to be larger than the size of the viewport.
Yeah -- again, you could write a function to handle this. I'm not sure fvwm should be doing this for you.
I guess I could use
Yes. How is your pager configured? |
I gather that, however, my iconified windows are set as sticky. Style * IconSize 48 48 However for whatever reason they do not behave as a normal window with the sticky status.
Well as far I have seen with KDE, Enlightenment and e16, when you do move a maximized window, it does by default recalculate its geometry to remain maximized according to the new screen size.
Perhaps an example for the man pages and/or the wiki could be handy :)
Module FvwmPager Pager1 0 3 DestroyModuleConfig Pager1:* DestroyModuleConfig Pager2:* |
This teaches the status machineary about sending the mode a desktop is in: * Global * Per-monitor * Shared Fixes #260
Don't use strcmp() to compare the options presented to the DesktopConfiguration command, as not everyone is likely to use all lower-case, and this doesn't match with how other parameters are checked for. Fixes #260
This teaches the DesktopConfiguration command about a new option: shared. When in this mode, a shared state means that's there one set of desktops (defined via the `DesktopName` command), but these desks are global to all monitors, yet monitors may independently selected which desktop to show at that time. If a request to move to a particular desktop matches one already shown on a different monitors, these two desks are exchanged between those monitors. Fixes #260
This teaches the status machineary about sending the mode a desktop is in: * Global * Per-monitor * Shared Fixes #260
Hello all, I've now updated this to support pages as well as desks. You won't need to do anything -- windows on pages for desks being swapped between monitors, will be handled automatically.... otherwise I've broken something and that's a bug. ;) Please do retest. |
This teaches the DesktopConfiguration command about a new option: shared. When in this mode, a shared state means that's there one set of desktops (defined via the `DesktopName` command), but these desks are global to all monitors, yet monitors may independently selected which desktop to show at that time. If a request to move to a particular desktop matches one already shown on a different monitors, these two desks are exchanged between those monitors. Fixes #260
This teaches the status machineary about sending the mode a desktop is in: * Global * Per-monitor * Shared Fixes #260
This teaches the DesktopConfiguration command about a new option: shared. When in this mode, a shared state means that's there one set of desktops (defined via the `DesktopName` command), but these desks are global to all monitors, yet monitors may independently selected which desktop to show at that time. If a request to move to a particular desktop matches one already shown on a different monitors, these two desks are exchanged between those monitors. Fixes #260
Hey all, OK -- so the final version of this is now complete. It's available on the same branch (
Any issues, let me know here. I want to get this merged to master next week, if not sooner. Thanks all! |
This teaches the DesktopConfiguration command about a new option: shared. When in this mode, a shared state means that's there one set of desktops (defined via the `DesktopName` command), but these desks are global to all monitors, yet monitors may independently selected which desktop to show at that time. If a request to move to a particular desktop matches one already shown on a different monitors, these two desks are exchanged between those monitors. Fixes #260
This teaches the DesktopConfiguration command about a new option: shared. When in this mode, a shared state means that's there one set of desktops (defined via the `DesktopName` command), but these desks are global to all monitors, yet monitors may independently selected which desktop to show at that time. If a request to move to a particular desktop matches one already shown on a different monitors, these two desks are exchanged between those monitors. Fixes #260
The last changes broke the pager when, desktop-configuration is set (or changed) to per-monitor. When you switch between desks the applications get "lost". You can reproduce this by:
You'll notice that the pager still shows your windows, but there are nowhere to be seen. If you open FvwmConsole and type I also think that using |
Hey @lgsobalvarro Yes, the pager will only make sense in |
Don't use strcmp() to compare the options presented to the DesktopConfiguration command, as not everyone is likely to use all lower-case, and this doesn't match with how other parameters are checked for. Fixes #260
This teaches the DesktopConfiguration command about a new option: shared. When in this mode, a shared state means that's there one set of desktops (defined via the `DesktopName` command), but these desks are global to all monitors, yet monitors may independently selected which desktop to show at that time. If a request to move to a particular desktop matches one already shown on a different monitors, these two desks are exchanged between those monitors. Fixes #260
Thanks, @lgsobalvarro I've fixed the problem with breaking |
@ThomasAdam Is not working. It's still broken. Pretty much the same behavior. |
Don't use strcmp() to compare the options presented to the DesktopConfiguration command, as not everyone is likely to use all lower-case, and this doesn't match with how other parameters are checked for. Fixes #260
This teaches the DesktopConfiguration command about a new option: shared. When in this mode, a shared state means that's there one set of desktops (defined via the `DesktopName` command), but these desks are global to all monitors, yet monitors may independently selected which desktop to show at that time. If a request to move to a particular desktop matches one already shown on a different monitors, these two desks are exchanged between those monitors. Fixes #260
This teaches the DesktopConfiguration command about a new option: shared. When in this mode, a shared state means that's there one set of desktops (defined via the `DesktopName` command), but these desks are global to all monitors, yet monitors may independently selected which desktop to show at that time. This command will only work if the number of monitors active at the time `DesktopConfiguration shared` was set is >1, and the number of desktops set (via `DesktopName` command) is >1. If a request to move to a particular desktop matches one already shown on a different monitors, these two desks are exchanged between those monitors. Fixes #260
Please can you retest? With the latest round of changes on
Thanks! |
Hi @ThomasAdam It's also broken for Shared seems to work fine. The problem resides somewhere in Pager and the way it changes between desks. Pages are not affected. |
Don't use strcmp() to compare the options presented to the DesktopConfiguration command, as not everyone is likely to use all lower-case, and this doesn't match with how other parameters are checked for. Fixes #260
This teaches the DesktopConfiguration command about a new option: shared. When in this mode, a shared state means that's there one set of desktops (defined via the `DesktopName` command), but these desks are global to all monitors, yet monitors may independently selected which desktop to show at that time. This command will only work if the number of monitors active at the time `DesktopConfiguration shared` was set is >1, and the number of desktops set (via `DesktopName` command) is >1. If a request to move to a particular desktop matches one already shown on a different monitors, these two desks are exchanged between those monitors. Fixes #260
This teaches the DesktopConfiguration command about a new option: shared. When in this mode, a shared state means that's there one set of desktops (defined via the `DesktopName` command), but these desks are global to all monitors, yet monitors may independently selected which desktop to show at that time. This command will only work if the number of monitors active at the time `DesktopConfiguration shared` was set is >1, and the number of desktops set (via `DesktopName` command) is >1. If a request to move to a particular desktop matches one already shown on a different monitors, these two desks are exchanged between those monitors. Fixes #260
Don't use strcmp() to compare the options presented to the DesktopConfiguration command, as not everyone is likely to use all lower-case, and this doesn't match with how other parameters are checked for. Fixes #260
This teaches the DesktopConfiguration command about a new option: shared. When in this mode, a shared state means that's there one set of desktops (defined via the `DesktopName` command), but these desks are global to all monitors, yet monitors may independently selected which desktop to show at that time. This command will only work if the number of monitors active at the time `DesktopConfiguration shared` was set is >1, and the number of desktops set (via `DesktopName` command) is >1. If a request to move to a particular desktop matches one already shown on a different monitors, these two desks are exchanged between those monitors. Fixes #260
Hi @ThomasAdam as requested my bare bones config. |
Don't use strcmp() to compare the options presented to the DesktopConfiguration command, as not everyone is likely to use all lower-case, and this doesn't match with how other parameters are checked for. Fixes #260
This teaches the DesktopConfiguration command about a new option: shared. When in this mode, a shared state means that's there one set of desktops (defined via the `DesktopName` command), but these desks are global to all monitors, yet monitors may independently selected which desktop to show at that time. This command will only work if the number of monitors active at the time `DesktopConfiguration shared` was set is >1, and the number of desktops set (via `DesktopName` command) is >1. If a request to move to a particular desktop matches one already shown on a different monitors, these two desks are exchanged between those monitors. Fixes #260
This teaches the DesktopConfiguration command about a new option: shared. When in this mode, a shared state means that's there one set of desktops (defined via the `DesktopName` command), but these desks are global to all monitors, yet monitors may independently selected which desktop to show at that time. This command will only work if the number of monitors active at the time `DesktopConfiguration shared` was set is >1, and the number of desktops set (via `DesktopName` command) is >1. If a request to move to a particular desktop matches one already shown on a different monitors, these two desks are exchanged between those monitors. Fixes #260
This teaches the DesktopConfiguration command about a new option: shared. When in this mode, a shared state means that's there one set of desktops (defined via the `DesktopName` command), but these desks are global to all monitors, yet monitors may independently selected which desktop to show at that time. This command will only work if the number of monitors active at the time `DesktopConfiguration shared` was set is >1, and the number of desktops set (via `DesktopName` command) is >1. If a request to move to a particular desktop matches one already shown on a different monitors, these two desks are exchanged between those monitors. Fixes #260
Now that we have
per-monitor
desktops, perhaps it makes sense to consider whether supporting a desktop model such asXmonad
's orherbsfluftwm
makes sense. I don't want to emulatedwm
's model orawesome
whereby you define, say, 10 desktops and assign1..5
on one monitor, and6..10
on another, as this has always annoyed me.The
Xmonad
documentation details how they handle desktops (which they callworkspaces
) here: https://xmonad.org/tour.htmlI think having a "view" into a desktop which aren't directly attached to any one monitor could be really interesting, and wouldn't be too difficult to support in
fvwm3
.The text was updated successfully, but these errors were encountered: