Basics
| Keybind | Action |
|---|---|
| Mod+Return | Open terminal (alacritty) |
| Mod+d | App launcher (rofi) |
| Mod+b | Open browser (Firefox ESR) |
| Mod+v | Open ranger (file manager in terminal) |
| Mod+F3 | Open Thunar (GUI file manager) |
| Mod+q | Kill focused window |
| Mod+m | Toggle polybar visibility |
| Mod+z | Open Reference Page |
Focus & Move Windows
Focus (move cursor to window)
| Keybind | Action |
|---|---|
| Mod+h | Focus left |
| Mod+j | Focus down |
| Mod+k | Focus up |
| Mod+l | Focus right |
| Mod+a | Focus parent container |
| Mod+Space | Toggle focus: tiling ↔ floating |
Move window
| Keybind | Action |
|---|---|
| Mod+Shift+h | Move window left |
| Mod+Shift+j | Move window down |
| Mod+Shift+k | Move window up |
| Mod+Shift+l | Move window right |
Floating windows
| Keybind | Action |
|---|---|
| Mod+Shift+Space | Toggle floating for focused window |
| Mod+Shift+s | Toggle sticky (window follows all workspaces) |
| Mod+Mouse drag | Drag floating window |
Scratchpad (hidden window store)
| Keybind | Action |
|---|---|
| Mod+Shift+- | Send window to scratchpad |
| Mod+- | Show/cycle scratchpad windows |
Workspaces
| Keybind | Action |
|---|---|
| Mod+1–8 | Switch to workspace 1–8 |
| Mod+Shift+1–8 | Move window to workspace 1–8 (and follow it) |
| Mod+Ctrl+1–8 | Move window to workspace 1–8 (stay on current) |
| Mod+Ctrl+→ | Next workspace |
| Mod+Ctrl+← | Previous workspace |
| Mod+Shift+b | Move window to last workspace (and follow) |
Layout & Splitting
| Keybind | Action |
|---|---|
| Mod+t | Toggle split direction (horizontal ↔ vertical) |
| Mod+e | Toggle split layout |
| Mod+s | Stacking layout |
| Mod+w | Tabbed layout |
| Mod+f | Fullscreen toggle |
Border style
| Keybind | Action |
|---|---|
| Mod+u | No border |
| Mod+y | Pixel border (2px) |
| Mod+n | Normal border (with title bar) |
Modes
Modes change what your keys do temporarily. Press Escape or Enter to exit any mode.
Resize mode RESIZE
| Key (in resize mode) | Action |
|---|---|
| h | Shrink width by 5px |
| l | Grow width by 5px |
| k | Shrink height by 5px |
| j | Grow height by 5px |
| ←→↑↓ | Same but 10px steps |
Gap mode GAPS
| Key | Action |
|---|---|
| o | Enter outer gaps sub-mode |
| i | Enter inner gaps sub-mode |
| + / - / 0 | Increase / decrease / remove gaps (current workspace) |
| Shift++/-/0 | Same but applies to ALL workspaces |
System mode SYSTEM
| Key | Action |
|---|---|
| l | Lock screen |
| s | Suspend |
| e | Exit i3 (logout) |
| r | Reboot |
| Shift+s | Shutdown |
Apps & Screenshots
| Keybind | Action |
|---|---|
| Mod+p | Screenshot → ~/Pictures/Screenshots/ |
| Mod+Print | Screenshot of focused window |
| Mod+Shift+Print | Screenshot of selected region (drag) |
| Mod+9 | Lock screen (black) |
| Mod+Shift+c | Reload i3 config (no restart) |
| Mod+Shift+r | Restart i3 (preserves session) |
alacritty Terminal
Tabs & Windows
| Keybind | Action |
|---|---|
| Ctrl+Shift+t | New tab (opens in current directory) |
| Ctrl+Shift+w | Close tab |
| Ctrl+Shift+→ | Next tab |
| Ctrl+Shift+← | Previous tab |
| Ctrl+Shift+l | Next window (split) |
| Ctrl+Shift+h | Previous window (split) |
Font size
| Keybind | Action |
|---|---|
| Ctrl+= | Increase font size |
| Ctrl+- | Decrease font size |
| Ctrl+Shift+0 | Reset font size |
Clipboard
| Keybind | Action |
|---|---|
| Ctrl+Shift+c | Copy selection |
| Ctrl+Shift+v | Paste |
Ranger File Manager
Navigation
| Key | Action |
|---|---|
| h / l | Go up / enter directory |
| j / k | Move down / up |
| gg / G | Go to top / bottom of list |
| J / K | Half page down / up |
| gh | Go to home (~) |
| gr | Go to root (/) |
| gd | Go to ~/Documents (custom) |
| gw | Go to ~/Downloads (custom) |
| gc | Go to ~/.config (custom) |
File operations
| Key | Action |
|---|---|
| yy | Copy (yank) file |
| dd | Cut file |
| pp | Paste |
| dD | Delete (with confirmation) |
| cw | Rename file |
| a | Rename (append to end) |
| Space | Mark/select file |
| v | Invert selection |
View & search
| Key | Action |
|---|---|
| zh | Toggle hidden files |
| zi | Toggle image previews |
| / | Search in current directory |
| Ctrl+f | Fuzzy find (fzf) |
| f | Filter files (type to filter) |
| i | Display file info / preview |
| co | Open current dir in VS Code (custom) |
Tabs
| Key | Action |
|---|---|
| Ctrl+n | New tab |
| Ctrl+w | Close tab |
| Tab | Next tab |
| Shift+Tab | Previous tab |
Bash Aliases
Defined in ~/.bashrc. All your original aliases are carried over.
General
| Alias | Expands to |
|---|---|
c | clear |
ll | ls -alF (long list, all files) |
la | ls -A (all except . and ..) |
l | ls -CF |
Git shortcuts
| Alias | Expands to |
|---|---|
gs | git status |
gss | git status --short |
ga | git add |
gaa | git add . |
gc | git commit |
gcm | git commit --message |
gco | git checkout |
gcob | git checkout -b (new branch) |
gp | git push |
gpl | git pull |
gd | git diff |
glg | git log --graph --oneline --decorate --all |
gst | git stash |
gstp | git stash pop |
gb | git branch |
gr | git rebase |
glf "msg" | Search git log by commit message (function) |
System & Pi-specific
Check CPU temp
vcgencmd measure_temp # or watch it live: watch -n 1 vcgencmd measure_temp
Network interfaces
ip link # To check your wifi/eth names # for polybar config
Audio control
pavucontrol # GUI mixer alsamixer # TUI mixer amixer # CLI control
Performance tips
If Pi feels slow, in picom.conf change:
backend = "xrender"; # and comment out blur:
Also lower gaps inner in i3 config.
Setup & Config Locations
bash ~/rpi-setup/scripts/install.sh from the package you downloaded.
Config file locations
| File | Location |
|---|---|
i3 | ~/.config/i3/config |
picom | ~/.config/picom/picom.conf |
polybar | ~/.config/polybar/config.ini |
alacritty | ~/.config/kitty/kitty.conf |
ranger | ~/.config/ranger/rc.conf |
flashfocus | ~/.config/flashfocus/flashfocus.yml |
bash | ~/.bashrc |
After changing i3 config
Mod + Shift + c # Reload config (no restart) Mod + Shift + r # Full restart (if something breaks)
After changing polybar config
~/.config/polybar/launch.sh # Re-run launch script
Fix polybar network module
# Find your interface names: ip link # Edit polybar config: nano ~/.config/polybar/config.ini # Change [module/wlan] interface = wlan0 # Change [module/eth] interface = eth0
Set a wallpaper
# Put your image at e.g. ~/Pictures/wallpaper.jpg nitrogen # GUI picker — saves and auto-restores on login
Wallpaper command-line
feh --bg-scale ~/Pictures/wallpaper.jpg # Add to ~/.config/i3/config to make permanent: exec --no-startup-id feh --bg-scale ~/Pictures/wallpaper.jpg
Neovim (Coding Setup)
Core usage
| Keybind / Command | Action |
|---|---|
| vim file.c | Open file in Neovim (use instead of vim) |
| :q | Quit Neovim |
| :w | Save file |
| :Lazy | Open plugin manager (lazy.nvim UI) |
| :Mason | Open LSP/tool installer UI |
| :MasonLog | View Mason install logs (debug failures) |
LSP navigation (C / Python / Rust)
| Keybind | Action |
|---|---|
| gd | Go to definition |
| gr | Find references |
| K | Hover documentation |
| Shift + p | Fuzzy Find File |
| gf | Format file (if configured) |
| :LspInfo | Check active language servers |
Insert mode improvements
| Keybind | Action |
|---|---|
| kj | Exit insert mode (escape alternative) |
Tooling (Mason installs)
| Tool | Purpose |
|---|---|
clangd |
C / C++ language server (firmware dev) |
pyright |
Python language server |
black |
Python formatter (via conform.nvim) |
clang-format |
C/C++ formatter |
mason or treesitter fails, run :MasonLog and :checkhealth.
On Raspberry Pi, some tools may fail due to architecture or missing binaries.
Important setup notes (Pi / embedded Linux)
# Install system deps (preferred over pip where possible)
sudo apt install clangd python3 python3-pip
# If pip blocks installs:
python3 -m pip install --user black
# Restart Neovim after installs:
nvim