How to Install i3 Window Manager in Linux

i3 is a tiling window manager intended for advanced users and developers. It is extremely lightweight and fast. One of its main characteristics is that it is a text-oriented and keyboard-oriented window manager, which makes the experienced users be able to manage the windows in a very speedy way. Yes, it has a counterpart: Its learning curve is a bit steep, but once you get used to it, your productivity will increase significantly.

Prominent features

  • Shortcut-controlled
  • Correctly implemented multi-monitor mode
  • Simple and lightweight
  • Highly customizable
  • Space-efficient

Installation steps

Arch Linux

The tutorial was made using the following Arch Linux build:

  • Release: 2017.11.01
  • Kernel: 4.13.9
  • Architecture: x86_64

1. Install i3

Type the following command in the terminal:

$ sudo pacman -S i3

When it asks which packages to install, showing the possible options, only hit enter and it will install all the necessary ones.

2. Edit Xinitrc

Type the following command in the terminal:

$ echo "exec i3" >> ~/.xinitrc

If you have another window manager or desktop environment installed, you may be able to choose i3 as a window manager via the desktop manager.

If you don't have a desktop manager to choose i3, or you want it as your unique window manager, remove or comment the lines of the other window managers/desktop environments installed in your system. They are placed in Xinitrc too.

3. Install Xorg

$ sudo pacman -S xorg-server xorg-xinit

4. Start i3

$ startx

Fedora

The tutorial was made using the following Fedora build:

  • Release: Fedora 27 Workstation
  • Kernel: 4.13.9-300.fc27.x86_64
  • Architecture: x86_64

1. Install i3

Type the following command in the terminal:

$ dnf install i3

2. Reboot and select i3 in the display manager

It should look like this:

fedora display manager

Select i3, sign in and enjoy!

Ubuntu

The tutorial was made using the following Ubuntu build:

  • Release: Xubuntu 17.10
  • Kernel: 4.13.0-16-generic
  • Architecture: x86_64

1. Install i3

Type the following command in the terminal:

$ sudo apt-get install i3

2. Deactivate Xubuntu window manager (may vary depending on the distribution)

Open "Session and Startup" and go to the "Session" tab.

session and startup

For xfwm4, change 'Immediately' option to 'Never'.

For xfdesktop, change 'Immediately' option to 'Never'.

Click 'Save session'

3. Activate the i3 window manager

Now, stay in "Session and Startup" and go to "Application Autostart" tab.

Click the "Add" button and fill the form as in the image:

application autostart

Click OK.

Click close.

4. Remove keyboard shortcuts from other window managers

Open "Keyboard" dialogue and select "Application Shortcuts" tab:

remove keyboard shortcuts

Remove all the shortcuts and close.

5. Configure i3

  1. Create a folder in your home directory named ".i3". The path should look like: /home/"yourUsernameHere"/.i3
  2. Create a new file in the ".i3" directory named "config"
  3. Open the file with a text editor and paste the following text:

# This file has been auto-generated by i3-config-wizard(1).
# It will not be overwritten, so edit it as you like.
#
# Should you change your keyboard layout some time, delete
# this file and re-run i3-config-wizard(1).
#

# i3 config file (v4)
#
# Please see http://i3wm.org/docs/userguide.html for a complete reference!

set $mod Mod4

# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:monospace 8

# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
#font pango:DejaVu Sans Mono 8

# Before i3 v4.8, we used to recommend this one as the default:
# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
# The font above is very space-efficient, that is, it looks good, sharp and
# clear in small sizes. However, its unicode glyph coverage is limited, the old
# X core fonts rendering does not support right-to-left and this being a bitmap
# font, it doesn’t scale on retina/hidpi displays.

# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod

# start a terminal
bindsym $mod+Return exec xfce4-terminal

# kill focused window
bindsym $mod+Shift+q kill

# start dmenu (a program launcher)
bindsym $mod+d exec dmenu_run

# For use with xfce4 whisker popup menu in Mint XFCE:
# bindsym $mod+Shift+d exec dmenu_run
# bindsym $mod+d exec --no-startup-id xfce4-popup-whiskermenu

 

# There also is the (new) i3-dmenu-desktop which only displays applications
# shipping a .desktop file. It is a wrapper around dmenu, so you need that
# installed.
# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop

# change focus
bindsym $mod+j focus left
bindsym $mod+k focus down
bindsym $mod+l focus up
bindsym $mod+semicolon focus right

# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right

# move focused window
bindsym $mod+Shift+j move left
bindsym $mod+Shift+k move down
bindsym $mod+Shift+l move up
bindsym $mod+Shift+semicolon move right

# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right

# split in horizontal orientation
bindsym $mod+h split h

# split in vertical orientation
bindsym $mod+v split v

# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle

# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split

# toggle tiling / floating
bindsym $mod+Shift+space floating toggle

# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle

# focus the parent container
bindsym $mod+a focus parent

# focus the child container
#bindsym $mod+d focus child

# switch to workspace
bindsym $mod+1 workspace 1
bindsym $mod+2 workspace 2
bindsym $mod+3 workspace 3
bindsym $mod+4 workspace 4
bindsym $mod+5 workspace 5
bindsym $mod+6 workspace 6
bindsym $mod+7 workspace 7
bindsym $mod+8 workspace 8
bindsym $mod+9 workspace 9
bindsym $mod+0 workspace 10

# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace 1
bindsym $mod+Shift+2 move container to workspace 2
bindsym $mod+Shift+3 move container to workspace 3
bindsym $mod+Shift+4 move container to workspace 4
bindsym $mod+Shift+5 move container to workspace 5
bindsym $mod+Shift+6 move container to workspace 6
bindsym $mod+Shift+7 move container to workspace 7
bindsym $mod+Shift+8 move container to workspace 8
bindsym $mod+Shift+9 move container to workspace 9
bindsym $mod+Shift+0 move container to workspace 10

# reload the configuration file
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session)
#-old-#bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
bindsym $mod+Shift+e exec xfce4-session-logout

# resize window (you can also use the mouse for that)
mode "resize" {
# These bindings trigger as soon as you enter the resize mode

# Pressing left will shrink the window’s width.
# Pressing right will grow the window’s width.
# Pressing up will shrink the window’s height.
# Pressing down will grow the window’s height.
bindsym j resize shrink width 10 px or 10 ppt
bindsym k resize grow height 10 px or 10 ppt
bindsym l resize shrink height 10 px or 10 ppt
bindsym semicolon resize grow width 10 px or 10 ppt

# same bindings, but for the arrow keys
bindsym Left resize shrink width 10 px or 10 ppt
bindsym Down resize grow height 10 px or 10 ppt
bindsym Up resize shrink height 10 px or 10 ppt
bindsym Right resize grow width 10 px or 10 ppt

# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
}

bindsym $mod+r mode "resize"

# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)

 

#-old-#bar {
#-old-# status_command i3status
#-old-#}
exec --no-startup-id nitrogen --restore
exec --no-startup-id synergy

6. Reboot and enjoy!

This looks difficult, how do I use it?

As I said before, i3 has a steep learning curve. But don't panic! The official website has a lot of documentation: i3 User's Guide

Opening applications

The way to open applications in i3, is pressing the assigned Mod button plus another key. In my case, I have set the Windows key as the Mod button. So, for example, if I want to open a Terminal, I just press WindowsKey + Enter.

All the windows that you open will tile, rearranging themselves over the screen, so this is what having some open windows looks like:

tiled windows

Of course you can set i3 to arrange the windows in a different way, just take a look at the official documentation :).

Closing windows

To close windows, you have to hit: Mod + Shift + Q. In my case: WindowsKey + Shift + Q.

Using workspaces

To change workspaces, just hit: Mod + Num. Where Num the number of the target workspace. For example, if I want to go to the workspace 2, I have to press: WindowsKey + 2.

Wrapping up

After reviewing i3, I can say its a really nice window manager. I can feel the lightness and manage the windows in a blazing-fast way! Of course, I have to spend a bit of my time reading the documentation, but believe me it's really worth it. I recommend you at least have a look at it.

About Ivo Ursino

I'm an Information Systems Engineering student and Linux enthusiast. I enjoy learning new technologies and testing them so as to give my review and help with their improvement. Staying up to date in the digital world is a must for me.

Author Archive Page

Have anything to say?

Your email address will not be published. Required fields are marked *

All comments are subject to moderation.