Compare commits
2 Commits
5a6900e85a
...
v0.7.2
| Author | SHA1 | Date | |
|---|---|---|---|
| 2ca572773e | |||
| efc55aa372 |
@@ -3,6 +3,19 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
Format based on [Keep a Changelog](https://keepachangelog.com/).
|
||||
|
||||
## [0.7.2] - 2026-03-29
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix CSS priority so app styles override GTK4 user theme (Colloid-Catppuccin) — use `STYLE_PROVIDER_PRIORITY_USER` instead of `STYLE_PROVIDER_PRIORITY_APPLICATION`
|
||||
- Replace `border-radius: 50%` with `9999px` — GTK4 CSS does not reliably support percentage-based border-radius
|
||||
|
||||
## [0.7.1] - 2026-03-28
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix edge darkening on blurred wallpaper — GskBlurNode sampled transparent pixels outside texture bounds, now renders with 3x-sigma padding and crops back
|
||||
|
||||
## [0.7.0] - 2026-03-28
|
||||
|
||||
### Added
|
||||
|
||||
Generated
+1
-1
@@ -616,7 +616,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "moonset"
|
||||
version = "0.7.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"dirs",
|
||||
"gdk-pixbuf",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "moonset"
|
||||
version = "0.7.0"
|
||||
version = "0.7.2"
|
||||
edition = "2024"
|
||||
description = "Wayland session power menu with GTK4 and Layer Shell"
|
||||
license = "MIT"
|
||||
|
||||
+2
-2
@@ -27,7 +27,7 @@ window.wallpaper.visible {
|
||||
|
||||
/* Round avatar image */
|
||||
.avatar {
|
||||
border-radius: 50%;
|
||||
border-radius: 9999px;
|
||||
min-width: 128px;
|
||||
min-height: 128px;
|
||||
background-color: @theme_selected_bg_color;
|
||||
@@ -48,7 +48,7 @@ window.wallpaper.visible {
|
||||
min-width: 120px;
|
||||
min-height: 120px;
|
||||
padding: 16px;
|
||||
border-radius: 50%;
|
||||
border-radius: 9999px;
|
||||
background-color: alpha(@theme_base_color, 0.55);
|
||||
color: @theme_fg_color;
|
||||
border: none;
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ fn load_css(display: &gdk::Display) {
|
||||
gtk::style_context_add_provider_for_display(
|
||||
display,
|
||||
&css_provider,
|
||||
gtk::STYLE_PROVIDER_PRIORITY_APPLICATION,
|
||||
gtk::STYLE_PROVIDER_PRIORITY_USER,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
+19
-6
@@ -104,6 +104,10 @@ pub fn load_background_texture(bg_path: Option<&Path>) -> Option<gdk::Texture> {
|
||||
// -- GPU blur via GskBlurNode -------------------------------------------------
|
||||
|
||||
/// Render a blurred texture using the GPU via GskBlurNode.
|
||||
///
|
||||
/// To avoid edge darkening (blur samples transparent pixels outside bounds),
|
||||
/// the texture is rendered with padding equal to 3x the blur sigma. The blur
|
||||
/// is applied to the padded area, then cropped back to the original size.
|
||||
fn render_blurred_texture(
|
||||
widget: &impl IsA<gtk::Widget>,
|
||||
texture: &gdk::Texture,
|
||||
@@ -111,15 +115,24 @@ fn render_blurred_texture(
|
||||
) -> Option<gdk::Texture> {
|
||||
let native = widget.native()?;
|
||||
let renderer = native.renderer()?;
|
||||
|
||||
let w = texture.width() as f32;
|
||||
let h = texture.height() as f32;
|
||||
// Padding must cover the blur kernel radius (typically ~3x sigma)
|
||||
let pad = (sigma * 3.0).ceil();
|
||||
|
||||
let snapshot = gtk::Snapshot::new();
|
||||
let bounds = graphene_rs::Rect::new(
|
||||
0.0, 0.0, texture.width() as f32, texture.height() as f32,
|
||||
);
|
||||
// Clip output to original texture size
|
||||
snapshot.push_clip(&graphene_rs::Rect::new(pad, pad, w, h));
|
||||
snapshot.push_blur(sigma as f64);
|
||||
snapshot.append_texture(texture, &bounds);
|
||||
snapshot.pop();
|
||||
// Render texture with padding on all sides (edges repeat via oversized bounds)
|
||||
snapshot.append_texture(texture, &graphene_rs::Rect::new(0.0, 0.0, w + 2.0 * pad, h + 2.0 * pad));
|
||||
snapshot.pop(); // blur
|
||||
snapshot.pop(); // clip
|
||||
|
||||
let node = snapshot.to_node()?;
|
||||
Some(renderer.render_texture(&node, None))
|
||||
let viewport = graphene_rs::Rect::new(pad, pad, w, h);
|
||||
Some(renderer.render_texture(&node, Some(&viewport)))
|
||||
}
|
||||
|
||||
/// Fade out all windows and quit the app after the CSS transition completes.
|
||||
|
||||
Reference in New Issue
Block a user