#wayland-client #wayland #client #wayrs #wayrs-client

wayrs-protocols

A collection of Wayland protocols to use with wayrs-client

31 releases

new 0.14.10+1.44 May 21, 2025
0.14.8+1.42 Mar 24, 2025
0.14.5+1.39 Dec 29, 2024
0.14.3 Aug 31, 2024
0.5.0 Mar 25, 2023

#1137 in GUI

Download history 373/week @ 2025-01-31 346/week @ 2025-02-07 390/week @ 2025-02-14 369/week @ 2025-02-21 258/week @ 2025-02-28 253/week @ 2025-03-07 456/week @ 2025-03-14 477/week @ 2025-03-21 267/week @ 2025-03-28 451/week @ 2025-04-04 415/week @ 2025-04-11 409/week @ 2025-04-18 303/week @ 2025-04-25 369/week @ 2025-05-02 612/week @ 2025-05-09 479/week @ 2025-05-16

1,809 downloads per month
Used in 7 crates

MIT license

275KB
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. Provides Connection type which represents open Wayland socket, manages objects and handles callbacks.
  • wayrs-protocols: A collection of Wayland protocols to use with wayrs-client.
  • wayrs-utils: A collection of utils and abstractions for wayrs-client. Includes a shared memory allocator and more.
  • wayrs-egl: Brings OpenGL(-ES) to wayrs. Based on EGL_KHR_platform_gbm.
  • wayrs-scanner: Implements the wayrs_client:::generate! macro that generates glue code from .xml files. Generated code for the core protocol is already included in wayrs-client::protocol. Do not use this crate directly.
  • wayrs-proto-parser: Parses wayland .xml files. Used by wayrs-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.
  • way-secure: Create wayland security contexts.
  • 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.79

Dependencies

~1.5MB
~25K SLoC