Update 31.07.2018: I added i3 key modes to my config: i3wm-keymodes

You can read about my default Linux desktop setup here. This post focuses on i3, my favorite (tiling) window manager.

The i3 configuration is straight forward. I am using the default settings with some additional tweaking for personal preferences.

Custom config

This is my customization of the i3 config (living in ~/.config/i3/config):

#notifications, see desc below
exec --no-startup-id /usr/lib64/xfce4/notifyd/xfce4-notifyd

# NetworkManager GUI
exec --no-startup-id /usr/bin/nm-applet

# xfce power management (pkg: xfce4-power-manager)
exec --no-startup-id /usr/bin/xfce4-power-manager

# switch keyboard layouts (pkg: ibus-setup)
exec --no-startup-id ibus-daemon --daemonize

# enable tap-to-click for touchpad
exec --no-startup-id xinput set-prop "SynPS/2 Synaptics TouchPad" "libinput Tapping Enabled" 1

# KDE's system monitor (pkg: ksysguard)
exec --no-startup-id ksysguard

# firewalld GUI
exec --no-startup-id /usr/bin/firewall-applet

# shortcut to lock screen (similar to Windows) (pkg: i3lock)
bindsym $mod+l exec /usr/bin/i3lock -c 39004d

# rename i3 workspaces at runtime
bindsym $mod+r exec i3-input -F 'rename workspace to "%s"' -P 'New name: '

# I use terminator instead of xterm..
bindsym $mod+Return exec terminator

# Workspace config.
# switch to workspace
bindsym $mod+1 workspace 1: term
bindsym $mod+2 workspace 2: todos
bindsym $mod+3 workspace 3: www
bindsym $mod+4 workspace 4: mail
bindsym $mod+5 workspace 5: wiki
bindsym $mod+6 workspace 6: dev
bindsym $mod+7 workspace 7: vm
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: term
bindsym $mod+Shift+2 move container to workspace 2: todos
bindsym $mod+Shift+3 move container to workspace 3: www
bindsym $mod+Shift+4 move container to workspace 4: mail
bindsym $mod+Shift+5 move container to workspace 5: wiki
bindsym $mod+Shift+6 move container to workspace 6: dev
bindsym $mod+Shift+7 move container to workspace 7: vm
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


In this context, notifications are messages that need to be displayed to a user logged in to an X window session.

By default, i3 ships without a notification system. If you plan to run applications that send notifications, you want to make sure you have a notification system in place. Otherwise, many applications, such as nm-applet (NetworkManager frontend), will remain unresponsive until they run into a timeout while trying to connect to a notification service. I use the xfce4 notification system, provided by the xfce4-notifyd Fedora Linux package.

Once installed, launch it when i3 starts:

exec --no-startup-id /usr/lib64/xfce4/notifyd/xfce4-notifyd

Management of i3 workspaces

I like to name some of my workspaces by default. This allows me to remember on which i3 workspace certain applications are running. Using the above configuration preserves the numerical identifier of the workspaces (meaning that I can access workspace 2: todos using shortcut $mod+Shift+2), while allowing to name them for convenience.