Skip to main content

aioxlib

Human-friendly asyncio interface to the X11 protocol

PyPI Python Versions License: GPL-3.0 Docs

aioxlib is a pure-Python, asyncio-native client for the X11 wire protocol. Open displays, create windows, draw with GCs and the RENDER extension, and stream events — without blocking the event loop and without linking to libX11 or xcb.

Conway's Game of Life on X11 via aioxlib   Rotating 3D wireframe via aioxlib

Examples shipped with the library: Game of Life · 3D wireframe

Why aioxlib?

aioxlib python-xlib xcffib / xpyb
Language Pure Python Pure Python C (libxcb) + Python
Async asyncio first Blocking / threads Blocking
Dependencies None at runtime None libxcb
Protocol access Pack/unpack helpers exposed High-level only Low-level
Extensions RENDER, MIT-SHM, DBE, GLX, … Many Many

Inspired by linuxpy (same author): a clean high-level API when you want it, full protocol detail when you need it.

Requirements

  • Python ≥ 3.12
  • An X server (local or remote) and network/socket access to it ($DISPLAY or an explicit URI)

No third-party Python packages are required at runtime.

Installation

pip install aioxlib

Quick start

Functional API (simplest)

import asyncio
import aioxlib


async def main():
    wnd = await aioxlib.create_window(640, 480, title="Hello from aioxlib")
    await wnd.show()

    async for event in aioxlib.events():
        if wnd.is_delete_window(event):
            break


asyncio.run(main())

Explicit display (object API)

import asyncio
import aioxlib


async def main():
    display = await aioxlib.get_display()
    async with display:
        screen = display.default_screen()
        wnd = await screen.create_window(640, 480, title="Hello from aioxlib")
        await wnd.show()

        async for event in display.events():
            if wnd.is_delete_window(event):
                break


asyncio.run(main())

Features

  • Windows & drawing — create/map/configure windows, GCs, polylines, rectangles, arcs, text, images
  • Events — non-blocking async for event in display.events() stream
  • Properties & atoms — WM_NAME, protocols, custom properties
  • Extensions — BIG-REQUESTS, RENDER, MIT-SHM, DBE, GLX, RANDR, DRI3, Present
  • Pipeline — batch requests with async with display.pipeline(): …
  • Protocol transparent — opcodes, pack/unpack helpers stay accessible

Examples

# clone the repo, then:
python examples/basic.py
python examples/game_of_life.py   # Conway's Life (numpy)
python examples/3d.py             # rotating 3D mesh
python examples/video_shm_dbe.py  # shared memory + double buffering
Example What it shows
basic.py Window + delete protocol
game_of_life.py Animated cellular automaton
3d.py Perspective projection & wireframe
render.py / tristrip.py RENDER extension
shm.py / video_shm*.py MIT-SHM image transfer
cube_dbe.py Double buffering (DBE)
keyboard.py Key events

Package layout

Module Contents
aioxlib (root) Functional API + get_display + common constants
aioxlib.constants X11 constants and enumerations
aioxlib.protocol Pack/unpack helpers
aioxlib.connection Socket connection, Xauthority
aioxlib.display Display, Screen, Window, GC, Pipeline
aioxlib.render / shm / dbe / … Extensions

Classes such as Display, Window, and EventType are imported from their modules (or from the root where re-exported).

Root functional API (selection)

Function Role
get_display / get_default_display Open connection
create_window, map_window, … Windows
events(), pipeline() Event stream / batched writes
flush, query_extension, get_atom, … Display operations
close_default_display Tear down default connection

Documentation

pip install --group docs   # or: pip install mkdocs mkdocs-material 'mkdocstrings[python]'
mkdocs serve

License

GPLv3 or later — see LICENSE.

Author

José Tiago Macara Coutinho https://codeberg.org/tiagocoutinho

Release files for aioxlib 0.10.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aioxlib 0.10.0
File Size Uploaded
aioxlib-0.10.0.tar.gz 148.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aioxlib 0.10.0
File Interpreter ABI Platform
aioxlib-0.10.0-py3-none-any.whl Python 3 none any Details

Total release size: 250.7 kB

Release files / aioxlib-0.10.0.tar.gz

Download URL aioxlib-0.10.0.tar.gz
Size 148.9 kB
Tags Source
SHA-256 checksum
How to use checksums
1658ae24109c7d0e5a991eedd5dd5bed2715003e75127d0766618e0170b08f11
BLAKE2b-256 checksum
How to use checksums
92bda1cef213d3c795ff21895d529b2d73e6e93f0eff2413c2ab73cbe4e2b1e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.9

Release files / aioxlib-0.10.0-py3-none-any.whl

Download URL aioxlib-0.10.0-py3-none-any.whl
Size 101.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2c0fca4a0543bd5b3e1a341712d0eb0f0e7efd9ae3d4d3ab88c065dc83639f4e
BLAKE2b-256 checksum
How to use checksums
51ab1a040168d3b9dbe14eebe3f47d8132d6e21e5c21e0487a4a9710b3d6d8e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.9

Release history Release notifications | RSS feed

This release

0.10.0 This release

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page