#wayland-protocol #wayland #xml #protocols #parser

wayrs-proto-parser

Parser for wayland protocol xml files

3 stable releases

2.0.0 Jan 27, 2024
1.0.1 Jan 9, 2024

#663 in GUI

Download history 69/week @ 2024-01-06 51/week @ 2024-01-13 164/week @ 2024-01-20 361/week @ 2024-01-27 251/week @ 2024-02-03 332/week @ 2024-02-10 536/week @ 2024-02-17 494/week @ 2024-02-24 290/week @ 2024-03-02 347/week @ 2024-03-09 383/week @ 2024-03-16 348/week @ 2024-03-23 444/week @ 2024-03-30 357/week @ 2024-04-06

1,572 downloads per month
Used in 12 crates (via wayrs-scanner)

MIT license

18KB
363 lines

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

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

~1.5–2.1MB
~40K SLoC