Why Tiling Window Manager Sucks (xmonad, ratpoison, dwm, etc)

tried xmonad today for real. Currently, 1 hour into it. [see How to Use xmonad; xmonad Keys]

Tiling windows is unusable and inefficient.

• Complete esoteric set of keys you need to memorize just for the tiling-window mechanism. Also, standard keys such as Alt + F4 are now screwed.

• More Combo keys = RSI. [see Keyboard Shortcut vs Launch Buttons] I type more than any Haskell coder on this earth.

• Encroach on each app's keys. This means, you'll spend time to config each app, or diddle with the global mode key setting. This means hours to be spent down the road.

• Completely screwing emacs's keys. (No, remapping to any of Super , Hyper , ▤Menu , CapsLock keys won't help. All modifier keys are used up in my emacs for many purposes, including inserting math symbols.)

[see Emacs Keybinding, Keyboard, Articles Index]

Tiling Windows Concept = Fail

Worst of all, the tiling windows idea itself is too idealistic. The idea behind tiling windows is that it uses your screen real-estate efficiently. Namely, all apps are laid out without gaps.

But what this means is that, the natural optimal size and position and arrangement of app windows on your screen is sacrificed. They, the position, size, arrangement, are artificially made to fit into a table layout. If all you do is text terminals, that's ok. But as soon as you have browser, image viewer, image editor, text/voice/video chat programs, math/scientific apps, …, each really needs its own optimal position/size. So, this means, when using a tiling-windows scheme, you either pop them into full screen, float them, or put each in a workspace, no tiling at all. Or do a lot combo key press to re-arrange/re-size them tiled. Much more work than is worth.

If you need every window to be the same size, great. As soon as you need one window for different shape/size, then you get funky sub-optimal layout. The gaps between windows simply moved into your windows. Some window will have lots of white space, and some will have jagged lines because the window is too narrow.

One symptom of tiling windows inefficiency is the so-called fibonacci layout.

Suboptimal window size problem when windows are forced into a table layout. Notice the squashed clock, and wrapped lines in terminal. [image source http://dwm.suckless.org/patches/fibonacci]

Tiling windows… Do you really need to look at ALL the windows at once?

A Challenge: Try This Workflow

Try the following workflow for a week. I'd be interested to know if you still think tiling windows great.

• remove tiling manager. Use a basic, normal, one, such as xfce.

• set workspace/virtual-screen to just 1. (and remove the tens of related keybindings)

• set up 3 function keys to switch to 3 of your most used app. For example, { F8 , F9 , F10 } for {emacs, browser, terminal}. [see How to Set Key to Switch to Browser]

• set up 1 key to switch to last window, such as F4 . (this is normally Alt + Tab . In xfce, can be done easily. In lxde+openbox, the problem is that it requires pressing Enter to “exit” the switch, similar to releasing Alt .)

• set up 1 key to cycle windows within a app. F3 . (trivial to do in xfce. Harder in lxde+openbox.)

• set up 1 key to toggle max/restore window size. F1

• set up 1 key to close window. For example, F6 (must be 1 single key. Alt + F4 is not good.)

• set up 1 key to switch prev tab, and 1 key to switch next tab. (i use { F11 , F12 })

• set up 1 key to close tab. For example, the pause/break key. [see Print Screen, SysRq, ScrLk, Pause, Break Keys] (note: the prev/next tab key, and close tab key, should be next to each other. If you are using a full-sized PC keyboard with numberpad, best to use / * - for {close, prev, next} tab, in that order. [see How to Program Number Keypad as Function Keys] )

• turn on mouse hover auto-raise window. (not just focus, but raise.) [see Linux: Mouse Hover to Raise Window]

• ban double-click. [see Linux: Set Mouse Single-Click to Open File]

Note, all above keys should be single press key, no holding of modifier shit.

Which key to set really depends on your keyboard. (i'm assuming you are on a full-sized keyboard, not laptop, as you shouldn't type on laptop keys for long periods.) For a normal PC keyboard, the best keys are likely to be all function keys. but if you use any of the batman keyboards, you have a lot options, such as putting them on thumb keys.

If you do have a keyboard with extra keys, remove ALL keybinding that involves holding a modifier. Remove them ALL. Never press a key combination. [see Ban Key Chords]

If you don't know how to set keys for items i didn't give explicit instruction, see:

XahTV 2020-05-26 Why Tiling Window Manager Sucks

XahTV 2020-05-26 Why Tiling Window Manager Sucks

all you want to know about keyboard layout, dvorak, colemak, touch tying

xah talk show 2019-08-21 all you want to know about keyboard layout, dvorak, colemak, touch tying

Video Demo

Here's a video demo of my technique.

It's actually a demo of me using emacs, but you can still see my system. Also, am using a Mac there, but the principle is the same.

xah emacs demo 2018-05-22

note:

The position of windows. There's usually a little exposed area, so i can mouse hover to it, and it'll come up. No Ctrl + Tab , no ⌘command + Tab , no Mac “Mission Control”, etc.

+ , no + , no Mac “Mission Control”, etc. No mouse click happens. Am using dwell on MacOS. Just hover mouse to a place and it'll auto click. [see Mac: Hover to Switch Window]

No chord is used. No Ctrl , no Alt , no ⌘command , no ⌥option .

, no , no , no . All shortcuts keys are either single key, or key sequence of single keys. (you can't see it in video but can infer by keyboard sounds.) you might see C-g in emacs screen, but it's actually a single key remapped to Ctrl + g .

Even More Efficiency

This essay became popular, and over the years, lots comments.

Here's a basic guide, if you want the utmost efficiency.

First, get yourself a mechanical keyboard with lots thumb keys, and even better is driverless programable. Because the keyboard hardware, is the thing you touch every minute. It's the interface between you and your window manager. A good efficient one, makes a world of difference.

you want mechanical because that makes pressing keys much easier. [see Mechanical Keyboard and Repetitive Strain Injury]

you want lots thumb keys because thumb is the most powerful finger. (for pressing Control Alt or otherwise use it as leader key, or single function such as vi's Esc, or switch to last window.)

you want programable because then it's 100% reliable, not going thru loops and hoops via OS that always have glitches. And it works in any OS when plugged in. No need to spend hours with xmodmap or AutoHotkey or karabiner.

you want driverless programable because then you can just press keys on the keyboard to remap keys or record macros on the fly. No need to install or startup a driver software, which is usually intrusive that diddle with kernel, or have to do the elaborate process of config keyboard on a website then download firmware updater and follow the procedure.

[see Keyboard Firmware]

Get yourself a Programable Keypad for all your single-key press shortcut needs. (F1 to F12 is not enough)

Programable Keypads

See Why Function Keys F1 F2 Are Useful

and if you too cheap to buy a dedicated programable keypad, see How to Program Number Keypad as Function Keys

alternative or in addition to programable keypad, get a 10 or 20 buttons mouse. You no understand it untill you are a competitive MMO gamer or photoshop pro.

see Mouse Reviews

also, scroll is the MOST important thing on mouse, because you use it the most.

especially on linux, where there's no accelerated scroll, you want scroll wheel that can spin.

See Logitech Mouse with Spin Wheel

the above are hardware stuff. Surprisingly, it is actually more important than your window magager or key setup. Especially for Repetitive Strain Injury issues.

also, in general, avoid any key combos such as holding Control, Meta, Alt. Ban them. See Ban Key Chords

and lastly, if you are into keybinding efficiency research, read the whole series of articles at

Keybinding Design ⌨

no wanna move hand to mouse?

a slew of linux emacs vi idiots have the obsession of wanting to ban the mouse. Typified by the name ratpoison windows manager. The level goes like this:

kinder-gardener level, they use mouse to select, copy, paste, etc. Typified as Microsoft Window dweebs. (but in fact, Microsoft Windows have a key sequence system starting with Alt key, that is actually the most efficient system for keybinding. Lots expert users use that, but it fell out of fashion since about 2010.)

sopho-moron level, these are the linux vi emacs geeks, who incessantly obsess about banning mouse, with such as vimperator pentadactyl.

god, thou shall use mouse when it is optimal. and when you are at the level of typing a billion keystrokes a day, you want to move away from keyboard as much as possible. The very thought of keeping hands on keyboard makes you puke.

when you are at Xah level, you want 2 mouses. One for each hand, use whichever convenient at hand, and avoid mouse hand problem. Or, use a trackball or touchpad for one of them.

Reddit Discussion

keyboard driven floating window manager. https://www.reddit.com/r/unixporn/comments/783smw/keyboarddriven_floating_window_manager/