From 70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69 Mon Sep 17 00:00:00 2001 From: AlexanderCurl Date: Sat, 18 Apr 2026 17:46:06 +0100 Subject: Replaced file structures for themes in the correct format --- .../blur-my-shell@aunetx/components/screenshot.js | 110 +++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/components/screenshot.js (limited to 'raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/components/screenshot.js') diff --git a/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/components/screenshot.js b/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/components/screenshot.js new file mode 100644 index 0000000..dcf05eb --- /dev/null +++ b/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/components/screenshot.js @@ -0,0 +1,110 @@ +import * as Main from 'resource:///org/gnome/shell/ui/main.js'; + +import { Pipeline } from '../conveniences/pipeline.js'; + +export const ScreenshotBlur = class ScreenshotBlur { + constructor(connections, settings, effects_manager) { + this.connections = connections; + this.settings = settings; + this.screenshot_background_managers = []; + this.effects_manager = effects_manager; + } + + enable() { + this._log("blurring screenshot's window selector"); + + // connect to monitors change + this.connections.connect(Main.layoutManager, 'monitors-changed', + _ => this.update_backgrounds() + ); + + // update backgrounds when the component is enabled + this.update_backgrounds(); + } + + update_backgrounds() { + // remove every old background + this.remove_background_actors(); + // create new backgrounds for the screenshot window selector + for (let i = 0; i < Main.screenshotUI._windowSelectors.length; i++) { + const window_selector = Main.screenshotUI._windowSelectors[i]; + const pipeline = new Pipeline( + this.effects_manager, + global.blur_my_shell._pipelines_manager, + this.settings.screenshot.PIPELINE + ); + pipeline.create_background_with_effects( + window_selector._monitorIndex, this.screenshot_background_managers, + window_selector, 'bms-screenshot-blurred-widget', false + ); + + // prevent old `BackgroundActor` from being accessed, which creates a whole bug of logs + this.connections.connect(window_selector.get_parent(), 'destroy', _ => { + this.screenshot_background_managers.forEach(background_manager => { + if (background_manager.backgroundActor) { + let widget = background_manager.backgroundActor.get_parent(); + let parent = widget?.get_parent(); + + if (parent == window_selector) { + background_manager._bms_pipeline.destroy(); + parent.remove_child(widget); + } + } + background_manager.destroy(); + }); + + window_selector.get_children().forEach(child => { + if (child.get_name() == 'bms-screenshot-blurred-widget') + window_selector.remove_child(child); + }); + + let index = this.screenshot_background_managers.indexOf(window_selector); + this.screenshot_background_managers.splice(index, 1); + }); + } + } + + update_pipeline() { + this.screenshot_background_managers.forEach(background_manager => + background_manager._bms_pipeline.change_pipeline_to( + this.settings.screenshot.PIPELINE + ) + ); + } + + remove_background_actors() { + this.screenshot_background_managers.forEach(background_manager => { + background_manager._bms_pipeline.destroy(); + if (background_manager.backgroundActor) { + let widget = background_manager.backgroundActor.get_parent(); + widget?.get_parent()?.remove_child(widget); + } + background_manager.destroy(); + }); + + Main.screenshotUI._windowSelectors.forEach(window_selector => + window_selector.get_children().forEach(child => { + if (child.get_name() == 'bms-screenshot-blurred-widget') + window_selector.remove_child(child); + }) + ); + + this.screenshot_background_managers = []; + } + + disable() { + this._log("removing blur from screenshot's window selector"); + + this.remove_background_actors(); + this.connections.disconnect_all(); + } + + _log(str) { + if (this.settings.DEBUG) + console.log(`[Blur my Shell > screenshot] ${str}`); + } + + _warn(str) { + console.warn(`[Blur my Shell > screenshot] ${str}`); + } +}; -- cgit v1.3