My i3
config file resides in $HOME/.config/i3/
.
I’ve tried to call out everywhere I’ve changed the
i3
defaults, but I may have missed some.
Use xmodmap
, a utility for modifying keymaps and pointer button mappings in X
, to see all the values for the modifier key:
$ xmodmap
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Caps_Lock (0x42), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
I’m using mod1
because I’m using the Alt
key as my modifier key ($mod
).
You can use xmodmap -pke
to see a mapping of symbols to keycodes.
A note about the
--no-startup-id
switch:“The –no-startup-id parameter disables startup-notification support for this particular exec command. With startup-notification,
i3
can make sure that a window appears on the workspace on which you used the exec command.Also, it will change the X11 cursor to watch (a clock) while the application is launching. So, if an application is not startup-notification aware (most GTK and Qt using applications seem to be, though), you will end up with a watch cursor for 60 seconds.”
( In other words, it will display the cursor instead of the spinner, which is especially noticeable when setting a desktop background using
feh
and then going to an empty workspace. )
General
- Create config file
i3-config-wizard
in a terminal
- Reload config file
$mod + Shift + c
- Restart
i3
$mod + Shift + r
- Logout
$mod + Shift + e
- Or, use
dmenu
:$mod + d
ie-msg exit
- Lock screen
i3lock
in a terminal- Add to
i3
config:# Set a background for the lock screen (only PNG is supported). set $i3lockwall i3lock -i $HOME/bulldog.png bindsym $mod+shift+x exec --no-startup-id $i3lockwall
- Set background image
sudo apt-get install feh
- Add to
i3
config file:exec_always feh --bg-scale $HOME/wallpaper.jpeg
Movements
- Vim bindings
h
,j
,k
,l
- arrow keys
- I’ve removed support for the arrow keys, just like I’ve disabled them in my Vim configuration.
These are often combined with the $mod
key and others to facilitate moving focus and workspaces and windows.
For example:
Modify i3
config file:
# change focus bindsym $mod+h focus left bindsym $mod+j focus down bindsym $mod+k focus up bindsym $mod+l focus right # move focused window bindsym $mod+Shift+h move left bindsym $mod+Shift+j move down bindsym $mod+Shift+k move up bindsym $mod+Shift+l move right
Note that these have been changed from
i3
’s defaults.
When combined with an aforementioned key, I’ll just refer to it as a Move
.
Workspaces
- Create a terminal
$mod + Enter
- Launch a program using
dmenu
(dmenu
is opened at the top of the screen):$mod + d
- Type to filter the programs
- Close a workspace
$mod + Shift + q
Windows
- Move focused window
$mod + Shift + Move
- Move focused window to another workspace
$mod + Shift + Number
- Change window focus
$mod + Move
- Create a new window vertically
$mod + Ctrl + v
(changed fromi3
default)$mod + Enter
or$mod + d
- Create a new window horizontally
$mod + Ctrl + h
(changed fromi3
default)$mod + Enter
or$mod + d
- Resize windows
$mod + r
Move
Esc
to exit resize mode
- Stack windows
$mod + s
(s == stacking)$mod + e
to undo
- Tabbed windows
$mod + w
$mod + e
to undo
Scratchpad
-
Turn a regular workspace into a scratchpad:
$mod + Shift + minus
-
Revert a scratchpad back into a workspace:
$mod + Shift + space
-
Start an application as a scratchpad when
i3
starts:-
In
i3
config file:for_window [class="thunderbird-default"] move window to scratchpad, scratchpad show exec --no-startup-id thunderbird
Note that the
[class="thunderbird-default"]
bits were determined byxprop
.
-
Conclusion
Whether it be i3
, vim
, tmux
, etc., I find it’s always a good idea to revisit your config files and remove what you don’t use to keep them as simple as possible. There’s nothing worse than an overly-complex config filled with garbage that is never used.