# Note: most i3 keybindings use ◆ mod key. This is `Alt` key by default, # but is frequently swapped with Meta (windows) key. # Open new terminal ◆ + Enter # Open application launcher ◆ + d # Change where new window is opened: # Horizontal split ◆ + h # Vertical split ◆ + v # Movement # (like in vim, but one key to right) ^ l < j ; > k V # Switch focus around windows in workspace ◆ + # Move windows around workspace ◆ + Shift + # Workspaces # i3 has by default 10 workspaces, labeled 1,2,...,9,0 # Each opened window resides in one of the workspaces # Change workspace ◆ + 0-9 # Send focused window to workspace ◆ + Shift + 0-9 # Toggle fullscreen ◆ + f # Enter resize mode (resize with movement/arrow keys, exit with Esc) ◆ + r # Change container layout # default: next to each other ◆ + e # stacked: all windows but one are minimized ◆ + s # tabbed: like browser tabs ◆ + w # floating window (drag with ◆ + LeftClick): ◆ + Shift + Space # Guide: precise positioning of newly spawned windows # # When creating new window, currently focused window # will be split in half and one half will be used by new window. # You can control whether it will split horizontally or # vertically with ◆+v or ◆+h. # You can focus multiple windows at once. # For example with this layout with two windows: +-------+-------+ | . . . | . . . | | . . . | . . . | | . 1 . | . 2 . | | . . . | . . . | | . . . | . . . | +-------+-------+ # One can select both windows at once and split them vertically, # so the new window will take half of whole screen. # Select parent container (both windows 1 and 2): ◆ + a # Vertically spawn new terminal window: ◆+v, ◆+Enter # Result: +-------+-------+ | . . . | . . . | | . 1 . | . 2 . | +-------+-------+ | . . . 3 . . . | | . . . . . . . | +---------------+ # Whenever you split window in half by spawning new window, # both windows will be placed in an invisible container. # One can focus parent container with ◆+a. # i3 configuration # Configuration files can be found at following locations (ordered by priority): ~/.config/i3/config (or $XDG_CONFIG_HOME/i3/config) ~/.i3/config /etc/xdg/i3/config (or $XDG_CONFIG_DIRS/i3/config) /etc/i3/config # One can specify custom config file with -c option while starting i3 # Most configuration options can be inferred from default configuration # Default configuration path: /etc/i3/config # Keys can be bound with bindsym like this: bindsym $mod+4 workspace $ws4 bindsym $mod+Shift+R exec custom-script-in-path.sh --flag1 --flag2 bindcode 172 exec playerctl play-pause # Execute code when i3 starts, but only once per session: exec --no-startup-id ~/.config/polybar/launch.sh # Always execute code when i3 starts, even if it's simply restarted: exec_always --no-startup-id ~/.config/polybar/launch.sh # One can make special modes (much like resize mode) set $gamingMode "gaming_mode" bindsym $mod+g mode $gamingMode mode $gamingMode { # Insert declarations for this mode. Useful when normal keybindings fight # with keybindings of your games. Don't forget to add option to return from # this mode! bindsym $mod+Escape mode default } # Move workspace between multiple monitors bindsym $mod+x move workspace to output right # Reload config file ◆ + Shift + c # Restart i3 in place ◆ + Shift + r # Exit i3 ◆ + Shift + e