What It Means That i3 Is a Tiling Window Manager

Updated

i3 is a tiling window manager for GNU/Linux and BSD: instead of letting windows overlap and pile up on top of each other, it arranges them automatically so they fill the screen without gaps or stacking. That single behavior is the core of what "tiling" means, and it changes how you think about managing windows. i3 is written from scratch, targets advanced users and developers, and is Free and Open Source Software under the BSD license.

Tiling vs. floating: the basic difference

A traditional (floating) window manager treats the screen like a desk: windows sit wherever you put them, can overlap, and you raise, move, and resize them manually. A tiling window manager treats the screen like a grid that is always full.

  • Floating: you position each window; overlapping is normal; screen space is wasted behind windows.
  • Tiling: the window manager positions windows for you; they tile edge-to-edge; nothing hides behind anything else.

The practical result is that you rarely touch the mouse to arrange windows. You open a window and it takes a slot; you open another and the layout splits to make room.

How i3 arranges windows: the tree structure

Most tiling window managers use a column-based approach. i3 instead uses a tree structure to arrange windows, which enables more flexible layouts than the column-based approach used by other window managers.

Think of the screen as a tree: the root is the whole workspace, and each split creates branches. A window can be split horizontally or vertically, and splits can nest inside other splits. That means you are not locked into "everything is a column" — you can build a layout where one region is split one way and a neighboring region is split another way, matching the task at hand.

Modes, like in vim

i3 implements different modes, similar to vim. You can use different keybindings when in the 'resize' mode than when you are in the default mode, for example.

This matters because it lets the same keys mean different things depending on what you are doing. In the default mode your keys navigate and launch; in resize mode the same keys adjust window dimensions. You switch modes deliberately, act, and return — so the keymap stays small without running out of shortcuts.

Multi-monitor handling

i3 implements multi-monitor support correctly, by assigning each workspace to a virtual screen. This is a design decision, not just a feature: because workspaces belong to specific screens, attaching and detaching new monitors — such as video projectors — works during operation and does the right thing. Rotated monitors are supported as well.

What i3 deliberately avoids

i3 follows a "don't be bloated, don't be fancy" philosophy common to minimal window managers: simple borders are the most decoration it aims for. It also avoids unnecessary limits — for example, it does not enforce a maximum number of source lines of code. If something needs to be a bit bigger, it will be. The stated priority is to avoid adding further complexity when it can be avoided, and the project is generally happy with its feature set, focusing instead on fixing bugs and maintaining stability. New features are only considered when the benefit justifies them.

Other design choices worth knowing

  • xcb instead of Xlib. i3 uses xcb, which has a much cleaner API and should be faster in quite a lot of situations.
  • An IPC interface. i3 provides an IPC interface so other programs can subscribe to certain events and send commands. This is intended to be more lightweight than wmii's use of the 9P filesystem, and core functionality does not depend on a separate program, so i3 runs faster — especially when your system is under load.
  • UTF-8 clean. i3 is designed to handle UTF-8 correctly.
  • Readable, documented code. A stated goal is well-readable, well-documented code, including documentation on how to extend i3 by explaining its internal workings — so people who can program but are not familiar with all of X11's internals can still understand and modify it.

Who this is for

i3 is primarily targeted at advanced users and developers. If you want windows to arrange themselves, prefer keyboard-driven control, and value a small, documented, hackable codebase over decoration, the tiling model is the reason to use it. If you prefer freely placed, overlapping windows and heavy visual effects, a floating window manager will fit better.

To try it, the project points to its screencast, the User's Guide, and the download of the latest version, 4.25.1.