lockscreen.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import * as Main from 'resource:///org/gnome/shell/ui/main.js';
  2. import { UnlockDialog } from 'resource:///org/gnome/shell/ui/unlockDialog.js';
  3. import { Pipeline } from '../conveniences/pipeline.js';
  4. const original_createBackground =
  5. UnlockDialog.prototype._createBackground;
  6. const original_updateBackgroundEffects =
  7. UnlockDialog.prototype._updateBackgroundEffects;
  8. const original_updateBackgrounds =
  9. UnlockDialog.prototype._updateBackgrounds;
  10. export const LockscreenBlur = class LockscreenBlur {
  11. constructor(connections, settings, effects_manager) {
  12. this.connections = connections;
  13. this.settings = settings;
  14. this.effects_manager = effects_manager;
  15. this.enabled = false;
  16. }
  17. enable() {
  18. this._log("blurring lockscreen");
  19. this.update_lockscreen();
  20. this.enabled = true;
  21. }
  22. update_lockscreen() {
  23. UnlockDialog.prototype._createBackground =
  24. this._createBackground;
  25. UnlockDialog.prototype._updateBackgroundEffects =
  26. this._updateBackgroundEffects;
  27. UnlockDialog.prototype._updateBackgrounds =
  28. this._updateBackgrounds;
  29. }
  30. _createBackground(monitor_index) {
  31. let pipeline = new Pipeline(
  32. global.blur_my_shell._effects_manager, global.blur_my_shell._pipelines_manager,
  33. global.blur_my_shell._settings.lockscreen.PIPELINE
  34. );
  35. pipeline.create_background_with_effects(
  36. monitor_index,
  37. this._bgManagers,
  38. this._backgroundGroup,
  39. "screen-shield-background"
  40. );
  41. }
  42. _updateBackgroundEffects() {
  43. this._updateBackgrounds();
  44. }
  45. _updateBackgrounds() {
  46. for (let i = 0; i < this._bgManagers.length; i++) {
  47. this._bgManagers[i]._bms_pipeline.destroy();
  48. this._bgManagers[i].destroy();
  49. }
  50. this._bgManagers = [];
  51. this._backgroundGroup.destroy_all_children();
  52. for (let i = 0; i < Main.layoutManager.monitors.length; i++)
  53. this._createBackground(i);
  54. }
  55. disable() {
  56. this._log("removing blur from lockscreen");
  57. UnlockDialog.prototype._createBackground =
  58. original_createBackground;
  59. UnlockDialog.prototype._updateBackgroundEffects =
  60. original_updateBackgroundEffects;
  61. UnlockDialog.prototype._updateBackgrounds =
  62. original_updateBackgrounds;
  63. this.connections.disconnect_all();
  64. this.enabled = false;
  65. }
  66. _log(str) {
  67. if (this.settings.DEBUG)
  68. console.log(`[Blur my Shell > lockscreen] ${str}`);
  69. }
  70. };