Powertoys: [FancyZones] Two Ultrawide Monitors are Sharing Zone Layouts

Created on 29 Mar 2020  路  29Comments  路  Source: microsoft/PowerToys

I have a 3 monitor setup, two ultrawides (UW#1, UW#2) and one portrait. The portrait is able to get it's own custom Layout but the ultrawides share whatever Layout I setup on either of them. So if I setup Layout #1 on UW#1 it also applies Layout #1 on UW#2 and vice a versa.

Windows build number:  10.0.18362.720
PowerToys version: v0.15.2
PowerToy module for which you are reporting the bug (if applicable): FancyZones

Edit the layout zones on one ultrawide then check the second ultrawide to see if those zones have been applied on that monitor as well.

Afaik the layout zones are suppose to be monitor specific so each ultrawide should be able to utilize its own custom zone layout.

Both ultrawide monitors are sharing a layout of zones regardless of which one was used to edit zones.

Screenshots

Cost-Large Issue-Bug Product-FancyZones

Most helpful comment

@shampoolegs
the part of the display ID that previously was 00000000-0000-0000-0000-000000000000 and now is 097FA162-3289-46E9-81BB-11FF2A615378 identifies the virtual desktop. Before the fix it was incorrectly settings 00000000-0000-0000-0000-000000000000 for the primary desktop.

The two display IDs starting with LOCALDISPLAY are recognized as different monitors only because of the different screen resolution, but we are failing to get the correct ID.
We have another fix in the making, that should solve that problem as well.

@Mercerudy
you have two monitors with the same 1920x1080 resolution, correct?
The Windows API returns only one monitor. We should try to escalate this to the Windows team.
Can you please open a new issue adding the output of the WMI command you ran and the screenshot of the Device Manager?

All 29 comments

Hi @shampoolegs
I guess the two ultrawide monitor are the same brand and model, correct?
Can you please zip and upload "C:\Users\%USERNAME%\AppData\Local\Microsoft\PowerToys\FancyZones\zones-settings.json"
Be aware that the file contains the app history, so feel free to edit the file and delete the app-zone-history section.
There are online tools to edit/format the file in a more readable way.
Thanks.

Hi @enricogior, thank you for your reply. The two ultrawides are actually different brands and models. Attaching the requested json file as a text file here unedited.
zones-settings-json.txt

Monitor 1) Samsung 34" SJ55W (LS34J550WQNXZA)
Monitor 2) (Main Display) Dell Alienware 34" AW3418DW
Monitor 3) (Portrait) Asus VG236HE 23"

image

Thanks for sending the settings.
FZ fails to properly identify the two monitors, and uses the same id:

LOCALDISPLAY_3440_1440_{00000000-0000-0000-0000-000000000000}

A proper id should look like this:

DELA0A6#5&2cf76c78&0&UID8721_3440_1440_{00000000-0000-0000-0000-000000000000}

This may be caused by a Windows bug.

The only suggestion to workaround this bug until we find a fix, is to disconnect and reconnect the monitors, try to update the device driver of the GPU, try to install the monitors' drivers if they are available.
Basically, try anything that can trigger Windows to recognize the monitor with a proper id.

This issue is similar to https://github.com/microsoft/PowerToys/issues/611
Even if it's not the same cause, it will have the same fix.

Hi @enricogior, I read through thread #611 and decided to start with monitor drivers as all three of my monitors showed up as "PnP-Monitor".

I unplugged two of the three monitors and installed drivers for the remaining Dell/Alienware then did the same for the Samsung. I could not find a driver for the Asus monitor but since it was working correctly I moved on. I then plugged all monitors back into the GPU and restarted the system. On reboot I was able to set custom zones for all three monitors but did notice some buggy behavior when trying to shift+snap windows into the zones the zones would not highlight and accept the window. I unchecked and rechecked the first option in FZ and it seems to have fixed it allowing me to use shift to snap windows into zones on all three monitors.

I also tried to find FancyZones in the registry as you had instructed in #611 but couldn't find it under ...Current_User\Software. Using the search function provided one or two entries but it wasn't the same as the image example that was attached in the thread.

Attaching the json as a zip here, please let me know if you want me to reinstall power toys or do anything else.

zones-settings.zip

@shampoolegs
nice work! You actually managed to fix it since now at least one of the two wide monitors is recognized correctly, the other two as still not recognized but since they have a different resolution, FancyZones manages to treat them as two different devices, these are the current IDs from the settings file.

DELA0FA#5&7f2df8a&1&UID4357_3440_1440_{00000000-0000-0000-0000-000000000000}
LOCALDISPLAY_3440_1440_{00000000-0000-0000-0000-000000000000}
LOCALDISPLAY_1080_1920_{00000000-0000-0000-0000-000000000000}

Regarding the registry: FancyZones doesn't use it anymore, now it only uses settings in json files.

Let's keep the issue open since we still want to implement a workaround to handle this problem when it happens.

@enricogio I appreciate your time and help! Will be here if you need any additional testing etc.

We can't fit this in 0.18, moving it to 0.19.

@Mercerudy (from https://github.com/microsoft/PowerToys/issues/195#issuecomment-666004770)
can you please upload

"C:\Users\%USERNAME%\AppData\Local\Microsoft\PowerToys\FancyZones\zones-settings.json"

You will have to change the file extension to .txt or zip the file, otherwise GitHub will not accept the file.
Thanks.

@enricogior Thanks for looking into this!

Looking at comments above, my issue may be a little different. There are unique IDs for my monitors according to the JSON:
zones-settings.zip

Settings:
Clipboard11

@Mercerudy
those two device IDs may be referring to two virtual desktops for the same monitor.
Also, the LOCALDISPLAY prefix indicates Windows 10 is not providing to FancyZones proper IDs for the monitors.
One workaround is to search for the monitor drivers and install them (if they are available).

@enricogior
Thanks for the tip. Generic Windows drivers were installed, so I installed Samsung's drivers, and now I have the following in Device Manager:
image

I still have the same issue after a restart and remaking the layouts in the zones editor. Also still see the LOCALDISPLAY prefix in the JSON:
zones-settings.zip

I'll try again with another driver, unless there's another workaround.

@Mercerudy
not sure if this will help, but give it a try:

  • quit PowerToys
  • delete zones-settings.json
  • restart Windows
  • re-create the zones
  • check zones-settings.json for the device IDs

@shampoolegs @Mercerudy
are you still experiencing this problem?
If yes, can you run the diagnostic tool that I've attached and report the log file it creates?
Thanks

monitor_info_report1.1.zip

I'm not having this issue anymore @enricogior

@shampoolegs
thanks.

@enricogior

Yes, still having this issue. Requested output attached. In reality, I have 2 physical Samsung monitors attached to a GTX 960. I also have 3 total virtual desktops in Windows 10.

monitor-info-report-23-09-2020-12-07-18.txt

Thanks again for looking into it. I tried what you suggested last time, but it did not fix. I'm still using Win-~ a few times a day to activate one of two custom layouts.

@Mercerudy
thanks for sending the report, that is useful information, we have a plan to fix the problem but we needed some more data to make the final decision. It's going to take a few weeks to get this fixed since it's quite complex.

@Mercerudy
can you run this tool? It's a different version that uses a different technique to retrieve the monitor info. Thanks

monitor_info_report.zip

@enricogior
Thanks. The tool seems to be hanging on the WMI report, so there's no output from the tool.

I went ahead and ran a couple of WMI commands to grab monitor info, however. Output is attached. It's interesting that win32_desktopmonitor only returns 1 monitor, when the Device Manager shows 2:
Screenshot 2020-09-24 105140

PS_Monitors.txt

@shampoolegs
we have a private (unsigned) build with a fix that solve this problem in some cases.
If you can install an unsigned build, feel free to give it a try.
Before installing it, it's better to reset the FZ settings:

  • quit PowerToys
  • in command prompt run del %localappdata%\Microsoft\PowerToys\FancyZones
  • install the private build

PowerToysSetup-0.21.2-x64.zip

@Mercerudy
given the result of the diagnostic tools, this is not supposed to fix the problem for you, but if you want give it a try anyway.

@enricogior

I gave 0.21.2 a shot, and as you said, it did not fix the problem.

@enricogior
I uninstalled first, then cleared local app data, after install I don't have any issues and each monitor can have it's own custom layout.

Wasn't sure if this had to do with the original fix of installing a monitor driver but there does seem to be a change in the current ID's in the setting file so I think it worked. Not sure if the bottom two ID's are suppose to have the same {XXX} though.

Before

DELA0FA#5&7f2df8a&1&UID4357_3440_1440_{00000000-0000-0000-0000-000000000000}
LOCALDISPLAY_3440_1440_{00000000-0000-0000-0000-000000000000}
LOCALDISPLAY_1080_1920_{00000000-0000-0000-0000-000000000000}

After
DELA0FA#5&b12878b&0&UID4357_3440_1440_{097FA162-3289-46E9-81BB-11FF2A615378
LOCALDISPLAY_1080_1920_{097FA162-3289-46E9-81BB-11FF2A615378
LOCALDISPLAY_3440_1440_{097FA162-3289-46E9-81BB-11FF2A615378

Hope this helps, let me know if you need me to do anything else.
zones-settings.zip

Sorry about that, hit the wrong button.

@enricogior

So I also just tried what @shampoolegs said, clearing PowerToys' local app cache before fresh installs of both 0.21.2 and the newly released 0.23.0. Now I have the same result for both versions in my zones-settings.zip:
image

It doesn't show the generic, non-unique identifier for both devices; it just shows one device!

@shampoolegs
the part of the display ID that previously was 00000000-0000-0000-0000-000000000000 and now is 097FA162-3289-46E9-81BB-11FF2A615378 identifies the virtual desktop. Before the fix it was incorrectly settings 00000000-0000-0000-0000-000000000000 for the primary desktop.

The two display IDs starting with LOCALDISPLAY are recognized as different monitors only because of the different screen resolution, but we are failing to get the correct ID.
We have another fix in the making, that should solve that problem as well.

@Mercerudy
you have two monitors with the same 1920x1080 resolution, correct?
The Windows API returns only one monitor. We should try to escalate this to the Windows team.
Can you please open a new issue adding the output of the WMI command you ran and the screenshot of the Device Manager?

Np @enricogior, I did update to the latest version of powertoys a few days ago though
monitor-info-report-05-10-2020-09-25-04.txt

Rolling back the monitor drivers from those provided by Samsung revealed that the TeamViewer monitor driver had been installed over the Microsoft Generic driver. The monitors were still named "Generic PnP Monitor," but the driver properties showed the Driver Provider as "TeamViewer GmbH," even though TeamViewer was no longer installed on the system. Downloading and running the TeamViewer portable executable (no install required), and navigating to "Extras," "Settings," "Advanced," and finally "Uninstall" monitor driver reverted the monitors back to the Microsoft provided Generic PnP.

I then uninstalled PowerToys 0.25.0, deleted the local PowerToys appdata, reinstalled PowerToys and set up FancyZones again via the editor. FancyZones is now working as intended, and I finally have separate zones for each monitor with no need to switch them ten times a day.

Thanks to the team for helping to diagnose and for such great apps built into PowerToys.

Was this page helpful?
0 / 5 - 0 ratings