Hacker News new | past | comments | ask | show | jobs | submit login
A Tiling Desktop Environment (bitcannon.net)
147 points by wezm on June 2, 2019 | hide | past | favorite | 141 comments

I've never understood why macOS has never included the functionality of, say, Divvy or chunkwm. I'd like to easily be able to tile my desktop via a keyboard command. Also, I've never quite understood what macOS people have against snapping the edges of windows to each other or the edge of the screen. Sometimes I want to divide the workspace into 3 or 4 windows and maximise my use of screen real estate. It's trivial to do this on a Linux distro (i3, awesome, dwm, ratpoison, etc.) but you have to do some tweaking on macOS, why?

[EDIT: best explanation of why I've heard: it's because the macOS design philosophy is that Apple knows best what size a window is supposed to be, while Linux and BSD are aligned with user-centric custom settings]

> Also, I've never quite understood what macOS people have against snapping the edges

My go to example to explain this is the “The many windows of John Siracusa” podcast from ATP a few years ago.

The relevant discussion starts at 1:33:00


Siracusa, who grew up as a (classic) Mac user, explains his tiling and overlapping habits to Arment and Liss, who grew up as Microsoft Windows users and later switched, and they gasp in utter horror, shock and awe.

For example Siracusa says he currently has a dozen terminal windows open, and also a couple browser windows, normal for him, in BBEdit he regularly hits 20-40; they ask him if he doesn’t know about tabs and he replies “Oh, I love tabs! Of course every Window has many tabs!”. How would he manage/organize hundreds of tabs in multiple applications with a snapping tiling manager? He can’t. It is fun from there. Like, he jokes after a work day (week) his desktop also has “sedimentary layers”.

Now I want to see an annotated print screen of his desktop. Spatially organizing the desktop reminds me of Eagle Mode, which kind of works but it gets weird first zooming into the filesystem to then zoom into the menus to find a command to run/open the file. After that it almost sounds like he touches on how the acme editor lays out "windows" in columns for his kill-app that "no one wants", amazing

Because Apple hasn't invented tiling windows yet? It'll be revolutionary when it does, though, I'm sure.

Sure they have. It’s in the iPad, though it only supports two application level windows the applications may tile within themselves.

Even Windows has had a basic level of built-in window tiling functionality for a decade now. You can resize windows to half or a quarter of the screen either with keyboard shortcuts or dragging the window to a side or corner. It works pretty well.

Tiling and cascading Windows was available in Win 3.0. And it was available to MDI apps all that time as well so a lot longer than a decade.

Tiling was all that was available in Win 1.0! Absolute best tiling WM for your 286.

Wasn't tiling the only option in Windows 1.x, other than full screen?

Well it didn’t support overlapping windows so those are the only remaining options.

Tiling horizontally or vertically are unfortunately gone in Windows 10. In Windows 7 (or Vista?) it was removed from the taskbar entry context menu, but you could still do it from Task Manager.

yeah I was a bit shocked to finally understand the purpose of that feature 20 years after the fact

Say I want one window to take up all vertical space on the left third of the screen and another to take up the other two thirds, is there a way to do this without me having to manually resize both windows?

I switch between i3 at home and windows at work and that’s one of the things I really miss

Another thing I miss is having a detached window permanently on top

There's probably a better way but I would put a window in each half using winkey+arrows and then drag the center divider to resize them both at once.


Dragging the center divider doesn’t work in my use case (detached eclipse console window on one side) I have to resize both windows manually

to be clear: it works as expected with two browser windows, it’s the type of window eclipse creates when you detach a view that windows doesn’t seem to like

window snaping IIRC, which is to me, the most interesting UI idea MS had since win95. It is damn intuitive and efficient.

When you resize a window in MacOS it is already builtin that it is aware of the edges of inactive windows. The edges of the active window you are resizing will very lightly snap to the edges of other windows, such that is nearly impossible to make two windows either separated or overlapping by only a couple pixels.

It's too bad that there isn't at least a hidden property in `defaults` to adjust the intensity of the snapping. Hammerspoon and Karabiner work well for the type of audience found on HN, but coding your own customizations can seem like a lot of work, and there are still some unnecessary limitations to what you can do.

Bettersnaptool makes it work like windows, drag and hold toolbar and it'll snap to the closest edge

I started using Chunk a few months ago. I'd been using i3 for a few years and loved it, but my main OS is macOS.

I mapped my caps as HYPER (like most), but I really wish MacOS had a method to acquire a true native SUPER key. I'm currently using ctrl+shift+alt-arrows for resizing, ctrl+alt-arrows for movement, HYPER + arrows for selection --- but its just not as smooth as i3.

The more I use Linux w/ i3, the more I realize that MacOS is very much a cursor OS -- at least with window management. And in this respect, MacOS is way behind the competition.

> I realize that Macos is very much a cursor OS

I used to hate that fact, until I got a keyboard without numpad. The smaller distance between keyboard and mouse makes a huge difference.

I realized, that the mouse is actually faster in many situations. I still use Vim, Launchbar, Magnet and 'CMD Shift /' (Menubar search), but now I am far less annoyed when I do need to switch to the mouse.

Does anyone make left-handed keyboards with the numpad and the PageUp, etc. block of keys on the left? I saw a positively ancient one at a friend's parent's house years ago, but that's it. That would solve the problem of moving the mouse closer, while still having a full keyboard. It would also put the numpad closer to the Tab key.

Alternatively, I could use the mouse with my left hand. My friend actually did this when I suggested it as a joke, and apparently it didn't take long for him to get used to it. However, I generally don't like ambidextrous mice.

Alternatively, I could use a ten key less keyboard and get a separate wireless numpad.

A while ago there was a 65% 'Southpaw' keyboard on reddit -- https://www.reddit.com/comments/75djfk

There are others if you do a search for left-handed keyboards.

I went TKL a few years back and have the same feelings as you. I also switched to a Magic Trackpad 2 -- which has been somewhat life changing (to some extent.)

It took about a week or so to get comfortable with, and I haven't gone crazy with the gestures -- but its such a nice experience.

The funniest thing about MacOS window managers is that a lot of them can't do three windows stacked (not in the i3 sense) on the left side with one window on the right. This is what ultimately lead me to chunkwm. Prior to that I was using BetterTouchTool with zones.

TKL above means "tenkeyless", i.e., without a numeric keypad.

Shameless plug: I just released https://highlyopinionated.co/swish, which includes 2x2 and 2x3 window tiling through two-finger swiping on the window's titlebar or the app's dock icon. It's primarily designed for Magic Trackpads and is faster (and more accurate on a multi-monitor setup) than any dragging-based window manager and — in my honest opinion — fits pretty well into Apple's design philosophy.

The way I always thought of it is that Apple designs for as little window micromanagement as possible. When using macOS I’ve found myself most productive when I just kind of forget about precisely controlling windows and just let them exist wherever.

I use the magnet app for this. Works perfectly when needed.

Interestingly I don't use it that often on my laptop's screen, but for my 34" widescreen it's a must have.

Thanks, I didn't know about Magnet till you mentioned it. It looks like it's a lot better on an iMac than MBPs, because when you try to split the screen vertically some apps need to be wider than half of a 13" screen.

+1 for Magnet. Been using it for a while and it works like a charm.

My take is that Apple kind of invented the overlapping windows paradigm, the Xerox Alto didn’t have that concept, IIRC.

Also, dragging something from the desktop and dropping on a floating window was a major breakthrough, which is kind of incompatible with a split screen model.

Personally, on small screens like the original Mac, I think the floating/overlapping WM worked perfectly. On a 30” however, it’s a bit silly.

The original iPad had 4x the resolution of the original Mac yet the iPad was full screen only and now supports some kind of tiling. Based on some historical writings I wonder if overlapping windows were a gimmick that became the default.

The original iPad screen physical size was actually rather similar to that of the original Mac.

And apps often felt way too big on it. The calculator was so comically stretched that they couldn’t bring themselves to ship it.

Full screen only is a simple yet overly contraining model.

The iPad is also single-app, and touch based. This is significantly different from multi-window/multi-app with a precision pointing device like a mouse. The windowing use-cases aren't the same.

  Apple kind of invented the overlapping windows paradigm
They preceded the X Window System?

They do, because X Windows System was the winner of the UNIX UI wars, there were plenty of more interesting UIs, even on UNIX world, like SunView.

https://en.wikipedia.org/wiki/X_Window_System#Origin_and_ear... - X announced in June 1984

The Macintosh was introduced in January 1984

There's a great piece of software called Amethyst that gives you decent window tiling that can be configured to function similarly to XMonad and other window managers. It's really just using the current window manager and automates window size and placement, but works well enough.

Window snapping and tiling doesn’t really scale past maybe 6 windows. Once you go past that, you need to start hiding windows or using virtual desktops. And the random access of an arbitrary window when you have many dozens of them is tedious with a keyboard. With a mouse you have spatial memory of where you put the window.

I always feel claustrophobic without virtual desktops. I use them to split out windows in groups according to task, with keyboard switching for speed.

i3 and Vim let me keep my hands off the mouse.

Six windows on the same screen? That's way too crowded; I rarely have more than three. Virtual desktops are natural to use, don't enjoy working without them. I use i3wm and often move between windows using the mouse.

You can easily fit 6 windows of apps that aren't wasteful of screen space on one monitor, even without overlapping them. I find that quality Mac apps scale gracefully, whereas things like Gnome 3 apps have giant CSD chrome and don't scale particularly well. And if you do overlap windows, you can fit even more if you arrange them well so they're easy to access quickly.

I use i3 on a Linux laptop, I really enjoy it.

Too bad nothing exists like that on Windows. Snapping or splitting 2 windows side by side (the Windows 10 snap feature) isn't enough.

On the bright side most of the other features that you would use along side a tiling wm can be used in Windows, and it's very good.

- AHK to manage global hotkeys and remapping keys

- Keypirinha to launch apps / folder paths with fuzzy search

- DexPot to have multiple virtual desktops that supports moving windows across them (same key binds as i3)

I made a video about 6 months ago showing some of these tools in use at: https://nickjanetakis.com/blog/a-linux-dev-environment-on-wi...

Although I changed a couple of things since then, such as I use Vim instead of VSCode, but I still use the above tools every day. They are really solid.

Full disclosure: I am the author of MaxTo.

Have you looked at MaxTo? https://maxto.net

It does not work in the exact same manner as i3wm does; it lets you decide on a set of regions that windows are maximized into (the regions can be a non-uniform grid). This lets you focus on one task at a time. It has great support for hotkeys. At the moment I believe MaxTo is the closest you'll get to i3 on Windows.

Yep. It was one of the first apps I tried in this category. I know a lot of people prefer having pre-defined layouts but I'm not a fan of that. I'm often always moving windows around slightly in size and really lean on the wm or tool auto-adjusting things on the fly.

I recently found WinDock (https://www.ivanyu.ca/windock) for windows and just love it. It is scriptable so you can define how windows get tiled in any part of the monitor, and you can make each of your monitors different if you want. You can also set different profiles, which could be used say during work ours, and after work hours.

Thanks, but from its home page, it sounds like it resembles an automatic tiling wm where you have predefined layouts?

I much prefer i3's tiling strategy where it's not predefined, and instead it reacts to how you're using it on the fly. So if you had 2 windows split and you wanted a third window split, you just get that by default without having to define that triple column layout ahead of time.

On Windows you can create programs that rearrange all windows but the title bars and frames are handled by the applications themselves, using defaults or overriding them. So you can arrange the windows the way you want but you can’t really prevent them from moving when the user drags the title bar.

Yes, I tried using that multiple times. It's very buggy / not suitable for full time usage (which is funny given its name).

I've been using it everyday for ~6 months and find that it's fantastic for full time usage.

The only feature that it doesn't have out-of-the-box is an "always on top" option for floating windows (but can be implemented by running a separate AHK script).

Are you using the stable version or something else?

When I ran the stable version a few months ago it didn't even act like a tiled window manager. After you open it, all it did was tile a bunch of existing windows automatically, but then if you tried to resize them, it only resized the window that had mouse focus.

i3 would have resized all of the windows to fit so there's no gaps.

Overall it just felt very flaky and it had a lot of screen flickering when moving things around.

Like the author, I've spent years in tiling WM's (xmonad, awesome, dwm, i3). Right now I'm hanging around big DE's like kde, gnome, windows 10, osx + magnet.

Windows 10 snapping keyboard keys are top tier. Not automated tiling, but save so much time. Also the GUI is beautiful on whatever screen you plug it into (including 4k). On Linux DE's right now? Mint or gnome will show options to scale up 200%, 300%, 400%(!) Even 200% is far to much.

Tiling WM+HDPI doesn't quite exist. Most use gtkrc, xresources, and the WM config to play with sizes. But that doesn't translate across different monitors. So it's a flawed system.

Let's assume HDPI+linux and tiling WM's were ironed out: In practice tiling WM's aren't as good because once you get into a terminal window, it's not as easy as it looks to copy from terminals <-> "gui" applications. It's possible, but the time spent ironing it out may not be worth the trade off for some. For instance I can't rely on copying from a vim inside of tmux, I do :!leafpad % to open a file and copy from that.

As for HDPI and tiling WM's, swaywm is an i3 for wayland that appears to support it: https://swaywm.org/

If you're okay with just HDPI and basic snapping: https://system76.com/pop or gnome 3.32 (that'd be ubuntu 19.04 or debian experimental at the moment I believe). Gnome 3.32 has fractional scaling. That'll scale by 125%, 150%, 175% (probably what you want)

Gnome's snapping isn't a smooth as Window 10's. Windows 10 is really good and half-sizing vertically. IMO: It'd be ideal if gnome 3 behaved the same as windows snap did by default. Extensions can help, but if you rely on them, they're limited and often behind of the latest gnome version (or two or three, or become abandoned entirely [1]), and don't wire-in to keybindings as well.

[1] https://extensions.gnome.org/extension/723/pixel-saver/


Until I read the parent article I hadn't realised why I have been so lazy about installing linux on my current laptop, which came with win 10. It's the desktop manager.

Winkey + left/right arrow key snaps the currently focused window at the corresponding half of the screen. Then the desktop icons appear on the other half and you can move around with the keys and press enter on one, and it snaps on the other half. Then press Winkey + up/down key and the focused window snaps to the upper/lower quarter of the screen and you can again choose another window to fill the remaining space. Winkey + Ctrl + left/right arrow changes desktops. With Winkey + tab you see a desktop overlay and can send windows to other desktops from their context menu.

And all without every having to touch the mouse. I had Xmonad on a previous laptop and it's just like that, except for all the arcane configuration files. It works out of the box.

I mean, it's still windows 10, right? I plug it back into my dock and it LBSODs (it's Light Blue now). Every other week I go into nerd warp spasm because of some inane stupidity, like, my machine keeps going to sleep if I leave it idle for a couple of minutes after I woke it up over bluetooth and that's not configurable. Or it randomly adds a new language to my language bar. Stuff like that. It's windows.

But the desktop manager is actually, very damn good.

>Tiling WM+HDPI doesn't quite exist. Most use gtkrc, xresources, and the WM config to play with sizes. But that doesn't translate across different monitors. So it's a flawed system.

What you're describing does exist, but as with most things GNU/Linux it's not user friendly in the slightest. What you need to do is to set your Xft DPI to a level that is comfortable for your HDPI monitor, then you need to 'upscale' your second non-HDPI by an equivalent amount. For example I have a 28" 4k monitor, and a 24" 1080p monitor, and I typically prefer a scaling factor of about 150%, so in my .Xresources I have 'Xft.dpi: 144' and I need to upscale the 1080p monitor with the following command:

xrandr --output DisplayPort-0 --auto --pos 0x0 --primary --output HDMI-A-0 --auto --pos 3840x540 --scale 1.5x1.5

Where HDMI-A-0 is the 1080p monitor. I've had a bug in the past where I would need to use the --panning option (e.g., --panning 2880x1620+3840+540) with the correct geometry to get everything working, but it seems to work fine now without that. If you do need to mess with the --panning option though may god help you.

Same here. I finally realized I really feel at home with macOS, expose, the dock and Spectacle, so I'm using xfce, skippy and plank. I wrote a bunch of scripts to resize windows to the left and right halves of screen, then to about 70% horizontal size, and assigned them to shortcuts in xfce.

being able to divvy up a desktop into 4 quarter panel windows on win10 with near zero effort absolutely changed my life, i think of how much time i've wasted clicking back and forth between two windows stacked on eachother, or having to manually move/size windows to be next to eachother... i dunno. i held out as long as i could before caving to a 10 upgrade out of necessity, and it's a shame that windows has built such a stigma like that because (once you go in and rip out all the junk) it's clear microsoft has decided to embrace alot of conventions paved by linux/unix/gnu/whatever - little things like recognizing shift+ins as a 'paste' command - and has really improved desktop management overall.

Shift+Insert has been a paste shortcut in Windows since at least Windows 3, maybe earlier. As far as I'm aware this convention was introduced by IBM's Common User Access standard around 1987.


> WM's aren't as good because once you get into a terminal window, it's not as easy as it looks to copy from terminals <-> "gui" applications.

Most terminals have a feature to copy selected text into clipboard automatically, even xterm. This doesn't have much to do with tiling WMs.

With vim , you may need to set clipboard. I personally use neovim so everything just worked out of the box.

It seemed like there was actually quarter tiling in GNOME coming in, but the patches sadly died.


I use i3 for battery friendly-ness; it gives me many hours (sometimes double if only doing dev) more on my Ubuntu machine. Vim as IDE (bunch of extensions, like OmniSharp for .NET Core dev) and so on. I have different systems for testing and trying things on like a Macbook, Windows 10 machine with VS etc, but nothing is quite as productive as my Linux setup and that is mostly because of i3/vim. You have to practice the keyboard shortcuts, but that does not take a lot of time.

I give other environments a go once in a while but this wins so far.

One point to make; I do personally not like large and/or external screens. I like small laptops and I move around a lot during the day.

Which laptop are you using for Ubuntu? Are you happy with it?

X220 with 9-cell battery, ssd from a broken macbook pro and 16 gb from the same macbook pro. Yes, it is the best laptop I have ever owned (and I owned many). I have several (bought for almost nothing from a company sale) for replacement; if I break one, I am up and running in 10 minutes again. I think I paid less than $250 for 5 pristine ones + 2 new 9 cell batteries new in box.

It is surprisingly fast for it’s age with i3. Besides ML or iOS compiling (which I just do remotely) stuff I do all my dev on it.

Edit: also, if you hate this screen resolution, you or someone on the webs, can put in a much higher res screen in. There is so much you can replace in these things and the keyboard is such a pleasure compared to modern keyboards. Imho ofcourse.

Lenovo X220 was the best laptop ever produced. But after 8 years non-stop use they often need fan and thermal paste replaced.

Spare parts and complete replacements are quite easy and cheap to pick up. Luckily many of there were made :)

Couldnt agree more.....I type on my X220 with 9 cell battery.

I'm just here to shamelessly shill for Notion (not-ion), though it is probably the furthest tiling WM from this guy's wants (ease of setting up shiny things). I swear there are still dozens of active users.

It's tiling is like i3 except it uses manual layouts instead of dynamic. So when you create yet another xterm window it does not rearrange all the other tiles on your screen, it just creates a new tab in the current frame. If you want a new horizontal or vertical split, you create it explicitly. I open shells like browser tabs, so if the default was to somehow find screen space for each one, I'd be looking at hundreds of 2x2 sized xterms. Honestly if I could get i3 to behave like this I'd probably switch (and I've tried...I realize you can set a pane into tab mode, but I find it's still too easy to totally mess up your layout if you are not careful in i3. Anyone got tips?).

I also once used Awesome, and the constant reshuffling of the screen layout drove me crazy. Did not really care for the fixed layouts either.

With sway (Wayland port of i3) you can set "workspace_layout tabbed" to have the default container be tabbed, and also top level splits that are created by moving a window out of a tabbed container be tabbed. I think i3 works like this too, but I don't remember well.

The i3 model requires building a strong intuition for how to solve broken layouts, and it can be frustrating until you know how. But once you figure it out it's automatic. It's not for everyone, but a lot of people end up liking it a lot.

One of the dozen users checking in. My favorite feature of ion/notion is the alt-space scratch pad. I always have a bunch of ad-hoc terminals or other programs open that I can easily reach from any desktop. So far I haven't seen any other tiling wm that has something similar. I'm probably wrong though.

i did that with xmonad - set up alt-` to either switch to desktop 10, or if i was on desktop 10, to switch back to the previous desktop.

That's certainly an interesting idea. Thanks!

I have a number of terminals mapped to hyper+[letter] in i3, five are empty with just a shell. Two are Python repls, and the rest are actually various outputs for programs I run where I want to see a log of whats happening

Uhh i3 has had a scratchpad forever and I use it in tabbed mode with as many tabs as I want

Yep. That's the "I'm probably wrong" part. I knew that i3 had something like that, but I remember that you could only start one program within the scratchpad. If there's a tabbed mode within the scratchpad, I should probably take another look.

It’s a bit of a trick. You just have a bunch of tabs and then select all (select the parent) then send the entire parent to scratch pad

I used XMonad for very long time. I briefly tried i3, but I didn't like it.

I actually prefer manual tiling WMs too. So I settled down on StumpWM. It's really good and easy to configure.

I use gnome-terminal instead of xterm in i3. gnome-terminal supports tabs (control+shift+t), so I can easily choose between a new tab versus a new window.

I feel like a shill with how often I recommend it, but Keyboard Maestro [0] seems like it would handle almost everything, from window management to all sorts of system automation. The kinds of things I can execute with a key command is amazing. Sometimes, I'll just write a quick task, like realigning titles across a set of Keynote slides or very specific text manipulation operations. Seriously, best money I've ever spent on software (if I had to go without any tool, from Sublime Text to Photoshop to Logic Pro X, KM would be the one I couldn't live without, and other than Logic, I actually use the others day to day for work, and I'd still give them up to keep KM).

[0] http://keyboardmaestro.com

I started out as a kid with DOS, somehow skipping win 3.11 and then pretty much everything from win 95 to XP. Then I started using Linux in parallel ca. 2003. Before that I only took a couple curious looks.

Started out with kde3, switched to gnome 2, and as those two evolved found myself longing for simpler and snappier solutions. Windows was evolving relatively slowly but even there you'd always lose one or two things every time you upgraded. On Linux this was much more radical. Not just the desktop but also the stuff under the hood.

Today I just prefer the minimal version of most things I use and do daily. i3 does the job for window management. Vim with as little plugins as possible for scripting and coding (as long as it's not Java or c++ with qt). Since eventually my favorite plugin will stop working as it's unmaintained, or the file manager will get an overhaul and look different and have all its keyboard shortcuts changed. The less stuff I depend on the better.

My primary dev machine has been running KDE and i3wm for a while. I feel like I get a complete GUI experience while having all the benefits of a tiling window manager.

The author likes Gnome because of it's UI looking like Mac OS, and that's understandable. KDE did look different when I first switched from Macs. But at this point, the only things running in my dev machine is a whole lot of terminals and maybe 1-3 browser instances. So KDE is almost hidden at all tkmes.

I primarily just use i3, but I used to be a KDE guy. I used it for a while again just recently and I have to say, it's gotten really good. They've made it clean and tidy, while still being powerful and customizable.

The thing that originally got me to switch to i3 was using a serious potato for a few months. 2012 core i3 processor and 8g ram (upgraded) kind of potato. Plenty usable with i3, but had trouble with windows or heavier full desktop environments; i3 was great and snappy and I was able to use the computer just fine.

I use KDE on a ThinkPad X220i, so around the same specs as your potato (with an SSD, though). It absolutely flies, no slowdowns or issues at all.

I'm a recent i3 convert (been using it full time for the better part of a year now). It's one of those little changes that really brought me a lot of satisfaction.

This is on my primary desktop (with a 4k display). I recommend it to anyone who's in a rut with their workflow (learn about all the mods, i3-gaps, etc.) - it takes about a day to properly customize and get used to, time well spent.

I have had a tough time getting my 4k ext display to properly scale with i3. I tried arandr but the fonts are too small. With scaling , Emacs, Firefox and alacritty seem to be ok but things seem sluggish on my x230. How did you do it ?

I'm on a pretty big monitor (~40 inches) for development, so I don't actually do any scaling for this display. I'm spoiled with a pretty good desktop rig, so I haven't had to do any optimization in a while.

Depends on the application for me. .Xresources is where you need the biggest tweak, but email me if you want more specific help.

For those who want good sides of tiling DE but won't want to install tiling WM, there is Openbox. If you aren't afraid of editing configuration XML, you can assign hotkeys to place windows in quarters/halves of the display or to jump them between displays. Also Openbox is very fast. It can be used in place of XFCEs or KDEs own WM, so nothing stops you from having benefits of full-fledged DE along with powerful WM. That being said, Openbox lacks shadows or transparency (so separate compositor like xcompmgr or compton is needed) and doesn't render rounded corners. I use XFCE + Openbox combo at my workplace for 5 years now.

A tiling window manager is a must for me. But I (like the OP's article mentions) prefer to use a standard desktop environment (Gnome or macOS) but add tiling feature only.

So, on my macOS laptops, it is Amethyst all day https://github.com/ianyh/Amethyst. Love it.

But on my Linux desktops, I am stuck with Gnome and not gone for full VM replacement with XMonad, i3 or Awesome.

I don't want issues with disk mounting, clipboards, multiple monitors, etc just cause I want automated tiling and have to replace my whole desktop environment to achieve it.

For what it's worth, I run i3 on my work laptop and I don't have any issues with those things - the only config I've done for multiple monitors is configuring one to be vertical and binding workspaces to particular monitors.

I didn't go for a clean install with no desktop environment, though. I started off with a standard Ubuntu 18.10 install and then installed i3, so I can still start a session with either i3 or gnome. Highly recommend this setup - it makes everything pretty easy because you still have all of the default apps and settings from Ubuntu. The only real config weirdness I had to deal with was adding keybinds for volume/media keys, and the fact that the display brightness keys on my laptop aren't bound (I always run on 100%, so it doesn't bother me).

FYI Microsoft recently announced a new PowerToys for Win10 and are asking for features people would like to see and there is some support behind tiling. Vote if you are interested in seeing this in Windows.


All you linux veterans may cringe at it, but maybe check out my dotfiles. I have spent years cultivating a complete DE experience around dwm. It shouldn't be too hard to drop in your wm of choice.

I have used it with HiDPI but only briefly, so that may still be imperfect.


Thanks for sharing! Would be nice if you'd wrap it into some auto-ricing script like LARBS.

What is "ricing" in this context?

I do agree I need to come up with a better way to maintain and distribute this, I'll look into LARBS.

I installed the [i3 edition of Manjaro](https://manjaro.org/download/i3/) last weekend. I was up and running with a beautiful environment providing most of the listed utilities in an hour or so. I have been incredibly happy with the setup.

The edition could still use some more love (e.g., I had to set up auto-mounting and HiDPI compatible configs myself), but it is remarkably cohesive and (relatively) easy to get going.

There is definitely room for improvement, but this is probably a good place to look or inspiration, and contributing to advance this work might be a good use of energy for those interested.

I was a manjaro i3 user for months on my old laptop, but got a new one with an optimus setup (nvidia card with intel igpu). Yeah, I know, "nvidia bad for oss etc.", but that's what was sold. And cuda is still the gold standard for compute. I had to switch because I couldn't get gpu switching working on my manjaro; nvidia card was stuck in D3 state. Very sad, though I'm now on i3 arch and happy.

Give Pop_OS a try. It works well with optimus setups out of the box. You can install cuda, and tensorflow in a single apt command. It's a nice option for ML/DL work.

How does Manjaro compare to Ubuntu for the “new user seamless install of everything” and “easy update for new users”

Kubuntu -> Manjaro KDE was a transition I made when I was still distro-hopping. I used Octopi as a pacman GUI which was super easy to use compared to Kubuntu's. Now that I've learned how to use pacman, I've still never had issues with a -Syu on either my Manjaro i3 or Arch systems, but I don't use Octopi anymore.

Depends on the WM you're using. I think (?) there are gui frontends to pacman? Never bothered to use them. But gnome is available on it, same as ubuntu. Of course, it's almost certainly a little less friendly, but probably not much.

I've been using Awesome every day since 2009. The only things I change from the default on a new install is the terminal, the default layout and hide title bars.

The author mentions compositors, but if you don't require fancy things like transparent windows or shadows, and you have a a well supported/behaved GPU and monitor, you can probably do without them if all you care about is tearfree video. Drivers like intel, ati, amdgpu and more recently modesetting have a TearFree option that does just that. For some systems switching to a DRI3/glamour setup is enough and as a last resort you can configure X11 and mesa to force vsync.

Any more, what I feel I want is XFCE with Xmonad / DWM style tiling that I don’t have to hack together.

I’m considering taking another look at KDE with the tiling KWin extension, since KDE seems to be the center of mass for innovation in 90s style WIMP interfaces.

EDIT: I’ll add that the GTK software world seems to be driving towards hamburger-ization, which makes me wonder how much software of the future will integrate cleanly with XFCE. I’m not sure that the Mint and XFCE people have enough mass to keep fighting the good fight forever.

KDE is starting to seem like a pragmatic long-term bet.

https://github.com/timbertson/shellshape was a good tiling extension for Gnome. Sadly it's no longer under active development & doesn't work on recent GNOME versions.

EDIT: but the author has developed the simpler https://github.com/timbertson/slinger

How are these vs the gTile linked in the article? (https://github.com/gTile/gTile)

I have been using https://github.com/miromannino/miro-windows-manager for several months now. It is a plugin for Hammersppoon on macOS that lets you resize and organize windows using the keyboard.

It’s worked really well for my set-up (can make windows fullscreen, take up 1/2, 1/3, 1/4 of vertical or horizontal space of the screen).

I use miro-windows-manager and love it. I just wish I could take the scripts I have written for Hammerspoon on MacOS and use them on my Linux workstation - anyone know how this might be done?

No interest in trying it. As an old-timer I find this funny. Windows 1 had a superb tiling system. I disliked it. Reviewers complained for years. I wanted independent windows and never looked back when they appeared in Windows 3 or so.

As a guy who runs a company I can see a massive in benefit in a world with only tiling window managers, which is that it reduces support and accessibility issues when a window can never be completely hidden.

I so agree with this, though I have a slightly different take. As someone who can't part with my GUIs, I'm nevertheless super jealous of all the i3 folks.

As such, what I want is basically i3 in a gnome window. That for me would be the best of both worlds. I can do all my fancy i3 stuff but still have a crisp, efficient UI to get settings/stuff done when it's about ease of use, not speed.

i feel like i know where you're coming from here, this isn't exactly what you're describing, but it's pretty dang close. really made the transition to window tiling far less intimidating than i imagined.


This was pretty close, but ultimately was too i3-ish for me. I'm also realizing that I could never be as productive with i3 as I am with a mouse or trackpoint -- with a trackpoint I never have to change my hands out of root typing position, whereas to hit any of the key combinations involving the super key, I have to move my left hand to a whole different, scrunched position. Don't know how you guys do it.

Thanks for mentioning Regolith and I'm pumped to hear that you find it useful!

I'm gonna try this it looks really good and exactly what I want.

You can add a nice bar to i3, and probably do even more customization. I'm guessing it wouldn't be to difficult to fork. It's a learning curve, but not too difficult to get over (I'd analogize it to vim). It's nice and easy to use, you just have to know how.

Have you tried Xephyr (nested X sessions)? Not sure how well it'd work with all of i3's keybinds, but perhaps worth a shot.

You could go the other way - i3 supports floating windows, so you could default to floating, or have default vary by program.

The issue isn't about whether you have floating available, it's about whether you have the batteries-included of a full DE. Bars, Settings, Networking, volume control etc. You can set all of these up with individual programs if you're a dogmatic adherent of the unix philosophy. But, it doesn't make for a very cohesive experience, and getting it all set up can be an enormous timesink. Different people have different levels of tolerance for that kind of incidental complexity.

There’s no reason you can’t run i3 window manager and Gnome apps.

I know tiling DE followers have firm principles in my experience so please don't take this the wrong way because everyone is different.

My personal experience is that I used a lot of tiling DE back when I had a laptop with 256M RAM.

Lately my last three laptops have had 8G and more of RAM so I don't see the point.

Mainly because I use vim+tmux as an IDE. So I'm already using keyboard shortcuts extensively to quickly navigate through vim, vim tabs and tmux.

A tiling DE would add a third layer on top, that I don't feel I need.

Sure I'm a Linux veteran who has been using keyboard shortcuts for 20 years but there are limits to how far I want to push this. And I feel that vim+tmux is my limit. My DE is vanilla Gnome Desktop on Fedora and I'm loving it. (obviously with animations disabled it feels as snappy as Sway or Awesome WM)

Edit: Just to expand; after hours of coding my brain can do vim+tmux keyboard shortcuts without thinking. The short breaks within that time where I switch to other windows would only disrupt my flow if I had to switch to a whole new set of shortcuts.

In my case I don't need a third layer on top, I simply don't use(aka don't need) tmux most of the time - I just run terminal buffers inside NeoVim tabs/windows and can switch quickly between workspaces and windows via i3 shortcuts.

But if I was forced to use a DE I'd also go for Gnome - it's pretty polished and provides switchable workspaces a bit like i3. It's just not near as configurable as I'd like.

It is really no different than using the Windows/Meta key + arrow keys to snap the current window to a corner, or using Ctrl + Windows/Meta + arrow keys to switch to another virtual desktop.

Just a matter of getting used to. It doesn't even take too much to get used to it.

This was also my experience. I was using i3 for a year but things still weren't working the way I wanted it. Stumbled upon i3-gnome (https://github.com/csxr/i3-gnome) and this maybe the current solution for this problem.

As a fellow Awesome WM user my "solution" to this is two Git repos - one to set up the system using Puppet, and one with user configuration such as rc.lua. I've got to basically the same list as OP plus

* low power warnings from cbatticon and

* very basic colour management <https://gitlab.com/victor-engmark/tilde/blob/6a890f649dd4810....

Building a proper DE around a decent tiling WM (or separating out the quality-of-life parts of KDE/GNOME) would be fantastic.

Yes, it would be nice if more tiling window manager power users would make available their configs like Luke Smith is doing with LARBS (https://larbs.xyz/).

I'm working on some sort of tiling wm but for the web. It's still pretty basic in terms of browsers, but already nice if you want to use it to display websites that don't change often. It's based on Electron. You can get it here https://github.com/Merkoba/Boneless -- Also there's this video that shows a bit how it looks right now https://www.youtube.com/watch?v=Rg_3_YoVlk8

check out this project https://github.com/agzam/spacehammer. I wish something like Hammerspoon existed for Linux.

For me the right balance is installing i3 on a system with GNOME installed as well. I get all the GNOME apps working well together, but my window manager looks and works the way I want it to. The only issue is configuring some of the GNOME apps (GNOME Online Accounts), where I have to convince Control Center that it's running under GNOME. Spawning the polkit agent and some of the other GNOME components works pretty well too. I just wish I could get the nice GNOME toolbar rather than my polybar (which I like, but took far too long to get working the way I wanted).

If you're using KDE Plasma with KWin, try out https://github.com/lingtjien/Grid-Tiling-Kwin

One of the features of Spectacle.app that I really like is its ability to overload the same key macro to cycle through multiple variations of splits. Like if you press the left-half macro multiple times, it cycles between left-half, left-two-thirds, left-third. That way I don't need to assign or remember nearly so many key combinations.

Can any of the other macOS window controllers do that? Spectacle hasn't been maintained in years and the bug reports are piling up.

It's not mentioned here so I'll add it: gnome-flashback is the thing that you can use to integrate your window manager of choice w/ the gnome shell. I expect there to be integrations for other window managers, but if you're using i3, then this is your bridge: https://github.com/deuill/i3-gnome-flashback

I really like the Enlightenment desktop environment, but always fall off it because I can't get the tiling working how I like. If the tiling is fixed to be consistent with Awesome/i3/dwm, Enlightentment would certainly be what this article calls for.

This echoes my experience. After over a decade of dwm I switched to Gnome a few months ago and can’t see myself going back. I love the performance and window management aspects of dwm but I really like the cohesive desktop I get with Gnome.

I use Moom on the Mac, Openbox on Linux, and the default Windows 10 tiling keys. Since I don’t like auto-tiling and prefer managing workspaces and tiles interactively, this works well for me, with consistent key bindings across platforms.

A simple and quick solution to getting most of the items on the checklist working is to install i3-gnome:


Regarding the HiDPI issue with dunst: you can try sway, Wayland works way better than xorg with HiDPI displays.

Disclaimer: I'm a sway dev.

>I want a desktop environment like GNOME but with more control over window management and more keyboard control.

So... KDE?

You read the whole section on KDE right?

I don't know for sure, but he may have scrolled down only far enough to see the Comments section and thought that was the end of the post.

To be fair, I thought that was the end of the article too. If it wasn't for your comment I wouldn't have read it.

Maybe it's a mobile-only problem, but it was a weird placement choice nonetheless.

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