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”
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 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.
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.
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.
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.
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.
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 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.
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.)
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.
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.
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.
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'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.
> - 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.
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.
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-...
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.
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.
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.
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.
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.
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.
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.
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. :)
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.
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.
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.
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.
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.
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;
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...
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.
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 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.
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)?
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.
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.
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.
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.
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
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.
171 comments
[ 3.3 ms ] story [ 192 ms ] threadI think it also borrows a bit from “Kai’s Power Tools”
https://en.wiktionary.org/wiki/power_user
What a project name :P
also: i'm not sure i agree with <19 yrs old people being ... "old"
Millennial were born 1981-1996 ;) There's no <19 year old millennial's left, I'm afraid.
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.
Great productivity booster!
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.
Mulitple desktops with windows nicely arranged on each is even better.
[0]: https://github.com/ianyh/Amethyst
[0] https://github.com/koekeishiya/yabai
[1] https://magnet.crowdcafe.com/
[0]: https://github.com/eczarny/spectacle
I really hope this catches on. It's a fantastic productivity booster that I feel is on-par with having a second monitor.
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.
If this product is able to change that, then that could outweigh the pain of the awkward configuration for me.
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.
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.
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).
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).
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.
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.
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.
I must be missing something, because the 'dynamic' tiling window managers are 1 tool doing both fixed and floating (or stacking) layouts.
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).
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.
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.
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.)
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.
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.
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.
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.
Win+1 Explorer
Win+2 Firefox
Win+...
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/
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.
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.
[1] https://github.com/ssokolow/quicktile [2] https://www.spectacleapp.com/
[1] https://github.com/ianyh/Amethyst
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.
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.
[1] https://github.com/koekeishiya/chunkwm
[2] https://github.com/mjolnirapp/appgrid
https://www.spectacleapp.com/
Not surprised that more sophisticated alternate window-layout systems would also fail badly.
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.
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.
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.
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.
See my comment above for details, or shoot me an e-mail at the support address for a preview.
0: https://maxto.net/
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. :)
https://mizage.com/divvy/
I use it on my 34" monitor.
I had some difficulty using it on multiple monitors though.
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.
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.
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.
Why?
https://winscp.net/forum/viewforum.php?f=2&sid=5a9eada96b43f...
I'll definitely give this a try!
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 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.
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.
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!
[0] https://askubuntu.com/questions/365840/compare-differences-w...
[1] https://raphaelhertzog.com/2010/09/21/debian-conffile-config...
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.
https://gist.github.com/Fusion/8ad05ac05948b3397516aa836f0a1...
/Edit
I'm going to assume all these downvoters work for my IT department.
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 : )
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.
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.
https://bitbucket.org/joshua_wilding/windowgrid-binaries/src...
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/
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.