Hacker News new | past | comments | ask | show | jobs | submit login
Fancy Zones, a tiling window manager (github.com/microsoft)
507 points by nailer on Sept 6, 2019 | hide | past | favorite | 163 comments



This seems like a good time to plug my tiling window manager for Windows, workspacer. https://www.workspacer.org/

I use xmonad on my linux machines, and wanted something similar for Window, so workspacer trys to replicate that style of window manager (configurable via writing C#, dynamic layouts, etc).

I've been using it every day for about a year, but its still pretty early, there are some applications for which it freaks out, but for the most part it works! What it really needs is a good set of docs and a bunch of examples, but I haven't had any time to flesh it out.

I was hoping to see some unique tricks in the source for Fancy Zones, but it looks like it more or less does the same thing as workspacer, managing the set of open windows and occasionally calling SetWindowPos.


Oh! This is the closest I've seen to what I want when on Windows. I run linux at home but Windows at work, so I miss i3 a lot. I've tried some other tiling WM attempts for Windows before but none of them have worked very well...

I'll definitely give this a try!


Please do! I haven't had time to work on it lately, but if there is interest in it I wouldn't mind picking it back up!


Just downloaded it and I have some pretty specific/opinionated requests already :P

I like it when the config file is explicit - as in that there are no defaults outside of what is specified in the config file. This way it's very easy for a new user (like me) to edit things like keybinds, colors, etc. without having to basically recreate the default config to then edit it.

Also, since I'm an i3 user, I'd like if there was the possibility of navigating windows using directions instead of in a sequence, and to create layouts on the fly by doing splits and resizing. Maybe this is already possible by writing some code in the code though?

Nothing too important, but thought I'd voice my initial thoughts. Thanks for your work!

I'll go ahead and plug my dmenu equivalent[0], since that's also something I use when on Windows and which someone might find useful.

[0]: https://github.com/jerwuqu/wlines


on default config: yeah, I'm not sure what the best story is here. I would like the out of the box experience to be nice, and I want to be able to configure anything, but I also want to be able to ship nice improvements to the defaults without making all users update their own config. For example, I just pushed a commit that adds a default ignore for a new start menu process in 1903. If I place that ignore in the "template" for the config file, then all users with a custom config will need to somehow diff their config with the default. I am 10000% open to suggestions on how to make this better.

On direction changes, I've gotten this request a few times. It should be pretty easy, but I haven't gotten around to it: https://github.com/rickbutton/workspacer/issues/43

On the fly layouts would be neat. Since layouts are just an instance of ILayoutEngine, you could probably just write a bunch of custom code to allow you to make splits however you want. I would be super interested in seeing what this looks like!

wlines is awesome! There is a feature in workspacer similar to dmenu called "menus", but there are a few bugs, mostly around it sometimes not showing up in focus, which is a pain. I have some config on my work machine that lets me press alt-shift-p and navigate to a bunch of work projects I maintain, only typing the first few characters of the project I'm looking for.


The way most software I've seen resolve this is to have a defaults config file and a user config file. defaults is defined by the application maintainers and the user config overrides any settings in the defaults.

So you can do updates to the defaults but if users wanted to specify specific customisations those would be preserved. Also users can browser the defaults config and copy/paste chunks of that config into the user config file.

Those files are often named differently and/or located in different parts of the file system hierarchy; but the concept is the same.


thats an interesting idea.

right now, configuring workspacer is a very imperative, mutable process, because you just setup instances of objects, and call functions that setup some state. some care would need to be taken to design an API that could be "layered" in that it could be easily overridden by the user. this is a good idea!


Might be just as easy as making sure that all of your defaults are documented in the doc-comments of relevant properties and encouraging people to use CSX editors that have good documentation tooltips for API exploration (like VS Code with OmniSharp)?


If you want to add the complexity of diff, you could do what Debian does[0][1].

[0] https://askubuntu.com/questions/365840/compare-differences-w...

[1] https://raphaelhertzog.com/2010/09/21/debian-conffile-config...


Fun! I created a configuration that lays out tiles following the Fibonacci pattern:

https://gist.github.com/Fusion/8ad05ac05948b3397516aa836f0a1...


Honest question here: what are the advantages over fancy zones? I'm a linux i3 user and want to give a try on windows with fancy zones, I can give workspacer a try as well.


fancy zones is very different conceptually from i3/xmonad or workspacer.

fancy zones allows you to define a static layout, and then drag windows into the zones you create.

layouts in workspacer are defined in code, and are "always on", in that the window position/size is always handled by workspacer, instead of only when you ask for it.


Looks like the venerable i3 (https://i3wm.org/ ). The workhorse of workspacing for this guy.


What is different about some applications?


Some applications like to reset their own position occasionally, or don't take kindly to being resized from an outside process. WinSCP is an example where workspacer tries to resize/position the window, and WinSCP itself listens for the move event, and moves itself. workspacer gets that second move event, and cycles back and forth forever.

For the few cases where it doesn't work right now, I have ignore routes setup in my config file (so workspacer will just ignore any matching window). I should probably make a list of the few common apps that are weird.


Martin Prikryl (the WinSCP main developer) is quite active on their forums and on StackOverflow questions about WinSCP; might be worth asking why or if it could be turned off;

https://winscp.net/forum/viewforum.php?f=2&sid=5a9eada96b43f...


> WinSCP is an example where workspacer tries to resize/position the window, and WinSCP itself listens for the move event, and moves itself.

Why?


Slightly off topic, but openscp comes with Windows now:

    $ which scp
    C:\WINDOWS\System32\OpenSSH\scp.exe
So no need for WinSCP if you just want to use the terminal.


¯\_(ツ)_/¯


What's your use cases for workspacer? How do you use it yourself?


I tried using a custom "window manager" for Windows a while ago (back in the Vista days IIRC) and it didn't really work well.

The main problem was that, as far as I could tell, the window manager couldn't really preempt the windows and force them to show up in a certain way. Instead it basically asked them "pretty please, could you show up at this location with these dimensions?". As a result frozen apps (such as graphical apps that triggered a breakpoint in code or are simply misbehaving) or apps running as admin would refuse to obey and stay stuck. IIRC one workaround was to run the window manager with admin privilege but even that didn't help with frozen apps I think. Besides I wasn't really comfortable running such an application with administrator privileges.

Of course that was a long time ago and it was a non-MS project, hopefully this one works better. I really can't see myself working without a tiling WM anymore, "conventional" desktops feel terribly clunky and inefficient to me.


Windows doesn’t really have a window manager like the concept from X11. Basically the apps get messages and by using the standard libraries to handle a selection of messages, you get the behavior you’d expect of a Windows app, like the maximizing and minimizing, resizing and the Windows 10 specific zooming behavior. But there is little coordination and no separate process that draws window frames or something like that.

Also normal apps can’t send messages to elevated apps because there are ways to take over apps by sending the messages that you can’t really defend against.


Thank you for confirming my intuitions, I wasn't entirely sure if it was a hard limitation of the way Windows handled... windows or if it was just buggy software. So I guess this new WM suffers from the same limitations?

This experience actually made me wary of Wayland and other X11 replacements because, as far as I understand, they behave similarly. I could be completely wrong about that though because I still haven't completely figured out how Wayland actually works and every time I looked for infos on this particular topic I ended up more confused than when I started.


Sway is a Wayland only WM and doesn't suffer of any the shortcomings you describe.


Each wayland compositor is like a combination of X and a singular wm wherein the existing Wayland standard provides a framework for implementing rather than each person reinventing their own x alternative.


I can confirm PowerToys does need to run as admin for this functionality.


This is true for Win32 apps but window management of UWP apps is more coordinated, with a process that draws all the window frames.


I’ve encountered similar issues with macOS tiling window managers. At the end of the day, you’re bolting on behaviors that the original designers of the system didn’t intend you to, and there’s always going to be tension there.

When I’m on Linux I love using xmonad/i3, but on other platforms I’ve learned to accept the defaults; otherwise you just end up using things that work most of the time, but not really, and it’s really infuriating when you expect your workflows to be snappy and consistent.


I've had a lot of success with Amethyst, can't imagine using my Mac without it now.


Have you tried chunkwm[1] on Mac? It has it's issues but it has served me fine for the last few years.

[1] https://github.com/koekeishiya/chunkwm


There's also AppGrid[2] for Mac, which I've been using for years and still use to this day. It's simple but flexible.

[2] https://github.com/mjolnirapp/appgrid


i've been using spectacle for many years pretty happily. maybe too basic for some but works great for my needs

https://www.spectacleapp.com/


Yeah, even Windows 10 Tablet Mode is pretty poorly supported in windows apps, and that's just "fullscreen all the things" - it tends to fall over on dialog boxes and the like.

Not surprised that more sophisticated alternate window-layout systems would also fail badly.


This was a motivation for the design of UWP apps (which use a different approach to window management, involving a dedicated system process that is responsible for drawing and managing all the window frames), as well as how they were originally presented differently from Win32 apps in a separate "area" back in the Windows 8 days.

It's extremely difficult to make any significant change to the paradigm of how Win32 apps are managed and presented and have it work consistently for arbitrary apps - for example they recently tried to add a feature to Windows that allowed arbitrary native apps to be switched and managed via a tab strip like web apps. Worked fine for UWP apps, but when they tried to extend it to arbitrary Win32 they got mired in edge cases and eventually dropped the feature.


Yeah, but I also remember when it was the explorer itself that was bad. I don't know if they've fixed it, but Windows Explorer failing to show copy status and things like that was really disappointing - that's not 3rd party, that's not even outside of the OS team.


Recently been forced to work on Windows, been looking for a tiling windows manager for Windows. I'm used to i3/Sway.

Played with it a bit. It has some good ideas, but hopefully they keep adding features. Some things it's missing (that most or all tiling WMs have):

- Custom keyboard shortcuts

- ability to switch focus quickly with keyboard shortcuts (move to window to right/left, instead of alt-tabbing through all open windows for example)

- virtual desktop keyboard shortcuts to quickly switch to a numbered Virtual Desktop and move windows to them (I have a autohotkey script for this), but would be nice for it to be built-in to this.

- an option to auto-tile when new windows are opened. As it is, it floats new windows, and you have to manually move them into position. This is fairly cumbersome.


I've been using bug.n [1] which has all of that except for being able to directly focus a window, instead having to iterate through with next/prev window. But otherwise it has everything I'd expect from a Linux tiling window manager, even coming with a customizable status bar.

It has its quirks and I had to spent some time adding exceptions and the auto resizing it does is certainly not the fastest thing in the world, but I'm more than willing to put up with it for the auto tiling.

On the whole, it's more reminiscent of xmonad than i3, but wasn't too bad to learn since you can bind what ever keys you want to whatever operations.

[1]https://github.com/fuhsjr00/bug.n/


> - virtual desktop keyboard shortcuts to quickly switch to a numbered Virtual Desktop and move windows to them (I have a autohotkey script for this), but would be nice for it to be built-in to this.

You can do this with DexPot (https://www.dexpot.de/?lang=en) and even send windows to a specific virtual desktop. It uses i3's key binds by default.

On Windows you're better off trying to find specific functionality from i3 across different tools.

For example, you can also use http://keypirinha.com/ to launch apps by fuzzy matching. In some ways it's better than d-menu and in other ways it's worse, but it's a decent tool.

And you can also use AutoHotKey to remap and set global hotkeys (as you may do in i3's config).

The only missing thing is actually tiling windows unfortunately.


I am in similar situation. I tried to use WSL with X server at first, but found that the antivirus block the internet usage of WSL until a certain update, but the antivirus was outdated.

At last, I use a similar setup with Autohotkey script. I remap the winkey to some unused key in order to disable default winkey behavior, so that I could use binding like win + 1 for virtual desktop 1, win + shift + 1 to move window to virtual desktop 1, and so on.

It was tough to work on other OS once you get used to tilting manager. It feels backward to manually moving around multiple stacking windows.


Also coming to Windows from an i3 background, I've set up a custom autohotkey script that handles a lot of window management stuff for me on windows 10.

F1 - Run or switch to Outlook

F2 - Run or switch to Firefox

F3 - Run or switch to Emacs

...

F9 - Cycle windows in app

F10 - previous window (alt+tab)

F11 - maximize / restore

F12 - Kill window

It's not tiling, but it's a potent workflow.


For the launch, open of applications I use Win+Position on super bar.

Win+1 Explorer

Win+2 Firefox

Win+...


Man, that saves me from so much alt-tabbing. I was using a custom AutoHotKey script to move between all sorts of Visual Studio solutions and manually opening email/chat/chrome/whatever else.


I know that several of my Windows-based co-workers will like this. Looking at the screenshots it does look cumbersome though. The real power of i3 is it's simplicity. You are not overwhelmed by complicated constructs. This appears to be a more static approach to tiling 'I want Layout #3' vs 'Open a new window here'.

I really hope this catches on. It's a fantastic productivity booster that I feel is on-par with having a second monitor.


I actually like it this way. I moved from i3 to AwesomeWM years ago, which basically has a bunch of pre-defined layouts. It's incredibly convenient, imo. Not sure what's complicated about it. I just hope it has hotkeys that let you switch layouts and it can assign the windows automatically (or remembers previous assignments). Otherwise it would be tedious.

edit: Just checked. It has a hotkey to switch between saved layouts. And you can set it so a newly opened program goes to its last known zone. That's pretty cool. I'll have to try it.


Ahh that's pretty cool. I've never used Awesome, so my experience is biased.


In my opinion, the major disadvantage of current tiling WMs like i3 is that they don't make effective use of the mouse, which can be a very efficient input device for some usages.

If this product is able to change that, then that could outweigh the pain of the awkward configuration for me.


Regarding the mouse... thats the entire point of i3, i.e. to make it all keyboard-driven.

It's sort of like saying "the problem with cars is that they don't make effective use of the horse".

i3 doesn't do anything to prevent you using the mouse for whatever application you like.


The point is to use the mouse for window management not just on the applications. Now, i haven't used i3, but from a tiling window manager i'd expect at minimum that i can drag-drop windows with the mouse between "zones" and resize the zone boundaries interactively with the mouse.

For extra stuff i'd like using the wheel up/down on a title bar to minimize/restore a zone, drag-dropping a window over another window to create a zone made out of tab-like title bars, ctrl+clicking multiple titlebars to select multiple windows (so that, e.g, drag-dropping them to another zone would put all of them as tabbed windows in there or being able to close all of them either via a shortcut or via a popup menu command, and/or commands to merge them in one tabbed zone, or split tabbed zone(s) to individual zones), right clicking on a zone separator to offer a popup with commands to split/merge the zone, move the splitter at some specific percentage, etc, drag-dropping one or more windows at the edge of the screen to create a new zone (or set of zones for multiple windows).

There are so many things you can add with a mouse, especially if instead of thinking of it as a car vs horse you think of it as what it actually is: an additional input device that is right next to your keyboard and unlike the keyboard it provides precise analog input for 2D motion.

As a starting point you can check what pretty much every IDE with support for tiling does (e.g. the recent versions of Visual Studio - not VSCore, the real one).


i3 has mouse support, you can resize windows (by default i believe it is mod + right mouse button), and i am fairly certain drag and drop will make it into the next release, if you want to use it there's already a PR on github to test it out.


Interesting to hear, thank you for the information.


i3 isn't really a Windows click-click-click style UI; you do most everything with the keyboard, including % based resizing, converting tiles to tabs or stacks, moving tiles from one section or virtual desktop to another, etc.

It's really quite a powerful and easily configurable tool, so much so that I consider it to be an absolutely indispensable part of my day-to-day computing experience (working on a Mac, for example, is just depressing in comparison).


But why? I think it would be hard to argue that the mouse isn't significantly more efficient for, e.g. resize operations than the keyboard. And you have one right there on your desk, don't you? Don't you find it to be a waste that it can't make effective use of all your input devices even in situations where they could provide advantages?


Decade-long user of i3 here, I have three different keyboards (netbook to server) and three different trackpads\mouses -- the keyboard is more efficient for resize operations. I use focus-follows-mouse (agreed, why not use all devices) and fling the cursor all over the place all the time, but don't have to click and don't even have to use my fingers if I can drag my lower palm across the trackpad.


Yes i know that i3 has a lot of keyboard shortcuts, i'm saying what i'd expect it to also have in terms of mouse support - it isn't an either "this" or "that", it is both :-). One doesn't exclude the other.


I understand that's a design goal of i3. I wasn't specifically talking about i3 though, in fact it seems like every tiling window manager has that philosophy and I think it is a mistake. Enabling effective use of the mouse doesn't negate the ability to use the keyboard effectively too -- they serve different use cases.


My mouse is actually critical to how I use i3 - I've got a lenovo thinkpad usb keyboard, with the left, middle, and right mouse buttons below the spacebar and the red nub for the pointer. I use focus-follow-mouse and when I need to change my active window I just flick the mouse over to where it needs to be - it's super fast. It also works really well with laptop trackpads and an actual mouse.

I know other window managers allow you to use focus-follow-mouse, but I haven't found any that make it nearly as effective as i3.


Would you mind elaborating on what use case you think a mouse could come in handy for when you would be using a tiling WM? I recently switched over to one and the only time I've used my mouse was when I had to click on something in Firefox.


The mouse could be convenient to resize or rearrange windows. For example, it would be nice if dragging one window onto another swapped them. I think that would be faster than swapping them with i3's shortcuts.


Alternatively you can use tridactyl to click on links with hint keys.


The mouse works great in Sway for resizing splits, moving floating windows, and changing window focus.


Interesting! Thanks for the recommendation


> ... also to restore these layouts quickly.

This is the most frustrating problem I have with Microsoft Windows, which frequently needs a reboot (to satisfy update obligations, or just to try to fix degraded performance).

After more than twenty years having my preferred desktop environment (KDE) bring back all my application windows, laid out as they were prior to reboot, across multiple virtual desktops, it's profoundly frustrating to have to spend several minutes each time trying to recreate my layout on Microsoft Windows 10.

Yes, tiling WMs etc may solve (for small values) this in different ways, but the fact remains that after a reboot on Microsoft Windows I'm back to a pristine desktop each and every time.


Sorry to tell you that KDE on Wayland will not make you happy any more.


I think this still could change though given Wayland is still very much a work in progress. Maybe they just haven't implemented this feature yet. AFAIK it isn't technically impossible with Wayland.


Im a huge fan of window management, so I'll definitely check this out.

Incumbents are pretty strong, though. Windows 10 introduced Snap, which easily breaks your screen into halves or quadrants

https://support.microsoft.com/en-us/help/4027324/windows-10-...

Sysinternals, well known for simple powerfull tools, makes a program called Desktops. It creates a total of 4 sets of desktops you can hotkey between.

https://docs.microsoft.com/en-us/sysinternals/downloads/desk...

sysinternals desktops multiplies my 3 monitors and gives me 12, and a few are quartered or halved. 16 "sections" in use pretty commonly with no extra software or hardware cost.

It should be noted that my work computer has 8gb ram and an i5, so if i can do it you can too : )


For Windows 10, you probably don't need Desktops anymore. If you click on the task view button on the toolbar, one of the options at the top is to add virtual desktops. You cycle between them with ctrl-win-left and ctrl-win-right.


They have absolutely ruined this in the past few years. It was once very snappy, and tiled everything perfectly on the screen. Then they made it scroll. Then they added "Timelines". Then they added a zoom out animation that doesn't respond to any of your Windows animation settings. Now, even on a high end computer, it will take you a full second before everything is zoomed out and tiled (with one final flash as it adds window titles and shifts everything around), and at least in my case has a probably 5% chance of crashing explorer.exe and needing even more time to re-launch.

This was the featured that made me go "okay, Windows 10 is doing some good things, I'll upgrade from 7", and now I hate it.


Late follow up comment: I just tried it out, and like sibling comment from ukyrgf says its kind of terrible.

Desktops is fast and seamless. Task View is very slow and awkward. Win+Tab takes nearly a second to load and the default focus starts in your current desktop, instead of the desktop switcher. Process to Task View from desktop 1 to 4: win+tab > shift+tab > right arrow > right arrow > right arrow > enter. You can ctrl+win+left|right to move a desktop at a time, but it doesnt wrap so to go desktop 1 to desktop 4, I have to swipe through 2&3 to get there. The cutesy swipe animation takes a half-second, so it takes ~2 seconds to get from 1 to 4. Do you think people managing multiple virtual desktops via hotkeys are interested in cutesy animations at noticeable performance cost, Microsoft?

Task View is worse than alt-tabbing through 20 open windows without any virtual desktops at all. Sysinternals Desktops takes the win, and not by a little bit.


Win+Tab opens up an overlay that allows you add a desktop as well.


That's another way of getting to the task view.


Oh my - I didnt know. Will investigate, thanks!


This sounds like a feature for sysadmins and programmers. It's something you need to "configure".

There are three thing I'd like regarding window layout:

1) the WM remembers the last placement of each app (and child window, and second or 3rd instance), and put them there when relaunched.

2) since I use a huge 4k monitor, I almost never want a window to drag beyond any edge of the screen. I dont need snapping, just a large hysteresis (in one direction) at the edge of the screen.

3) an easy way to set which thing launch at login. This may want to be in one of the common menus, not off in a config tool or .login file.

BTW I use gnome (on wayland), so if you know how I can get any of these behaviors I'd like that.


For 1, Fancy Zones has "Move newly created windows to their last known zone"


Gonna drop a PSA, if anyone is moving from i3wm to OSX, check out yabai. https://github.com/koekeishiya/yabai


Another option is Amethyst: https://ianyh.com/amethyst/


Also for those that prefer bspwm, I find chunkwm to be excellent


Will definitely check this out. I use a 43" 4K and the default corner/side snapping behavior is just not sufficient for managing windows. Having visual studio snapped to the right/left 50% of your screen all day is terrible for your neck, especially considering the default location of solution explorer in VS. I really just need a 'priority' zone or column right in the middle of the display that I can quickly snap other things around. A 3x3 grid or simply 3 columns might work out well for me.


If you're on an X11 based desktop system I would highly recommend Quicktile[1]. I have a 43 inch 4k too and the 3x1 layout is one of the most common I use. Centering a single window in the middle is also very useful. On my mac I use Spectactle[2] instead and I have the keyboard shortcuts mapped the same on both systems. If I would use Windows this looks like a good option.

[1] https://github.com/ssokolow/quicktile [2] https://www.spectacleapp.com/


Another option is Amethyst [1]. It does the tiling for you.

[1] https://github.com/ianyh/Amethyst


Are you using the the Dell P4317Q by any chance? That's my monitor at home and it's the best purchase I've ever made tech wise. Are you aware that the monitor comes with an app to manage multiple windows and sections of the screen from Dell themselves called Dell Display Manager - https://www.dell.com/support/article/us/en/04/qna44541/what-...


LG43UD79B - Fantastic display, I suspect it may be the same panel as the Dell unit.


There is an included "priority zone" layout included that will probably work just fine for you.


Would a dual or triple-screen fit your requirements better ?


I think it's not updated anymore but I used WindowGrind on 10.

https://bitbucket.org/joshua_wilding/windowgrid-binaries/src...


Came here to mention WindowGrid and WinNumpad Position.

WindowGrid: Drag window with left+right mouse buttons brings up a customizable grid. Release RMB to set first corner, and LMB to set opposite corner.

WinNumpad Position: Win key+Numpad key to snap window into corresponding position (eg- 7 for top left corner). Hit number multiple times to cycle through sizes. https://pbrs.weebly.com/win-numpad-positioner.html

Both are basically abandoned, but they work well along side the built in Aero Snap features.

Other old alternatives that have various levels of functionality (and clearly inspired many of the tools posted in this thread):

GridMove (free): Used to be my go to, but hdpi scaling and the Modern UI window elements borked it. Based on AutoHotKey, but surprisingly responsive, extremely customizable (though not very user friendly). Would love to see this make a comeback. http://www.dcmembers.com/jgpaiva/ https://github.com/jgpaiva/GridMove

MaxTo (paid): User friendly and pretty, but less useful since Aero Snap. Rarely updated, but alive. Nice if all you want is a slightly more control over the built in Aero Snap. https://maxto.net/

AquaSnap (paid): Very similar to MaxTo, but more refined. Free personal version is limited to single display functions. Updated rarely, but alive. https://www.nurgo-software.com/products/aquasnap

Windock (free): Crashes for me but works for some. https://www.ivanyu.ca/#/windock/

Freesnap (free): Not maintained, but used to be great. Haven't tried it in a while, but thought it deserved mentioning. https://mike-ward.net/freesnap/


Author of MaxTo here. It is very much alive, but there is just me working on it so progress is sometimes slow.

There are some very cool things coming in the next release: - support for different triggers, that lets you run specific commands in response to windows events. Basically our recipes feature extended quite a bit. - WinSplit-like hotkeys for those who liked those. Configurable. - lots of these small quality of life improvements

We are getting closer to a public preview of this, but shoot me an e-mail for a private preview.


That's a neat idea. So basically all windows must conform to grid lines. I wonder how well it resizes applications that don't want to resize.


It works almost too well. I've been using it for years and don't recall seeing a window it couldn't resize. I've seen it resize "unresizeable" windows in several programs that did not have scaling components, though. Consequently, you end up with the whole UI taking up a small part of the window.


I wrote (and use) Mosaico.

Download it at http://www.soulidstudio.com

Any feedback welcome!


This looks great. Something I have been looking for since upgrading to a 49-inch Ultra-wide, where I now prefer to keep my application windows floating around the center on this giant monitor.

Do you still actively develop it? The digital signature in your .exe says 2017 and your website footer says 2015.


Thank you! Yes, I'm currently working on a 2.0 version, which is a big refactoring code-wise and takes a lot of time. That's why regular updates are missing unfortunately :/


That looks like a cool project. If you don't mind me asking, is it just a side project, and if so, how much money can you make off of an app like his?

(Obviously not trying to compete in your space, just want to know if selling apps you've written is a worthwhile business.)


Thank you! It's been a full time project for a while. Now it's a side project. I'm satisfied with the revenues, but I'm not rich by any stretch. For me it's mostly about creating something that solves a problem and stick to it long enough.


so, i've tried this out. it seems like, unless i'm missing something, the zones can only be used on your primary display right now. that makes it useless for me.

another commenter mentioned maxto so i tried it out as well. it looks like maxto is exactly what fancy zones will be once it's finished.


Currently the new zone editor only supports tbe primary monitor. You can switch to the old zone editor in settings in the interim, though


Author of MaxTo here. Looks similar, but we have something in the works for MaxTo that makes it much more powerful.

See my comment above for details, or shoot me an e-mail at the support address for a preview.


This is part of the new PowerToys utilities. There's already a post on Hacker News front page about it: https://news.ycombinator.com/item?id=20890828


I got REALLY excited when I read this title until I read the documentation and now I probably won't even bother testing it.

If anyone is looking for an i3-like tiling window manager (a Linux tiling wm) Fanzy Zones isn't it. This one requires pre-setting a bunch of layouts up front, unlike i3 where you can just seamlessly open and move windows that auto-split as you go with zero window configuration up front.

IMO the mods should change the title of this post to define what type of tiling window manager it is, such as "Fancy Zones, a pre-defined layout based tiling window manager from Microsoft". In the title's current form it's borderline clickbait.


So, there are a great many tiling window managers out there. i3 is just one fish in the sea. Here's a starting point at a list just for X11: https://wiki.archlinux.org/index.php/window_manager#Tiling_w...

The usual classification is static vs. dynamic: static managers maintain a certain fixed layout of slots which they then fill windows into, while dynamic ones adjust the number, layout and size of those slots on the fly as new windows are spawned.

While I don't usually see them classified this way, there is also pre-defined vs. on-the-fly (manual?) layout. This is pretty much what it says on the tin; pre-defined managers have pre-defined zones (for static managers) or algorithms (for dynamic managers); generally you can customize these in some way if you wish. On-the-fly managers let you create custom layouts as you go.

Examples of various combinations: static, pre-defined: Fancy Zones, Slate, most simple tools for windows / mac static, on-the-fly: stumpwm/ratpoison, emacs (not really a window manager but the paradigm is familiar to many) dynamic, pre-defined: dwm, awesomewm, xmonad dynamic, on-the-fly: i3

All of these models have strengths and weaknesses. Dynamic/pre-defined (e.g. dwm) is well suited for a workflow leaning on traditional unix tools (vi, sed, awk, lots of shell magic) where one tends to frequently spawn and despawn terminals (i3 is probably also decent here), but tends to fall down if you have a lot of windows to manage (workspaces can sometimes help with this, but they aren't always the answer). Static/on-the-fly (e.g. stumpwm) works really well if you have a lot of windows to manage, but only want to display a few of them at a time in some ad-hoc manner --- but isn't so great if you want to constantly adjust your layout. Static/pre-defined usually have a control system that is less automatic (more overhead on the user) but play nicer in environments that are traditionally dominated by stacking managers (so also less headache for the user). i3 is kind of it's own beast; it has a lot of power in creating whatever specific layout you might find optimal at the moment; downsides include evolved complexity as your layout develops, and simple lack of the specific strengths of other approaches.

You seem to have found happiness with i3, which is great. I currently prefer the approach of dwm or stumpwm, depending. Others have other preferences, but all of the above are valid approaches to tiling. While I agree that more detail in the title could be a good thing, I definitely wouldn't call it clickbait.


It's especially clickbait because most people who exclusively use Windows aren't aware of any tiled window managers so they are going to assume this is the only way to do it and draw a conclusion about tiled window managers based on Fancy Zones specifically.

Heck the 6 minute Youtube tutorial in the README is just 6 minutes of trying to explain the convoluted configuration to set up and use layouts. There's not even 1 second of video showing 2 tiled windows together when the project is supposed to be the official Microsoft tiled window manager.


It's an Open Source project. Send a PR or a feature request: https://github.com/microsoft/PowerToys/issues/new?assignees=...


> https://github.com/microsoft/PowerToys/issues/new?assignees=...

This isn't something that's really a feature request. It would require changing how the whole entire application works at a fundamental level, or really building 2 applications in 1.

That's why you have 2 different sets of tiling window managers on Linux. You either have fixed layout ones where it's automatic after configuration or manual tiling window managers instead of 1 tool trying to do both.


> You either have fixed layout ones or dynamic tiling window managers instead of 1 tool trying to do both.

I must be missing something, because the 'dynamic' tiling window managers are 1 tool doing both fixed and floating (or stacking) layouts.


Sorry, I should have been more clear in my words. I edit what you quoted for clarity.

i3 acts much differently because if you open 1 window it takes up your whole screen and if you open another window it will be split 50/50 (the direction depends on what hotkey you hit). And it keeps going like this. You can just naturally use your system and let the tiling window manager worry about resizing things and you can fine tune the sizes with hotkeys on the spot if you desire to have non-symmetrical splits.

This is why i3 is classified as a manual tiling window manager. You get to control how the splits happen on the spot, rather than it being automatic as long as you pre-configure the layouts beforehand.

i3 also lets you optionally choose to make windows floating on demand with hotkeys or even pre-configure certain apps or window titles to be floating by default. There's stacking as well.

This video does a good job showing how i3 works and feels: https://www.youtube.com/watch?v=GKviflL9XeI (and how it's drastically different than Fancy Zones).


Ah I realize how I misunderstood/how that was poorly worded, but I'm well aware of how i3 works, thanks.

This may come as a shock to you, but some of us prefer our highly-tailored pre-configured tiling setups to the ad-hoc interaction that is i3.


> This may come as a shock to you, but some of us prefer our highly-tailored pre-configured tiling setups to the ad-hoc interaction that is i3.

Yes, that's why i3 and other wms exist on Linux and everyone is happy using the tool they prefer.

I'm more upset about the title of the post being clickbait because like you said, some people prefer different styles of tiled window managers.

Having it defined as "tiling window manager" is going to make the 50% of the people who prefer i3 feel they got baited into clicking the link. I know I went from "omg best software day ever" to "..." between reading the title and clicking the link.


Probably closer to 80% :).

I get the baited feeling. But you know as well as me that any sort of tiling interaction with Windows beyond snap left/snap right is progress.


From the existing backlog, this is a close representation of the feature request: https://github.com/microsoft/PowerToys/issues/160

It's not exactly the "zero configuration" the parent wants, but it's close, and aligned with how some tiling managers work. (As the other arguments get into, tiling window manager is a wide field with a variety of solutions and opinions differ.)


On Win 10 I'm using the combo of Virtuawin (for multi-desktops and window assignments) and AquaSnap for tiling / positioning.

NB: Virtuawin seems like OSS abandon-ware (last build ~2017, iirc) but it works great (so far), while AquaSnap is trialware (I bought it after two days of use) and is still shipping releases.

I also hack the registry to enable focus-follows-mouse without autoraise. (Powertoys could enable the first capability but not the latter, hence the registry mod.)

I'm primarily a Windows SE, but I fell in love with these capabilities in X when I was learning my way around Linux and just had to have the same experience on Windows <grin>.


Speaking of tiling window managers in new environments, I’ve had a really positive experience with Sway, the i3-compatible Wayland compositor. Almost everything you need can be done, someone has even written an OBS plugin capable of capturing from it (and any other wl_roots-based compositor.) I think when Chrome, Firefox and Electron all ship a WebRTC build capable of capturing from wl_roots based compositors, there will be no practical downsides to Sway over X11/i3. (There’s already plenty of cool things about it today.) That could take a while, though, since upstream WebRTC does not have support for this today.


This looks neat. This is a kind of window manager I have wanted for quite a while on OSX


I've been using spectacle[0] for a while and happy with it

[0]: https://github.com/eczarny/spectacle


Seconded - this is the first thing I install on any new Mac I get my hands on.


I have been using Magnet [1] for a long while and although it is not as flexible as Fancy Zones appears to be I am very happy with the extra functionality it provides.

[1] https://magnet.crowdcafe.com/


Yeah keyboard shortcuts and tiling are a good way to multitask without having to think about window placement. Just specify which zone you want the window in and let the WM do the resizing work.

Direct link to PowerToys inc Fancy Zones: https://github.com/Microsoft/powertoys/releases

- You probably want to turn on 'On Override Windows Snap hotkeys (win+arrow) to move windows between zones'.

- Default zone is boring, I like 'Priority grid' which is two thin columns and a thick one.

After a while you don't really think about window management.

PS 'jenmsft' in the thread below is a Software Engineer & Community Manager for Microsoft.


I've been using Yabai[0] for a few months and am generally pretty happy with the i3-like experience on macOS.

[0] https://github.com/koekeishiya/yabai


If you're willing to put some time into configuration, check out chunkwm (which is apparently being replaced by yabai, which I haven't tried). Its the closest I've gotten to a true tiling window manager on OSX, not without its quirks, and requires some work to get the way you want it, but it's at least something.


Though it isn't as fancy when creating custom layouts, I'm very happy with Amethyst[0] on macOS.

[0]: https://github.com/ianyh/Amethyst


Check out better snap tools. It’s not free, but it’s kept updated and works remarkably similarly to the tool listed here.


Multiple desktops are pretty useful though.


They are, but it's not exactly the same. I want to customize my current Desktop with multiple windows arranged "just so."

Mulitple desktops with windows nicely arranged on each is even better.


NVIDIA's nView Desktop Manager has Gridline Editor that is very similar. It's an indispensable tool for a ultra-wide monitor. If you happen to have NVIDIA GPU and Windows most likely you already have it one right click from desktop.


for those unfamiliar with it, there's also 'divvy', which has a mac and windows client.

https://mizage.com/divvy/

I use it on my 34" monitor.


User on OSX before, and on windows since the start! They gonna have to pry WinDivvy from my dead cold hands.


Funnily enough, I recently purchased MaxTo[0], which appears now to have a decent and free competitor.

0: https://maxto.net/


Thank you for you purchase. I'm the author of MaxTo.

I'm not too worried about the competition here; MaxTo's feature set is expanding and will remain quite a bit more powerful than FancyZones for the overseeable future. :)


Interesting. The recent 1903 update has a significant flaw where any disconnection from an RDP session (I work remote) completely resets all window positions. I was saved by this wonderful tool:

https://github.com/adamsmith/WindowsLayoutSnapshot

Wonder if this tool would perform the same general function.

BTW: For any MS folks listening, please fix this bug, it's dreadful! :(


This doesn't look like what a Linux or BSD user would call a window manager. It looks more like a way to configure the MS-Windows window manager (that is, the graphical shell) to behave a bit more like i3 or xmonad in how it arranges windows on the screen. There's no real way to pry off MS-Windows and run anything else on top of the NT kernel, is there?


Microsoft themselves tried in Windows 8, when they thought they might actually have a chance to reinvent most of the graphical shell. The original UWP "world" (app composition model) involved a separate tiling window manager that a lot of people hated (I loved it, sigh). In Windows 8.1 that tiling window manager got rather capable allowing for any number of vertical splits and the Win32 desktop taking up what remains after the splits. In Windows 10 the last vestiges of that tiling window manager remain only in Tablet Mode and devolved back to only supporting one vertical split at a time, just managing two semi-maximized apps running more traditionally like the Win32 desktop mode.


I'd love to give this a try. The improvements to edge/corner snapping in Windows 10 already feel like they give me about 60% of a tiling window manager, and if this was 80%, that would be fantastic. Unfortunately, it requires a newer release of Windows 10 than my workplace is running, so it's out of the question for me for now.


Does windows have virtual desktops? I don't see any hotkeys for moving between vdesks. Never thought I'd see the day MS makes a tiling wm with hotkeys inspired by i3 & friends.

I'll stick with i3 though.


Use Win+Tab then in the upper left corner there is a button for 'New desktop'. On my work Dell laptop I can use three-finger swipe to switch desktops. Not sure about moving windows between virtual desktops.


They’ve had virtual desktops for some time now, and I think the shortcut is Ctrl-Win-(left|right). They’re not terribly customizable but they’re not bad.


Press win+tab to open the view to create new desktops and use ctrl+win+arrow key to switch between them.


DWM port windows is what I use daily. https://github.com/prabirshrestha/dwm-win32-6


Looks really nice, but not a big fan of the name "Power Toys" - It makes me think it's some extension to powershell or a collection of powershell scripts that does something fancy.


Well it inherits the name from the Win95 days, some years before powershell became a thing. And “power” is a word borrowed from biz like power lunches and power walking, etc. just a happy play on words.

I think it also borrows a bit from “Kai’s Power Tools”


"Power user" has been a computing term for decades, for someone that uses advanced features. (In this case you have toys for power users.)

https://en.wiktionary.org/wiki/power_user


As others have noted, PowerToys (https://en.wikipedia.org/wiki/Microsoft_PowerToys) has a long history. I have some fond memories of the TweakUI utility by Raymond Chen as it made the OS much more usable.


"Power toys" predates Powershell and was a thing back when we were all using Windows 95



Does it allow for scaling windows or just resizing. I would be thrilled by a possibility to have 1 main area and 3 smallers on a side, where windows wouldn't resize but just scale down.


not directly related but whats the closest to i3 on osx? I have tried Amethyst - it works but has quite a few rough edges and rouge app interaction problems.


Check out Hammerspoon https://www.hammerspoon.org/


Have you tried https://github.com/koekeishiya/yabai ? (Unfortunately, you have to disable SIP...)


This is great. As a primarily keyboard person, I've always wished for this.

Great productivity booster!


Try the Vimium chrome extension as well. I avoid the mouse as best I can woth vimium and i3 and when it's flowing it's really fast.


I'm glad you like it


This is great.

I had some difficulty using it on multiple monitors though.


i cant seem to get it to work with additional monitors, what did you do to get it working?


Same here, I'm having difficulties getting it to work on both.


What is equivalent of something like this for Linux?


Looks like:

* https://i3wm.org/ (i3)

* https://xmonad.org/ (xmonad)

* https://awesomewm.org/ (Awesome)


To see the day ...


> PowerToys

What a project name :P


Surely one that weeds out the millennials from the old guard ;-)


Millennials are in their mid-30s by now.

Boomers are retired, Xers are the corporate old guard, and the up-and-comers right out of college are Generation Z (Zoomers) or whatever they come to be called.


Millenials are older than you think. :)


do they know the powertoys heritage though?

also: i'm not sure i agree with <19 yrs old people being ... "old"


Am millennial. Fully aware of the PowerToys heritage. I used to run the win95 explorer.exe on Windows 98 back in the day along with a bunch of PowerToys tweaks.

Millennial were born 1981-1996 ;) There's no <19 year old millennial's left, I'm afraid.


I confused millennia with generation x... You're right if course! I can never keep these terms straight


No, it's not. Too late to delete however...


Listen, I have an extremely locked down work PC. I need this app to be able to install in a public folder ASAP.

/Edit

I'm going to assume all these downvoters work for my IT department.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: