orilla
Personal River window manager configuration,
built with the orilla Rust library.
Installation
Install the binary to ~/.local/bin and symlink it as the River init script:
just install
This runs cargo install into ~/.local, then creates
~/.config/river/init -> ~/.local/bin/my-orilla.
Building
cargo build --release
Dependencies
Runtime tools referenced in keybindings:
ghostty — terminal emulator
fuzzel — application launcher
lf — terminal file manager
texec — launch lf in a floating terminal
cutie — qutebrowser tab management wrapper
idle — idle inhibitor toggle
mako — notification daemon (makoctl)
pactl — PulseAudio/PipeWire volume control
playerctl — media player control
brightnessctl — backlight
control
screenshot — screenshot helper script
kanshi — output configuration daemon
loginctl / systemctl — session and power management (systemd)
Layouts
Seven layouts are available, cycled with Super+Space. Layout controls are
uniform across all layouts that support them: Super+Ctrl+H/L resizes the main
area, Super+Ctrl+J/K adjusts the main window count.
| Layout |
Description |
| Tall |
Classic master-stack (resize + count) |
| Full |
Single focused window fills the screen |
| Grid |
Approximately square grid of all windows |
| CenteredMain |
Main window centered, secondaries split left/right (resize) |
| Dwindle |
Fibonacci/dwindle split — each new window halves the remaining space |
| Stream |
Main column pegged to 16:9 aspect ratio, secondaries stack on right (count) |
| Trunk |
16:9 center column, secondaries alternate left and right sides (count) |
Tags 1–4 have fixed layouts; tags 5–9 use the global cycle above.
| Tag |
Purpose |
Layout |
| 1 |
Browser |
Full |
| 2 |
Terminal / code |
Tall |
| 3 |
Email / social |
CenteredMain |
| 4 |
Gaming |
Full |
Key bindings
Modifier keys follow a consistent philosophy:
| Modifier |
Role |
Super |
Speed — frequently used actions, instant access |
Super+Shift |
Modification — change the state of a window |
Super+Ctrl |
Management — layout control, visibility, counts |
Super+Alt |
Applications — launching and managing apps |
Applications
| Key |
Action |
Super+Return |
Terminal ($TERMINAL, default: ghostty) |
Super+O |
Launcher ($LAUNCHER, default: fuzzel) |
Super+U |
qutebrowser history |
Super+Alt+O |
File manager (lf via texec) |
Super+Alt+I |
qutebrowser new session (cutie) |
Super+Alt+D |
qutebrowser delete session (cutie) |
Super+Alt+R |
qutebrowser rename session (cutie) |
Super+Alt+B |
Browser (qutebrowser) |
Super+Alt+E |
Email (Thunderbird) |
Super+Alt+C |
Calculator (Qalculate) |
Super+Alt+P |
Passwords (Bitwarden) |
Super+Alt+G |
Games (Steam) |
Super+Alt+N |
Network manager (nmtui) |
Super+Ctrl+Z |
Toggle idle inhibitor |
Window management
| Key |
Action |
Super+Shift+C |
Close focused window |
Super+J/K |
Focus next/prev |
Super+M |
Focus primary |
Super+Shift+J/K |
Swap next/prev |
Super+Shift+Return |
Promote to main area |
Tags (workspaces 1–9)
| Key |
Action |
Super+[1-9] |
Switch to tag |
Super+Shift+[1-9] |
Move window to tag |
Super+Ctrl+[1-9] |
Toggle tag visibility |
Super+./, |
Next/prev tag |
Super+Tab |
Last used tag |
Super+N |
Next empty tag |
Session
| Key |
Action |
Super+Shift+L |
Lock session |
Super+Shift+S |
Suspend |
Super+Shift+H |
Hibernate |
Super+Shift+Q |
Kill session |
Notifications (mako)
| Key |
Action |
Super+C |
Dismiss notification |
Super+Shift+N |
Dismiss all notifications |
Screenshots
| Key |
Action |
Print |
Capture region → clipboard |
Shift+Print |
Capture full screen → clipboard |
Ctrl+Print |
OCR region → clipboard |
Super+Z |
Scan QR code → open URL |
Super+Shift+Z |
Scan QR code → clipboard |
Media keys
Volume, playback, brightness, and eject are bound to the standard XF86 media
keys.