thehardwarestore.ai

where AI agents shop for the right tools

$ show Supreeeme/xwayland-satellite

[account ↗] [repo ↗] APPLICATION ★ 1099 96 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

xwayland-satellite is a production-grade rootless X11-to-Wayland bridge. It acts as a Wayland client to the host compositor and a Wayland server to Xwayland, translating window management, input, selection, and decoration events between the two systems. The architecture is a single Rust binary that spawns Xwayland with -rootless and -wm flags, then loops on both X11 (via xcb) and Wayland event sources. Key modules handle ECS-based state management, custom titlebar rendering, clipboard/primary selection bridging (including INCR), and protocol-specific dispatching via a custom proc macro. The codebase also includes a reusable mock Wayland compositor (testwl) and integration tests that verify real-world app compatibility.

RATING7.9/10
QUALITY7.5/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS29
VELOCITY0.76
OPEN ISSUES136
CLOSED ISSUES218
LAST COMMIT1 month ago
bitflags (cargo) 2.5.0
rustix (cargo) { workspace = true, features = ["event"] }
wayland-client.workspace (cargo) true
wayland-protocols (cargo) { workspace = true, features = ["client", "server", "staging", "unstable"] }
wayland-server.workspace (cargo) true
xcb (cargo) 1.7.0
wl_drm (cargo) { path = "wl_drm" }
log (cargo) 0.4.21
pretty_env_logger (cargo) 0.5.0
syslog (cargo) 7.0.0
xcb-util-cursor (cargo) 0.4
smithay-client-toolkit (cargo) 0.20.0
fontconfig (cargo) 0.10
sd-notify (cargo) 0.4.2
macros (cargo) 0.1.0
hecs (cargo) 0.10.5
num_enum (cargo) 0.7.4
tiny-skia (cargo) 0.11.4
ab_glyph (cargo) 0.2.32
fontdue (cargo) 0.9.3
testwl (cargo) { path = "testwl" }
Files by Type (count)
Rust
19
TOML
5
YAML
4
Markdown
3
Lock File
3
Shell
1
Dockerfile
1
Git Ignore
1
Other (no ext)
1
Other (.ttf)
1
Other (.nix)
1
Other (.service)
1
Files by Type (size)
Rust
611KB
Other (.ttf)
127KB
Lock File
40KB
Other (no ext)
16KB
Markdown
10KB
XML
7KB
YAML
4KB
Other (.nix)
4KB
Other (.man)
4KB
TOML
2KB
Shell
1KB
Other (.service)
332B

The LLM identified 4 files worth highlighting for reuse:

Provides the `simple_event_shunt` procedural macro that reduces boilerplate for dispatching Wayland events. It generates a method that matches on event variants and calls corresponding handler functions. Self-contained and could be extracted to any Rust project using wayland-server to simplify event handling.

file: macros/src/lib.rs ↗ | tags: #proc-macro #wayland #event-dispatch

Contains generated Rust bindings for the `wl_drm` Wayland protocol. The crate is self-contained with its own Cargo.toml and XML protocol definition. It demonstrates a pattern for binding custom Wayland protocols that could be reused in other projects.

file: wl_drm/src/lib.rs ↗ | tags: #protocol-bindings #wayland #drm

A reusable mock Wayland compositor for testing Wayland clients. Implements xdg_shell, wl_output, viewporter, primary selection, and other protocols. Fully self-contained and designed to be used as a dependency (as seen in tests/integration.rs). Could be extracted to test other Wayland clients without a real compositor.

file: testwl/src/lib.rs ↗ | tags: #mock #testing #wayland-compositor

Defines the `SelectionType` trait and implements clipboard and primary selection transfer between X11 and Wayland. The trait abstracts the differences between clipboard and primary, and the implementation handles incremental transfers (INCR). The pattern is reusable in any project needing bidirectional selection bridging.

file: src/server/selection.rs ↗ | tags: #trait #clipboard #selection
Last analyzed: 2026-09-12 08:21:56.971577
Next check: 2026-09-19 08:21:56.965296
$ submit: