Qtile Window Manager

This document describes the Qtile window manager configuration, a dynamic tiling window manager written in Python. It has been extensively customized for optimal performance with Wayland and NixOS, integrating seamlessly with the Juna theming system to provide a consistent and dynamic visual experience.


Why Qtile?

  • Python-powered: Easily extensible and customizable.
  • Wayland backend: Utilizes a modern, experimental Wayland backend, offering smooth rendering, enhanced security, and improved input handling.
  • Keyboard-centric: Designed for complete keyboard control, promoting speed and focus.
  • Dynamic tiling: Windows automatically arranged for maximum efficiency.

Key Config Details

Mod Key and Core Applications

  • 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 configuration launches essential services and utilities to ensure system readiness and smooth operation:

  • 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 applications 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.