|logo|

**A full-featured, hackable tiling window manager written and configured in Python**

|website| |pypi| |ci| |rtd| |license| |ruff| |coverage|

Features
========

* Simple, small and extensible. It's easy to write your own layouts,
  widgets and commands.
* Configured in Python.
* Runs as an X11 WM or a Wayland compositor.
* Command shell that allows all aspects of Qtile to be managed and
  inspected.
* Complete remote scriptability - write scripts to set up workspaces,
  manipulate windows, update status bar widgets and more.
* Qtile's remote scriptability makes it one of the most thoroughly
  unit-tested window managers around.

Community
=========

Qtile is supported by a dedicated group of users. If you need any help, please
don't hesitate to fire off an email to our mailing list or join us on IRC. You
can also ask questions on the discussions board.

:Mailing List: https://groups.google.com/group/qtile-dev
:Q&A: https://github.com/qtile/qtile/discussions/categories/q-a
:IRC: irc://irc.oftc.net:6667/qtile
:Discord: https://discord.gg/ehh233wCrC (Bridged with IRC)

Example code
============

Check out the `qtile-examples`_ repo which contains examples of users' configurations,
scripts and other useful links.

.. _`qtile-examples`: https://github.com/qtile/qtile-examples

Contributing
============

Please report any suggestions, feature requests, bug reports, or annoyances to
the GitHub `issue tracker`_. There are also a few `tips & tricks`_,
and `guidelines`_ for contributing in the documentation.

Please also consider submitting useful scripts etc. to the qtile-examples repo
(see above).

.. _`issue tracker`: https://github.com/qtile/qtile/issues
.. _`tips & tricks`: https://docs.qtile.org/en/latest/manual/hacking.html
.. _`guidelines`: https://docs.qtile.org/en/latest/manual/contributing.html

.. |logo| image:: https://raw.githubusercontent.com/qtile/qtile/master/logo.png
    :alt: Logo
    :target: https://qtile.org
.. |website| image:: https://img.shields.io/badge/website-qtile.org-blue.svg
    :alt: Website
    :target: https://qtile.org
.. |pypi| image:: https://img.shields.io/pypi/v/qtile.svg
    :alt: PyPI
    :target: https://pypi.org/project/qtile/
.. |ci| image:: https://github.com/qtile/qtile/workflows/ci/badge.svg?branch=master
    :alt: CI status
    :target: https://github.com/qtile/qtile/actions
.. |rtd| image:: https://readthedocs.org/projects/qtile/badge/?version=latest
    :alt: Read the Docs
    :target: https://docs.qtile.org/en/latest/
.. |license| image:: https://img.shields.io/github/license/qtile/qtile.svg
    :alt: License
    :target: https://github.com/qtile/qtile/blob/master/LICENSE
.. |ruff| image:: https://img.shields.io/badge/code%20style-ruff-000000.svg
    :alt: Codestyle
    :target: https://github.com/astral-sh/ruff
.. |coverage| image:: https://coveralls.io/repos/github/qtile/qtile/badge.svg
    :alt: Coverage
    :target: https://coveralls.io/github/qtile/qtile


Maintainers
===========

| `@tych0`_ GPG: ``3CCA B226 289D E016 0C61 BDB4 18D1 8F1B C464 DCA3``
| `@ramnes`_ GPG: ``99CC A84E 2C8C 74F3 2E12  AD53 8C17 0207 0803 487A``
| `@m-col`_ GPG: ``35D9 2E7C C735 7A81 173E  A1C9 74F9 FDD2 0984 FBEC``
| `@flacjacket`_ GPG: ``58B5 F350 8339 BFE5 CA93  AC9F 439D 9701 E7EA C588``
| `@elParaguayo`_ GPG: ``A6BA A1E1 7D26 64AD B97B  2C6F 58A9 AA7C 8672 7DF7``
| `@jwijenbergh`_ GPG: ``B1C8 1CF3 063B 5836 4946  3687 4827 061B D417 C233``

.. _`@tych0`: https://github.com/tych0
.. _`@ramnes`: https://github.com/ramnes
.. _`@m-col`: https://github.com/m-col
.. _`@flacjacket`: https://github.com/flacjacket
.. _`@elParaguayo`: https://github.com/elparaguayo
.. _`@jwijenbergh`: https://github.com/jwijenbergh
