diff options
| author | srdusr <[email protected]> | 2025-10-03 22:09:00 +0200 |
|---|---|---|
| committer | srdusr <[email protected]> | 2025-10-03 22:09:00 +0200 |
| commit | d7031dd060ec12e6de334518aa75122c65794047 (patch) | |
| tree | 7e076133bf8415263599b2ebe04c9bd53b1ed43a /README.md | |
| parent | 43cba8d10ab4c30f492ec707b7fbcecef2a7c19d (diff) | |
| download | srdwm-d7031dd060ec12e6de334518aa75122c65794047.tar.gz srdwm-d7031dd060ec12e6de334518aa75122c65794047.zip | |
Split ipc.rs into ipc/ by concern, and fix a stale README
Codebase modularization, requested directly. Surveyed the whole
workspace first: at ~38k lines it's already organized by topic
(crates/core/src/manager/, crates/wayland/src/{state,udev,decoration}/
already split into small per-concern files) - crates/platform/src/
ipc.rs was the one real outlier, 1894 lines holding the socket
lifecycle, every payload type, both dispatch match statements, and its
own tests all in one file.
Split into ipc/{mod,types,dispatch,tests}.rs by concern, matching the
established pattern exactly - mod.rs keeps IpcServer itself, types.rs
the response/event structs and snapshot functions, dispatch.rs
handle_request/handle_set, tests.rs the existing suite moved verbatim.
Extracted via exact line-range copies against git's own HEAD content
(not retyped), specifically to rule out a transcription bug in a file
this central. Pure reorganization: build/test/clippy clean before and
after, exact same test count (29 in crates/platform) both times.
README.md separately corrected: it still linked to legacy-cpp/ (deleted
this shift) and described the Wayland backend as the smaller, less-done
one - backwards from current reality, where Wayland is the daily-driver
target and by far the more complete backend.
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 30 |
1 files changed, 21 insertions, 9 deletions
@@ -5,25 +5,37 @@ like a native window manager on every platform it targets rather than a compromise between them: real title bars with drag/resize/minimize/maximize/close on every backend that can support them, not just a border. -This is a Rust rewrite of an earlier C++ prototype (preserved at -[`legacy-cpp/`](legacy-cpp/)); see [`docs/PRIOR_ART.md`](docs/PRIOR_ART.md) -for what carried over, what got fixed, and what other window managers -informed the design. +This is a Rust rewrite of an earlier C++ prototype; see +[`docs/PRIOR_ART.md`](docs/PRIOR_ART.md) for what carried over, what got +fixed, and what other window managers informed the design. The C++ +version itself has been removed from the tree (it was actively +misleading to keep alongside a fully working rewrite) - git history +still has it if anyone needs it. ## Status -Linux is the primary target and the only one verified end-to-end so far: +Linux is the primary target and the only one verified end-to-end so far. +The Wayland backend is the daily-driver target and by far the more +complete of the two - a real `smithay` compositor with its own GPU +render path, session lock, desktop icons, global menu, layer-shell +(bars/docks), fully rendered decorations, and more: | Backend | Status | |---|---| -| X11 | Working - reparenting WM with a drawn title bar (buttons, drag, resize), verified live under Xephyr | -| Wayland | Working, smaller scope - real `smithay` compositor, verified to run; decorations have no text yet, global keybindings use a coarse heuristic | +| Wayland | Daily-driver complete: real decorations (titlebar text, resize, snap), session lock, desktop icons with right-click menus, global menu (`com.canonical.AppMenu.Registrar`/dbusmenu), layer-shell, XWayland, an optional GPU (GBM+EGL) render path alongside the default software one, fake (headless) monitors, and a Phase-2 multi-cursor primitive (pinning a virtual pointer to one window) | +| X11 | Working - reparenting WM with a drawn title bar (buttons, drag, resize, right-click window menu), feature-audited for parity with the Wayland backend | | Windows | Designed, not built (no Windows target in dev sandbox) | | macOS | Designed, not built (no macOS target in dev sandbox) | Full detail, including exactly what's real vs. stubbed and why, is in -[`docs/IMPLEMENTATION_STATUS.md`](docs/IMPLEMENTATION_STATUS.md). Crate -layout and design rationale are in [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md). +[`docs/IMPLEMENTATION_STATUS.md`](docs/IMPLEMENTATION_STATUS.md) -- +note that some of its own detail (test counts, specifically) predates +this rewrite's later growth; `docs/TODO.md` is the actively-maintained +list of what's pending, with `cargo test --workspace` as the actual +current count. Crate layout and design rationale are in +[`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md); a survey against +comparable compositors and full desktop environments is in +[`docs/FEATURE_GAP.md`](docs/FEATURE_GAP.md). ## Building |