Skip to content

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: 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 ☕.