Powertoys: With FancyZones version 0.15.1 I can no longer cycle through different pre-defined layouts with keyboard shortcut

Created on 4 Mar 2020  路  11Comments  路  Source: microsoft/PowerToys

Environment

Windows build number: 10.0.17134.1304
PowerToys version: 0.15.1
PowerToy module for which you are reporting the bug (if applicable): FancyZones

I was previously using version 0.14, but before installing version 0.15.1 I did uninstall PowerToys manually and then delete any configuration left in registry (HKCU\Software\SuperFancyZones) and on disk (%LocalAppData%\Microsoft\PowerToys).

Steps to reproduce

In version 0.14 of PowerToys I would first apply a set of pre-defined layouts that I wanted to be able to quickly switch between, by doing the following steps:

  • Edit zones, in the Templates tab, select 2 as number of zones, select Columns layout, and click Apply.
  • Edit zones, in the Templates tab, select 3 as number of zones, select Columns layout, and click Apply.
  • Edit zones, in the Templates tab, select 4 as number of zones, select Columns layout, and click Apply.

Expected behavior

In version 0.14 of PowerToys I could use keyboard shortcut Win+Ctrl+2, Win+Ctrl+3 or Win+Ctrl+4 to activate one of the layouts that I previously had applied, as documented:

Win+Ctrl+<Number> | Cycles through saved layouts with the corresponding number of zones

E.g. Win+Ctrl+2 would flash the 2 zone columns layout, and I could snap windows to 2 zones. Then Win+Ctrl+3 would flash 3 zone columns layout which I then could snap windows to.

Actual behavior

In version 0.15.1 Win+Ctrl+ only flashes the layout last applied from Edit zones dialog, unable to change the active layout.

Additional comments

I am not sure if it even was intended to work the way I used it in version 0.14, or what "saved layouts" is referring to exactly (perhaps only custom layouts or something). The user interface would not show which layouts I had applied and was available to cycle through, the only way to see was either to test it using the keyboard shortcut or to try to make sense of the configuration stored in registry.

I understand the storage of zone configuration has moved from registry to file. In previous version I could see my applied layouts being added as binary values below the HKCU\Software\SuperFancyZones\ScreenWidth_ScreenHeight key. In the new version I do not see any similar information being added to the zones-settings.json file.

FancyZones-Hotkeys Issue-Bug Issue-DCR Product-FancyZones Severity-Regression

Most helpful comment

@crutkas
the way this feature was design is:
every time a layout is applied, it is added to the current desktop history and it will remain there forever. There is no way to remove it beside manually deleting the FZ settings.
When win+cntrl+number is pressed, the first layout with that "number" of zones is applied, pressing again the same win+cntrl+number will apply the next layout with that same number of zones (if there is any).
So if you have multiple layouts with the same number of zones you have to press the shortcut multiple times until the desired layout is selected.

This feature was created when FZ only had the legacy editor and at that time it made sense, but when the new editor was added, it wasn't updated to provide a consistent experience to the user.
So custom layouts were also added to the desktop history and left there forever, even after being deleted in the editor:
https://github.com/microsoft/PowerToys/issues/1179
https://github.com/microsoft/PowerToys/issues/1069

When the FZ settings were migrated to the json file, we fixed the problem with the deleted custom zones but we end up breaking the feature.

Fixing the feature to just remove the custom zones from the desktop history doesn't seem like a real fix. The problem here is the design of the feature that still doesn't provide a way for the users to really configure it as they want it and since all applied templates cannot be removed, it can become really frustrating at the point that many users will simply avoid using this feature in the first place.

One possible solution, that doesn't require too much UI work to make it usable, would be:

  • apply this feature only to existing custom layouts (regardless if they have been previously applied to the current desktop or not)
  • in the editor, show the index of each layout
  • win+cntrl+number instead of identifying a layout with that number of zones, will simply identify the layout index

That should provide enough flexibility to make the feature useful and it can be done without too many changes in the code.

Adding ref to "FanzyZone Custom Layout hotkeys" https://github.com/microsoft/PowerToys/issues/1411

All 11 comments

Same, except with the previous version I could cycle through the different layouts with the less RSI-inducing Number [1, 2, 3] shortcuts as long as I had a window selected and Shift pressed. Now nothing works to cycle.

@crutkas
the way this feature was design is:
every time a layout is applied, it is added to the current desktop history and it will remain there forever. There is no way to remove it beside manually deleting the FZ settings.
When win+cntrl+number is pressed, the first layout with that "number" of zones is applied, pressing again the same win+cntrl+number will apply the next layout with that same number of zones (if there is any).
So if you have multiple layouts with the same number of zones you have to press the shortcut multiple times until the desired layout is selected.

This feature was created when FZ only had the legacy editor and at that time it made sense, but when the new editor was added, it wasn't updated to provide a consistent experience to the user.
So custom layouts were also added to the desktop history and left there forever, even after being deleted in the editor:
https://github.com/microsoft/PowerToys/issues/1179
https://github.com/microsoft/PowerToys/issues/1069

When the FZ settings were migrated to the json file, we fixed the problem with the deleted custom zones but we end up breaking the feature.

Fixing the feature to just remove the custom zones from the desktop history doesn't seem like a real fix. The problem here is the design of the feature that still doesn't provide a way for the users to really configure it as they want it and since all applied templates cannot be removed, it can become really frustrating at the point that many users will simply avoid using this feature in the first place.

One possible solution, that doesn't require too much UI work to make it usable, would be:

  • apply this feature only to existing custom layouts (regardless if they have been previously applied to the current desktop or not)
  • in the editor, show the index of each layout
  • win+cntrl+number instead of identifying a layout with that number of zones, will simply identify the layout index

That should provide enough flexibility to make the feature useful and it can be done without too many changes in the code.

Adding ref to "FanzyZone Custom Layout hotkeys" https://github.com/microsoft/PowerToys/issues/1411

@enricogior
Yes, that's exactly how I assumed the feature would work. [like described in the bulletpoints]
I've started using PowerToys after the legacy editor and I had no idea what it did instead, except that it somehow involved the Templates-layout (which aren't mine, so irrelevant) and was on top of that completely unpredictable.

If the feature was implemented like that, it would also make a lot of sense to (eventually):

  • make it possible ot reorder Template-Layouts (presumably the index would unchangeably correspond to the order of creation, which is highly inconvenient)
  • make it possible to address 9 additional layouts, by adding another modifier (9 Layouts is not enough, I'm planning to use 9 Virtual Desktops with one Layout for the main monitor, as well as a seperate Layout for the second monitor
  • some kind of further extendeability beyond that, since there are people who use many monitors more than just two and they might also want to use 9 Virtual Desktops

@enricogior disable feature, and work on fixing for 0.17

this is a multi-monitor aware editor feature. Talking with @enricogior, we need to think about this as part of that. #1032 is the tracking item for the larger bucket of work

@albertony @jstaro Hey everyone, I'm currently working on a feature to implement Hotkeys to quickly switch between FancyZones custom layouts, and would love to get your feedback! If you're interested, please fill out this 3-min form.

Feedback from anyone else who would need such a feature is welcome as well.

Option 2 means I can assign a single hotkey that will change to an individual layout for every screen, e.g. a 2-zone layout on screen A and 3-zone layout on screen B?

An alternate new feature in FancyZones would allow you to assign a hotkey to a a preset of layouts across all your displays (see image). You would then be able to change your entire workspace's layout by pressing the hotkey. How likely is is that you use this feature?

@albertony
That's how I interpreted it as well. A Meta-Layout.
I considered suggesting it myself at some point, but I can't keep track anymore what's already been suggested and what hasn't.
Don't care about it personally anymore, as I think I'm over multi-monitors since having an absurdly 32:9 49incher filling my whole field of vision on its own.

Option 2 means I can assign a single hotkey that will change to an individual layout for every screen, e.g. a 2-zone layout on screen A and 3-zone layout on screen B?

Yes, this is exactly what I meant.

Going to move everything to #1411 for hotkey for FZ

Was this page helpful?
0 / 5 - 0 ratings