diff options
| author | srdusr <[email protected]> | 2024-04-05 16:24:00 +0200 |
|---|---|---|
| committer | srdusr <[email protected]> | 2024-04-05 16:24:00 +0200 |
| commit | 592bd3716c0aa5a47a5eb43f45f55844de9db382 (patch) | |
| tree | d574766088fed32728ff22716689c84011003da9 | |
| parent | 2083ca7c88bc3e4b52ec68af384f334be1da2141 (diff) | |
| download | srdwm-592bd3716c0aa5a47a5eb43f45f55844de9db382.tar.gz srdwm-592bd3716c0aa5a47a5eb43f45f55844de9db382.zip | |
Track the daily-driver blockers for srdwm-wayland as TODOs
layer-shell, clipboard (wl_data_device_manager), session-lock, and
udev-backend multi-monitor support are the gaps identified when deciding
srdwm isn't ready to add to a session picker yet - recorded in
docs/IMPLEMENTATION_STATUS.md's "Not implemented anywhere yet" section
and as inline TODOs at the relevant code (CompState's delegate_*! list,
udev.rs's find_connected_output).
| -rw-r--r-- | crates/wayland/src/lib.rs | 9 | ||||
| -rw-r--r-- | crates/wayland/src/udev.rs | 3 | ||||
| -rw-r--r-- | docs/IMPLEMENTATION_STATUS.md | 18 |
3 files changed, 30 insertions, 0 deletions
diff --git a/crates/wayland/src/lib.rs b/crates/wayland/src/lib.rs index 507102e..fa56517 100644 --- a/crates/wayland/src/lib.rs +++ b/crates/wayland/src/lib.rs @@ -309,6 +309,15 @@ delegate_xdg_decoration!(CompState); delegate_shm!(CompState); delegate_seat!(CompState); delegate_output!(CompState); +// TODO: delegate_layer_shell! (wlr-layer-shell-unstable-v1) - bars, +// launchers, notification daemons, and lock-screen UIs are layer +// surfaces, not xdg_toplevels; none of them can run under srdwm without +// this. See docs/IMPLEMENTATION_STATUS.md's "Not implemented anywhere +// yet" section. +// TODO: delegate_data_device! (wl_data_device_manager) - no clipboard/ +// drag-and-drop between Wayland clients without it. +// TODO: session-lock (ext-session-lock-v1) - no way for a lock-screen +// client to actually lock input/display without it. pub struct WaylandPlatform { display: Display<CompState>, diff --git a/crates/wayland/src/udev.rs b/crates/wayland/src/udev.rs index c0e2f89..dcd5f76 100644 --- a/crates/wayland/src/udev.rs +++ b/crates/wayland/src/udev.rs @@ -331,6 +331,9 @@ fn mode_refresh_mhz(mode: &DrmMode) -> i32 { } } +// TODO: multi-monitor - returns only the first connected connector; no +// hotplug, no independent per-output layout. See +// docs/IMPLEMENTATION_STATUS.md's "Not implemented anywhere yet" section. fn find_connected_output(card: &Card) -> PlatformResult<(crtc::Handle, connector::Handle, DrmMode)> { let res = card.resource_handles().map_err(err)?; let connectors: Vec<connector::Info> = res.connectors().iter().flat_map(|&h| card.get_connector(h, true)).collect(); diff --git a/docs/IMPLEMENTATION_STATUS.md b/docs/IMPLEMENTATION_STATUS.md index e8b53e8..354cd75 100644 --- a/docs/IMPLEMENTATION_STATUS.md +++ b/docs/IMPLEMENTATION_STATUS.md @@ -274,6 +274,24 @@ built them: ## Not implemented anywhere yet +- **`wlr-layer-shell-unstable-v1`** - `CompState` only delegates + `compositor`/`xdg_shell`/`xdg_decoration`/`shm`/`seat`/`output` (plus + `xwayland_shell` for XWayland). No layer-shell support means bars, + launchers (`wofi`, `rofi`'s layer-shell modes), notification daemons, + and lock-screen UIs can't run under srdwm at all - they don't create + `xdg_toplevel`s, they create layer surfaces. This is the single biggest + blocker to using srdwm-wayland as a real daily-driver session (e.g. for + an `ags`/`wofi`-based desktop). +- **`wl_data_device_manager`** (clipboard/drag-and-drop) - no global at + all is created for it, so copy-paste between two Wayland clients + doesn't work under srdwm yet (tools like `wl-copy`/`cliphist` have + nothing to talk to). +- **`ext-session-lock-v1`** (screen locking) - not implemented; a + lock-screen client (or a lid-switch/idle-triggered lock) has no + protocol to actually lock input/display under srdwm. +- **Multi-monitor** for the udev/DRM backend - deliberately scoped to a + single connector/output for the first pass (see `udev.rs`'s module + docs); no hotplug, no independent per-output layout. - Animations (`general.animations`/`animation_duration` config keys exist and are read into defaults, but nothing consumes them yet). - A native GUI settings app (the legacy project's `GUI_SETTINGS.md` was |