asslayer
ASS subtitle desktop overlays for Wayland, rendered with libass and Vulkan. Python applications can supply ASS content, control playback and visibility, and provide interactive menus. Requires a compositor supporting wlr-layer-shell.
Install
Requires Python 3.14+, a C++20 compiler, Meson 1.3+, Ninja, pkg-config, Wayland (including wayland-scanner), Vulkan headers and loader, shaderc (including glslc), libass, and fontconfig. Install the development headers for these libraries when building from source.
From a source checkout:
uv pip install .
Use
import time
from pathlib import Path
from asslayer import ApplicationController
ctrl = ApplicationController(namespace="my-subtitles")
try:
ctrl.set_ass_input(Path("subtitles.ass").read_text())
ctrl.set_status(start_time_ms=int(time.monotonic() * 1000))
ctrl.start()
input("Press Enter to stop\n")
finally:
ctrl.stop()
ctrl.join()
Create controllers in a running Wayland session. The keyword-only namespace
defaults to asslayer and must be non-empty without NUL bytes. It identifies
the layer surface for compositor rules and cannot be changed after construction.
Run separate processes with different namespaces to distinguish overlays;
use a shared namespace when the same rules should apply to several overlays.
Concurrent controllers within one process are not supported.
set_status controls paused, hidden, locked, start_time_ms, and
target_fps. Read state for the current state and drag offsets.
Commands are asynchronous. set_ass_input accepts ASS text rather than a path.
set_animation configures visibility transitions, and reset_drag clears
position offsets.
Supply menus with set_ui_menu, using dictionaries with label, optional
action, and optional children. Read application actions with
poll_ui_events and keyboard events with poll_key_events.
Set ASSLAYER_DEBUG=1 before importing asslayer to enable engine debug logs.
Unset it or set it to 0 to disable debug logs.
License
GPL-3.0-only. See LICENSE. Vendored Dear ImGui retains its own license in
vendor/imgui/LICENSE.txt.
Metadata
Release files for asslayer 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| asslayer-0.1.0.tar.gz | 934.7 kB | With provenance | Details |
Release files / asslayer-0.1.0.tar.gz
| Download URL | asslayer-0.1.0.tar.gz |
|---|---|
| Size | 934.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c5cf1d72df9cc962fa78a7d3d25c3600be27175e78a537819fc58716330bc299
|
|
BLAKE2b-256 checksum How to use checksums |
80c632d62524a3fb108d397797687ae82dd1fe581d61eb2747d8f4df573997c8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.
Transparency logSecurity for asslayer 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 1 file in this release has been uploaded with provenance metadata.
Attestation for asslayer-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.