srdusr
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsrdusr <[email protected]>2024-04-05 16:24:00 +0200
committersrdusr <[email protected]>2024-04-05 16:24:00 +0200
commit592bd3716c0aa5a47a5eb43f45f55844de9db382 (patch)
treed574766088fed32728ff22716689c84011003da9
parent2083ca7c88bc3e4b52ec68af384f334be1da2141 (diff)
downloadsrdwm-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.rs9
-rw-r--r--crates/wayland/src/udev.rs3
-rw-r--r--docs/IMPLEMENTATION_STATUS.md18
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