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

By Xah Lee. Date: . Last updated: .

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 Design: Dedicated keys, Special Buttons, Extra Keys〕 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. 〔►see Emacs's Keybinding Layout〕 (No, remapping to any of Super, Hyper, ▤ Menu, Caps Lock keys won't help. All modifier keys are used up in my emacs for many purposes, including inserting math symbols.)

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, then that's 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 un-used space, and some will have unnatural line-wraps because the window is too narrow.

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

tiling windows dwm-spiral
Suboptimal window size problem when windows are forced into a table layout. Notice the squashed clock, and wrapped lines in terminal. Source dwm.suckless.org

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 to switch prev tab, and 1 key to 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 / * - 〔►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 Auto-Raise Window

• ban double-click. 〔►see Windows: Single-click Open File

note, these keys should be single press key, not a chord.

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 Banish Key Chords

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

Linux Desktop Topic

  1. Linux: How to Switch to LXDE, Xfce
  2. Linux: LXDE Keyboard Shortcuts
  3. Linux: LXDE/Openbox, Change Keyboard Shortcuts
  4. Linux: LXDE Set Key Repeat Rate
  5. Linux: LXDE/OpenBox, Disable Mouse Scroll Wheel Hide Window
  6. Linux: Xfce Keyboard Shortcuts
  7. Linux: Xfce Good Themes
  8. Linux: xmonad Keybinding
  9. Why Tiling Window Manager Sucks (xmonad, ratpoison, dwm, …)

  1. Linux: Set Default App
  2. Linux: Shell Commands for GUI Apps
  3. Linux: Image Viewers
  4. Linux: Move File to Trash by Command

Linux Keybinding Topic

  1. Linux: Keyboard Software Guide
  2. Linux: Swap Control Alt Keys, xmodmap
  3. Linux: Set F2 F3 F4 to Cut Copy Paste
  4. Linux: Swap CapsLock Escape Keys
  5. Linux: Make CapsLock Do Home Key
  6. Linux: Setup Shift Lock Key
  7. Linux: Add Keyboard Shortcut to Switch App
  8. Linux: Set Key Repeat Rate
  9. Linux: Set System Keyboard Layout
  10. Linux: How to Switch to Dvorak Keyboard Layout
  11. Linux: Change Volume by Command
  12. Linux: xmodmap Tutorial
  13. Linux: xbindkeys Tutorial
  14. Linux: xvkbd tutorial
  15. Linux: Find Keyboard Key Scancode
  16. Linux: X11 Keyboard Key Names