Introduction
Qtile is a tiling window manager for Linux written entirely in Python. Its configuration is a Python script, giving users the full power of the language to define layouts, key bindings, widgets, and custom behavior without learning a separate configuration DSL.
What Qtile Does
- Manages windows using tiling, floating, and stacking layouts
- Runs on both X11 and Wayland backends
- Configures entirely through a Python script (~/.config/qtile/config.py)
- Provides a built-in bar with extensible widgets for system info
- Supports hot-reloading configuration without restarting
Architecture Overview
Qtile is a single Python process that interfaces with X11 via xcffib or Wayland via wlroots bindings. Layouts, key bindings, and widgets are Python objects registered at startup. The event loop dispatches window and input events to the appropriate handlers, and lazy evaluation defers actions until key or mouse events fire.
Self-Hosting & Configuration
- Install via pip, system package managers, or from source
- Configuration lives in ~/.config/qtile/config.py as standard Python
- Layouts, key bindings, and groups are defined as Python lists
- Custom widgets can be written as Python classes extending base.Widget
- Test configuration changes with
qtile checkbefore applying
Key Features
- Python-native configuration with full language access
- X11 and Wayland support from the same codebase
- Built-in bar with clock, CPU, memory, battery, and volume widgets
- IPC interface for scripting and external tool integration
- Layout system includes columns, monad-tall, matrix, floating, and more
Comparison with Similar Tools
- i3/Sway — config file DSL; Qtile uses Python for more expressive configuration
- Hyprland — Wayland-only, C++; Qtile supports both X11 and Wayland in Python
- AwesomeWM — Lua configuration; Qtile offers Python for those who prefer it
- xmonad — Haskell-based; Qtile has a lower learning curve with Python
- bspwm — external scripting via bspc; Qtile embeds logic directly in config
FAQ
Q: Does Qtile work on Wayland? A: Yes. Qtile has a Wayland backend using wlroots.
Q: Can I use floating windows? A: Yes. Qtile supports floating layout and per-window float rules.
Q: How do I reload my config without restarting? A: Press the configured reload key (default: Mod+Ctrl+R) for hot reload.
Q: Is Qtile suitable for multi-monitor setups? A: Yes. Qtile supports multiple screens with independent groups per monitor.