Powertoys: Fancy Zones new editor needs to support multiple monitors

Created on 5 Sep 2019  路  24Comments  路  Source: microsoft/PowerToys

Summary of the new feature/enhancement

Currently the new FZ editor only comes up and applies zone layouts to the primary monitor. In order to get a layout on a different monitor, the original custom editor is needed. Bret and Jeff have a design for this change and now they need to implement it.

Proposed technical implementation details (optional)

Note that when this is done the original editor should be removed as well as the setting to toggle between editors.

FancyZones-Editor Resolution-Fix-Committed

Most helpful comment

Turn off "Use new zone editing experience"

DO NOT PRESS blue button "Edit zones"

Press Win - ~ ( OR Win - 枚 / Win - 酶 / Win - @ ) see comments in issue #203
Press e (now you can edit)
Press c (to create new zones)
Press d (to delete zones)
Press r (for reset)

All 24 comments

I'll leave this note for anyone like me that was confused.

  • First you turn off this setting: Use new zone editing experience (Preview)
  • Then you ignore this button and read the text above it:
    Zone configuration heading with Edit Zones button
  • Follow the text instructions and press Win + ~
  • ???
  • Profit!

In addition to the comment above, clues for the ??? step are to be found in ZoneWindow.cpp. You need to press 'e' before you can do much else.

Yeah, we didn't really document usage of the old editor since we will be cutting it once the new editor completely supports multimon. The old implementation is a bit tedious.
Also, the "Edit zones" button only invoking the new editor is a bug. It should invoke whichever editor you have chosen to use.

On a non US keyboard, I cannot launch configuration with the WIN + ~ shortcut

On a non US keyboard, I cannot launch configuration with the WIN + ~ shortcut

@WeirdScience06 See this issue: https://github.com/microsoft/PowerToys/issues/203
In the comments they're discussing different keys for different keyboard-layouts

Another work around is to change your "main monitor" setting, set the fancy zones in the new editor, change the main monitor again, set the fancy zones for that monitor, etc. Fancy zones retains the zones for each monitor throughout the process.

Turn off "Use new zone editing experience"

DO NOT PRESS blue button "Edit zones"

Press Win - ~ ( OR Win - 枚 / Win - 酶 / Win - @ ) see comments in issue #203
Press e (now you can edit)
Press c (to create new zones)
Press d (to delete zones)
Press r (for reset)

I tried https://github.com/microsoft/PowerToys/issues/195#issuecomment-528897306 and it halfway worked. I was able to bring up the old editor, but it still created all the zones only on the primary monitor, even though it showed the possible grids to select on the floater toolbar on both monitors. When I selected the three column layout on my secondary monitor, it seems to apply the layout to my primary monitor.

tl;dr: _that_ workaround is not reliable

Another work around is to change your "main monitor" setting, set the fancy zones in the new editor, change the main monitor again, set the fancy zones for that monitor, etc. Fancy zones retains the zones for each monitor throughout the process.

This seems to be working well. I have 3 monitors and used this method to set up zones for each. Very happy with the results.

Apart from different layouts for multimonitor it would be very nice to have different layouts per virtual desktop too. I have my communication apps an the first desktop and my working tools on the second. They require different layouts.

Is this something that is planned?

I believe the cause of this is the line

https://github.com/microsoft/PowerToys/blob/5f5402aa0a40a7177c5b1ad80d231d1b5b97c6c1/src/modules/fancyzones/editor/FancyZonesEditor/EditorOverlay.xaml.cs#L77

MSDN says:

Gets the size of the work area on the primary display monitor.

So someone go fix that to get the work area of other monitors. Makes sense why the workaround works with this.

@stevemk14ebr that is one of the places yes. I put a few "TODO: multimon" tags around that need to be figured out to get better multimon support. I'm going to be working on this over the weekend.

The workaround I'm using right now as the old editor did not work for me:

  • Open Display Settings
  • Set monitor to primary display
  • Create a layout using the new editor for that monitor

Repeat for each monitor. FancyZones stores the layouts per monitor (most likely per screen coordinates) and they stay on their respective monitor even after it is not the primary anymore. Only drawback is that the layouts reserve the space for the taskbar although it may not be visible for "non-primaray" monitors.

+1 This is extremely important as many people using PT will have multiple monitors

Workaround above worked for me. However, when I enable "Override Windows Snap hotkeys," these hotkey only cycle the windows through zones on their current monitor. The windows should cycle through all zones regardless of monitor.

However, when I enable "Override Windows Snap hotkeys," these hotkey only cycle the windows through zones on their current monitor. The windows should cycle through all zones regardless of monitor.

I agree it should. As a workaround for that, you can use Win+Shift+Arrow to move the window to your desired monitor and then Win+Arrow like normal to cycle through the zones.

Could you please also add the capability to define zones across several monitors? For instance I would like to define one single zone spanning two monitors (this is my current setup with ultramon for instance).
Thanks very much

Hi @fabricebauer
you should open a new issue with your suggestion since this issues is now closed.
Thank you.

Another work around is to change your "main monitor" setting, set the fancy zones in the new editor, change the main monitor again, set the fancy zones for that monitor, etc. Fancy zones retains the zones for each monitor throughout the process.

I don't see where can I set my main display. But I can do it like this with new zone zone editing experience:

  1. Move PowerToys settings on whichever monitor I want to edit zones on
  2. Just edit zones/apply them, whatever. The other monitor won't loose it's configuration.

Late follow-up: for me (currently using 0.14.1), I found that I can set zones on my non-primary monitor if I am currently focused on a window on that desktop before hitting Win-~. While this is not intuitive or documented (afaict), it works completely without needing to change "main monitor" or losing space on the bottom of the monitor for the taskbar (if not on all monitors).

I created a blog describing the usage of FancyZones in a multi monitor environment. Check it out here: https://www.sikich.com/insight/the-return-of-power-toys-with-windows-10-fancyzones/

Late follow-up: for me (currently using 0.14.1), I found that I can set ...
I can confirm that it opens up editor on the other monitor. But the add new zone is a mess as zones from primary monitor are copied here. Absolutely useless for a setup with two very distinct monitors.

I'm unfortunately still unable to create different zones on each of my two monitors. For the past year, I've been hitting Win-~ to open the editor and switch layouts every time I want to place a window, and the layout is then applied to both monitors:

Clipboard01

It doesn't matter if my cursor is on 1 or 2 when I hit Win-~, and launching the editor from the PowerToys Settings window from each monitor makes no difference:

Version and settings:
Clipboard02
Clipboard03

Glad to see it's fixed for others, but I'm hoping it can get fixed in my case, too.

@Mercerudy
you are experiencing this bug https://github.com/microsoft/PowerToys/issues/1777
Let's move the discussion there I'll ask you to upload a config file to confirm it.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

niels9001 picture niels9001  路  3Comments

patware picture patware  路  3Comments

Kazamario picture Kazamario  路  3Comments

seritools picture seritools  路  3Comments

SWinxy picture SWinxy  路  3Comments