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 โ๏ธ. It integrates seamlessly with the Juna theming system, ensuring a consistent and dynamic visual experience.
๐ ๏ธ 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 โ.