microsoft / PowerToys

Windows system utilities to maximize productivity
MIT License
111.05k stars 6.53k forks source link

Taskbars per FZ zones (Treat zones that touch taskbar like a different monitor) #1488

Open GeertvanHorrik opened 4 years ago

GeertvanHorrik commented 4 years ago

Summary of the new feature/enhancement

Similar to when using multiple monitors, where the icon of the app in the taskbar can be shown on the monitor which is displaying the app.

image

Proposed technical implementation details (optional)

Not sure what to put here.

crutkas commented 4 years ago

so in ultra wide monitor scenario, you want multiple task bars?

Would putting the task bar in the center be better instead? or you really want to have mutliple, custom placed taskbars

GeertvanHorrik commented 4 years ago

I am coming from multiple monitors, so I am used to having the taskbar icons live where the apps are actually visible. I think this makes a lot of sense when there are multiple zones. For example, I have a "webbrowsing" zone, a "chats / communication zone" (teams, skype, outlook, etc), and a productivity zone (center).

So if I have a choice, I'd definitely go for taskbar / zone, not a single one centered in the screen.

SCWells72 commented 4 years ago

I was about to file a similar request but will instead add my thoughts here. I'll elaborate on what I'm thinking, though, so please let me know if you'd like to broken out as a distinct enhancement.

I have side-by-side 37" UWHD monitors, and FancyZones is working GREAT for allowing me to carve them into usable virtual monitors. The one issue I have--and it was one that was solved nicely by DisplayFusion which I used prior to FancyZones--is that the taskbar on the left monitor starts at its far left side. The taskbar on the right monitor starts right at the seam between the monitors. Here's a screenshot of the bottom of both monitors to show what I mean:

image

I would love it if I could have the task bar on the left monitor be aligned with a specific zone on that monitor, in this case the third zone. My current workaround for this is a blank dummy toolbar which makes it look like the following:

image

There are two shortcomings of that workaround, though:

  1. When I undock my laptop (Surface Laptop 3 connected to Surface Dock), that dummy toolbar is still there and I have to remove it for things to properly align on the left, then re-add it when I return my laptop to the dock.
  2. As you can see, while the taskbar app buttons are moved to the right-most zone, the start button isn't. I'd prefer that the entire start menu contents were aligned with the designated zone.

So basically it would be wonderful if you could (likely optionally) designate a specific zone on each monitor against which to align the task bar on that monitor. It helps to make the task bar accessible on these large monitors for which FancyZones is particularly useful, especially when multiple are used together.

Make sense? Let me know if you have any questions.

GeertvanHorrik commented 4 years ago

This could be extremely useful: https://github.com/mdhiggins/CenterTaskbar

Imagine this to be possible per zone (e.g. group taskbar icons per fancy zone).

Maybe @mdhiggins might be able to help out (if he is willing to)?

GeertvanHorrik commented 4 years ago

I want to take things a bit further. I just checked the source code, it's all C#, so I am happy to help out as well if need be. I see so many benefits to support this, so:

  1. If @mdhiggins doesn't mind that we use his code for this (even though it's MIT, it's nice to ask for permission)
  2. The PowerToys team thinks this is a great idea

I am happy to implement a PoC / PR to implement this.

crutkas commented 4 years ago

think #503 is actually tracking item here.

100% agree with asking @mdhiggins

crutkas commented 4 years ago

@mdhiggins, i just sent you an email, FYI

mdhiggins commented 4 years ago

I don't have much time to actively participate in development but you're welcome to use whatever code from the project. It primarily uses UIAutomation to handle calculating the new position to determine center and the events for when a position change occurs and then repositions the frame.

There are lots of limitations though. You can only reposition the parent frame and cannot resize it. Trying to resize the parent or reposition the children triggers a redraw so its pretty limited in what can be done. Additionally the events being monitored are not the most efficient as there lots of false positive triggers particularly for window close events but all the other events you can listen for using UIAutomation aren't triggered reliably enough.

GeertvanHorrik commented 4 years ago

think #503 is actually tracking item here.

100% agree with asking @mdhiggins

I think that ticket is only about centering taskbar elements? This ticket is about creating a "taskbar" per fancy zone (at least vertical groups).

crutkas commented 4 years ago

I think that starts making stuff very complex. Example would be shortcut guide with the overlay.

GeertvanHorrik commented 4 years ago

Good points.

Would a setting, disabled by default, work for everyone including the oneswith a large monitor (that would benefit from this setting)? And agree, when people have a vertical Taskbar, we should respect the horizontal zones instead.

ic9888 commented 4 years ago

Wouldn't it be more effective to treat each zone as a seperate monitor? That way fullcreen and taskbars would just use their existing behaviours...

enricogior commented 4 years ago

@ic9888 that would require to redesign FZ from the ground up, it will also remove some of the unique FZ features. I see that more as a separate WM rather than an evolution of FZ.

djmacleo commented 3 years ago

Glad to hear others are thinking about the same issue I mentioned in #2194

My initial idea was an MVP attempt like this: 1) Start by simply reordering programs in the taskbar based on their placement in the fancy zones. You can currently do this to some extent with the mouse, so it should be possible to do it programmatically pretty easily (at least by program group). It might be more challenging if you have many different instances of the same program open in different zones, which I often do - Think two browser windows side-by-side.

2) Next, add in a method to align spare taskbars by creating some form of flexible padding (or taskbar zone) that pushes programs in the taskbar to the correct zone position within the taskbar. The flexible padding approach might be easier, as it would simply create a virtual taskbar entry that shrinks as the bar fills up - but it's not as powerful as a proper zone approach.

If a zone approach is taken, I can easily see how zones with more programs would shrink independently of other zones. You could even have the zone boards be a resizeable element like a divider that actually modifies the zone windows - at least in simple size-by-side layouts.

Some of this might break down when people use more than one row of zones, so you might need to think about a clever way of combining those row zones in the taskbar.

Anyway, just my two cents. I'm excited to see how you guys figure this out! Keep up the great work!

mensa84 commented 3 years ago

Will this feature come to PowerToys, or is it already available?

omdathetkan commented 3 years ago

This would be truly amazing!!

Plinpod commented 3 years ago

Any updates on this feature? DisplayFusion currently does this and I'm needing it before switching over to PoweToys

Sly-Ripper commented 2 years ago

Bumping, would be nice on Win 11

matthewlilley commented 2 years ago

I beg of you

khaivngo commented 2 years ago

Please look into this, it makes so much sense coming from a multi-monitor setup

Jay-o-Way commented 2 years ago

@SeraphimaZykova think this is possible?

crutkas commented 2 years ago
  1. PowerToys has to use public APIs. Without deskbands, i don't know of a way to do this with public APIs (could be wrong)
  2. I think this becomes very complex when you do Win10 vs Win11. (side/top vs only bottom), also different sizes
  3. there are a lot of use cases here that would have to be handled. What happens when you shift work environments (undocked laptop), what happens when you shift zone layouts, overflows, overflows with overlaps

Big work item.

TrakDah commented 10 months ago

+1

Came here to look for this feature. I'm leaving DisplayFusion behind me after several years, and so far Fancy Zones is doing what it's supposed to. But I really wish that you could turn on a feature to have the taskbar per zone, as if they were separate monitors. This will be dearly missed by me now.

Please add this.

ehabtk commented 6 months ago

+1

Jay-o-Way commented 6 months ago

Hacking the OS doesn't sound easy to me. If anybody knows a way to actually approach this, that'd be helpful.

orcavia commented 6 months ago

+1