Below are the preferred installation methods for specific distros. If you are running something else, please see Installing From Source.
Installing From Source¶
First, you need to install all of Qtile’s dependencies (although some are optional/not needed depending on your Python version, as noted below).
Note that Python 3 versions 3.5 and newer are currently supported and tested, including corresponding PyPy3 versions.
Qtile uses xcffib as an XCB binding, which has its own instructions for
building from source. However, if you’d like to skip building it, you can
install its dependencies, you will need libxcb and libffi with the associated
libffi-dev on Ubuntu), and install it
pip install xcffib
Qtile uses cairocffi with XCB support via xcffib. You’ll need
the underlying library used by the binding. You should be sure before you
install cairocffi that xcffib has been installed, otherwise the needed
cairo-xcb bindings will not be built. Once you’ve got the dependencies
installed, you can use the latest version on PyPI:
pip install --no-cache-dir cairocffi
You’ll also need
libpangocairo, which on Ubuntu can be installed via
apt-get install libpangocairo-1.0-0. Qtile uses this to provide text
rendering (and binds directly to it via cffi with a small in-tree binding).
Until someone comes along and writes an asyncio-based dbus library, qtile will
python-dbus to interact with dbus. This means that if you want
to use things like notification daemon or mpris widgets, you’ll need to
install python-gobject and python-dbus. Qtile will run fine without these,
although it will emit a warning that some things won’t work.
With the dependencies in place, you can now install qtile:
git clone git://github.com/qtile/qtile.git cd qtile pip install .
Stable versions of Qtile can be installed from PyPI:
pip install qtile
As long as the necessary libraries are in place, this can be done at any point, however, it is recommended that you first install xcffib to ensure the cairo-xcb bindings are built (see above).
The above steps are sufficient to run Qtile directly, but there are some extra
works if you want to run it within a virtualenv. Here are the steps on a Fedora
system for user
foo, it should work on other Linux systems too.
Clone the repo as
mkdir -p ~/local/ cd ~/local/ git clone git://github.com/qtile/qtile.git
Create a virtualenv
~/local/qtile/venv/, and install the dependencies there (see above).
Create a glue shell to take advantage of the virtualenv.
cat > /home/foo/local/qtile/qtile-venv-entry <<EOF #!/bin/bash source ~/local/qtile/venv/bin/activate python3 ~/local/qtile/bin/qtile $* EOF
Create an xsession file. Note that it can only be used to log in as user
foodue to file system permission restriction.
cat > /usr/share/xsessions/qtile-venv.desktop <<EOF [Desktop Entry] Name=Qtile(venv) Comment=Qtile Session Within Venv Exec=/home/foo/local/qtile/qtile-venv-entry Type=Application Keywords=wm;tiling EOF
Log out or reboot your system, then select “Qtile(venv)” as your window manager by clicking the gear icon (⚙) when logging in again.