---
title: i3
kind: note
description: tiling window manager for X11
words: 243
readingMinutes: 1
created: '2024-03-31T20:53:12+02:00'
updated: '2024-11-01T22:32:52+01:00'
website: https://i3wm.org/
---
## Link

<https://i3wm.org/>

Tiling [window manager](/notes/window-managers) for [Linux](/notes/linux)
## (Default) Shortcuts
- The default modifier key is `Win`, also called `Meta` or `Cmd`. In the following I just call it `Win`, because that corresponds to the logo/icon this key has on most keyboards.

| Shortcut           | Function                                                                                                                        |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------- |
| `Win`+`D`          | Start launcher (dmenu)                                                                                                          |
| `Win`+`DownArrow`  | Focus window below                                                                                                              |
| `Win`+`E`          | Switch container to _split_ layout. If the container is already split, changes from horizontal to vertical split or vice-versa. |
| `Win`+`Enter`      | Open terminal emulator                                                                                                          |
| `Win`+`H`          | The next window should be split *horizontally* (to the right)                                                                   |
| `Win`+`J`          | Switch between windows                                                                                                          |
| `Win`+`LeftArrow`  | Focus window to the left                                                                                                        |
| `Win`+`RightArrow` | Focus window to the right                                                                                                       |
| `Win`+`Shift`+`E`  | Exit i3                                                                                                                         |
| `Win`+`Shift`+`Q`  | Close current window                                                                                                            |
| `Win`+`Shift`+`R`  | Reload i3 (after changing configuration)                                                                                        |
| `Win`+`UpArrow`    | Focus window above                                                                                                              |
| `Win`+`V`          | The next window should be split *vertically* (below)                                                                            |
| `Win`+`S`          | Switch container to _stacked_ layout                                                                                            |
| `Win`+`W`          | Switch container to _tabbed_ layout                                                                                             |
## Resources
- [ArchWiki](https://wiki.archlinux.org/title/I3)
### Launchers
- [dmenu](https://wiki.archlinux.org/title/Dmenu) - simple launcher
- [davatorium/rofi](https://github.com/davatorium/rofi) - a themeable window switcher, application launcher and dmenu replacement
## FAQ
### `for_window` does not seem to target window by class
Make sure to use the *second* string displayed for WM_CLASS by `xprop`.
## My old config file
- From the good old [FreeBSD](/notes/freebsd) times:
	```text
	set $mod Mod4
	floating_modifier $mod
	bindsym $mod+Return exec ssh-agent lxterminal
	bindsym Mod1+F4 kill
	bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
	bindsym $mod+j focus left
	bindsym $mod+k focus down
	bindsym $mod+l focus up
	bindsym $mod+ae focus right
	bindsym $mod+ISO_Level3_Shift focus left
	bindsym $mod+Super_R focus down
	bindsym $mod+Print focus up
	bindsym $mod+(null) focus right
	bindsym $mod+Shift+Left move left
	bindsym $mod+Shift+Down move down
	bindsym $mod+Shift+Up move up
	bindsym $mod+Shift+Right move right
	bindsym $mod+Shift+ISO_Level3_Shift move left
	bindsym $mod+Shift+Super_R move down
	bindsym $mod+Shift+Print move up
	bindsym $mod+Shift+(null) move right
	bindsym $mod+h split h
	bindsym $mod+v split v
	bindsym $mod+f fullscreen
	bindsym $mod+s layout stacking
	bindsym $mod+w layout tabbed
	bindsym $mod+e layout toggle split
	bindsym $mod+Shift+space floating toggle
	bindsym $mod+space focus mode_toggle
	bindsym $mod+a focus parent
	#bindsym $mod+d focus child
	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
	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
	bindsym Mod1+Shift+Tab workspace prev
	bindsym Mod1+Tab workspace next
	bindsym $mod+Shift+c reload
	bindsym $mod+Shift+r restart
	bindsym $mod+q 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'"
	mode "resize" {
	        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 ae resize grow width 10 px or 10 ppt
	        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
	        bindsym Return mode "default"
	        bindsym Escape mode "default"
	}
	bindsym $mod+z mode "resize"
	bar {
	        status_command i3status
	}
	new_window 1pixel
	hide_edge_borders both
	focus_follows_mouse no
	workspace_auto_back_and_forth yes
	exec_always --no-startup-id sleep 1 && xrandr --output LVDS1 --auto --rotate normal --pos  0x0  --output VGA1 --auto --rotate normal --right-of LVDS1
	exec_always --no-startup-id sleep 1 && xsetroot -bg '#101010' -fg '#000000' -mod 3 3
	```
