GNOME Bugzilla – Bug 722684
Show switcher popups on all monitors
Last modified: 2021-07-05 14:33:15 UTC
Created attachment 266852 [details] Image showing alt tab switcher on primary while mouse is on secondary. Hi, I just got another monitor today to hook up with my laptop. I notice that "alt f2" brings up the command window on the monitor where my mouse resides, or the "active monitor". However, the "alt tab" switcher always only pops on the primary monitor. Every time I use "alt tab", I need to look back to my laptop monitor, even if my mouse was on the secondary monitor. It's not the best in terms of usability. I think the behaviour of the "alt tab" window switcher should be similar to the "alt f2" command dialog, i.e, they should both come up on whichever monitor the mouse resides, "the active monitor". Thoughts? Please note that the "alt f2" command dialog does not depend on what monitor the current, in focus, application resides. It seems to depend only on the mouse position. Thanks, Warm regards, Ankur
Created attachment 266853 [details] Image showing alt f2 command dialog on monitor where mouse pointer resides.
Possibly related: Applications opened with "alt f2" should come up on the same screen that "alt f2" was used on. They only seem to come up on the primary monitor at the moment. Should I file a separate bug for this? Thanks, Warm regards, Ankur
I just moved my secondary monitor to the left of my primary. Now nautilus always comes up on the secondary. Gnome-tweak-tool however, comes up wherever the mouse is (or where the alt-f2 dialog came up). It seems to vary from app to app. Nautilus -> always left gnome-tweak-tool -> follows mouse Lifeograph -> always left labyrinth -> follows mouse bijiben -> follows mouse gtg -> follows mouse hamster (started from activities but just by using the search box, not the mouse) -> follows mouse maps (started from activities but just by using the search box, not the mouse) -> follows mouse
(In reply to comment #3) > Nautilus -> always left Nautilus saves the window geometry (see the 'geometry' key in org.gnome.nautilus.window-state) and explicitly requests the previous geometry on startup. Most window managers (gnome-shell included) give preference to the application-requested position over the normal placement algorithm.
We changed alt-tab between primary and focused monitor like 10 times or so in the past. So if we change it to focused monitor now we will get a bug report about moving it to be primary only and then a bug report about being focused monitor and then a bug ...
Ok. I didn't know about that, obviously. Maybe this means different people prefer it on different monitors and it'll be good to have a option in the "Displays" setting where people configure their monitors? That'll keep you from getting repeated bugs, and keep users happy? (Or so I think).
I was coming here to file a bug report about only having alt-tab on primary (which is very annoying to me). XFCE puts it on all monitors. That's not a horrible solution, and on focus monitor good to me as well. drago, perhaps if there is such contention for this option it should be saved somewhere in gsettings, if not the UI/tweak tool.
The 'gnome-love' keyword is meant as guidance for newcomers, what bugs are good picks to start working on. Please do not abuse it to draw attention to a bug that is important to you.
We want to show the OSD wherever the user is looking. As we don't have an eye tracker, showing OSDs on all diplsays seems to be more reliable than using window focus or mouse cursor location, maybe with some perceived inefficiency if you can see both/all displays at the one time. There may be some OSDs like brightness that only apply to a certain display, which should be shown only on that particular one.
Created attachment 274583 [details] [review] osdWindow: Show on all monitors We had one osdWindow that we displayed either on the primary monitor or on whatever monitor index got passed over dbus. Change that to show the osd on all monitors when no explicit monitor is requested. A monitor should be requested in cases like display brightness where it makes sense to only show the osd on the affected monitor. --- This one only handles osdWindows like volume.
Review of attachment 274583 [details] [review]: This looks fairly messy to me (OsdWindow relies on monitorsChanged() being called externally, the number of OSDs is set in main, the policy of which OSDs are shown in shellDBus) ... I'd prefer something like an OsdWindows class in osdWindow.js, which handles all the individual OSDs. ::: js/ui/shellDBus.js @@ +145,3 @@ icon = Gio.Icon.new_for_string(params['icon']); + if (params['monitor']) { This is wrong if params['monitor'] == -1. Also: Would it make sense to hide visible OSDs on other monitors here?
(In reply to comment #11) > Review of attachment 274583 [details] [review]: > > This looks fairly messy to me (OsdWindow relies on monitorsChanged() being > called externally, the number of OSDs is set in main, the policy of which OSDs > are shown in shellDBus) ... Yeah you have a point. > I'd prefer something like an OsdWindows class in osdWindow.js, which handles > all the individual OSDs. OK that makes sense (just don't like the name "OsdWindows" for the class). > ::: js/ui/shellDBus.js > @@ +145,3 @@ > icon = Gio.Icon.new_for_string(params['icon']); > > + if (params['monitor']) { > > This is wrong if params['monitor'] == -1. Also: Would it make sense to hide > visible OSDs on other monitors here? Yeah.
Created attachment 274588 [details] [review] osdWindow: Show on all monitors We had one osdWindow that we displayed either on the primary monitor or on whatever monitor index got passed over dbus. Change that to show the osd on all monitors when no explicit monitor is requested. A monitor should be requested in cases like display brightness where it makes sense to only show the osd on the affected monitor.
Created attachment 274589 [details] [review] osdWindow: Show on all monitors We had one osdWindow that we displayed either on the primary monitor or on whatever monitor index got passed over dbus. Change that to show the osd on all monitors when no explicit monitor is requested. A monitor should be requested in cases like display brightness where it makes sense to only show the osd on the affected monitor.
Review of attachment 274589 [details] [review]: Yeah, this looks much better to me. ::: js/ui/main.js @@ +56,3 @@ let windowAttentionHandler = null; let ctrlAltTabManager = null; +let osdWindowManager = []; Left-over bit from previous patch. ::: js/ui/osdWindow.js @@ +81,3 @@ y_align: Clutter.ActorAlign.CENTER }); this._currentMonitor = undefined; + this.setMonitor(monitorIndex); This can be cleaned up a bit - setMonitor() doesn't really make sense when the OsdWindow can no longer change between monitors, all the handling of _currentMonitor == -1 can be kicked out, and well, _currentMonitor should probably be _monitorIndex or so :-) @@ +278,3 @@ + for (let i = 0; i < this._osdWindows.length; i++) { + if (i != monitorIndex) + this._osdWindows[i].cancel(); Doesn't matter much, but could be if (i == monitorIndex) this._showOsdWindow(i, icon, label, level); else this._osdWindows[i].cancel(); @@ +285,3 @@ + for (let i = 0; i < this._osdWindows.length; i++) { + this._showOsdWindow(i, icon, label, level); + } Style nit: no braces @@ +292,3 @@ + for (let i = 0; i < this._osdWindows.length; i++) { + this._osdWindows[i].cancel(); + } Style nit: no braces
Created attachment 274602 [details] [review] osdWindow: Show on all monitors We had one osdWindow that we displayed either on the primary monitor or on whatever monitor index got passed over dbus. Change that to show the osd on all monitors when no explicit monitor is requested. A monitor should be requested in cases like display brightness where it makes sense to only show the osd on the affected monitor. --- Suggested cleanups.
Review of attachment 274602 [details] [review]: Another style nit, looks good to push to me with that fixed. ::: js/ui/osdWindow.js @@ +264,3 @@ + } + } + else { Another style nit: spurious line break before else
Comment on attachment 274602 [details] [review] osdWindow: Show on all monitors Attachment 274602 [details] pushed as 5c3f9f6 - osdWindow: Show on all monitors Leaving bug open for the appSwitcher.
backport to 3.10.x please?
(In reply to comment #19) > backport to 3.10.x please? This isn't really a bug fix or an "urgent" thing by any means also the patch does not implement it for altTab yet (which is what you probably want).
*** Bug 696126 has been marked as a duplicate of this bug. ***
Update the subject to reflect the conclusion of the discussion on this bug.
And while at it, to be symmetrical, also please show the workspaces thingy that is only shown on the primary screen right now. Moving windows from a non-primary monitor from one workspace to another doesn't do the expected thing: it put the window on the primary monitor of the destination workspace.
(In reply to comment #23) > And while at it, to be symmetrical, also please show the workspaces thingy that > is only shown on the primary screen right now. Yes, iff workspaces-only-on-primary is disabled.
*** Bug 650158 has been marked as a duplicate of this bug. ***
GNOME is going to shut down bugzilla.gnome.org in favor of gitlab.gnome.org. As part of that, we are mass-closing older open tickets in bugzilla.gnome.org which have not seen updates for a longer time (resources are unfortunately quite limited so not every ticket can get handled). If you can still reproduce the situation described in this ticket in a recent and supported software version, then please follow https://wiki.gnome.org/GettingInTouch/BugReportingGuidelines and create a new ticket at https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/ Thank you for your understanding and your help.