My i3 Window Manager Setup

The only thing I dislike about tiling window managers is the time it takes for manual configurations. I have had hard times searching for certain things to work. I'm making these snippets for myself.

svelte logo

Want to build a Svelte/SvelteKit site? Hire Me.

i3 configs are usually found on ~/.config/i3/config file. You can copy paste these into this file but check of the code already exists in your config somewhere.

I have written a post on configuring shortcuts on i3. Refer to these when adding custom key binding.

Set Super/Windows key as mod key

set $mod Mod4

Change font

Make sure you have the font installed first.

font pango:JetBrains Mono 10

Hide window title bar

default_border pixel 0

This will hide the border pixels as well. So you will not be able to resize a window using your mouse.

Resize windows

You can easily resize windows just going into resize mode by clicking ctrl+r but if you want a faster way then you can use these key bindings.

bindsym $mod+Ctrl+Right resize shrink width 1 px or 1 ppt # if windows are horizontally tiled
bindsym $mod+Ctrl+Left resize grow width 1 px or 1 ppt # if windows are horizontally tiled
bindsym $mod+Ctrl+Up resize grow height 1 px or 1 ppt #if windows are vertically tiled
bindsym $mod+Ctrl+Down resize shrink height 1 px or 1 ppt #if windows are vertically tiled

Set a wallpaper

You’ll need feh installed and a wallpaper present in /home/<username>/Pictures directory for this to work

exec_always feh --bg-fill $HOME/Pictures/wallpaper-1.jpg

Lockscreen Background Color

This needs i3lock to be installed.

bindsym $mod+l exec i3lock --color=000000

Enable touchpad tap to click

Here Synaptics TM3289-002 is device specific. You can find yours using xinput. Instal if not present.

Run xinput to see a bunch of input devices. something like this.

sharath@X1:~$ xinput
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ Synaptics TM3289-002                    	id=13	[slave  pointer  (2)]
⎜   ↳ TPPS/2 Elan TrackPoint                  	id=14	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Power Button                            	id=6	[slave  keyboard (3)]
    ↳ Video Bus                               	id=7	[slave  keyboard (3)]
    ↳ Sleep Button                            	id=8	[slave  keyboard (3)]
    ↳ Integrated IR Camera: Integrate         	id=9	[slave  keyboard (3)]
    ↳ Integrated Camera: Integrated C         	id=10	[slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            	id=11	[slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                  	id=12	[slave  keyboard (3)]

Once you find your touch pad device, use it here to find their properties xinput list-props "Synaptics TM3289-002". This will give us something like this

sharath@X1:~$ xinput list-props "Synaptics TM3289-002"
Device 'Synaptics TM3289-002':
	Device Enabled (187):	1
	Coordinate Transformation Matrix (189):	1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
	libinput Tapping Enabled (322):	0
	libinput Tapping Enabled Default (323):	0
	libinput Tapping Drag Enabled (324):	1
	libinput Tapping Drag Enabled Default (325):	1

Change this line libinput Tapping Enabled (322): 0 to

libinput Tapping Enabled (322):	1

and update this in your config

exec_always xinput set-prop "Synaptics TM3289-002" "libinput Tapping Enabled" 1

Brightness Control

bindsym XF86MonBrightnessDown exec brightnessctl set 5%-
bindsym XF86MonBrightnessUp exec brightnessctl set 5%+

Find related articles

Let's discuss on Twitter