What is i3?
The i3 Window Manager (i3wm), not to be confused with the Intel processor or i386 architecture is a window manager that was built from scratch to get around some of the limitations of wmii. i3 is popular among enthusiast who value the maximizing of screen real-estate and keyboard-driven operation.
To be specific i3 is a dynamic tiling window manager.
A window manager is less robust, but much less resource intensive than a typical desktop environment such as GNOME. i3 specifically lacks actual 'desktop' functionality and so it doesn't have icons, a taskbar/launcher, or a wallpaper on its own. The i3bar adds workspace switching, status and tray icons in lieu of a traditional taskbar; dmenu is generally used in lieu of a traditional launcher, and wallpapers can be added with an external utility like feh or nitrogen. This all works toward the goal of full screen usage. i3 supports both gtk and qt applications and themes but will not do anything to standardize them.
i3 draws windows with minimal decoration, generally forcing them to a size that it determines, and allows them to be placed easily on many virtual workspaces which can each be arranged independently with as many or as few windows as you would like.
Tiling means that windows, by default are static and cannot be dragged around the workspace unless they are set to 'float'. While i3 supports floating windows as well as tabbed or stacked windows, tiling is generally the default and preferred setting. Tiling will ensure that at any given time 100% of the available workspace is being occupied and that windows will never overlap.
Dynamic means that you are able to change the arrangement of windows at any time. i3 will intelligently resize and position windows into equal parts as others are added and removed according to the mode that it is currently set to (horizontally split/vertically split). After windows are in place they can also be moved around, split differently and resized.
i3 in Debian
i3 is not included in any of the official Debian installers but is available in the main repositories.
i3 requires an X-server and is not supported under Wayland. It is available as a metapackage which includes i3-wm, i3lock, i3status, dunst, and suckless-tools.
# apt install i3
If you wish to install i3 minimally without useful packages such as i3lock and i3status then use:
# apt install i3 --no-install-recommends
Upon the first login, each user will be prompted to have a config file generated for them as ~/.i3/config if this file doesn't already exist. The prompt allows the user to select either Alt or the Windows Key (AKA Meta Key, Start Key) as the $Mod key for i3.
This key is the foundation for all keybinds that the window manager will use. The Windows Key is recommended, since Alt is used by many other applications for other purposes. i3 will take precedence over other applications and other functionality based on keybinds used by i3 will be lost.
Once the config file has been generated all mandatory configuration is complete, but most users will do a lot of editing to the config file to customize their instance of i3.
The most fundamental keybind in the default configuration of i3 is $Mod+d which will run the application launcher dmenu. With dmenu, the recommended first application to run is an editor or terminal so that you can read and modify the config file.
The config file is plain text and fairly intuitive. Keybinds can be added with:
bindsym $Mod+<key> <command> <arguments>
bindsym $Mod+i exec firefox www.debian.org
This example launches debian.org in firefox when $mod and the 'i' key are pressed.
Other configurable options include window management keybinds, the configuration of window borders and titlebars, naming workspaces, assigning of Applications to specific workspaces by default, management of i3bar (including auto-hiding), specifying start-up applications, and so on.
i3 needs to be restarted for changes to take affect. This will not cause any applications to close, but can occasionally cause them to move around.
Configuring the restart command as a memorable keybind can save a lot of time while configuring.
bindsym $Mod+<key> restart
For further information on the configuration of i3, consult the documentation.
i3-gaps is a fork of i3 that has additional features on top of i3, most notably the ability to add gaps between windows. Currently, i3-gaps is not supported on Debian, however a bug report has been submitted about it.
It is still possible to get i3-gaps working in Debian though. It is not fully supported by Debian so do not expect proper support for it. To get it working on Debian it can either be compiled from source and installed with make install, or using an auto-installer bash script called i3-gaps-deb.