Imagine how much time you would save if you never had to take your hands off the keyboard. For the last 2–3 years I've managed to improve my daily productivity, focus, and efficiency using a tiling window manager in macOS and Linux which allows me to do just that.
Compositing window managers
A window manager, in simpler terms, is the software that controls the placement and appearance of windows in a graphical user interface. For Windows and macOS users this is an out-of-the-box feature that has been around for decades which we all know and love.
Window managers included with mainstream operating systems (Desktop Window Manager on Windows, Quartz Compositor on macOS, and GNOME on Ubuntu) are known as compositing window managers. These are generally intuitive to use; they let us move, resize, or hide our work all with the humble mouse and trackpad while being beautiful to look at.
Mouse non-negotiable
Compositing window managers practically require a mouse to use, there is no way to resize or move a window precisely without one (and without 3rd party software). Think about all the steps it takes to move and resize a window:
- Remove your hand from the keyboard
- Move the mouse to the title bar
- Click and drag
- Move the mouse to the edge or corner of the window
- Click and drag again
- Click back in your window
- Put your hand back on the keyboard
Look at all those steps! You could be losing anywhere up to 10 seconds of your time for a simple operation that takes 2 or 3 with a tiling system. Repeat that countless times during a full work day and you've lost several minutes for every hour better spent doing something else.
Tiling window managers
A tiling window manager like i3 or AwesomeWM removes the need to manually control the location, position, and size of your windows. It finds the most predictable and efficient space for a new or existing window while providing incredibly quick ways to manipulate the results, all with the keyboard. I personally use i3-gaps on my Linux devices and chunkwm on my Macbook. You can find my configuration for these in my dotfiles repo.
Update: 3 September 2019: I've migrated everything to Linux and no longer maintain macOS configurations. The link above to chunkwm configuration may become out of date eventually.
These window managers are often deeply integrated into the operating system (using either X/Wayland on Linux and low-level accessibility features in macOS) and take over some common keyboard shortcuts and modifiers. Because of this integration, the operating system remains fast and the window manager shouldn't interfere with existing configuration1.
Keybindings
Typically, a good tiling window manager can be configured to perform very common window and workspace manipulation actions with a few keystrokes that already fit in with your way of working.
The following examples are some common keybindings that can be fully configured to your own preferences
Changing focus to another window or workspace2 is as quick as a Alt + Left
or Alt + h
keystroke using arrow keys or Vim-style arrows on the home row. Similarly, a window can be moved to a new location with Alt + Shift + h
or workspace with the same keybinding and the number of the workspace (Alt + Shift + 2
).
Windows can be resized by using pre-defined point/pixel increments depending on which manager you use. If you need to get very specific with resizing, a single modifier and a click + drag can make your layouts pixel-perfect3.
My personal favourite binding is zooming (or fullscreen) with Alt + z
or Alt + f
. This makes a focused window fullscreen and hides other windows from view. It's especially useful when using a laptop screen, as each window behaves as though it's another workspace.
Closing thoughts
This method of interacting with the desktop may not be for everyone. You'll spend a lot of time configuring, learning, and breaking things, before you end up with a workable system you're comfortable with.
In saying that, if you're the kind of person to spend time optimising your workflow and improving your personal productivity then I highly recommend giving a tiling window manager a go.
Resources
- Window manager on Wikipedia
- i3 and i3-gaps are tiling window managers for GNU/Linux
- chunkwm is a tiling window manager for macOS
- r/UnixPorn for desktop theming and workflow inspiration
- DWM is a dynamic + tiling window manager for GNU/Linux
- AwesomeWM is a tiling window manager for GNU/Linux