20 releases (1 stable)

new 1.0.0 Dec 9, 2023
0.12.4 Dec 8, 2023
0.12.3 Nov 4, 2023
0.11.0 Jul 23, 2023
0.1.0 Dec 26, 2022

#618 in Network programming

Download history 271/week @ 2023-08-19 440/week @ 2023-08-26 463/week @ 2023-09-02 331/week @ 2023-09-09 329/week @ 2023-09-16 213/week @ 2023-09-23 382/week @ 2023-09-30 246/week @ 2023-10-07 273/week @ 2023-10-14 231/week @ 2023-10-21 248/week @ 2023-10-28 208/week @ 2023-11-04 255/week @ 2023-11-11 326/week @ 2023-11-18 453/week @ 2023-11-25 300/week @ 2023-12-02

1,357 downloads per month
Used in 13 crates (11 directly)

MIT license

66KB
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 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.
  • wayrs-scanner: Provides generate! macro that generates glue code from .xml files. Generated code for the core protocol is already included in wayrs-client. Reexported as wayrs_client::scanner.
  • 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.

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.67

Dependencies

~5–14MB
~173K SLoC