feat: add blur_optimized option

This commit is contained in:
DreamMaoMao 2025-06-25 10:57:30 +08:00
parent 31d82747cf
commit f45424c095
4 changed files with 16 additions and 3 deletions

View file

@ -3,6 +3,7 @@
# Window effect
blur=0
blur_layer=0
blur_optimized=1
blur_params_num_passes = 2
blur_params_radius = 5
blur_params_noise = 0.02

View file

@ -199,6 +199,7 @@ typedef struct {
int blur;
int blur_layer;
int blur_optimized;
int border_radius;
struct blur_data blur_params;
int shadows;
@ -895,6 +896,8 @@ void parse_config_line(Config *config, const char *line) {
config->blur = atoi(value);
} else if (strcmp(key, "blur_layer") == 0) {
config->blur_layer = atoi(value);
} else if (strcmp(key, "blur_optimized") == 0) {
config->blur_optimized = atoi(value);
} else if (strcmp(key, "border_radius") == 0) {
config->border_radius = atoi(value);
} else if (strcmp(key, "blur_params_num_passes") == 0) {
@ -2089,6 +2092,7 @@ void override_config(void) {
blur = CLAMP_INT(config.blur, 0, 1);
blur_layer = CLAMP_INT(config.blur_layer, 0, 1);
blur_optimized = CLAMP_INT(config.blur_optimized, 0, 1);
border_radius = CLAMP_INT(config.border_radius, 0, 100);
blur_params.num_passes = CLAMP_INT(config.blur_params.num_passes, 0, 10);
blur_params.radius = CLAMP_INT(config.blur_params.radius, 0, 100);
@ -2219,6 +2223,7 @@ void set_value_default() {
config.blur = blur;
config.blur_layer = blur_layer;
config.blur_optimized = blur_optimized;
config.border_radius = border_radius;
config.blur_params.num_passes = blur_params_num_passes;
config.blur_params.radius = blur_params_radius;

View file

@ -189,6 +189,7 @@ int border_radius = 0;
int border_radius_location_default = CORNER_LOCATION_ALL;
int blur = 0;
int blur_layer = 0;
int blur_optimized = 1;
struct blur_data blur_params;

View file

@ -4505,8 +4505,12 @@ static void iter_xdg_scene_buffers(struct wlr_scene_buffer *buffer, int sx,
if (blur && c) {
wlr_scene_buffer_set_backdrop_blur(buffer, true);
wlr_scene_buffer_set_backdrop_blur_optimized(buffer, true);
wlr_scene_buffer_set_backdrop_blur_ignore_transparent(buffer, true);
if (blur_optimized) {
wlr_scene_buffer_set_backdrop_blur_optimized(buffer, true);
} else {
wlr_scene_buffer_set_backdrop_blur_optimized(buffer, false);
}
} else {
wlr_scene_buffer_set_backdrop_blur(buffer, false);
}
@ -7803,7 +7807,8 @@ void smartmovewin(const Arg *arg) {
};
}
ny = tar == 99999 ? ny : tar;
ny = MIN(ny, c->mon->w.y + c->mon->w.height - c->geom.height - c->mon->gappov);
ny = MIN(ny, c->mon->w.y + c->mon->w.height - c->geom.height -
c->mon->gappov);
break;
case LEFT:
tar = -99999;
@ -7841,7 +7846,8 @@ void smartmovewin(const Arg *arg) {
};
}
nx = tar == 99999 ? nx : tar;
nx = MIN(nx, c->mon->w.x + c->mon->w.width - c->geom.width - c->mon->gappoh);
nx = MIN(nx, c->mon->w.x + c->mon->w.width - c->geom.width -
c->mon->gappoh);
break;
}