i3 is also an easy WM for beginner. It doesn’t have need complex configuration. You can just install it, and use it, the tiling rule is simple. It is true that i3 start black screen, it is intimidating that you have to read the manual first, just to learn the keystrokes. Once you get along with i3, you can find that i3 is a very comfortable Tiling Window Manager.

Installing official i3wm in Debian is also easy, but if you need i3-gaps, you have to git-clone i3-gaps manually. Don’t worry about it, this unofficial fork is optional.


Guidance in The Fine Manual is enough.

i3 Install Summary Screenshot

Install i3 WM

Installing i3 will also install three packages, it is i3, i3lock and i3status. You can issue either one of this.

$ sudo apt install i3

Install i3 (i3 i3lock i3status )

Running i3 WM

To switch to i3 WM after installation completed, you can logout your current DE/WM (Desktop Environment or Window Manager). In your DM (Display Manager), login with i3 WM Session.

If you need to make sure, that i3 is in you DM list. You can check xsession directory.

$ ls /usr/share/xsessions/
awesome.desktop                 i3.desktop                plasma.desktop
gnome-classic.desktop           i3-with-shmlog.desktop    twm.desktop
gnome.desktop                   lightdm-xsession.desktop  xfce.desktop
gnome-flashback-xmonad.desktop  openbox.desktop           xmonad.desktop

On first run, i3-config-wizard will create ~/.config/i3/config.

Install i3 Blocks

There is an i3blocks tool to help you getting pretty i3statusbar. It is a useful additional package and it is available in Debian repository.

$ sudo apt install i3blocks

Install i3-blocks

Install i3 Gaps

There is an Unofficial Fork of i3 from AirBlader. The most interesting feature is Gaps between window.

Unfortunately i3-gaps is not available in official repository. So you have to compile and install it manually.


Debian Stretch Dependency

$ sudo apt install libxcb-keysyms1-dev libpango1.0-dev \
  libxcb-util0-dev xcb libxcb1-dev libxcb-icccm4-dev libyajl-dev \
  libev-dev libxcb-xkb-dev libxcb-cursor-dev libxkbcommon-dev \
  libxcb-xinerama0-dev libxkbcommon-x11-dev \
  libstartup-notification0-dev libxcb-randr0-dev libxcb-xrm-dev

Clone form Github

$ git clone https://www.github.com/Airblader/i3 i3-gaps
$ cd i3-gaps/
$ git checkout gaps && git pull

Make and Install

$ cd i3-gaps/
$ make
$ sudo make install

Install AUR i3-gaps

Sample Configuration

If the default config is not suitable enough, you can customize the config for your needs. I prefer to put my i3status and i3blocks inside my i3 config directory, and create my custom config later from copy of the default one.

$ cat ~/.config/i3/config

$ mkdir ~/.config/i3/i3status
$ cp /etc/i3status.conf ~/.config/i3/i3status/default.conf

$ mkdir ~/.config/i3/i3blocks
$ cp /etc/i3blocks.conf ~/.config/i3/i3blocks/default.conf

i3status with Conky

To enable, of course you have to install conky. The lua package is needed as a mandatory dependency for conky since v1.10. Since Conky is optional. It is beyond this scope to explain conky installation in detail.

$ sudo apt install lua conky

Modularized i3status Configuration

Although i3 config is very simple, however i3status using conky-lua-json is complex.

My configuration dotfiles is here. You can copy for your own needs.

Since this configuration is already modularized, it is easier to learn part by part.

Additional Package

For your convenience, you can choose to install either dmenu or rofi. Both provide the same purpose to run command, except rofi has more feature.

$ sudo apt install dmenu
$ sudo apt install rofi

i3-gaps: Conky Lua in dark i3status

Source Code

Window Manager


Jekyll Site Source.

Thank you for reading and visiting.