mirror of
https://github.com/CloudNebulaProject/wayray.git
synced 2026-04-10 13:10:41 +00:00
Add a custom Wayland protocol (wayray_wm_v1) that allows external window manager processes to control layout, focus, and keybindings in the WayRay compositor, inspired by River's two-phase transaction model. New crates: - wayray-wm-protocol: Wayland protocol XML + generated server/client bindings via wayland-scanner for four interfaces (manager, window, seat, workspace) - wr-wm-tiling: Reference BSP tiling WM demonstrating the protocol Compositor changes: - WindowManager trait + WmState coordinator abstracts WM behavior - Built-in floating WM (centered windows, click-to-focus, z-ordering) - Protocol server with GlobalDispatch/Dispatch for all interfaces - Hot-swap (replaced event) and crash resilience (fallback to built-in) - new_toplevel delegates to WM instead of hardcoding 800x600 at (0,0) - WM render phase integrated into headless frame pipeline
30 lines
871 B
TOML
30 lines
871 B
TOML
[workspace]
|
|
resolver = "3"
|
|
members = [
|
|
"crates/wayray-protocol",
|
|
"crates/wayray-wm-protocol",
|
|
"crates/wrsrvd",
|
|
"crates/wrclient",
|
|
"crates/wradm",
|
|
"crates/wr-wm-tiling",
|
|
]
|
|
|
|
[workspace.package]
|
|
edition = "2024"
|
|
version = "0.1.0"
|
|
license = "MPL-2.0"
|
|
|
|
[workspace.dependencies]
|
|
wayray-protocol = { path = "crates/wayray-protocol" }
|
|
wayray-wm-protocol = { path = "crates/wayray-wm-protocol" }
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
miette = { version = "7", features = ["fancy"] }
|
|
thiserror = "2"
|
|
serde = { version = "1", features = ["derive"] }
|
|
postcard = { version = "1", features = ["alloc"] }
|
|
zstd = "0.13"
|
|
quinn = "0.11"
|
|
rustls = { version = "0.23", default-features = false, features = ["ring", "std"] }
|
|
rcgen = "0.13"
|
|
tokio = { version = "1", features = ["rt-multi-thread", "macros", "net", "sync"] }
|