🪹 Core library for wayland bits https://docs.rs/waynest
Find a file
2026-06-17 13:26:50 +02:00
.cargo Run xtask package in release mode 2026-06-17 13:26:50 +02:00
.github/workflows Fix ci 2025-09-26 01:57:52 +02:00
.vscode Enable all features during development 2025-02-11 16:36:39 +01:00
crates Remove vendored duplicated protocols from codegen 2026-06-17 13:02:58 +02:00
examples Remove broken client example 2025-06-14 16:32:33 +02:00
external/protocols Update mesa, mutter, plasma, river, treeland, wayland, weston and wlr external submodules 2026-06-17 12:49:04 +02:00
fuzz Update the fuzzer lockfile to mitigate vulnerabilities 2025-06-14 21:30:32 +02:00
xtask Remove vendored duplicated protocols from codegen 2026-06-17 13:02:58 +02:00
.envrc Configure nix shell 2026-02-19 15:20:53 +01:00
.gitignore Configure nix shell 2026-02-19 15:20:53 +01:00
.gitmodules Add river submodule 2026-02-01 22:40:10 +01:00
Cargo.lock Restructure crates and switch socket I/O to anchovy 2026-06-17 12:39:15 +02:00
Cargo.toml Restructure crates and switch socket I/O to anchovy 2026-06-17 12:39:15 +02:00
flake.lock Update toolchain 2026-06-17 12:36:38 +02:00
flake.nix Add cargo-edit to shell 2026-06-17 12:36:30 +02:00
LICENSE Publish project 2024-08-08 12:35:37 +02:00
README.md Update readme 2024-08-09 22:33:32 +02:00

Waynest

Waynest is a foundational library designed to handle the low-level aspects of the Wayland protocol. Built upon Rusts asynchronous ecosystem, Waynest leverages the Tokio libraries to efficiently manage asynchronous tasks.

The library is responsible for implementing the Wayland wire protocol and provides essential utilities for interacting with it. A significant portion of the code is auto-generated from XML interface descriptions

Overview

Waynest is intentionally designed as a low-level library. It is not intended for direct use in most scenarios but serves as a crucial building block for constructing higher-level libraries and applications.

For those developing a Wayland client, Waynova is a more suitable choice. Waynova builds upon Waynest, offering convenient helpers and automating a considerable amount of boilerplate code.

If your goal is to create a Wayland compositor, you might find Verdi to be of interest. Verdi utilizes Waynest internally.

Usage

Waynests codebase is organized into three primary modules:

Wire Module

The wire module implements the core wire format for the Wayland protocol. It facilitates the establishment of bidirectional connections between clients and servers. The central component of this module is the Socket struct, which implements both the Sink and Stream traits, providing easy integration with Rusts asynchronous ecosystem.

Server Module

The server module includes traits generated from XML interface definitions. Implementing these traits corresponds to implementing the respective Wayland protocols. Waynest does not make assumptions about the underlying implementation but provides the necessary tools for sending events to clients. To implement any of the protocols, developers need to implement the Dispatcher trait, which can be easily derived using the provided macro.

client Module

TBA

License

This project is licensed under the Apache-2.0 License. For more information, please see the LICENSE file.