PowerToys: [FancyZones] Cannot use separate layouts on multi-monitor
Environment
Windows build number: [Version 10.0.18362.387]
PowerToys version: 0.12.0.0
PowerToy module for which you are reporting the bug (if applicable): FancyZones
Steps to reproduce
I have 2 custom layouts. One for the left monitor, one for the right.
-
I move the mouse to the left monitor and press [WIN] ~
-
I choose Custom, and the left layout option.

-
I click Apply
-
I move the mouse to the right monitor and press [WIN] ~
-
I choose Custom, and the right layout option.

I click Apply. The right monitor layout is applied to all monitors. I have tried also just moving the settings window before hitting apply but that doesn’t work either.
I can also use the main settings window, drag to the monitor, change the layout, and the same behavior happens, both monitors are updated.
Expected behavior
Expected to be able to have a separate layout on different monitors.
Actual behavior
Identical layout applied to all monitors.
Screenshots
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Comments: 52 (20 by maintainers)
@Gadgetgeek2000 awesome! It’s confirmed 100%. We are making other fixes to the FZ editor and also moving the settings from the registry to a human readable json file. I don’t have an ETA for this fix since it might have to wait until we complete the registry migration. I’ll keep you posted as soon as I have news.
Thanks again for the great help finding the bug.
@enricogior Here is my setup:
Running Microsoft Windows 10 [Version 1903 Build 18362.418]. Device drivers are up-to-date according to device manager online search.
Hi @fvanroie thanks for sending the report, that confirms is not an isolated case. Sure, we will make the logic more robust to workaround the API bug. Thank you!
I wasn’t going to chime in on that, but I guess I’ll say:
Probably a good idea to build extra into the code just in case it happens with someone else. Thanks for helping! I’ll let you know if it happens again. I just rebooted to check and things still look fine.
@Gadgetgeek2000
thanks for sending the file. I think I’ve found the source of the bug. It needs more investigation but it seems the FancyZones editor gets confused and uses the same ID for both monitors, so it causes what you described: it overwrites what you previously saved on the other monitor.
After saving the layout for the left monitor:
After saving the layout for the right monitor:
These are interesting questions…and the answer is “it depends”. Rarely do I enjoy a 4K monitor remotely, and if I do, I certainly don’t have multiple. I also connect to my computer differently depending on my use case.
Here are some of the situations that I use remote:
On-site, I grab my laptop and go to a conference room. I use Microsoft Remote Desktop to connect to the desktop. This brings my multiple monitors down to 1, moves all the windows onto the one. I do not connect to RDP at 4k, usually setting a manual screen size like we saw in my registry files above. I may not want FancyZones to split my smaller screen given the fewer pixel count. I like 4K because it cleanly divides into 4 HD screens, 1920x1080.
Remotely, I might connect via TeamViewer. All monitors are still present at 4K resolution. This might be super tiny on my laptop screen, or just fine on my 50" 4K TV I have at home. Depends where I control from. If I’m working from home for extended period I will manually turn off one of the monitors, and set my preferred resolution for what is comfortable.
I don’t believe that I would expect the software to behave differently just because I connected to it remotely, But I may want it to layout differently if I have a different resolution. 4K I like splitting up in one way. Smaller resolution I might want a different layout, or to turn it off.
Since this is a “power” toy, I think the power user should be aware how to quickly change the layout. The Win+tick keystroke is perfect for me to fix the layout quickly based on my task.
One thing I should mention is that I also routinely use the Windows Virtual Desktop feature. It looks like FZ allows different layouts on these virtual desktops. After activating a virtual desktop and trying to configure FZ, I see a standard 3-window layout. I changed one of these virtual desktops to be a left-right layout and when I go back to my main virtual desktop I still have my custom layout. Super cool. I wonder if this had anything to do with my troubles, too. I use the virtual desktop feature to focus on tasks, and I currently have 3 virtual desktops created. Check out my registry settings after activating a FZ layout on a virtual desktop. fz after virtual desktop.zip
Using the Monitor Info Report tool, I also see that my DeviceIDs are the same with only a different DeviceName. So the DeviceID in itself is not always unique. Please take the DeviceName into account as it will certainly make PowerToys more robust in this situation.
monitor-info-report-14-11-2019-22-48-57.txt
We can still make our code more robust since this bug may be more common than we think. Using
DeviceID + DeviceNameinstead of justDeviceIDto identify each monitor.Sounds great. I only wanted it because the software said it was possible. 😃 I can definitely work around it in the meantime. On my 4K displays it is nice to be able to split up areas of the screen that would hold an HD 1920x1080 application. I’ll watch for resolution.