desktop grid client
git clone https://git.lucas.co/cce-grid.git
cells: flat — drop the recess relief
The grid is ground, not furniture: a lit well under every window fought
the windows' own bevels. Cells are now plain span-widened rounded rects
on the rail surface; the compositor's fallback cells lose their chamfer
in the same change so the client latch never swaps the grid's material.
Co-Authored-By: Claude Fable 5 <[email protected]>
CLAUDE.md | 8 +++++---
src/main.rs | 13 ++++++-------
2 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/CLAUDE.md b/CLAUDE.md
index a06b083..2f2da94 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -14,9 +14,11 @@ its own rect grid as the fallback whenever this client is absent or has not
latched a patch yet, and its gap-colored backdrop always draws beneath as
the safety net beyond patch edges.
-Rendering is a pure function of (patch, style config): cells are `Recess`
-wells carved into the gap-colored rail surface, reading the same
-`style.surface.desktop.*` / backplate-radius keys as the compositor
+Rendering is a pure function of (patch, style config): flat rounded cells
+on the gap-colored rail surface — deliberately NO relief, so the grid reads
+as ground under the windows' own bevels (the compositor fallback is flat
+for the same reason: the client latch must not swap the grid's material).
+It reads the same `style.surface.desktop.*` / backplate-radius keys as the
fallback. Keep it that way — no camera state, no timers, no input (the
surface is input-transparent compositor-side).
diff --git a/src/main.rs b/src/main.rs
index d50b73e..8ca9281 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -8,10 +8,9 @@
//! of (patch, style config) — no camera state, no timers.
//!
//! The look comes from the same config keys the compositor's fallback grid
-//! reads (`style.surface.desktop.*`, backplate corner radius), but drawn
-//! with cce-ui's own primitives: cells are `Recess` wells carved into the
-//! gap-colored rail surface, under the toolkit's real lighting model —
-//! not the compositor's scenefx approximation of it.
+//! reads (`style.surface.desktop.*`, backplate corner radius): flat
+//! rounded cells on the gap-colored rail surface — deliberately unlit, so
+//! the grid reads as ground under the windows' own relief.
use wayland_client::QueueHandle;
@@ -109,7 +108,6 @@ impl GridApp {
let radius = ((st.corner_radius * s)
* cce_ui::layout::corner_span_factor() as f64)
.min(cell_px / 2.0) as f32;
- let depth = radius.max(1.0);
let col0 = (p.x / period).floor() as i64;
let col1 = ((p.x + p.w) / period).ceil() as i64;
@@ -130,9 +128,10 @@ impl GridApp {
width: (len * s) as f32,
height: (len * s) as f32,
};
- // The cell floor, then the well walls carved down to it.
+ // A flat cell — no relief: the grid is ground, not furniture,
+ // and a lit well under every window fought the windows' own
+ // bevels.
pc.rounded_rect(rect, radius, (true, true, true, true), st.cell_color);
- pc.recess(rect, (radius, radius, radius, radius), depth);
}
}
}