Changelog¤
v1.0.0 (18th June 2025)¤
This version replaces the previous experiments with a more formal Wayland class library and stable API. It introduces a more typical design pattern and behaviour, with more explicit and predictable Pythonic usage and less implicit magic.
Major Changes¤
- Now exposes a Wayland class library (rather than a library of magic instances).
- Introduces a Wayland protocol debugger. A terminal application providing a TUI to intercept and analyse Wayland protocol messages between your application and the Wayland compositor.
- Examples are now provided, including a basic top level window.
- Comprehensive online documentation is now available.
Other API Changes¤
- All non-Wayland protocol APIs are now in
wayland.client
wayland.process_messages()
removed. Use dispatch*wayland.initialise()
removed, no longer required.wayland.get_package_root()
replaced withwayland.client.package.get_package_root()
wayland.is_wayland
replaced withwayland.client.is_wayland()
- Event dispatching is now a similar pattern to
libwayland-client
, using dispatch and dispatch_pending for blocking and non-blocking event dispatching. wayland.wl_display.dispatch()
added.wayland.wl_display.dispatch_timeout()
added.wayland.wl_display.dispatch_pending()
added.
General Changes¤
- No connection is made to the Wayland compositor until either explicitly requested or a method that sends a Wayland message is used.
- Internal Wayland event processing has been improved. There are now multiple event queues with automatic creation of per-thread queues.
- Type hinting now uses the correct
python-wayland
types. - Type hinting uses less magic to increase compatibility with IDEs.
- Type hint docs cleaned up with better formatting.
- Type hints now have argument descriptions included.
Fixed¤
array
types in events are now correctly parsed into Python lists.- Importing the package has consistent behaviour on Wayland and non-Wayland systems.
- Fixed type hints where enums had the wrong type when passed as an argument to a request.
- Fixed protocol error when parsing unicode characters in strings.
v0.7.1 (28th May 2025)¤
- Remove dependency on requests library.
- Lint fixes for unit tests.
v0.7.0 (28th May 2025)¤
- Include Wayland unstable protocols definitions.
- Include Hyprland protocol extensions.
- Include wlroots protocol extensions.
- Update to latest Wayland protocol definitions.
- Include the highest version number definition of any particular interface.
- Auto detect if running under wayland.
- Use git to fetch Wayland protocol definitions, not some local hack.
- Sort the keys in the protocols.json file to make the diffs less painful.
v0.6.0 (3rd September 2024)¤
- Support Wayland enums as Python enums including bitfields.
- Change terminology of "methods" to "requests" to match Wayland.
v0.5.0 (31st August 2024)¤
- Support multiple wayland contexts not just a single global context.
- Support debug output without full protocol level debugging output.
- Fix for rapid events passing file descriptors
- Slightly extended unit tests.
v0.4.1 (28th August 2024)¤
- Fix pypi package build.
v0.4.0 (27th August 2024)¤
- Renamed to python-wayland
v0.3.0 (26th August 2024)¤
- File descriptors received in events are now not implicitly converted to Python file objects.
- Add --verbose command line switch for more output when updating protocol files.
- Add --compare option to compare locally installed and latest official protocol definitions.
- Add interface version and description to type checking / intellisense file.
- Add interface version to protocols.json runtime file.
v0.2.0 (22nd August 2024)¤
- Improve low-level socket handling.
- Add support for file descriptors in events.
- Add support for Wayland enum data type.
- Add support for Wayland "fixed" floating point types.
- Search for Wayland protocol definitions online and locally.
v0.1.0 (17th August 2024)¤
- Initial commit.