Qtile Window Manager 🪟⚡
This is the heart of my keyboard-driven workflow: Qtile, a dynamic tiling window manager written in Python 🐍 — customized heavily to work perfectly with Wayland 🚀 and my NixOS setup ❄️.
🛠️ Why Qtile?
- Python-powered 🐍: Easy to extend and customize exactly how I want.
- Wayland backend 🚀: Experimental but modern, providing smooth rendering, security 🔒, and better input handling.
- Keyboard-centric ⌨️: Everything can be controlled without touching the mouse 🖱️ — speed and focus all the way.
- Dynamic tiling 🧩: Windows automatically arranged for maximum efficiency.
⚙️ Key Config Details
Mod Key & Core Apps 🔑
mod4(Super/Windows key) as the main modifier.- Terminal:
footclient🦶. - Browser:
firefox🦊. - Launcher:
fuzzel🚀 for app launching. - File manager:
thunar📁. - Editor:
nviminsidefootclient✍️. - Notification center:
swaync-client🔔.
Autostart Hooks 🔥
On startup, the config launches essential services and utilities to keep the system smooth and ready:
- 🎧
systemctl --user restart pipewire— Audio server for sound management - 👻
systemctl --user restart app-com.mitchellh.ghostty.service— Ghostty terminal service - 🔵
blueman-applet— Bluetooth tray applet for easy device control - 💾
udiskie— Automatic mounting for removable drives - 📸
flameshot— Screenshot tool ready to capture on demand - 🎯
focus-mode— Custom script to minimize distractions and enhance productivity - 🎵
mpDris2&mpd-notify— MPD integration for notifications and media controls
If running on Wayland:
- 🌅
systemctl restart --user wlsunset.service— Day/night light filter - 🦶
foot --server— Start Foot terminal server for Wayland native terminal - 🖼️
swww-daemon&wallrandom— Wallpaper daemon and randomizer script - 🔔
swaync— Notification daemon
If host is desktop:
- 🦊
firefox— Launch browser - 🎮
discord --disable-gpu— Start Discord with GPU acceleration disabled for stability
Fullscreen Rules 🎬
Certain apps like flameshot 📸 automatically open fullscreen to avoid interruptions.
⌨️ Keybindings Breakdown
- Navigation:
mod + h/j/k/l🔀 to move focus left/down/up/right. - Window shuffle:
mod + shift + h/j/k/l🔄 moves windows around. - Resize:
mod + ctrl + j/k📏 to shrink or grow windows. - Toggle fullscreen:
mod + f🖥️. - Toggle floating:
mod + shift + space🌊. - Spawn terminal, browser, launcher, file manager, editor, with easy combos.
- Volume 🔊, brightness 🌞, media 🎵 keys mapped for quick control.
🗂️ Groups & Workspaces
- Numeric groups
0-9🔢 plus a scratchpad with dropdowns for Music (rmpc) 🎧 and terminal 🦶. - Specific matching rules send apps to designated groups automatically:
- Browsers (Firefox, Vivaldi, Librewolf, Brave) 🌐 go to group 2.
- Obsidian notes app 📝 to group 4.
- Discord 🎮 to group 9.
-
Steam 🎲 to group 0.
-
Keybindings let you switch groups 🔀 or move windows ↔️ between them.
🖥️ Layouts
- MonadTall 🏢 for tiling — clean and efficient vertical stacking.
- Max 🔲 for fullscreen applications.
📊 Widgets & Bar
- Stylish powerline decorations ⚡ with custom colors matching the active theme 🎨.
- Shows current group, layout, window name 🪟, search box 🔍, system tray 🛎️, memory 🧠, battery 🔋(on laptop), volume 🔉, keyboard layout ⌨️, and clock ⏰.
- Interactive logo that opens the NixOS Wiki 📚 on click.
🖱️ Mouse Controls
- Drag floating windows with
mod + left-click🖱️ or resize withmod + right-click↔️. - Bring window to front with
mod + middle-click🔝.
🔧 Additional Config
- Wayland input settings tuned for flat acceleration profiles ⚙️.
- Custom cursor theme
Nordzy-cursors🖱️. wmnameset toQTILEfor Java UI compatibility ☕.