summaryrefslogtreecommitdiff
path: root/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/dummy_pipeline.js
diff options
context:
space:
mode:
authorNippy <nippy@Nippy-Mac-mini.local>2026-10-09 17:23:53 +0200
committerNippy <nippy@Nippy-Mac-mini.local>2026-10-09 17:23:53 +0200
commit9d5be1660d8f74038ebed3d74fdbc809e43787ae (patch)
tree4cb46c3765be87ca4c5219f2f714425d7dfddb56 /raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/dummy_pipeline.js
parentdeb4b8a9c407832c35100a643bd7a592589c9679 (diff)
downloadRaveOS-PKGBUILD-9d5be1660d8f74038ebed3d74fdbc809e43787ae.tar.gz
RaveOS-PKGBUILD-9d5be1660d8f74038ebed3d74fdbc809e43787ae.zip
gnome fix
Diffstat (limited to 'raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/dummy_pipeline.js')
-rw-r--r--raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/dummy_pipeline.js49
1 files changed, 37 insertions, 12 deletions
diff --git a/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/dummy_pipeline.js b/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/dummy_pipeline.js
index 02b2d13..4d71d46 100644
--- a/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/dummy_pipeline.js
+++ b/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/dummy_pipeline.js
@@ -4,9 +4,12 @@ import Clutter from 'gi://Clutter';
/// A dummy `Pipeline`, for dynamic blur only.
/// Instead of a pipeline id, we take the settings of the component we want to blur.
export const DummyPipeline = class DummyPipeline {
- constructor(effects_manager, settings, actor = null) {
+ constructor(effects_manager, settings, actor = null, options = {}) {
this.effects_manager = effects_manager;
this.settings = settings;
+ this.corner_radius_key = options.corner_radius_key ?? 'corner-radius';
+ this.corner_radius_getter = options.corner_radius_getter ?? (() => this.settings.CORNER_RADIUS);
+ this.opacity_factor = 1;
this.effect = null;
this.attach_effect_to_actor(actor);
}
@@ -41,9 +44,9 @@ export const DummyPipeline = class DummyPipeline {
// build the new effect to be added
this.build_effect({
- unscaled_radius: 2 * this.settings.SIGMA,
- brightness: this.settings.BRIGHTNESS,
- corner_radius: this.settings.CORNER_RADIUS,
+ unscaled_radius: this.get_unscaled_radius(),
+ brightness: this.get_brightness(),
+ unscaled_corner_radius: this.corner_radius_getter(),
});
this.actor_destroy_id = this.actor.connect(
@@ -70,17 +73,40 @@ export const DummyPipeline = class DummyPipeline {
this.effect = this.effects_manager.new_native_dynamic_gaussian_blur_effect(params);
// connect to settings changes, using the true gsettings object
- this._sigma_changed_id = this.settings.settings.connect(
- 'changed::sigma', () => this.effect.unscaled_radius = 2 * this.settings.SIGMA
- );
- this._brightness_changed_id = this.settings.settings.connect(
- 'changed::brightness', () => this.effect.brightness = this.settings.BRIGHTNESS
- );
+ this._sigma_changed_id = this.settings.settings.connect('changed::sigma', () => this.update_effect());
+ this._brightness_changed_id = this.settings.settings.connect('changed::brightness', () => this.update_effect());
this._corner_radius_changed_id = this.settings.settings.connect(
- 'changed::corner-radius', () => this.effect.corner_radius = this.settings.CORNER_RADIUS
+ `changed::${this.corner_radius_key}`,
+ () => this.update_effect()
);
}
+ set_opacity_factor(opacity_factor) {
+ opacity_factor = Math.max(0, Math.min(1, opacity_factor));
+ if (this.opacity_factor === opacity_factor)
+ return;
+
+ this.opacity_factor = opacity_factor;
+ this.update_effect();
+ }
+
+ update_effect() {
+ if (!this.effect)
+ return;
+
+ this.effect.unscaled_radius = this.get_unscaled_radius();
+ this.effect.brightness = this.get_brightness();
+ this.effect.unscaled_corner_radius = this.corner_radius_getter();
+ }
+
+ get_unscaled_radius() {
+ return 2 * this.settings.SIGMA * this.opacity_factor;
+ }
+
+ get_brightness() {
+ return 1 - (1 - this.settings.BRIGHTNESS) * this.opacity_factor;
+ }
+
repaint_effect() {
this.effect?.queue_repaint();
}
@@ -109,7 +135,6 @@ export const DummyPipeline = class DummyPipeline {
/// Note: exposed to public API.
destroy() {
- this.remove_effect();
this.remove_pipeline_from_actor();
}