Refine shell surfaces, spacing, and Ferese symbol

This commit is contained in:
Samuel Onoja committed 2026-09-26 05:12:01 +01:00
1 parent b3fa82b53b
commit 90e8986d8e
5 files changed
+14 -20

No files matched your search

+4 -4
View File
@@ -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 Ferese mark enters overview, where workspace indicators become available.
The focused app appears on the left; status controls and day/time sit on the 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, right. The 28px bar has square screen edges, 19px icons, and no border or drop
and no drop shadow. An 8px gap separates it from windows; adjust shadow. Window spacing uses the workspace outer gap; `top_bar_window_gap` under
`top_bar_window_gap` under `[theme.geometry]` to change it. This is additional to `[theme.geometry]` adds optional extra space (default 0). Solid and translucent
the workspace outer gap. Its dark startup fallback matches the material palette. shell surfaces also omit outlines. The dark startup fallback matches the material palette.
Keyboard and direct-session touchpad settings are applied at startup: Keyboard and direct-session touchpad settings are applied at startup:
+3 -5
View File
@@ -256,11 +256,9 @@ void main() {
* shadow_values.y * (1.0 - coverage) * alpha; * shadow_values.y * (1.0 - coverage) * alpha;
gl_FragColor = vec4(0.0, 0.0, 0.0, opacity); gl_FragColor = vec4(0.0, 0.0, 0.0, opacity);
} else if (paint_mode > 0.5) { } else if (paint_mode > 0.5) {
if (edge_bar > 0.5) { // Screen-edge bars and non-glass materials have no outline.
float bottom = logical_size.y * pixel_scale if (edge_bar > 0.5 || glass_edges < 0.5) {
- dot(gl_FragCoord.xy - local_origin, local_axes.zw); gl_FragColor = vec4(0.0);
float opacity = 0.10 * (1.0 - smoothstep(pixel_scale - 0.5, pixel_scale + 0.5, bottom)) * coverage * alpha;
gl_FragColor = vec4(vec3(opacity), opacity);
return; return;
} }
float border = smoothstep(-pixel_scale - 0.5, -pixel_scale + 0.5, sdf); float border = smoothstep(-pixel_scale - 0.5, -pixel_scale + 0.5, sdf);
+4 -3
View File
@@ -1,4 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" role="img" aria-label="Ferese symbol: tiled F">
<path d="M7 20V6a2 2 0 0 1 2-2h10M7 11.5h9"/> <rect x="20" y="20" width="50" height="160" rx="8" fill="currentColor"/>
<path d="M4 20h3"/> <rect x="80" y="20" width="100" height="55" rx="8" fill="currentColor"/>
<rect x="80" y="95" width="70" height="45" rx="8" fill="currentColor"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 261 B

After

Width:  |  Height:  |  Size: 341 B

+2 -2
View File
@@ -72,7 +72,7 @@ impl Default for ShellTheme {
shadow: [0, 0, 0, 85], shadow: [0, 0, 0, 85],
bar_height: 28.0, bar_height: 28.0,
bar_margin_top: 0, bar_margin_top: 0,
bar_window_gap: 8, bar_window_gap: 0,
bar_margin_horizontal: 0, bar_margin_horizontal: 0,
bar_radius: 0.0, bar_radius: 0.0,
material_radius: 14.0, material_radius: 14.0,
@@ -415,7 +415,7 @@ const fn default_bar_height() -> f32 {
28.0 28.0
} }
const fn default_bar_window_gap() -> i32 { const fn default_bar_window_gap() -> i32 {
8 0
} }
const fn default_bar_margin_top() -> i32 { const fn default_bar_margin_top() -> i32 {
0 0
+1 -6
View File
@@ -599,13 +599,8 @@ impl FereseShell {
text_color: Some(primary), text_color: Some(primary),
icon_color: Some(primary), icon_color: Some(primary),
border: Border { 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(), radius: theme.material_radius.into(),
..Default::default()
}, },
// Iced's shadow fills the silhouette behind the quad. With // Iced's shadow fills the silhouette behind the quad. With
// transparent client content that fill remains visible over // transparent client content that fill remains visible over