From 90e8986d8e4c303ffc2d8b210f0b902876c3a591 Mon Sep 17 00:00:00 2001 From: Samuel Onoja Date: Sat, 26 Sep 2026 05:12:01 +0100 Subject: [PATCH] Refine shell surfaces, spacing, and Ferese symbol --- README.md | 8 ++++---- compositor/src/winit.rs | 8 +++----- shell/ferese-shell/assets/icons/ferese.svg | 7 ++++--- shell/ferese-shell/src/config.rs | 4 ++-- shell/ferese-shell/src/status_ui.rs | 7 +------ 5 files changed, 14 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 01c11b4..24e9cb0 100644 --- a/README.md +++ b/README.md @@ -166,10 +166,10 @@ target/debug/ferese --backend nested --grant-effects --grant-shell-control -- \ The Ferese mark enters overview, where workspace indicators become available. The focused app appears on the left; status controls and day/time sit on the -right. The 28px bar has square screen edges, 19px icons, a fine bottom separator, -and no drop shadow. An 8px gap separates it from windows; adjust -`top_bar_window_gap` under `[theme.geometry]` to change it. This is additional to -the workspace outer gap. Its dark startup fallback matches the material palette. +right. The 28px bar has square screen edges, 19px icons, and no border or drop +shadow. Window spacing uses the workspace outer gap; `top_bar_window_gap` under +`[theme.geometry]` adds optional extra space (default 0). Solid and translucent +shell surfaces also omit outlines. The dark startup fallback matches the material palette. Keyboard and direct-session touchpad settings are applied at startup: diff --git a/compositor/src/winit.rs b/compositor/src/winit.rs index 3fa5fc4..3831c4b 100644 --- a/compositor/src/winit.rs +++ b/compositor/src/winit.rs @@ -256,11 +256,9 @@ void main() { * shadow_values.y * (1.0 - coverage) * alpha; gl_FragColor = vec4(0.0, 0.0, 0.0, opacity); } else if (paint_mode > 0.5) { - if (edge_bar > 0.5) { - float bottom = logical_size.y * pixel_scale - - dot(gl_FragCoord.xy - local_origin, local_axes.zw); - float opacity = 0.10 * (1.0 - smoothstep(pixel_scale - 0.5, pixel_scale + 0.5, bottom)) * coverage * alpha; - gl_FragColor = vec4(vec3(opacity), opacity); + // Screen-edge bars and non-glass materials have no outline. + if (edge_bar > 0.5 || glass_edges < 0.5) { + gl_FragColor = vec4(0.0); return; } float border = smoothstep(-pixel_scale - 0.5, -pixel_scale + 0.5, sdf); diff --git a/shell/ferese-shell/assets/icons/ferese.svg b/shell/ferese-shell/assets/icons/ferese.svg index 197b023..36ae34d 100644 --- a/shell/ferese-shell/assets/icons/ferese.svg +++ b/shell/ferese-shell/assets/icons/ferese.svg @@ -1,4 +1,5 @@ - - - + + + + diff --git a/shell/ferese-shell/src/config.rs b/shell/ferese-shell/src/config.rs index 28bc6cf..616770b 100644 --- a/shell/ferese-shell/src/config.rs +++ b/shell/ferese-shell/src/config.rs @@ -72,7 +72,7 @@ impl Default for ShellTheme { shadow: [0, 0, 0, 85], bar_height: 28.0, bar_margin_top: 0, - bar_window_gap: 8, + bar_window_gap: 0, bar_margin_horizontal: 0, bar_radius: 0.0, material_radius: 14.0, @@ -415,7 +415,7 @@ const fn default_bar_height() -> f32 { 28.0 } const fn default_bar_window_gap() -> i32 { - 8 + 0 } const fn default_bar_margin_top() -> i32 { 0 diff --git a/shell/ferese-shell/src/status_ui.rs b/shell/ferese-shell/src/status_ui.rs index 669d1e8..43c1770 100644 --- a/shell/ferese-shell/src/status_ui.rs +++ b/shell/ferese-shell/src/status_ui.rs @@ -599,13 +599,8 @@ impl FereseShell { text_color: Some(primary), icon_color: Some(primary), border: Border { - color: if compositor_material { - Color::TRANSPARENT - } else { - color_with_opacity(theme.border, p * 0.6) - }, - width: 1.0, radius: theme.material_radius.into(), + ..Default::default() }, // Iced's shadow fills the silhouette behind the quad. With // transparent client content that fill remains visible over