27 releases (8 stable)
new 1.1.3 | Nov 17, 2024 |
---|---|
1.1.1 | May 3, 2024 |
1.0.3 | Feb 27, 2024 |
1.0.1 | Dec 30, 2023 |
0.1.0 | Dec 26, 2022 |
#183 in GUI
3,436 downloads per month
Used in 14 crates
(11 directly)
86KB
1.5K
SLoC
wayrs
A simple Rust implementation of Wayland client library.
Design decisions
- Single event queue
- No interior mutability
- No
libwayland
compatibility - Support blocking, non-blocking and async IO
Project status
- The main crate,
wayrs-client
, is feature complete and stable.
Project structure
The project is split into multiple crates:
wayrs-client
: The main crate which implements Wayland wire protocol. ProvidesConnection
type which represents open Wayland socket, manages objects and handles callbacks.wayrs-protocols
: A collection of Wayland protocols to use withwayrs-client
.wayrs-utils
: A collection of utils and abstractions forwayrs-client
. Includes a shared memory allocator and more.wayrs-egl
: Brings OpenGL(-ES) towayrs
. Based onEGL_KHR_platform_gbm
.wayrs-scanner
: Implements thewayrs_client:::generate!
macro that generates glue code from.xml
files. Generated code for the core protocol is already included inwayrs-client::protocol
. Do not use this crate directly.wayrs-proto-parser
: Parses wayland.xml
files. Used bywayrs-scanner
.wayrs-core
: The core types, marshalling and unmarshalling implementation. Can be used by clients and servers.
Projects using wayrs
The following projects use wayrs
and may serve as additional usage examples:
i3bar-river
: Port of i3bar for river.i3status-rs
: Feature-rich and resource-friendly replacement for i3status.river-kbd-layout-watcher
: Prints current keyboard layout whenever it changes.wayidle
: Waits until the compositor reports being N seconds idle.wl-gammarelay-rs
: Provides DBus interface to control display temperature and brightness without flickering.wlr-which-key
: Keymap manager for wlroots-based compositors.
MSRV
1.72
Dependencies
~1.5–10MB
~98K SLoC