11 ms·
Show HN: A Native Tiling Window Manager for Windows 10, Inspired by I3wm
- Already__Taken 6y agoHow different from https://docs.microsoft.com/en-gb/windows/powertoys/fancyzones https://docs.microsoft.com/en-gb/windows/powertoys/fancyzone... is i3 or this i3 spinoff?
- bondarchuk 6y ago> The subtractive Grid model starts with a three column grid and allows zones to be created by splitting and merging zones, resizing the gutter between zones as desired. i3wm is basically like that except ad-hoc instead of preconfigured, and starting from a single full-screen window.
- mcyoloswagham 6y agofancyzones is pretty good but it's more like fixed layouts that you can change to, where as i3wm and other twms let you change the layout on the fly making them a bit more flexible.
- WorldMaker 6y agoYeah, it's a bit of a push versus pull distinction: Fancy Zones sets up "zones" on the monitor that you can push applications into. A tiling window manager pulls new windows as they appear into non-overlapping "tiles". With Fancy Zones a window typically overlaps by default (just as the Windows default has been since sometime in Windows 2) until you the user pushes that window into one of the zones (using the mouse or a keyboard shortcut). A tiling window manager should default to that automatically without user intervention. There's definitely plenty of overlap: Fancy Zones has some options to try to automatically remember to snap applications to given zones.
- Already__Taken 6y ago> push versus pull Thanks that really clarifies how to view the projects actually.
- vxNsr 6y agoSo happy to see so much more active development in windows stuff these days, for a while it looked like all the cool stuff was happening in the apple ecosystem, I’m happy to see developers starting to trust windows again. One of the things that I’d love to see in this that fancy zones is missing is the ability of windows to remember where they should be after I reconnect to my dock. Like maybe I run some shortcut right before I disconnect the dock that stores window locations and then when I reconnect I click the shortcut again to restore them to those monitors.
- mcyoloswagham 6y agowhat do you mean by reconnect to my dock? Feel free to open an issue if you'd like and I'll try and to my best to implement it. edit: I think I understand, WinWM has a hotkey called refresh after you move windows you can use it to return all windows to the current layout.
- rodrigodlu 6y agoI think he is talking bout plugging or unplugging a new/different display. You can connect external displays to USB-C or Thunderbolt docks / hubs.
- mcyoloswagham 6y agoah I see, I'll add that to the checklist
- DoingIsLearning 6y agoWorth remembering that you can configure a machine to either mirror a display (I would expect the most common case) or extend the desktop (new display becomes display #2). It is also not uncommon to dock a laptop at a workstation with dual or triple monitors.
- 0xdba 6y ago> One of the things that I’d love to see in this that fancy zones is missing is the ability of windows to remember where they should be after I reconnect to my dock. When I worked in an office, and had frequent meetings I had to take my laptop to, it irked me enough to come up with my own solution: https://github.com/nearwood/windmill https://github.com/nearwood/windmill
- joombaga 6y agoNice work! One thing I always miss from MacOS is per-monitor workspaces. Does your WM support this? Gonna give it a shot. Right now I'm using the Microsoft's FancyZones PowerToy which is more about custom snap zones than proper tiling.
- mcyoloswagham 6y agowell each monitor has it own workspace, but when you change workspaces it will change them all in sync with each monitor, so I don't know if that's what you mean. you can have different layouts on different monitors if that is what you mean
- deorder 6y agoMay be you can help me with this. I am using the same computer from 2 locations, one 10 meters away (using extension cables) from the computer. Both locations have a keyboard and a mouse. When I start an application it always opens on the primary display, not the display I initiated the opening of the application from. On Linux with X11 (with BSPWM or not) this is flawless. The multi display support in Linux / X11 seems to be much more advanced compared to Windows. Any idea how I can get this in Windows 10?
- mcyoloswagham 6y agoI actually have no idea, this is something I had to work around in my twm, since the windows always spawn on the primary monitor
- ianhanschen 6y agoOn Linux you have two X servers instances, with 2 window managers, and 2 consoles. Each X server is working with a different display, so naturally the content ends up on the right display. On Windows you have just one console, one window manager, and multiple monitors. The easiest way to accomplish this is to clone the two monitors in display settings so you're always using the same monitor, regardless of where you're sitting.
- saint_angels 6y agothis is great! Did you encounter any Win10 quirks, that wouldn't allow to recreate full i3 window-tiling experience like fullscreen focus?
- mcyoloswagham 6y agoYeah, there are definitely a few, I've implemented an experimental thing that removes titlebars for windows, but that's totally dependant on the application it works on, so browers that do fancy things don't work as well, but something like notepad/cmd/etc... work pretty well. Also the focus bar is a little overlay line that could be improved, but it's very difficult to make it like in i3wm without covering a significant portion of a windows content since you can't really control a windows rendering, etc....
- Miner49er 6y agoI'll have to try this one out, I've been using PyleWM[0] for a few months, and it works well, but doesn't have as much workspace support as this project, it seems. One recent thing PyleWM has added, but isn't in the readme, is a fuzzy program launcher, does this have anything like that? [0]: https://github.com/GGLucas/PyleWM https://github.com/GGLucas/PyleWM
- qwerty456127 6y agoDoes it have workspaces (virtual monitors)? Can it save them and restore them after I reboot?
- mcyoloswagham 6y agoyes it does have workspaces, 9 of them that aren't just moving around windows but windows's own Virtual Desktop, but no the state isn't stored through reboots, though that is one of the goals.
- lolive 6y agoI have dozen named workspaces on i3. Limiting them or not providing the ability to (re)name them or create them on the fly makes the whole experience of virtual desktops pretty lame.
- mcyoloswagham 6y agosince it's using virtual desktops you can just win+tab and do that
- lolive 6y agoDirect access through names and autocompletion: I won't accept anything less productive. Also: Auto creation of workspaces on new name, auto deletion of workspace when it contains no window. This is the base of i3. That plus its scriptability that is so freaking awesome.
- willjp 6y agoThank you! I am very excited to try this
- flipcoder 6y agoNice work. I'll definitely be using this!
- rtlfe 6y agoCan you turn it on/off without logging out? I use i3 at work, and I'd guess I would want it 20% of the time for my personal computer.
- mcyoloswagham 6y agoyes you can the default shortcut for turning it off and restoring everything to a single virtual destkops is MOD + T
- gautamcgoel 6y agoWhy do you want it at work but not at home?
- Shared404 6y agoI'm using Linux in both places. For me it's because I spend more of my time at work programing, while at home I spend as much time gaming, which I've found doesn't work with tiling WM's as well.
- josteink 6y agoOn Linux I’m a now full time sway-user, and a former i3 user. While on Windows I never found a good i3-replacement, I found a fairly mature and stable tiling WM I’ve been contributing too, although it’s more in the style of xmonad. So if you’re into tiling WMs and you’re stuck on Windows you may want to give that one a try too: https://workspacer.org/ https://workspacer.org/
- filmgirlcw 6y agoGreat work! I love FancyZones but this is a bit more configurable (a friend on Twitter calls FZ “lighter touch,” which I think is a perfect descriptor, whereas this is more flexible and more of a traditional tiling manager) and it’s such a good start! I’m primarily a macOS user, but projects like this really make me wish there were more options (yes, I’m aware of Amethyst, Yabai, Spectacle (now Rectangle), Hammerspoon, and so on. Those options all have their own deficits and trade-offs) in the Apple world.
- abandonliberty 6y agoFZ is awesome. I think few people are aware of it. https://docs.microsoft.com/en-us/windows/powertoys/fancyzones https://docs.microsoft.com/en-us/windows/powertoys/fancyzone...
- memco 6y agoOn the macOS front I’ve only heard of Yabai and amethyst. I settled on amethyst since it didn’t require disabling SIP but I’d be interested to hear about the drawbacks you’ve seen in others. Amethyst seems to work okayish, but I definitely would be interested in something more advanced if the drawbacks aren’t too painful.
- BatteryMountain 6y agoIf anyone here has a Dell monitor, they have a small tray application called "Dell Display Manager" and it can split your screen up into all kinds of different configurations (I use 1x pane on the left and 2x panes on the right). It works only on Windows though. It works great and easy to switch off if it gets in the way.
- majkinetor 6y agoOne important distinction is that you can still resize the window without affecting other windows, so not really true tiling WM in linux sense, where you can never escape the tiles. I have never seen Windows WM behave the way i3 does.
- RMPR 6y ago> where you can never escape the tiles Tbf that's exactly what floating mode is for
- 3131s 6y agoCan floated windows in i3 be snapped to somewhere on the screen in any way? I use i3 but don't know of any way to do this.
- ianhanschen 6y agoWindows can be made to behave like i3, with a lot of work. I've done a few different things over the years, but I never got into i3 so I haven't made my personal WM software work like that. It's a bit of a curiosity nowadays, but Windows started out as a tiling system - if memory serves, overlapping windows were not supported until 2.1. But even then, it wasn't like i3. - guy that worked on the Windows WM (USER & DWM) for over a decade
- mcyoloswagham 6y agodamn that's very interesting, due to certain performance issues on very old hardware, I was debating writing a driver for win32k, make it work faster, like I mean 1-5ms render times, but it was too much of a mess. DWM & Win32k are very complicated
- ianhanschen 6y agoBefore coming to Microsoft, I wrote my own EngAlphaBlend() accelerator driver in 2003 or so. I knew a lot about how things worked from disassembly but after coming to MS in 2004 I quickly destroyed a lot of my own assumptions. Mess? no. Complicated? yes.
- graycat 6y agoGee, what the OP has is a LOT of advanced Windows software but, still, gives results not what I prefer!! I don't want to change the sizes of the windows and but just move them so that I can easily make use of all of them and for that goal: For each window, I want its UL (upper left) corner to be on a line from roughly the top center of the screen to roughly the left center of the screen. And I want all those UL corners equally spaced on that line. So, for the goal: With this arrangement (1) can see at least a little of each of the windows, (2) usually can see the title of each of the windows, and (3) properties (1) and (2) continue to hold for any Z-order for the windows, i.e., can click on the windows in any order, thus, changing the Z-order, and still have properties (1) and (2). So, with (3) can just click on any window, bring it to the top of the Z-order, see all of that window, and still have (1) and (2). That is, can continue working with all the windows without more arranging. I wrote a little script in Rexx to do this arranging and put an icon on the desktop to run that script. Best place for the icon? Sure, in the UL corner of the screen thus, not covered by any of the so arranged windows. The version of the Firefox Web browser I'm using does something similar BUT with a difference: The line I mentioned goes from the top center of the screen to the center RIGHT of the screen instead of the center left. Sooo, when a window is brought to the top of the Z-order, usually all the windows with UL corner to the lower right are fully covered, i.e., usually can't see any part of any of them. So, lose property (3) and often soon also properties (1) and (2). So, having that "line" go to the center left of the screen instead of the center right is a biggie!
- mcyoloswagham 6y agoI'm not too sure what you mean, if you mean the little inequalities from the top of the screen, the option "adjust_for_nc" should be turned on, I should probably change that to include it. As for the rest of the stuff I'm not sure
- deleted 6y ago[deleted]
- ghostpepper 6y agoThis is really cool. It doesn't seem to capture every app though - the first one I tried was Calculator, which just floated on top.
- mcyoloswagham 6y agoYes my bad, this is a debugging remnant because all UWP windows share the same name meaning that it gets very confusing when the settings and other applications get captured by WinWM, or like the wifi popup, etc... I'll address the bug soon
- Zevis 6y agoCalculator is one of those applications that I set to floating in i3/awesome, so I'm not sure it should be "fixed". This is the sort of thing that users should be able to decide on the fly.
- galkk 6y agoAre workspaces integrated with windows desktops or they are separate entities?
- mcyoloswagham 6y agoThey are integrated with windows desktops. You can see them in the Win+Tab menu
- greggturkington 6y agoFantastic work, THANK you! A suggestion: get rid of any spaces between the windows, but keep the snapping. Sort of how Aero Snap works today, snap to the entire left half, or the entire right. Keep the 2x2 grid you have now, but just make it easy to snap to the full size of each grid cell (or 1x2 or 2x1 spaces).
- mcyoloswagham 6y agoyou can totally change that in the settings, set the "adjust_for_nc" on and disable gaps. I'll change the defaults right now. it's in config.json the explanations are here mcyoloswagham.github.io/win3wm
- ShamelessC 6y agoThe gaps are a beloved option in i3wm. This project borrow opinions and hotkeys from that project and will likely be more appealing to people who just an _automatic_ tiling WM full time.
- tiborsaas 6y agoHow is this different from the default tiling support in Win 10? If you drag a window to a corner/edge it starts to offer you options to add windows.
- tiborsaas 6y agoLOL, if you don't know why downvote? :)
- marliechiller 6y agoi was just thinking of removing windows 10 and going back to manjaro i3 this evening. Will give this a go before I do! Thanks
- emily-c 6y agoThis is awesome. It’s always nice to see new Win32 productivity software. Thank you!
- ianhanschen 6y agoLooks cool. If you want to get rid of your hook DLLs and the need for the x86ipc child process, you can use SetWinEventHook() with EVENT_OBJECT_CREATE / EVENT_OBJECT_DESTROY as min/max event values and WINEVENT_OUTOFCONTEXT to get notification on newly created/destroyed windows, all within the context of your process. No hook DLLs required.
- mcyoloswagham 6y agoOh wow, that's huge I'll definitely add that, that'll help a lot with dealing with processes that don't need injection, and protected processes (anticheats/drm etc...). edit: though regardless, I need to inject ForceResize into them, but still maybe I can come up with some way to subclass windows without subclassing windows lmao, need some gui thread message hijacking
- fortran77 6y agoIt's nice that Windows allows alternate Windows Managers unlike that other proprietary operating system. Give users a choice!
- lostmsu 6y agoIt actually does not. All WMs on Windows just move windows around sending commands to Windows own WM. That one is not disablable.
- reificator 6y ago> The task bar must be at the bottom of the screen and not on the sides, this is something that will hopefully be fixed soon That's a shame, I look forward to this restriction being lifted so I can check it out without rewiring my brain in two ways at once instead of just learning the new tool.
- TacticalCoder 6y agoOn the subject of tiling managers (I use one since so long I don't even remember when I started using those), time for a rant... I never ever understood why those who do allow gaps (i.e. some space between each window) are basically all, by default (and sometimes it's very hard to change), do add "gaps" near the monitor's borders. I mean seriously: why on earth are empty pixels added between the leftmost window(s) and the left side of the monitor, between the rightmost window(s) and the right side of the monitor, between the bottommost window(s) and the bottom of the monitor? This, to me, makes absolutely zero sense. And they all do that, including this one for Windows 10 (as can be seen in the screenshots). Why? Really: just why? I want to rant and ask: what's wrong with people? : ) It just makes no sense. There's not a world in which it makes sense. Worse, Awesome VM calls all the gaps "useless gaps" even though it's a fact that gaps between windows aren't useless (especially when you're tiling terminal windows with no borders or with a 1-pixel border, where it can be hard to detect boundaries between two terminals if there's no gap). But gaps near the monitor's borders are really useless: it's ok, I don't risk mistaking what's at the right of my monitor (atm a physical cup of coffee) or what's at the right of my monitor (atm a tower with three Raspberry Pi stacked) for, say, a terminal window!? I hacked my tiling VM (the "Awesome VM" on Linux) to not have these really useless gaps on the borders but the assumption that they should be there are so deeply tied in the code that's it's a PITA to do. "Use the source Luke" and all that but, why, just why? And why hardcode these assumptions in the code? Why do they all do that? I just don't get it and never will. Rant off : )
- zwayhowder 6y agoI can't speak for everyone, but on my 4k 40" monitor I appreciate the gap at the left/right border because it can be quite difficult to read the text on the far left/right of the screen unless I'm sitting over 120cm away from the screen. It's literally only the first column of text (in a console) so the left gap just pushes everything over enough that I can see it easier.
- Galanwe 6y agoI have a cute wallpaper, I like the impression that windows are inside the overall workspace, and I can spare 5px left and right. Its purely esthetical :-)
- BatteryMountain 6y agoKinda on-topic: if anyone here has a Dell monitor, they have a small tray application called "Dell Display Manager" and it can split your screen up into all kinds of different configurations (I use 1x pane on the left and 2x panes on the right). It works only on Windows though. It works great and easy to switch off if it gets in the way.
- kybernetikos 6y agoI used this for a while, but I found FancyZones, the MS powertoy to do a similar job in a way that worked better for me.
- aoloe 6y agoThere is a (similar?) effort that takes inspiration from dwm: https://github.com/prabirshrestha/dwm-win32 https://github.com/prabirshrestha/dwm-win32 Maybe you can take inspiration from one another... I'm really tempted to try them out, but I probably first need a spare Windows system...
- webgoat 6y agoHow does this stack up against Nog [0]? I currently use it for my i3 needs and its very clean and works better than anything else I've tried. 0 - https://github.com/TimUntersberger/nog https://github.com/TimUntersberger/nog