Qtile is configured in Python. A script (~/.config/qtile/config.py by
default) is evaluated, and a small set of configuration variables are pulled
from its global namespace.
- A list of libqtile.config.Group objects which defines the group names.
A group is a container for a bunch of windows, analogous to workspaces in
other window managers. Each client window managed by the window manager
belongs to exactly one group.
- A list of libqtile.config.Key objects which defines the keybindings.
At a minimum, this will probably include bindings to switch between
windows, groups and layouts.
- A list of layout objects, configuring the layouts you want to use.
- A list of libqtile.config.Drag and libqtile.config.Click objects
defining mouse operations.
- A list of libqtile.config.Screen objects, which defines the physical
screens you want to use, and the bars and widgets associated with them.
Most of the visible “look and feel” configuration will happen in this
- A function that executes after the window manager is initialized, but
before groups, screens and other components are set up.
Putting it all together
The qtile-examples repository
includes a number of real-world configurations that demonstrate how you can
tune Qtile to your liking. (Feel free to issue a pull request to add your own
configuration to the mix!)
Testing your configuration
The best way to test changes to your configuration is with the provided Xephyr
script. This will run Qtile with your config.py inside a nested X server
and prevent your running instance of Qtile from crashing if something goes
See Hacking Qtile for more information on using