No description
  • Python 86.1%
  • C 13.5%
  • Nix 0.2%
  • Makefile 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Gurjaka 6843014d46 xdg-view: set popup->base.server in qw_server_xdg_popup_new
`qw_xdg_popup_handle_destroy` dereferences `popup->base.server` via
`qw_cursor_update_pointer_focus`, but the popup constructor never set
it, so it was always NULL, guaranteed segfault on every xdg popup
destroy.

Introduced by `aae88c6`.

Fixes #6052
2026-09-05 09:31:05 +10:00
.github ci/releases: move wlroots to 0.20.2 2026-08-07 19:41:02 -06:00
docs core: debounce screen change events 2026-08-05 22:10:43 -04:00
libqtile xdg-view: set popup->base.server in qw_server_xdg_popup_new 2026-09-05 09:31:05 +10:00
nix fix(nix): replace /usr/bin/qtile in service file 2026-08-11 14:08:47 -04:00
resources resources: switch to /usr/bin/qtile 2026-08-09 15:46:12 -04:00
scripts scripts: drop dead qtb script 2026-05-13 10:47:05 -06:00
stubs chore: formatted 2024-09-03 10:48:26 -06:00
test Wayland: implement keyboard shortcuts inhibit protocol 2026-09-04 17:56:05 +01:00
.clang-format WIP: Rewrite the wayland backend in c 2025-10-24 14:27:14 +02:00
.coveragerc Move from pytest-cov to coverage (#3870) 2022-10-29 11:25:30 +01:00
.git-blame-ignore-revs git-blame-ignore-revs: ignore mypy upgrade 2025-08-28 20:03:52 -06:00
.gitignore Create base for wayland test clients 2026-06-24 19:50:27 -04:00
.pre-commit-config.yaml pre-commit: bump versions of things 2026-03-20 18:42:30 -06:00
.readthedocs.yaml fix(ci): create own systray icon script 2025-11-07 17:15:00 +00:00
builder.py Force wheel to include python version 2026-06-13 15:16:54 -04:00
CHANGELOG CHANGELOG: note the pango markup memory leak fixes 2026-09-01 17:38:45 +10:00
CONTRIBUTING.md CONTRIBUTING: add more docs about what we look for in PRs 2021-10-12 09:22:31 +01:00
Dockerfile Add procps to Dockerfile 2026-06-24 19:50:27 -04:00
flake.lock build: upgrade wlroots 0.19 → 0.20 2026-06-11 19:55:55 -06:00
flake.nix nix: update nixpkgs, fix deprecations, and align qtile deps with upstream 2026-03-05 08:03:50 -07:00
LICENSE Update copyright dates and author info 2026-01-10 07:46:13 -07:00
Makefile Refactor wayland build script 2026-06-24 19:50:27 -04:00
MANIFEST.in Create base for wayland test clients 2026-06-24 19:50:27 -04:00
pyproject.toml Try pytest-timeout to catch deadlocked tests 2026-05-23 20:40:47 -06:00
README.rst add @richcarni as a maintainer 2025-11-15 19:03:39 -07:00

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

: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/libqtile/resources/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/actions/workflows/ci.yml/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

Acknowledgements
================

Special thanks to the authors of `SwayWM`_, `LabWC`_, and `DWL`_, whose implementations 
and source code served as inspiration and reference for protocol implementations and 
architectural patterns while building the Wayland backend (`wayc`) for Qtile.

.. _`SwayWM`: https://github.com/swaywm/sway/blob/master/LICENSE
.. _`LabWC`: https://github.com/labwc/labwc/blob/master/LICENSE
.. _`DWL`: https://codeberg.org/dwl/dwl/src/branch/main/LICENSE

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

| `@tych0`_ GPG: ``3CCA B226 289D E016 0C61  BDB4 18D1 8F1B C464 DCA3``
| `@elParaguayo`_ GPG: ``A6BA A1E1 7D26 64AD B97B  2C6F 58A9 AA7C 8672 7DF7``
| `@jwijenbergh`_ GPG: ``B1C8 1CF3 063B 5836 4946  3687 4827 061B D417 C233``
| `@richcarni`_ GPG: ``FBB5 0201 8A0E 9CCF AF00  A5F0 9317 80BE 8CA8 83B5``

.. _`@tych0`: https://github.com/tych0
.. _`@elParaguayo`: https://github.com/elparaguayo
.. _`@jwijenbergh`: https://github.com/jwijenbergh
.. _`@richcarni`: https://github.com/richcarni

Maintainers Emeritus
====================
| `@cortesi`_
| `@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``

.. _`@cortesi`: https://github.com/cortesi
.. _`@ramnes`: https://github.com/ramnes
.. _`@m-col`: https://github.com/m-col
.. _`@flacjacket`: https://github.com/flacjacket