123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- import St from 'gi://St';
- import Shell from 'gi://Shell';
- import * as Main from 'resource:///org/gnome/shell/ui/main.js';
- import * as Background from 'resource:///org/gnome/shell/ui/background.js';
- import { UnlockDialog } from 'resource:///org/gnome/shell/ui/unlockDialog.js';
- let sigma;
- let brightness;
- let color;
- let noise;
- let lightness;
- const original_createBackground =
- UnlockDialog.prototype._createBackground;
- const original_updateBackgroundEffects =
- UnlockDialog.prototype._updateBackgroundEffects;
- export const LockscreenBlur = class LockscreenBlur {
- constructor(connections, settings, effects_manager) {
- this.connections = connections;
- this.settings = settings;
- this.effects_manager = effects_manager;
- }
- enable() {
- this._log("blurring lockscreen");
- brightness = this.settings.lockscreen.CUSTOMIZE
- ? this.settings.lockscreen.BRIGHTNESS
- : this.settings.BRIGHTNESS;
- sigma = this.settings.lockscreen.CUSTOMIZE
- ? this.settings.lockscreen.SIGMA
- : this.settings.SIGMA;
- color = this.settings.lockscreen.CUSTOMIZE
- ? this.settings.lockscreen.COLOR
- : this.settings.COLOR;
- noise = this.settings.lockscreen.CUSTOMIZE
- ? this.settings.lockscreen.NOISE_AMOUNT
- : this.settings.NOISE_AMOUNT;
- lightness = this.settings.lockscreen.CUSTOMIZE
- ? this.settings.lockscreen.NOISE_LIGHTNESS
- : this.settings.NOISE_LIGHTNESS;
- this.update_lockscreen();
- }
- update_lockscreen() {
- UnlockDialog.prototype._createBackground =
- this._createBackground;
- UnlockDialog.prototype._updateBackgroundEffects =
- this._updateBackgroundEffects;
- }
- _createBackground(monitorIndex) {
- let monitor = Main.layoutManager.monitors[monitorIndex];
- let widget = new St.Widget({
- style_class: "screen-shield-background",
- x: monitor.x,
- y: monitor.y,
- width: monitor.width,
- height: monitor.height,
- });
- let blur_effect = new Shell.BlurEffect({
- name: 'blur',
- sigma: sigma,
- brightness: brightness
- });
- // store the scale in the effect in order to retrieve later
- blur_effect.scale = monitor.geometry_scale;
- let color_effect = global.blur_my_shell._lockscreen_blur.effects_manager.new_color_effect({
- name: 'color',
- color: color
- }, this.settings);
- let noise_effect = global.blur_my_shell._lockscreen_blur.effects_manager.new_noise_effect({
- name: 'noise',
- noise: noise,
- lightness: lightness
- }, this.settings);
- widget.add_effect(color_effect);
- widget.add_effect(noise_effect);
- widget.add_effect(blur_effect);
- let bgManager = new Background.BackgroundManager({
- container: widget,
- monitorIndex,
- controlPosition: false,
- });
- this._bgManagers.push(bgManager);
- this._backgroundGroup.add_child(widget);
- }
- _updateBackgroundEffects() {
- for (const widget of this._backgroundGroup) {
- const color_effect = widget.get_effect('color');
- const noise_effect = widget.get_effect('noise');
- const blur_effect = widget.get_effect('blur');
- if (color_effect)
- color_effect.set({
- color: color
- });
- if (noise_effect) {
- noise_effect.set({
- noise: noise,
- lightness: lightness,
- });
- }
- if (blur_effect) {
- blur_effect.set({
- brightness: brightness,
- sigma: sigma * blur_effect.scale,
- });
- }
- }
- }
- set_sigma(s) {
- sigma = s;
- this.update_lockscreen();
- }
- set_brightness(b) {
- brightness = b;
- this.update_lockscreen();
- }
- set_color(c) {
- color = c;
- this.update_lockscreen();
- }
- set_noise_amount(n) {
- noise = n;
- this.update_lockscreen();
- }
- set_noise_lightness(l) {
- lightness = l;
- this.update_lockscreen();
- }
- disable() {
- this._log("removing blur from lockscreen");
- UnlockDialog.prototype._createBackground =
- original_createBackground;
- UnlockDialog.prototype._updateBackgroundEffects =
- original_updateBackgroundEffects;
- this.connections.disconnect_all();
- }
- _log(str) {
- if (this.settings.DEBUG)
- console.log(`[Blur my Shell > lockscreen] ${str}`);
- }
- };
|