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: nvim inside footclient โœ๏ธ.
  • 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 with mod + 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 ๐Ÿ–ฑ๏ธ.
  • wmname set to QTILE for Java UI compatibility โ˜•.