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 --- .../installed/blur-my-shell@aunetx/LICENSE | 674 --------------------- .../blur-my-shell@aunetx/components/appfolders.js | 265 -------- .../components/applications.js | 614 ------------------- .../components/coverflow_alt_tab.js | 91 --- .../components/dash_to_dock.js | 421 ------------- .../blur-my-shell@aunetx/components/lockscreen.js | 89 --- .../blur-my-shell@aunetx/components/overview.js | 226 ------- .../blur-my-shell@aunetx/components/panel.js | 577 ------------------ .../blur-my-shell@aunetx/components/screenshot.js | 110 ---- .../blur-my-shell@aunetx/components/window_list.js | 148 ----- .../conveniences/connections.js | 106 ---- .../conveniences/dummy_pipeline.js | 112 ---- .../conveniences/effects_manager.js | 90 --- .../blur-my-shell@aunetx/conveniences/keys.js | 190 ------ .../conveniences/paint_signals.js | 91 --- .../blur-my-shell@aunetx/conveniences/pipeline.js | 223 ------- .../conveniences/pipelines_manager.js | 168 ----- .../blur-my-shell@aunetx/conveniences/settings.js | 363 ----------- .../conveniences/settings_updater.js | 40 -- .../blur-my-shell@aunetx/conveniences/utils.js | 38 -- .../installed/blur-my-shell@aunetx/dbus/client.js | 58 -- .../installed/blur-my-shell@aunetx/dbus/iface.xml | 12 - .../blur-my-shell@aunetx/dbus/services.js | 93 --- .../blur-my-shell@aunetx/effects/color.glsl | 111 ---- .../blur-my-shell@aunetx/effects/color.js | 168 ----- .../blur-my-shell@aunetx/effects/corner.glsl | 93 --- .../blur-my-shell@aunetx/effects/corner.js | 211 ------- .../blur-my-shell@aunetx/effects/derivative.glsl | 71 --- .../blur-my-shell@aunetx/effects/derivative.js | 120 ---- .../blur-my-shell@aunetx/effects/downscale.glsl | 76 --- .../blur-my-shell@aunetx/effects/downscale.js | 140 ----- .../blur-my-shell@aunetx/effects/effects.js | 362 ----------- .../effects/gaussian_blur.glsl | 70 --- .../blur-my-shell@aunetx/effects/gaussian_blur.js | 213 ------- .../blur-my-shell@aunetx/effects/hsl_to_rgb.glsl | 14 - .../blur-my-shell@aunetx/effects/hsl_to_rgb.js | 31 - .../effects/monte_carlo_blur.glsl | 52 -- .../effects/monte_carlo_blur.js | 207 ------- .../effects/native_dynamic_gaussian_blur.js | 43 -- .../effects/native_static_gaussian_blur.js | 43 -- .../blur-my-shell@aunetx/effects/noise.glsl | 20 - .../blur-my-shell@aunetx/effects/noise.js | 76 --- .../blur-my-shell@aunetx/effects/pixelize.js | 88 --- .../blur-my-shell@aunetx/effects/rgb_to_hsl.glsl | 18 - .../blur-my-shell@aunetx/effects/rgb_to_hsl.js | 31 - .../blur-my-shell@aunetx/effects/upscale.glsl | 57 -- .../blur-my-shell@aunetx/effects/upscale.js | 120 ---- .../installed/blur-my-shell@aunetx/extension.js | 614 ------------------- .../hicolor/scalable/actions/add-row-symbolic.svg | 4 - .../scalable/actions/applications-symbolic.svg | 56 -- .../scalable/actions/bottom-panel-symbolic.svg | 44 -- .../hicolor/scalable/actions/dash-symbolic.svg | 44 -- .../hicolor/scalable/actions/down-symbolic.svg | 2 - .../scalable/actions/duplicate-row-symbolic.svg | 1 - .../scalable/actions/dynamic-mode-symbolic.svg | 71 --- .../hicolor/scalable/actions/edit-row-symbolic.svg | 14 - .../hicolor/scalable/actions/heart-symbolic.svg | 2 - .../hicolor/scalable/actions/other-symbolic.svg | 1 - .../hicolor/scalable/actions/overview-symbolic.svg | 56 -- .../scalable/actions/pipelines-symbolic.svg | 64 -- .../scalable/actions/remove-row-symbolic.svg | 3 - .../hicolor/scalable/actions/reset-symbolic.svg | 7 - .../scalable/actions/select-row-symbolic.svg | 2 - .../scalable/actions/select-window-symbolic.svg | 2 - .../scalable/actions/static-mode-symbolic.svg | 71 --- .../locale/af/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 7989 -> 0 bytes .../locale/ar/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 16821 -> 0 bytes .../locale/az/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 1203 -> 0 bytes .../locale/be/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 3499 -> 0 bytes .../locale/bg/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 16153 -> 0 bytes .../locale/ca/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 17615 -> 0 bytes .../locale/cs/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 16877 -> 0 bytes .../locale/da/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 927 -> 0 bytes .../locale/de/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 17826 -> 0 bytes .../locale/el/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 15541 -> 0 bytes .../locale/es/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 17367 -> 0 bytes .../locale/et/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 2815 -> 0 bytes .../locale/fi/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 10156 -> 0 bytes .../locale/fr/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 17531 -> 0 bytes .../locale/he/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 592 -> 0 bytes .../locale/hi/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 25812 -> 0 bytes .../locale/hr/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 8690 -> 0 bytes .../locale/hu/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 17520 -> 0 bytes .../locale/id/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 16481 -> 0 bytes .../locale/it/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 17361 -> 0 bytes .../locale/ja/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 18455 -> 0 bytes .../locale/ka/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 6964 -> 0 bytes .../locale/ko/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 14985 -> 0 bytes .../locale/ml/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 523 -> 0 bytes .../locale/mrh/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 521 -> 0 bytes .../locale/my/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 362 -> 0 bytes .../nb_NO/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 7966 -> 0 bytes .../locale/nl/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 17331 -> 0 bytes .../locale/nn/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 1185 -> 0 bytes .../locale/pl/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 15190 -> 0 bytes .../locale/pt/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 16967 -> 0 bytes .../pt_BR/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 17153 -> 0 bytes .../locale/ro/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 10249 -> 0 bytes .../locale/ru/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 22437 -> 0 bytes .../locale/sk/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 1083 -> 0 bytes .../locale/sl/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 11678 -> 0 bytes .../locale/sv/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 16934 -> 0 bytes .../locale/ta/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 28773 -> 0 bytes .../locale/th/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 362 -> 0 bytes .../locale/tr/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 17288 -> 0 bytes .../locale/uk/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 21663 -> 0 bytes .../locale/vi/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 18415 -> 0 bytes .../zh_CN/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 15517 -> 0 bytes .../zh_TW/LC_MESSAGES/blur-my-shell@aunetx.mo | Bin 15248 -> 0 bytes .../installed/blur-my-shell@aunetx/metadata.json | 28 - .../preferences/applications.js | 217 ------- .../applications_management/application_row.js | 112 ---- .../blur-my-shell@aunetx/preferences/dash.js | 81 --- .../blur-my-shell@aunetx/preferences/menu.js | 68 --- .../blur-my-shell@aunetx/preferences/other.js | 86 --- .../blur-my-shell@aunetx/preferences/overview.js | 59 -- .../blur-my-shell@aunetx/preferences/panel.js | 102 ---- .../blur-my-shell@aunetx/preferences/pipelines.js | 98 --- .../preferences/pipelines_management/effect_row.js | 222 ------- .../pipelines_management/effects_dialog.js | 174 ------ .../pipelines_management/pipeline_choose_row.js | 106 ---- .../pipelines_management/pipeline_group.js | 99 --- .../installed/blur-my-shell@aunetx/prefs.js | 51 -- .../blur-my-shell@aunetx/schemas/gschemas.compiled | Bin 9976 -> 0 bytes ...nome.shell.extensions.blur-my-shell.gschema.xml | 595 ------------------ .../installed/blur-my-shell@aunetx/stylesheet.css | 573 ------------------ .../blur-my-shell@aunetx/ui/application-row.ui | 47 -- .../blur-my-shell@aunetx/ui/applications.ui | 276 --------- .../installed/blur-my-shell@aunetx/ui/dash.ui | 172 ------ .../blur-my-shell@aunetx/ui/effects-dialog.ui | 77 --- .../installed/blur-my-shell@aunetx/ui/menu.ui | 37 -- .../installed/blur-my-shell@aunetx/ui/other.ui | 208 ------- .../installed/blur-my-shell@aunetx/ui/overview.ui | 143 ----- .../installed/blur-my-shell@aunetx/ui/panel.ui | 240 -------- .../blur-my-shell@aunetx/ui/pipeline-choose-row.ui | 39 -- .../blur-my-shell@aunetx/ui/pipeline-group.ui | 29 - .../installed/blur-my-shell@aunetx/ui/pipelines.ui | 44 -- 137 files changed, 12275 deletions(-) delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/LICENSE delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/appfolders.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/applications.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/coverflow_alt_tab.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/dash_to_dock.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/lockscreen.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/overview.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/panel.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/screenshot.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/window_list.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/connections.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/dummy_pipeline.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/effects_manager.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/keys.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/paint_signals.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/pipeline.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/pipelines_manager.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/settings.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/settings_updater.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/utils.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/dbus/client.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/dbus/iface.xml delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/dbus/services.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/color.glsl delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/color.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/corner.glsl delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/corner.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/derivative.glsl delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/derivative.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/downscale.glsl delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/downscale.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/effects.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/gaussian_blur.glsl delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/gaussian_blur.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/hsl_to_rgb.glsl delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/hsl_to_rgb.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/monte_carlo_blur.glsl delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/monte_carlo_blur.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/native_dynamic_gaussian_blur.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/native_static_gaussian_blur.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/noise.glsl delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/noise.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/pixelize.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/rgb_to_hsl.glsl delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/rgb_to_hsl.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/upscale.glsl delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/upscale.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/extension.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/add-row-symbolic.svg delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/applications-symbolic.svg delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/bottom-panel-symbolic.svg delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/dash-symbolic.svg delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/down-symbolic.svg delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/duplicate-row-symbolic.svg delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/dynamic-mode-symbolic.svg delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/edit-row-symbolic.svg delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/heart-symbolic.svg delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/other-symbolic.svg delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/overview-symbolic.svg delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/pipelines-symbolic.svg delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/remove-row-symbolic.svg delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/reset-symbolic.svg delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/select-row-symbolic.svg delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/select-window-symbolic.svg delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/static-mode-symbolic.svg delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/af/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ar/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/az/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/be/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/bg/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ca/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/cs/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/da/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/de/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/el/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/es/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/et/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/fi/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/fr/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/he/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/hi/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/hr/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/hu/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/id/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/it/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ja/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ka/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ko/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ml/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/mrh/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/my/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/nb_NO/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/nl/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/nn/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/pl/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/pt/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/pt_BR/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ro/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ru/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/sk/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/sl/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/sv/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ta/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/th/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/tr/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/uk/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/vi/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/zh_CN/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/zh_TW/LC_MESSAGES/blur-my-shell@aunetx.mo delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/metadata.json delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/applications.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/applications_management/application_row.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/dash.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/menu.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/other.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/overview.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/panel.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/pipelines.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/pipelines_management/effect_row.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/pipelines_management/effects_dialog.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/pipelines_management/pipeline_choose_row.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/pipelines_management/pipeline_group.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/prefs.js delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/schemas/gschemas.compiled delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/schemas/org.gnome.shell.extensions.blur-my-shell.gschema.xml delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/stylesheet.css delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/application-row.ui delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/applications.ui delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/dash.ui delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/effects-dialog.ui delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/menu.ui delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/other.ui delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/overview.ui delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/panel.ui delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/pipeline-choose-row.ui delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/pipeline-group.ui delete mode 100644 raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/pipelines.ui (limited to 'raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx') diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/LICENSE b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/LICENSE deleted file mode 100644 index f288702..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/appfolders.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/appfolders.js deleted file mode 100644 index 8824777..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/appfolders.js +++ /dev/null @@ -1,265 +0,0 @@ -import Shell from 'gi://Shell'; -import Clutter from 'gi://Clutter'; -import Cogl from 'gi://Cogl'; -import * as Main from 'resource:///org/gnome/shell/ui/main.js'; -import { adjustAnimationTime } from 'resource:///org/gnome/shell/misc/animationUtils.js'; - -import { PaintSignals } from '../conveniences/paint_signals.js'; -// TODO drop Tweener in favour of Clutter's `ease` (will need to extend the blur effect for it) -const Tweener = imports.tweener.tweener; - -// TODO: Drop GNOME 46 backwards compatibility -const transparent = Clutter.Color ? - Clutter.Color.from_pixel(0x00000000) : - new Cogl.Color({ - red: 0, - green: 0, - blue: 0, - alpha: 0 - }); -const FOLDER_DIALOG_ANIMATION_TIME = 200; - -const DIALOGS_STYLES = [ - "appfolder-dialogs-transparent", - "appfolder-dialogs-light", - "appfolder-dialogs-dark" -]; - -let original_zoomAndFadeIn = null; -let original_zoomAndFadeOut = null; -let sigma; -let brightness; - -let _zoomAndFadeIn = function () { - let [sourceX, sourceY] = - this._source.get_transformed_position(); - let [dialogX, dialogY] = - this.child.get_transformed_position(); - - this.child.set({ - translation_x: sourceX - dialogX, - translation_y: sourceY - dialogY, - scale_x: this._source.width / this.child.width, - scale_y: this._source.height / this.child.height, - opacity: 0, - }); - - this.set_background_color(transparent); - - let blur_effect = this.get_effect("appfolder-blur"); - - blur_effect.radius = 0; - blur_effect.brightness = 1.0; - Tweener.addTween(blur_effect, - { - radius: sigma * 2, - brightness: brightness, - time: adjustAnimationTime(FOLDER_DIALOG_ANIMATION_TIME / 1000), - transition: 'easeOutQuad' - } - ); - - this.child.ease({ - translation_x: 0, - translation_y: 0, - scale_x: 1, - scale_y: 1, - opacity: 255, - duration: FOLDER_DIALOG_ANIMATION_TIME, - mode: Clutter.AnimationMode.EASE_OUT_QUAD, - }); - - this._needsZoomAndFade = false; - - if (this._sourceMappedId === 0) { - this._sourceMappedId = this._source.connect( - 'notify::mapped', this._zoomAndFadeOut.bind(this)); - } -}; - -let _zoomAndFadeOut = function () { - if (!this._isOpen) - return; - - if (!this._source.mapped) { - this.hide(); - return; - } - - let [sourceX, sourceY] = - this._source.get_transformed_position(); - let [dialogX, dialogY] = - this.child.get_transformed_position(); - - this.set_background_color(transparent); - - let blur_effect = this.get_effect("appfolder-blur"); - Tweener.addTween(blur_effect, - { - radius: 0, - brightness: 1.0, - time: adjustAnimationTime(FOLDER_DIALOG_ANIMATION_TIME / 1000), - transition: 'easeInQuad' - } - ); - - this.child.ease({ - translation_x: sourceX - dialogX, - translation_y: sourceY - dialogY, - scale_x: this._source.width / this.child.width, - scale_y: this._source.height / this.child.height, - opacity: 0, - duration: FOLDER_DIALOG_ANIMATION_TIME, - mode: Clutter.AnimationMode.EASE_OUT_QUAD, - onComplete: () => { - this.child.set({ - translation_x: 0, - translation_y: 0, - scale_x: 1, - scale_y: 1, - opacity: 255, - }); - this.hide(); - - this._popdownCallbacks.forEach(func => func()); - this._popdownCallbacks = []; - }, - }); - - this._needsZoomAndFade = false; -}; - - -export const AppFoldersBlur = class AppFoldersBlur { - // we do not use the effects manager and dummy pipelines here because we - // really want to manage our sigma value ourself during the transition - constructor(connections, settings, _) { - this.connections = connections; - this.paint_signals = new PaintSignals(connections); - this.settings = settings; - } - - enable() { - this._log("blurring appfolders"); - - brightness = this.settings.appfolder.BRIGHTNESS; - sigma = this.settings.appfolder.SIGMA; - - let appDisplay = Main.overview._overview.controls._appDisplay; - - if (appDisplay._folderIcons.length > 0) { - this.blur_appfolders(); - } - - this.connections.connect( - appDisplay, 'view-loaded', _ => this.blur_appfolders() - ); - } - - blur_appfolders() { - let appDisplay = Main.overview._overview.controls._appDisplay; - - if (this.settings.HACKS_LEVEL === 1) - this._log("appfolders hack level 1"); - - appDisplay._folderIcons.forEach(icon => { - icon._ensureFolderDialog(); - - if (original_zoomAndFadeIn == null) { - original_zoomAndFadeIn = icon._dialog._zoomAndFadeIn; - } - if (original_zoomAndFadeOut == null) { - original_zoomAndFadeOut = icon._dialog._zoomAndFadeOut; - } - - let blur_effect = new Shell.BlurEffect({ - name: "appfolder-blur", - radius: sigma * 2, - brightness: brightness, - mode: Shell.BlurMode.BACKGROUND - }); - - icon._dialog.remove_effect_by_name("appfolder-blur"); - icon._dialog.add_effect(blur_effect); - - DIALOGS_STYLES.forEach( - style => icon._dialog._viewBox.remove_style_class_name(style) - ); - - if (this.settings.appfolder.STYLE_DIALOGS > 0) - icon._dialog._viewBox.add_style_class_name( - DIALOGS_STYLES[this.settings.appfolder.STYLE_DIALOGS - 1] - ); - - // finally override the builtin functions - icon._dialog._zoomAndFadeIn = _zoomAndFadeIn; - icon._dialog._zoomAndFadeOut = _zoomAndFadeOut; - - - // HACK - // - //`Shell.BlurEffect` does not repaint when shadows are under it. [1] - // - // This does not entirely fix this bug (shadows caused by windows - // still cause artifacts), but it prevents the shadows of the panel - // buttons to cause artifacts on the panel itself - // - // [1]: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2857 - - if (this.settings.HACKS_LEVEL === 1) { - this.paint_signals.disconnect_all_for_actor(icon._dialog); - this.paint_signals.connect(icon._dialog, blur_effect); - } else { - this.paint_signals.disconnect_all(); - } - }); - }; - - set_sigma(s) { - sigma = s; - if (this.settings.appfolder.BLUR) - this.blur_appfolders(); - } - - set_brightness(b) { - brightness = b; - if (this.settings.appfolder.BLUR) - this.blur_appfolders(); - } - - disable() { - this._log("removing blur from appfolders"); - - let appDisplay = Main.overview._overview.controls._appDisplay; - - if (original_zoomAndFadeIn != null) { - appDisplay._folderIcons.forEach(icon => { - if (icon._dialog) - icon._dialog._zoomAndFadeIn = original_zoomAndFadeIn; - }); - } - - if (original_zoomAndFadeOut != null) { - appDisplay._folderIcons.forEach(icon => { - if (icon._dialog) - icon._dialog._zoomAndFadeOut = original_zoomAndFadeOut; - }); - } - - appDisplay._folderIcons.forEach(icon => { - if (icon._dialog) { - icon._dialog.remove_effect_by_name("appfolder-blur"); - DIALOGS_STYLES.forEach( - s => icon._dialog._viewBox.remove_style_class_name(s) - ); - } - }); - - this.connections.disconnect_all(); - } - - _log(str) { - if (this.settings.DEBUG) - console.log(`[Blur my Shell > appfolders] ${str}`); - } -}; \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/applications.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/applications.js deleted file mode 100644 index e783046..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/applications.js +++ /dev/null @@ -1,614 +0,0 @@ -import Meta from 'gi://Meta'; -import Gio from 'gi://Gio'; -import * as Main from 'resource:///org/gnome/shell/ui/main.js'; -import * as Config from 'resource:///org/gnome/shell/misc/config.js'; - -import { ApplicationsService } from '../dbus/services.js'; -import { PaintSignals } from '../conveniences/paint_signals.js'; -import { DummyPipeline } from '../conveniences/dummy_pipeline.js'; -import { Pipeline } from '../conveniences/pipeline.js'; - - -/// Converts a wildcard pattern to a RegExp object. -/// Supports * (matches any sequence) and ? (matches any single character). -/// Matching is case-insensitive. -/// -/// @param {string} pattern - The wildcard pattern (e.g., "Firefox*", "*Code*") -/// @returns {RegExp} The compiled regex pattern -function wildcardToRegex(pattern) { - // Escape special regex characters except * and ? - const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, '\\$&'); - // Convert wildcards: * -> .*, ? -> . - const regex = '^' + escaped.replace(/\*/g, '.*').replace(/\?/g, '.') + '$'; - return new RegExp(regex, 'i'); -} - - -/// Compiles an array of wildcard patterns into RegExp objects. -/// Caches the results to avoid recompilation on every check. -/// -/// @param {string[]} patterns - Array of wildcard patterns -/// @param {Map} cache - Cache map storing pattern -> regex mappings -/// @returns {RegExp[]} Array of compiled regex patterns -function compilePatterns(patterns, cache) { - return patterns.map(pattern => { - if (cache.has(pattern)) { - return cache.get(pattern); - } - const regex = wildcardToRegex(pattern); - cache.set(pattern, regex); - return regex; - }); -} - - -/// Tests if a value matches any of the compiled patterns. -/// -/// @param {string} value - The value to test (e.g., wm_class) -/// @param {RegExp[]} patterns - Array of compiled regex patterns -/// @returns {boolean} True if value matches any pattern -function matchesAnyPattern(value, patterns) { - if (!value || patterns.length === 0) { - return false; - } - return patterns.some(pattern => pattern.test(value)); -} - -export const ApplicationsBlur = class ApplicationsBlur { - constructor(connections, settings, effects_manager) { - this.connections = connections; - this.settings = settings; - this.effects_manager = effects_manager; - this.paint_signals = new PaintSignals(connections); - - // stores every blurred meta window - this.meta_window_map = new Map(); - - // cache for compiled patterns to avoid recompilation - this._whitelist_pattern_cache = new Map(); - this._blacklist_pattern_cache = new Map(); - this._compiled_whitelist = []; - this._compiled_blacklist = []; - - // compile initial patterns - this._update_patterns(); - } - - /// Updates the compiled whitelist and blacklist patterns from settings. - /// Called during initialization and when whitelist/blacklist settings change. - _update_patterns() { - const whitelist = this.settings.applications.WHITELIST || []; - const blacklist = this.settings.applications.BLACKLIST || []; - - this._compiled_whitelist = compilePatterns(whitelist, this._whitelist_pattern_cache); - this._compiled_blacklist = compilePatterns(blacklist, this._blacklist_pattern_cache); - - this._log(`Patterns updated - whitelist: ${whitelist.length}, blacklist: ${blacklist.length}`); - } - - enable() { - this._log("blurring applications..."); - - // export dbus service for preferences - this.service = new ApplicationsService; - this.service.export(); - - this.mutter_gsettings = new Gio.Settings({ schema: 'org.gnome.mutter' }); - - // blur already existing windows - this.update_all_windows(); - - // blur every new window - this.connections.connect( - global.display, - 'window-created', - (_meta_display, meta_window) => { - this._log("window created"); - - if (meta_window) - this.track_new(meta_window); - } - ); - - // update window blur when focus is changed - this.focused_window_pid = null; - this.init_dynamic_opacity(); - this.connections.connect( - global.display, - 'focus-window', - (_meta_display, meta_window, _p0) => { - if (meta_window && meta_window.bms_pid != this.focused_window_pid) - this.set_focus_for_window(meta_window); - else if (!meta_window) - this.set_focus_for_window(null); - } - ); - - this.connect_to_overview(); - } - - /// Initializes the dynamic opacity for windows, without touching to the connections. - /// This is used both when enabling the component, and when changing the dynamic-opacity pref. - init_dynamic_opacity() { - if (this.settings.applications.DYNAMIC_OPACITY) { - // make the currently focused window solid - if (global.display.focus_window) - this.set_focus_for_window(global.display.focus_window); - } else { - // remove old focused window if the pref was changed - if (this.focused_window_pid) - this.set_focus_for_window(null); - } - } - - /// Connect to the overview being opened/closed to force the blur being - /// shown on every window of the workspaces viewer. - connect_to_overview() { - this.connections.disconnect_all_for(Main.overview); - - if (this.settings.applications.BLUR_ON_OVERVIEW) { - // when the overview is opened, show every window actors (which - // allows the blur to be shown too) - this.connections.connect( - Main.overview, 'showing', - _ => this.meta_window_map.forEach((meta_window, _pid) => { - let window_actor = meta_window.get_compositor_private(); - window_actor?.show(); - }) - ); - - // when the overview is closed, hide every actor that is not on the - // current workspace (to mimic the original behaviour) - this.connections.connect( - Main.overview, 'hidden', - _ => { - this.meta_window_map.forEach((meta_window, _pid) => { - let window_actor = meta_window.get_compositor_private(); - - if ( - (!meta_window.get_workspace().active) || meta_window.minimized - ) - window_actor.hide(); - }); - } - ); - } - } - - /// Iterate through all existing windows and add blur as needed. - update_all_windows() { - // Recompile patterns in case whitelist/blacklist changed - this._update_patterns(); - - // remove all previously blurred windows, in the case where the - // whitelist was changed - this.meta_window_map.forEach(((_meta_window, pid) => { - this.remove_blur(pid); - })); - - for ( - let i = 0; - i < global.workspace_manager.get_n_workspaces(); - ++i - ) { - let workspace = global.workspace_manager.get_workspace_by_index(i); - let windows = workspace.list_windows(); - - windows.forEach(meta_window => this.track_new(meta_window)); - } - } - - /// Adds the needed signals to every new tracked window, and adds blur if - /// needed. - /// Accepts only untracked meta windows (i.e no `bms_pid` set) - track_new(meta_window) { - // create a pid that will follow the window during its whole life - const pid = ("" + Math.random()).slice(2, 16); - meta_window.bms_pid = pid; - - this._log(`new window tracked, pid: ${pid}`); - - // register the blurred window - this.meta_window_map.set(pid, meta_window); - - // update the blur when wm-class is changed - this.connections.connect( - meta_window, 'notify::wm-class', - _ => this.check_blur(meta_window) - ); - - // update the clip, position, and/or size when the window changes - this.connections.connect( - meta_window, 'size-changed', - _ => this.update_size(pid) - ); - if (this.settings.applications.STATIC_BLUR) { - this.connections.connect( - meta_window, 'position-changed', - _ => this.update_size(pid) - ); - } - - // remove the blur when the window is unmanaged - this.connections.connect( - meta_window, 'unmanaging', - _ => this.untrack_meta_window(pid) - ); - - this.check_blur(meta_window); - - if (this.settings.applications.STATIC_BLUR && meta_window.get_client_type() === Meta.WindowClientType.X11) { - const window_actor = meta_window.get_compositor_private(); - window_actor.connect('child-added', _ => { - if (!meta_window.blur_actor) { - this._warn("can't move blur actor to back, it doesn't exist"); - return; - } - - window_actor.set_child_below_sibling(meta_window.blur_actor, null); - }); - } - } - - /// Updates the size of the blur actor associated to a meta window from its pid. - /// Accepts only tracked meta window (i.e `bms_pid` set), be it blurred or not. - update_size(pid) { - if (this.meta_window_map.has(pid)) { - const meta_window = this.meta_window_map.get(pid); - const blur_actor = meta_window.blur_actor; - if (blur_actor) { - if (this.settings.applications.STATIC_BLUR) { - const bg_manager = meta_window.bg_manager; - const bg_actor_monitor_index = bg_manager.backgroundActor.monitor; - const window_monitor_index = meta_window.get_monitor(); - const monitor = Main.layoutManager.monitors[window_monitor_index]; - - if (bg_actor_monitor_index !== window_monitor_index) { - this._log(`application (pid ${pid}) switching to monitor: ${window_monitor_index}`); - - // Recreate the BackgroundActor on the right monitor. This is necessary to make sure differently - // sized monitors have the correct scaled image of the wallpaper. - bg_manager._monitorIndex = window_monitor_index; - bg_manager._updateBackgroundActor(); - - // Also to fix differently sized monitor issues. - blur_actor.width = monitor.width; - blur_actor.height = monitor.height; - } - - const frame = meta_window.get_frame_rect(); - const buffer = meta_window.get_buffer_rect(); - blur_actor.x = monitor.x - buffer.x; - blur_actor.y = monitor.y - buffer.y; - - // set_clip(x-offset, y-offset, width, height) - blur_actor.set_clip(frame.x - monitor.x, frame.y - monitor.y, frame.width, frame.height); - } else { - const allocation = this.compute_allocation(meta_window); - blur_actor.x = allocation.x; - blur_actor.y = allocation.y; - blur_actor.width = allocation.width; - blur_actor.height = allocation.height; - } - } - } else - // the pid was visibly not removed - this.untrack_meta_window(pid); - } - - /// Checks if the given actor needs to be blurred. - /// Accepts only tracked meta window, be it blurred or not. - /// - /// In order to be blurred, a window either: - /// - is whitelisted in the user preferences if not enable-all - /// - is not blacklisted if enable-all - /// - /// Whitelist and blacklist support wildcard patterns: - /// - * matches any sequence of characters - /// - ? matches any single character - /// - Matching is case-insensitive - check_blur(meta_window) { - const window_wm_class = meta_window.get_wm_class(); - const enable_all = this.settings.applications.ENABLE_ALL; - if (window_wm_class) - this._log(`pid ${meta_window.bms_pid} associated to wm class name ${window_wm_class}`); - - - // if we are in blacklist mode and the window is not blacklisted - // or if we are in whitelist mode and the window is whitelisted - if ( - window_wm_class !== "" - && ((enable_all && !matchesAnyPattern(window_wm_class, this._compiled_blacklist)) - || (!enable_all && matchesAnyPattern(window_wm_class, this._compiled_whitelist)) - ) - && [ - Meta.FrameType.NORMAL, - Meta.FrameType.DIALOG, - Meta.FrameType.MODAL_DIALOG - ].includes(meta_window.get_frame_type()) - ) { - // only blur the window if it is not already done - if (!meta_window.blur_actor) - this.create_blur_effect(meta_window); - } - - // remove blur it is not explicitly whitelisted or un-blacklisted - else if (meta_window.blur_actor) - this.remove_blur(meta_window.bms_pid); - } - - /// Add the blur effect to the window. - /// Accepts only tracked meta window that is NOT already blurred. - create_blur_effect(meta_window) { - const pid = meta_window.bms_pid; - const window_actor = meta_window.get_compositor_private(); - - let blur_actor; - - if (this.settings.applications.STATIC_BLUR) { - const pipeline = new Pipeline(this.effects_manager, global.blur_my_shell._pipelines_manager, this.settings.applications.PIPELINE); - const bg_managers = []; - blur_actor = pipeline.create_background_with_effects( - meta_window.get_monitor(), bg_managers, window_actor, - 'bms-application-blurred-widget' - ); - - if (bg_managers.length > 0) meta_window.bg_manager = bg_managers[0]; - else // I've never seen this happen, but just in case - this._warn(`no bg_manager on blur creation for pid ${pid}`); - } else { - const pipeline = new DummyPipeline(this.effects_manager, this.settings.applications); - [blur_actor, meta_window.bg_manager] = pipeline.create_background_with_effect( - window_actor, 'bms-application-blurred-widget' - ); - - // if hacks are selected, force to repaint the window - if (this.settings.HACKS_LEVEL === 1) { - this._log("hack level 1"); - - this.paint_signals.disconnect_all_for_actor(blur_actor); - this.paint_signals.connect(blur_actor, pipeline.effect); - } else { - this.paint_signals.disconnect_all_for_actor(blur_actor); - } - } - - meta_window.blur_actor = blur_actor; - - // make sure window is blurred in overview - if (this.settings.applications.BLUR_ON_OVERVIEW) - this.enforce_window_visibility_on_overview_for(window_actor); - - // update the size - this.update_size(pid); - - // set the window actor's opacity - this.set_window_opacity(window_actor, this.settings.applications.OPACITY); - - // now set up the signals, for the window actor only: they are disconnected - // in `remove_blur`, whereas the signals for the meta window are disconnected - // only when the whole component is disabled - - // update the window opacity when it changes, else we don't control it fully - this.connections.connect( - window_actor, 'notify::opacity', - _ => { - if (this.focused_window_pid != pid) - this.set_window_opacity(window_actor, this.settings.applications.OPACITY); - } - ); - - // hide the blur if window becomes invisible - if (!window_actor.visible) - blur_actor.hide(); - - this.connections.connect( - window_actor, - 'notify::visible', - window_actor => { - if (window_actor.visible) - meta_window.blur_actor.show(); - else - meta_window.blur_actor.hide(); - } - ); - } - - /// With `focus=true`, tells us we are focused on said window (which can be null if - /// we are not focused anymore). It automatically removes the ancient focus. - /// With `focus=false`, just remove the focus from said window (which can still be null). - set_focus_for_window(meta_window, focus = true) { - let blur_actor = null; - let window_actor = null; - let new_pid = null; - if (meta_window) { - blur_actor = meta_window.blur_actor; - window_actor = meta_window.get_compositor_private(); - new_pid = meta_window.bms_pid; - } - - if (focus) { - // remove old focused window if any - if (this.focused_window_pid) { - const old_focused_window = this.meta_window_map.get(this.focused_window_pid); - if (old_focused_window) - this.set_focus_for_window(old_focused_window, false); - } - // set new focused window pid - this.focused_window_pid = new_pid; - // if we have blur, hide it and make the window opaque - if (this.settings.applications.DYNAMIC_OPACITY && blur_actor) { - blur_actor.hide(); - this.set_window_opacity(window_actor, 255); - } - } - // if we remove the focus and have blur, show it and make the window transparent - else if (blur_actor) { - blur_actor.show(); - this.set_window_opacity(window_actor, this.settings.applications.OPACITY); - } - } - - /// Makes sure that, when the overview is visible, the window actor will - /// stay visible no matter what. - /// We can instead hide the last child of the window actor, which will - /// improve performances without hiding the blur effect. - enforce_window_visibility_on_overview_for(window_actor) { - this.connections.connect(window_actor, 'notify::visible', - _ => { - if (this.settings.applications.BLUR_ON_OVERVIEW) { - if ( - !window_actor.visible - && Main.overview.visible - ) { - window_actor.show(); - window_actor.get_last_child().hide(); - } else if ( - window_actor.visible - ) - window_actor.get_last_child().show(); - } - } - ); - } - - /// Set the opacity of the window actor that sits on top of the blur effect. - set_window_opacity(window_actor, opacity) { - window_actor?.get_children().forEach(child => { - if (child.name !== "blur-actor" && child.opacity != opacity) - child.opacity = opacity; - }); - } - - /// Update the opacity of all window actors. - set_opacity() { - let opacity = this.settings.applications.OPACITY; - - this.meta_window_map.forEach(((meta_window, pid) => { - if (pid != this.focused_window_pid && meta_window.blur_actor) { - let window_actor = meta_window.get_compositor_private(); - this.set_window_opacity(window_actor, opacity); - } - })); - } - - /// Find the system's window scaling. - /// If `scale-monitor-framebuffer` experimental feature if on, we don't need to manage scaling. - /// Else, on wayland, we need to divide by the scale to get the correct result. - compute_scale(meta_window) { - // TODO: Drop GNOME <50 compatibility - const gnome_shell_major_version = parseInt(Config.PACKAGE_VERSION.split('.')[0]); - const scale_monitor_framebuffer = - gnome_shell_major_version >= 50 || - this.mutter_gsettings - .get_strv('experimental-features') - .includes('scale-monitor-framebuffer'); - const is_wayland = gnome_shell_major_version >= 50 || - (typeof Meta.is_wayland_compositor === 'function' - ? Meta.is_wayland_compositor() - : global.display?.is_wayland_compositor?.() ?? true); - const monitor_index = meta_window.get_monitor(); - // check if the window is using wayland, or xwayland/xorg for rendering - return !scale_monitor_framebuffer && is_wayland && meta_window.get_client_type() == 0 - ? Main.layoutManager.monitors[monitor_index].geometry_scale - : 1; - } - - /// Compute the size and position for a blur actor. - /// Coordinates are relative to window buffer's corner. - compute_allocation(meta_window) { - const scale = this.compute_scale(meta_window); - - let frame = meta_window.get_frame_rect(); - let buffer = meta_window.get_buffer_rect(); - - return { - x: (frame.x - buffer.x) / scale, - y: (frame.y - buffer.y) / scale, - width: frame.width / scale, - height: frame.height / scale - }; - } - - change_blur_type() { - this._log("resetting..."); - - this.disable(); - setTimeout(_ => this.enable(), 1); - } - - change_pipeline() { - this.update_all_windows(); - } - - /// Removes the blur actor to make a blurred window become normal again. - /// It however does not untrack the meta window itself. - /// Accepts a pid corresponding (or not) to a blurred (or not) meta window. - remove_blur(pid) { - this._log(`removing blur for pid ${pid}`); - - let meta_window = this.meta_window_map.get(pid); - if (meta_window) { - let window_actor = meta_window.get_compositor_private(); - let blur_actor = meta_window.blur_actor; - let bg_manager = meta_window.bg_manager; - - if (blur_actor && window_actor) { - // reset the opacity - this.set_window_opacity(window_actor, 255); - - // remove the blurred actor - window_actor.remove_child(blur_actor); - bg_manager._bms_pipeline.destroy(); - bg_manager.destroy(); - blur_actor.destroy(); - - // kinda untrack the blurred actor, as its presence is how we know - // whether we are blurred or not - delete meta_window.blur_actor; - delete meta_window.bg_manager; - - // disconnect the signals of the window actor - this.paint_signals.disconnect_all_for_actor(blur_actor); - this.connections.disconnect_all_for(window_actor); - } - } - } - - /// Kinda the same as `remove_blur`, but better: it also untracks the window. - /// This needs to be called when the component is being disabled, else it - /// would cause havoc by having untracked windows during normal operations, - /// which is not the point at all! - /// Accepts a pid corresponding (or not) to a blurred (or not) meta window. - untrack_meta_window(pid) { - this.remove_blur(pid); - let meta_window = this.meta_window_map.get(pid); - if (meta_window) { - this.connections.disconnect_all_for(meta_window); - this.meta_window_map.delete(pid); - } - } - - disable() { - this._log("removing blur from applications..."); - - this.service?.unexport(); - delete this.mutter_gsettings; - - this.meta_window_map.forEach((_meta_window, pid) => { - this.untrack_meta_window(pid); - }); - - this.connections.disconnect_all(); - this.paint_signals.disconnect_all(); - } - - _log(str) { - if (this.settings.DEBUG) - console.log(`[Blur my Shell > applications] ${str}`); - } - - _warn(str) { - console.warn(`[Blur my Shell > applications] ${str}`); - } -}; diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/coverflow_alt_tab.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/coverflow_alt_tab.js deleted file mode 100644 index 4e6062a..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/coverflow_alt_tab.js +++ /dev/null @@ -1,91 +0,0 @@ -import * as Main from "resource:///org/gnome/shell/ui/main.js"; - -import { PaintSignals } from "../conveniences/paint_signals.js"; -import { Pipeline } from "../conveniences/pipeline.js"; - -export const CoverflowAltTabBlur = class CoverflowAltTabBlur { - constructor(connections, settings, effects_manager) { - this.connections = connections; - this.settings = settings; - this.paint_signals = new PaintSignals(connections); - this.effects_manager = effects_manager; - this.background_actors = []; - this.background_managers = []; - } - - enable() { - this._log("blurring coverflow alt-tab"); - - this.update_backgrounds(); - - this.connections.connect( - Main.layoutManager.uiGroup, - "child-added", - (_, child) => this.try_blur(child) - ); - - this.connections.connect(Main.layoutManager, "monitors-changed", (_) => { - this.update_backgrounds(); - }); - } - - update_backgrounds() { - this.remove_background_actors(); - - Main.layoutManager.uiGroup - .get_children() - .forEach((child) => this.try_blur(child)); - } - - try_blur(actor) { - if ( - actor.constructor.name !== "Meta_BackgroundGroup" || - actor.get_name() !== "coverflow-alt-tab-background-group" - ) { - return; - } - - this._log("found coverflow alt-tab to blur"); - - for (let i = 0; i < Main.layoutManager.monitors.length; i++) { - const pipeline = new Pipeline( - this.effects_manager, - global.blur_my_shell._pipelines_manager, - this.settings.coverflow_alt_tab.PIPELINE - ); - - const background_actor = pipeline.create_background_with_effects( - i, - this.background_managers, - actor, - "bms-coverflow-alt-tab-blurred-widget" - ); - - this.background_actors.push(background_actor); - } - } - - remove_background_actors() { - this.background_actors.forEach((actor) => actor.destroy()); - this.background_actors = []; - - this.background_managers.forEach((background_manager) => { - background_manager._bms_pipeline.destroy(); - background_manager.destroy(); - }); - this.background_managers = []; - } - - disable() { - this._log("removing blur from coverflow alt-tab"); - - this.remove_background_actors(); - this.connections.disconnect_all(); - } - - _log(str) { - if (this.settings.DEBUG) { - console.log(`[Blur my Shell > coverflow alt-tab] ${str}`); - } - } -}; diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/dash_to_dock.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/dash_to_dock.js deleted file mode 100644 index 4ff212c..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/dash_to_dock.js +++ /dev/null @@ -1,421 +0,0 @@ -import Meta from 'gi://Meta'; -import * as Main from 'resource:///org/gnome/shell/ui/main.js'; -import * as Signals from 'resource:///org/gnome/shell/misc/signals.js'; - -import { PaintSignals } from '../conveniences/paint_signals.js'; - -import { Pipeline } from '../conveniences/pipeline.js'; -import { DummyPipeline } from '../conveniences/dummy_pipeline.js'; - -const DASH_STYLES = [ - "transparent-dash", - "light-dash", - "dark-dash" -]; - - -/// This type of object is created for every dash found, and talks to the main -/// DashBlur thanks to signals. -/// -/// This allows to dynamically track the created dashes for each screen. -class DashInfos { - constructor( - dash_blur, dash, dash_container, dash_background, - background, background_group, bg_manager - ) { - // the parent DashBlur object, to communicate - this.dash_blur = dash_blur; - this.dash = dash; - this.dash_container = dash_container; - this.dash_background = dash_background; - this.background = background; - this.background_group = background_group; - this.bg_manager = bg_manager; - this.settings = dash_blur.settings; - this.old_style = this.dash._background.style; - - this.dash_destroy_id = dash.connect('destroy', () => this.remove_dash_blur(false)); - this.dash_blur_connections_ids = []; - this.dash_blur_connections_ids.push( - this.dash_blur.connect('remove-dashes', () => this.remove_dash_blur()), - this.dash_blur.connect('override-style', () => this.override_style()), - this.dash_blur.connect('remove-style', () => this.remove_style()), - this.dash_blur.connect('show', () => this.background_group.show()), - this.dash_blur.connect('hide', () => this.background_group.hide()), - this.dash_blur.connect('update-size', () => this.update_size()), - this.dash_blur.connect('change-blur-type', () => this.change_blur_type()), - this.dash_blur.connect('update-pipeline', () => this.update_pipeline()) - ); - } - - // IMPORTANT: do never call this in a mutable `this.dash_blur.forEach` - remove_dash_blur(dash_not_already_destroyed = true) { - // remove the style and destroy the effects - this.remove_style(); - this.destroy_dash(dash_not_already_destroyed); - - // remove the dash infos from their list - const dash_infos_index = this.dash_blur.dashes.indexOf(this); - if (dash_infos_index >= 0) - this.dash_blur.dashes.splice(dash_infos_index, 1); - - // disconnect everything - this.dash_blur_connections_ids.forEach(id => { if (id) this.dash_blur.disconnect(id); }); - this.dash_blur_connections_ids = []; - if (this.dash_destroy_id) - this.dash.disconnect(this.dash_destroy_id); - this.dash_destroy_id = null; - } - - override_style() { - this.remove_style(); - - this.dash.set_style_class_name( - DASH_STYLES[this.settings.dash_to_dock.STYLE_DASH_TO_DOCK] - ); - } - - remove_style() { - this.dash._background.style = this.old_style; - - DASH_STYLES.forEach( - style => this.dash.remove_style_class_name(style) - ); - } - - destroy_dash(dash_not_already_destroyed = true) { - if (!dash_not_already_destroyed) - this.bg_manager.backgroundActor = null; - - this.paint_signals?.disconnect_all(); - this.dash.get_parent().remove_child(this.background_group); - this.bg_manager._bms_pipeline.destroy(); - this.bg_manager.destroy(); - this.background_group.destroy(); - } - - change_blur_type() { - this.destroy_dash(); - - let [ - background, background_group, bg_manager, paint_signals - ] = this.dash_blur.add_blur(this.dash); - - this.background = background; - this.background_group = background_group; - this.bg_manager = bg_manager; - this.paint_signals = paint_signals; - - this.dash.get_parent().insert_child_at_index(this.background_group, 0); - - this.update_size(); - } - - update_pipeline() { - this.bg_manager._bms_pipeline.change_pipeline_to( - this.settings.dash_to_dock.PIPELINE - ); - } - - update_size() { - if (this.dash_blur.is_static) { - let [x, y] = this.get_dash_position(this.dash_container, this.dash_background); - - this.background.x = -x; - this.background.y = -y; - - if (this.dash_container.get_style_class_name().includes("top")) - this.background.set_clip( - x, - y + this.dash.y + this.dash_background.y, - this.dash_background.width, - this.dash_background.height - ); - else if (this.dash_container.get_style_class_name().includes("bottom")) - this.background.set_clip( - x, - y + this.dash.y + this.dash_background.y, - this.dash_background.width, - this.dash_background.height - ); - else if (this.dash_container.get_style_class_name().includes("left")) - this.background.set_clip( - x + this.dash.x + this.dash_background.x, - y + this.dash.y + this.dash_background.y, - this.dash_background.width, - this.dash_background.height - ); - else if (this.dash_container.get_style_class_name().includes("right")) - this.background.set_clip( - x + this.dash.x + this.dash_background.x, - y + this.dash.y + this.dash_background.y, - this.dash_background.width, - this.dash_background.height - ); - } else { - this.background.width = this.dash_background.width; - this.background.height = this.dash_background.height; - - this.background.x = this.dash_background.x; - this.background.y = this.dash_background.y + this.dash.y; - } - } - - get_dash_position(dash_container, dash_background) { - var x, y; - - let monitor = Main.layoutManager.findMonitorForActor(dash_container); - let dash_box = dash_container._slider.get_child(); - - if (dash_container.get_style_class_name().includes("top")) { - x = (monitor.width - dash_background.width) / 2; - y = dash_box.y; - } else if (dash_container.get_style_class_name().includes("bottom")) { - x = (monitor.width - dash_background.width) / 2; - y = monitor.height - dash_container.height; - } else if (dash_container.get_style_class_name().includes("left")) { - x = dash_box.x; - y = dash_container.y + (dash_container.height - dash_background.height) / 2 - dash_background.y; - } else if (dash_container.get_style_class_name().includes("right")) { - x = monitor.width - dash_container.width; - y = dash_container.y + (dash_container.height - dash_background.height) / 2 - dash_background.y; - } - - return [x, y]; - } - - _log(str) { - if (this.settings.DEBUG) - console.log(`[Blur my Shell > dash] ${str}`); - } - - _warn(str) { - console.warn(`[Blur my Shell > dash] ${str}`); - } -} - -export const DashBlur = class DashBlur extends Signals.EventEmitter { - constructor(connections, settings, _) { - super(); - this.dashes = []; - this.connections = connections; - this.settings = settings; - this.paint_signals = new PaintSignals(connections); - this.is_static = this.settings.dash_to_dock.STATIC_BLUR; - this.enabled = false; - } - - enable() { - this.connections.connect(Main.uiGroup, 'child-added', (_, actor) => { - if ( - (actor.get_name() === "dashtodockContainer") && - (actor.constructor.name === 'DashToDock') - ) - this.try_blur(actor); - }); - - this.blur_existing_dashes(); - this.connect_to_overview(); - - this.update_size(); - - this.enabled = true; - } - - // Finds all existing dashes on every monitor, and call `try_blur` on them - // We cannot only blur `Main.overview.dash`, as there could be several - blur_existing_dashes() { - this._log("searching for dash"); - - // blur every dash found, filtered by name - Main.uiGroup.get_children().filter((child) => { - return (child.get_name() === "dashtodockContainer") && - (child.constructor.name === 'DashToDock'); - }).forEach(dash_container => this.try_blur(dash_container)); - } - - // Tries to blur the dash contained in the given actor - try_blur(dash_container) { - let dash_box = dash_container._slider.get_child(); - - // verify that we did not already blur that dash - if (!dash_box.get_children().some(child => - child.get_name() === "bms-dash-backgroundgroup" - )) { - this._log("dash to dock found, blurring it"); - - // finally blur the dash - let dash = dash_box.get_children().find(child => { - return child.get_name() === 'dash'; - }); - - this.dashes.push(this.blur_dash_from(dash, dash_container)); - } - } - - // Blurs the dash and returns a `DashInfos` containing its information - blur_dash_from(dash, dash_container) { - let [background, background_group, bg_manager, paint_signals] = this.add_blur(dash); - - // insert the background group to the right element - dash.get_parent().insert_child_at_index(background_group, 0); - - // updates size and position on change - this.connections.connect( - dash, - ['notify::width', 'notify::height'], - _ => this.update_size() - ); - this.connections.connect( - dash_container, - ['notify::width', 'notify::height', 'notify::y', 'notify::x'], - _ => this.update_size() - ); - - const dash_background = dash.get_children().find(child => { - return child.get_style_class_name() === 'dash-background'; - }); - - // create infos - let infos = new DashInfos( - this, - dash, - dash_container, - dash_background, - background, - background_group, - bg_manager, - paint_signals - ); - - this.update_size(); - this.update_background(); - - // returns infos - return infos; - } - - add_blur(dash) { - const monitor = Main.layoutManager.findMonitorForActor(dash); - if (!monitor) - return; - - const background_group = new Meta.BackgroundGroup({ - name: 'bms-dash-backgroundgroup', width: 0, height: 0 - }); - - let background, bg_manager, paint_signals; - let static_blur = this.settings.dash_to_dock.STATIC_BLUR; - if (static_blur) { - let bg_manager_list = []; - const pipeline = new Pipeline( - global.blur_my_shell._effects_manager, - global.blur_my_shell._pipelines_manager, - this.settings.dash_to_dock.PIPELINE - ); - background = pipeline.create_background_with_effects( - monitor.index, bg_manager_list, - background_group, 'bms-dash-blurred-widget' - ); - bg_manager = bg_manager_list[0]; - } - else { - const pipeline = new DummyPipeline( - global.blur_my_shell._effects_manager, - this.settings.dash_to_dock - ); - [background, bg_manager] = pipeline.create_background_with_effect( - background_group, 'bms-dash-blurred-widget' - ); - - paint_signals = new PaintSignals(this.connections); - - // HACK - // - //`Shell.BlurEffect` does not repaint when shadows are under it. [1] - // - // This does not entirely fix this bug (shadows caused by windows - // still cause artifacts), but it prevents the shadows of the dash - // buttons to cause artifacts on the dash itself - // - // [1]: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2857 - - if (this.settings.HACKS_LEVEL === 1) { - this._log("hack level 1"); - - paint_signals.disconnect_all(); - paint_signals.connect(background, pipeline.effect); - } else { - paint_signals.disconnect_all(); - } - } - - return [background, background_group, bg_manager, paint_signals]; - } - - change_blur_type() { - this.is_static = this.settings.dash_to_dock.STATIC_BLUR; - this.emit('change-blur-type'); - - this.update_background(); - } - - /// Connect when overview if opened/closed to hide/show the blur accordingly - connect_to_overview() { - this.connections.disconnect_all_for(Main.overview); - - if (this.settings.dash_to_dock.UNBLUR_IN_OVERVIEW) { - this.connections.connect( - Main.overview, 'showing', _ => this.hide() - ); - this.connections.connect( - Main.overview, 'hidden', _ => this.show() - ); - } - }; - - /// Updates the background to either remove it or not, according to the - /// user preferences. - update_background() { - this._log("updating background"); - if (this.settings.dash_to_dock.OVERRIDE_BACKGROUND) - this.emit('override-style'); - else - this.emit('remove-style'); - } - - update_pipeline() { - this.emit('update-pipeline'); - } - - update_size() { - this.emit('update-size'); - } - - show() { - this.emit('show'); - } - hide() { - this.emit('hide'); - } - - disable() { - this._log("removing blur from dashes"); - - this.emit('remove-dashes'); - - this.dashes = []; - this.connections.disconnect_all(); - - this.enabled = false; - } - - _log(str) { - if (this.settings.DEBUG) - console.log(`[Blur my Shell > dash manager] ${str}`); - } - - _warn(str) { - console.warn(`[Blur my Shell > dash manager] ${str}`); - } -}; \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/lockscreen.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/lockscreen.js deleted file mode 100644 index 7755ba9..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/lockscreen.js +++ /dev/null @@ -1,89 +0,0 @@ -import * as Main from 'resource:///org/gnome/shell/ui/main.js'; -import { UnlockDialog } from 'resource:///org/gnome/shell/ui/unlockDialog.js'; - -import { Pipeline } from '../conveniences/pipeline.js'; - -const original_createBackground = - UnlockDialog.prototype._createBackground; -const original_updateBackgroundEffects = - UnlockDialog.prototype._updateBackgroundEffects; -const original_updateBackgrounds = - UnlockDialog.prototype._updateBackgrounds; - - -export const LockscreenBlur = class LockscreenBlur { - constructor(connections, settings, effects_manager) { - this.connections = connections; - this.settings = settings; - this.effects_manager = effects_manager; - this.enabled = false; - } - - enable() { - this._log("blurring lockscreen"); - - this.update_lockscreen(); - - this.enabled = true; - } - - update_lockscreen() { - UnlockDialog.prototype._createBackground = - this._createBackground; - UnlockDialog.prototype._updateBackgroundEffects = - this._updateBackgroundEffects; - UnlockDialog.prototype._updateBackgrounds = - this._updateBackgrounds; - } - - _createBackground(monitor_index) { - let pipeline = new Pipeline( - global.blur_my_shell._effects_manager, global.blur_my_shell._pipelines_manager, - global.blur_my_shell._settings.lockscreen.PIPELINE - ); - - pipeline.create_background_with_effects( - monitor_index, - this._bgManagers, - this._backgroundGroup, - "screen-shield-background" - ); - } - - _updateBackgroundEffects() { - this._updateBackgrounds(); - } - - _updateBackgrounds() { - for (let i = 0; i < this._bgManagers.length; i++) { - this._bgManagers[i]._bms_pipeline.destroy(); - this._bgManagers[i].destroy(); - } - - this._bgManagers = []; - this._backgroundGroup.destroy_all_children(); - - for (let i = 0; i < Main.layoutManager.monitors.length; i++) - this._createBackground(i); - } - - disable() { - this._log("removing blur from lockscreen"); - - UnlockDialog.prototype._createBackground = - original_createBackground; - UnlockDialog.prototype._updateBackgroundEffects = - original_updateBackgroundEffects; - UnlockDialog.prototype._updateBackgrounds = - original_updateBackgrounds; - - this.connections.disconnect_all(); - - this.enabled = false; - } - - _log(str) { - if (this.settings.DEBUG) - console.log(`[Blur my Shell > lockscreen] ${str}`); - } -}; diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/overview.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/overview.js deleted file mode 100644 index 50a625e..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/overview.js +++ /dev/null @@ -1,226 +0,0 @@ -import Meta from 'gi://Meta'; -import * as Main from 'resource:///org/gnome/shell/ui/main.js'; - -import { WorkspaceAnimationController } from 'resource:///org/gnome/shell/ui/workspaceAnimation.js'; -const wac_proto = WorkspaceAnimationController.prototype; - -import { Pipeline } from '../conveniences/pipeline.js'; - -const OVERVIEW_COMPONENTS_STYLE = [ - "overview-components-light", - "overview-components-dark", - "overview-components-transparent" -]; - - -export const OverviewBlur = class OverviewBlur { - constructor(connections, settings, effects_manager) { - this.connections = connections; - this.settings = settings; - this.effects_manager = effects_manager; - this.overview_background_managers = []; - this.overview_background_group = new Meta.BackgroundGroup( - { name: 'bms-overview-backgroundgroup' } - ); - this.animation_background_managers = []; - this.animation_background_group = new Meta.BackgroundGroup( - { name: 'bms-animation-backgroundgroup' } - ); - this.enabled = false; - this.proto_patched = false; - } - - enable() { - this._log("blurring overview"); - - // add css class name for workspace-switch background - Main.uiGroup.add_style_class_name("blurred-overview"); - - // add css class name to make components semi-transparent if wanted - this.update_components_classname(); - - // update backgrounds when the component is enabled - this.update_backgrounds(); - - // connect to monitors change - this.connections.connect(Main.layoutManager, 'monitors-changed', - _ => this.update_backgrounds() - ); - - // part for the workspace animation switch - - // make sure not to do this part if the functions were patched prior, as - // the functions would call themselves and cause infinite recursion - if (!this.proto_patched) { - // store original workspace switching methods for restoring them on - // disable() - this._original_PrepareSwitch = wac_proto._prepareWorkspaceSwitch; - this._original_FinishSwitch = wac_proto._finishWorkspaceSwitch; - - const w_m = global.workspace_manager; - const outer_this = this; - - // create a blurred background actor for each monitor during a - // workspace switch - wac_proto._prepareWorkspaceSwitch = function (...params) { - outer_this._log("prepare workspace switch"); - outer_this._original_PrepareSwitch.apply(this, params); - - // this permits to show the blur behind windows that are on - // workspaces on the left and right - if ( - outer_this.settings.applications.BLUR - ) { - let ws_index = w_m.get_active_workspace_index(); - [ws_index - 1, ws_index + 1].forEach( - i => w_m.get_workspace_by_index(i)?.list_windows().forEach( - window => window.get_compositor_private().show() - ) - ); - } - - Main.uiGroup.insert_child_above( - outer_this.animation_background_group, - global.window_group - ); - - outer_this.animation_background_managers.forEach(bg_manager => { - if (bg_manager._bms_pipeline.actor) - if ( - Meta.prefs_get_workspaces_only_on_primary() && - bg_manager._monitorIndex !== Main.layoutManager.primaryMonitor.index - ) - bg_manager._bms_pipeline.actor.visible = false; - else - bg_manager._bms_pipeline.actor.visible = true; - }); - }; - - // remove the workspace-switch actors when the switch is done - wac_proto._finishWorkspaceSwitch = function (...params) { - outer_this._log("finish workspace switch"); - outer_this._original_FinishSwitch.apply(this, params); - - // this hides windows that are not on the current workspace - if ( - outer_this.settings.applications.BLUR - ) - for (let i = 0; i < w_m.get_n_workspaces(); i++) { - if (i != w_m.get_active_workspace_index()) - w_m.get_workspace_by_index(i)?.list_windows().forEach( - window => window.get_compositor_private().hide() - ); - } - - Main.uiGroup.remove_child(outer_this.animation_background_group); - }; - - this.proto_patched = true; - } - - this.enabled = true; - } - - update_backgrounds() { - // remove every old background - this.remove_background_actors(); - // create new backgrounds for the overview and the animation - for (let i = 0; i < Main.layoutManager.monitors.length; i++) { - const pipeline_overview = new Pipeline( - this.effects_manager, - global.blur_my_shell._pipelines_manager, - this.settings.overview.PIPELINE - ); - pipeline_overview.create_background_with_effects( - i, this.overview_background_managers, - this.overview_background_group, 'bms-overview-blurred-widget' - ); - - const pipeline_animation = new Pipeline( - this.effects_manager, - global.blur_my_shell._pipelines_manager, - this.settings.overview.PIPELINE - ); - pipeline_animation.create_background_with_effects( - i, this.animation_background_managers, - this.animation_background_group, 'bms-animation-blurred-widget' - ); - } - // add the container widget for the overview only to the overview group - Main.layoutManager.overviewGroup.insert_child_at_index(this.overview_background_group, 0); - // make sure it stays below - this.connections.connect(Main.layoutManager.overviewGroup, "child-added", (_, child) => { - if (child !== this.overview_background_group) { - if (this.overview_background_group.get_parent()) - Main.layoutManager.overviewGroup.remove_child(this.overview_background_group); - Main.layoutManager.overviewGroup.insert_child_at_index(this.overview_background_group, 0); - } - }); - } - - /// Updates the classname to style overview components with semi-transparent - /// backgrounds. - update_components_classname() { - OVERVIEW_COMPONENTS_STYLE.forEach( - style => Main.uiGroup.remove_style_class_name(style) - ); - - if (this.settings.overview.STYLE_COMPONENTS > 0) - Main.uiGroup.add_style_class_name( - OVERVIEW_COMPONENTS_STYLE[this.settings.overview.STYLE_COMPONENTS - 1] - ); - } - - remove_background_actors() { - this.overview_background_group.remove_all_children(); - this.animation_background_group.remove_all_children(); - - this.connections.disconnect_all_for(Main.layoutManager.overviewGroup); - if (this.overview_background_group.get_parent()) - Main.layoutManager.overviewGroup.remove_child(this.overview_background_group); - - this.overview_background_managers.forEach(background_manager => { - background_manager._bms_pipeline.destroy(); - background_manager.destroy(); - }); - this.animation_background_managers.forEach(background_manager => { - background_manager._bms_pipeline.destroy(); - background_manager.destroy(); - }); - this.overview_background_managers = []; - this.animation_background_managers = []; - } - - disable() { - this._log("removing blur from overview"); - - this.remove_background_actors(); - Main.uiGroup.remove_style_class_name("blurred-overview"); - OVERVIEW_COMPONENTS_STYLE.forEach( - style => Main.uiGroup.remove_style_class_name(style) - ); - - this.connections.disconnect_all(); - this.enabled = false; - } - - restore_patched_proto() { - if (this.proto_patched) { - if (this._original_PrepareSwitch) - wac_proto._prepareWorkspaceSwitch = this._original_PrepareSwitch; - if (this._original_FinishSwitch) - wac_proto._finishWorkspaceSwitch = this._original_FinishSwitch; - - this.proto_patched = false; - } - } - - _log(str) { - if (this.settings.DEBUG) - console.log(`[Blur my Shell > overview] ${str}`); - } - - _warn(str) { - console.warn(`[Blur my Shell > overview] ${str}`); - } -}; diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/panel.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/panel.js deleted file mode 100644 index 6c084cf..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/panel.js +++ /dev/null @@ -1,577 +0,0 @@ -import St from 'gi://St'; -import GLib from 'gi://GLib'; -import Meta from 'gi://Meta'; -import * as Main from 'resource:///org/gnome/shell/ui/main.js'; - -import { PaintSignals } from '../conveniences/paint_signals.js'; - -import { Pipeline } from '../conveniences/pipeline.js'; -import { DummyPipeline } from '../conveniences/dummy_pipeline.js'; - -const DASH_TO_PANEL_UUID = 'dash-to-panel@jderose9.github.com'; -const PANEL_STYLES = [ - "transparent-panel", - "light-panel", - "dark-panel", - "contrasted-panel" -]; - -// global listener, so we don't miss the panel destruction event -let isMainPanelAlive = true; -Main.panel.connect('destroy', () => isMainPanelAlive = false); - -export const PanelBlur = class PanelBlur { - constructor(connections, settings, effects_manager) { - this.connections = connections; - this.window_signal_ids = new Map(); - this.settings = settings; - this.effects_manager = effects_manager; - this.actors_list = []; - this.enabled = false; - } - - enable() { - if (this.enabled) { - this._log("blur already enabled"); - return; - } - - this._log("blurring top panel"); - - // check for panels when Dash to Panel is activated - this.connections.connect( - Main.extensionManager, - 'extension-state-changed', - (_, extension) => { - if (extension.uuid === DASH_TO_PANEL_UUID - && extension.state === 1 - ) { - this.connections.connect( - global.dashToPanel, - 'panels-created', - _ => this.blur_dtp_panels() - ); - - this.blur_existing_panels(); - } - } - ); - - this.blur_existing_panels(); - - // connect to overview being opened/closed, and dynamically show or not - // the blur when a window is near a panel - this.connect_to_windows_and_overview(); - - // connect to workareas change - this.connections.connect(global.display, 'workareas-changed', - _ => this.reset() - ); - - this.enabled = true; - } - - reset() { - if (!this.enabled) { - this._log("reset called but blur is not enabled"); - return; - } - - this._log("resetting..."); - - this.disable(); - setTimeout(_ => this.enable(), 1); - } - - /// Check for already existing panels and blur them if they are not already - blur_existing_panels() { - // check if dash-to-panel is present - if (global.dashToPanel) { - // blur already existing ones - if (global.dashToPanel.panels) - this.blur_dtp_panels(); - - // blur main panel if requested in settings - if (this.settings.dash_to_panel.BLUR_ORIGINAL_PANEL && isMainPanelAlive) - this.maybe_blur_panel(Main.panel); - } else { - // if no dash-to-panel, blur the main and only panel - this.maybe_blur_panel(Main.panel); - } - } - - blur_dtp_panels() { - // Defer the blurring to the next idle cycle. - // This is crucial to ensure the panel actors have been allocated their - // final size and position by the compositor, avoiding race conditions - // during extension startup. - GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, () => { - if (!global.dashToPanel?.panels) { - return GLib.SOURCE_REMOVE; - } - - this._log("Blurring Dash to Panel panels after idle."); - - // blur every panel, except Main.panel (this is handled in blur_existing_panels() method above) - global.dashToPanel.panels.forEach(p => { - if (p.panel != Main.panel) - this.maybe_blur_panel(p.panel); - }); - - return GLib.SOURCE_REMOVE; - }); - }; - - /// Blur a panel only if it is not already blurred (contained in the list) - maybe_blur_panel(panel) { - // check if the panel is contained in the list - let actors = this.actors_list.find( - actors => actors.widgets.panel == panel - ); - - if (!actors) - // if the actors is not blurred, blur it - this.blur_panel(panel); - } - - /// Blur a panel - blur_panel(panel) { - let panel_box = panel.get_parent(); - let is_dtp_panel = false; - if (!panel_box.name) { - is_dtp_panel = true; - panel_box = panel_box.get_parent(); - } - - let monitor = Main.layoutManager.findMonitorForActor(panel); - if (!monitor) - return; - - let background_group = new Meta.BackgroundGroup( - { name: 'bms-panel-backgroundgroup', width: 0, height: 0 } - ); - - let background, bg_manager; - let static_blur = this.settings.panel.STATIC_BLUR; - if (static_blur) { - let bg_manager_list = []; - const pipeline = new Pipeline( - this.effects_manager, - global.blur_my_shell._pipelines_manager, - this.settings.panel.PIPELINE - ); - background = pipeline.create_background_with_effects( - monitor.index, bg_manager_list, - background_group, 'bms-panel-blurred-widget' - ); - bg_manager = bg_manager_list[0]; - } - else { - const pipeline = new DummyPipeline(this.effects_manager, this.settings.panel); - [background, bg_manager] = pipeline.create_background_with_effect( - background_group, 'bms-panel-blurred-widget' - ); - - let paint_signals = new PaintSignals(this.connections); - - // HACK - // - //`Shell.BlurEffect` does not repaint when shadows are under it. [1] - // - // This does not entirely fix this bug (shadows caused by windows - // still cause artifacts), but it prevents the shadows of the panel - // buttons to cause artifacts on the panel itself - // - // [1]: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2857 - - { - if (this.settings.HACKS_LEVEL === 1) { - this._log("panel hack level 1"); - - paint_signals.disconnect_all(); - paint_signals.connect(background, pipeline.effect); - } else { - paint_signals.disconnect_all(); - } - } - } - - // insert the background group to the panel box - panel_box.insert_child_at_index(background_group, 0); - - // the object that is used to remembering each elements that is linked to the blur effect - let actors = { - widgets: { panel, panel_box, background, background_group }, - static_blur, - monitor, - bg_manager, - is_dtp_panel - }; - this.actors_list.push(actors); - - // update the size of the actor - this.update_size(actors); - - // connect to panel, panel_box and its parent position or size change - // this should fire update_size every time one of its params change - this.connections.connect( - panel, - 'notify::position', - _ => this.update_size(actors) - ); - this.connections.connect( - panel_box, - ['notify::size', 'notify::position'], - _ => this.update_size(actors) - ); - this.connections.connect( - panel_box.get_parent(), - 'notify::position', - _ => this.update_size(actors) - ); - - // connect to the panel getting destroyed - this.connections.connect( - panel, - 'destroy', - _ => this.destroy_blur(actors, true) - ); - } - - update_size(actors) { - let panel = actors.widgets.panel; - let panel_box = actors.widgets.panel_box; - let background = actors.widgets.background; - let [width, height] = panel_box.get_size(); - - // if static blur, need to clip the background - if (actors.static_blur) { - let monitor = Main.layoutManager.findMonitorForActor(panel); - if (!monitor) - return; - - // an alternative to panel.get_transformed_position, because it - // sometimes yields NaN (probably when the actor is not fully - // positionned yet) - let [p_x, p_y] = panel_box.get_position(); - let [p_p_x, p_p_y] = panel_box.get_parent().get_position(); - let x = p_x + p_p_x - monitor.x + (width - panel.width) / 2; - let y = p_y + p_p_y - monitor.y + (height - panel.height) / 2; - - background.set_clip(x, y, panel.width, panel.height); - background.x = (width - panel.width) / 2 - x; - background.y = .5 + (height - panel.height) / 2 - y; - } else { - background.x = panel.x; - background.y = panel.y; - background.width = panel.width; - background.height = panel.height; - } - - // update the monitor panel is on - actors.monitor = Main.layoutManager.findMonitorForActor(panel); - } - - /// Connect when overview if opened/closed to hide/show the blur accordingly - /// - /// If HIDETOPBAR is set, we need just to hide the blur when showing appgrid - /// (so no shadow is cropped) - connect_to_overview() { - // may be called when panel blur is disabled, if hidetopbar - // compatibility is toggled on/off - // if this is the case, do nothing as only the panel blur interfers with - // hidetopbar - if ( - this.settings.panel.BLUR && - this.settings.panel.UNBLUR_IN_OVERVIEW - ) { - if (!this.settings.hidetopbar.COMPATIBILITY) { - this.connections.connect( - Main.overview, 'showing', _ => this.hide() - ); - this.connections.connect( - Main.overview, 'hidden', _ => this.show() - ); - } else { - let appDisplay = Main.overview._overview._controls._appDisplay; - - this.connections.connect( - appDisplay, 'show', _ => this.hide() - ); - this.connections.connect( - appDisplay, 'hide', _ => this.show() - ); - this.connections.connect( - Main.overview, 'hidden', _ => this.show() - ); - } - - } - } - - /// Connect to windows disable transparency when a window is too close - connect_to_windows() { - if ( - this.settings.panel.OVERRIDE_BACKGROUND_DYNAMICALLY - ) { - // connect to overview opening/closing - this.connections.connect(Main.overview, ['showing', 'hiding'], - _ => this.update_visibility() - ); - - // connect to session mode update - this.connections.connect(Main.sessionMode, 'updated', - _ => this.update_visibility() - ); - - // manage already-existing windows - for (const meta_window_actor of global.get_window_actors()) { - this.on_window_actor_added( - meta_window_actor.get_parent(), meta_window_actor - ); - } - - // manage windows at their creation/removal - this.connections.connect(global.window_group, 'child-added', - this.on_window_actor_added.bind(this) - ); - this.connections.connect(global.window_group, 'child-removed', - this.on_window_actor_removed.bind(this) - ); - - // connect to a workspace change - this.connections.connect(global.window_manager, 'switch-workspace', - _ => this.update_visibility() - ); - - // perform early update - this.update_visibility(); - } else { - // reset transparency for every panels - this.actors_list.forEach( - actors => this.set_should_override_panel(actors, true) - ); - } - } - - /// An helper to connect to both the windows and overview signals. - /// This is the only function that should be directly called, to prevent - /// inconsistencies with signals not being disconnected. - connect_to_windows_and_overview() { - this.disconnect_from_windows_and_overview(); - this.connect_to_overview(); - this.connect_to_windows(); - } - - /// Disconnect all the connections created by connect_to_windows - disconnect_from_windows_and_overview() { - // disconnect the connections to actors - for (const actor of [ - Main.overview, Main.sessionMode, - global.window_group, global.window_manager, - Main.overview._overview._controls._appDisplay - ]) { - this.connections.disconnect_all_for(actor); - } - - // disconnect the connections from windows - for (const [actor, ids] of this.window_signal_ids) { - for (const id of ids) { - actor.disconnect(id); - } - } - this.window_signal_ids = new Map(); - } - - /// Update the css classname of the panel for light theme - update_light_text_classname(disable = false) { - if (!isMainPanelAlive) { - this._log("cannot update light text classname, Main.panel is not alive"); - return; - } - - if (this.settings.panel.FORCE_LIGHT_TEXT && !disable) - Main.panel.add_style_class_name("panel-light-text"); - else - Main.panel.remove_style_class_name("panel-light-text"); - } - - /// Callback when a new window is added - on_window_actor_added(container, meta_window_actor) { - this.window_signal_ids.set(meta_window_actor, [ - meta_window_actor.connect('notify::allocation', - _ => this.update_visibility() - ), - meta_window_actor.connect('notify::visible', - _ => this.update_visibility() - ) - ]); - this.update_visibility(); - } - - /// Callback when a window is removed - on_window_actor_removed(container, meta_window_actor) { - for (const signalId of this.window_signal_ids.get(meta_window_actor)) { - meta_window_actor.disconnect(signalId); - } - this.window_signal_ids.delete(meta_window_actor); - this.update_visibility(); - } - - /// Update the visibility of the blur effect - update_visibility() { - if ( - isMainPanelAlive && Main.panel.has_style_pseudo_class('overview') - || !Main.sessionMode.hasWindows - ) { - this.actors_list.forEach( - actors => this.set_should_override_panel(actors, true) - ); - return; - } - - if (!Main.layoutManager.primaryMonitor) - return; - - // get all the windows in the active workspace that are visible - const workspace = global.workspace_manager.get_active_workspace(); - const windows = workspace.list_windows().filter(meta_window => - meta_window.showing_on_its_workspace() - && !meta_window.is_hidden() - && meta_window.get_window_type() !== Meta.WindowType.DESKTOP - // exclude Desktop Icons NG - && meta_window.get_gtk_application_id() !== "com.rastersoft.ding" - && meta_window.get_gtk_application_id() !== "com.desktop.ding" - ); - - // check if at least one window is near enough to each panel and act - // accordingly - const scale = St.ThemeContext.get_for_stage(global.stage).scale_factor; - this.actors_list - // do not apply for dtp panels, as it would only cause bugs and it - // can be done from its preferences anyway - .filter(actors => !actors.is_dtp_panel) - .forEach(actors => { - let panel = actors.widgets.panel; - let panel_top = panel.get_transformed_position()[1]; - let panel_bottom = panel_top + panel.get_height(); - - // check if at least a window is near enough the panel - let window_overlap_panel = false; - windows.forEach(meta_window => { - let window_monitor_i = meta_window.get_monitor(); - let same_monitor = actors.monitor.index == window_monitor_i; - - let window_vertical_pos = meta_window.get_frame_rect().y; - let window_vertical_bottom = window_vertical_pos + meta_window.get_frame_rect().height; - - // if so, and if in the same monitor, then it overlaps - if (same_monitor - && - // check if panel is on top - ((panel_top === 0 && window_vertical_pos < panel_bottom + 5 * scale) || - // check if panel is at the bottom - (panel_top > 0 && window_vertical_bottom > panel_top - 5 * scale)) - ) - window_overlap_panel = true; - }); - - // if no window overlaps, then the panel is transparent - this.set_should_override_panel( - actors, !window_overlap_panel - ); - }); - } - - /// Choose wether or not the panel background should be overriden, in - /// respect to its argument and the `override-background` setting. - set_should_override_panel(actors, should_override) { - let panel = actors.widgets.panel; - - PANEL_STYLES.forEach(style => panel.remove_style_class_name(style)); - - if ( - this.settings.panel.OVERRIDE_BACKGROUND - && - should_override - ) { - panel.add_style_class_name( - PANEL_STYLES[this.settings.panel.STYLE_PANEL] - ); - } - - // update the classname if the panel to have or have not light text - this.update_light_text_classname(!should_override); - } - - update_pipeline() { - this.actors_list.forEach(actors => - actors.bg_manager._bms_pipeline.change_pipeline_to( - this.settings.panel.PIPELINE - ) - ); - } - - show() { - this.actors_list.forEach(actors => { - actors.widgets.background.show(); - }); - } - - hide() { - this.actors_list.forEach(actors => { - actors.widgets.background.hide(); - }); - } - - // IMPORTANT: do never call this in a mutable `this.actors_list.forEach` - destroy_blur(actors, panel_already_destroyed) { - this.set_should_override_panel(actors, false); - - actors.bg_manager._bms_pipeline.destroy(); - - if (panel_already_destroyed) - actors.bg_manager.backgroundActor = null; - actors.bg_manager.destroy(); - - if (!panel_already_destroyed) { - actors.widgets.panel_box.remove_child(actors.widgets.background_group); - actors.widgets.background_group.destroy_all_children(); - actors.widgets.background_group.destroy(); - } - - let index = this.actors_list.indexOf(actors); - if (index >= 0) - this.actors_list.splice(index, 1); - } - - disable() { - if (!this.enabled) { - this._log("blur already removed"); - return; - } - - this._log("removing blur from top panel"); - - this.disconnect_from_windows_and_overview(); - - this.update_light_text_classname(true); - - const immutable_actors_list = [...this.actors_list]; - immutable_actors_list.forEach(actors => this.destroy_blur(actors, false)); - this.actors_list = []; - - this.connections.disconnect_all(); - - this.enabled = false; - } - - _log(str) { - if (this.settings.DEBUG) - console.log(`[Blur my Shell > panel] ${str}`); - } - - _warn(str) { - console.warn(`[Blur my Shell > panel] ${str}`); - } -}; diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/screenshot.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/screenshot.js deleted file mode 100644 index dcf05eb..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/screenshot.js +++ /dev/null @@ -1,110 +0,0 @@ -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}`); - } -}; diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/window_list.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/window_list.js deleted file mode 100644 index 6ab0644..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/components/window_list.js +++ /dev/null @@ -1,148 +0,0 @@ -import * as Main from 'resource:///org/gnome/shell/ui/main.js'; - -import { PaintSignals } from '../conveniences/paint_signals.js'; -import { DummyPipeline } from '../conveniences/dummy_pipeline.js'; - - -export const WindowListBlur = class WindowListBlur { - constructor(connections, settings, effects_manager) { - this.connections = connections; - this.settings = settings; - this.paint_signals = new PaintSignals(connections); - this.effects_manager = effects_manager; - this.pipelines = []; - } - - enable() { - this._log("blurring window list"); - - // blur if window-list is found - Main.layoutManager.uiGroup.get_children().forEach( - child => this.try_blur(child) - ); - - // listen to new actors in `Main.layoutManager.uiGroup` and blur it if - // if is window-list - this.connections.connect( - Main.layoutManager.uiGroup, - 'child-added', - (_, child) => this.try_blur(child) - ); - - // connect to overview - this.connections.connect(Main.overview, 'showing', _ => { - this.hide(); - }); - this.connections.connect(Main.overview, 'hidden', _ => { - this.show(); - }); - } - - try_blur(actor) { - if ( - actor.constructor.name === "WindowList" && - actor.style !== "background:transparent;" - ) { - this._log("found window list to blur"); - - const pipeline = new DummyPipeline( - this.effects_manager, this.settings.window_list - ); - pipeline.attach_effect_to_actor(actor); - this.pipelines.push(pipeline); - - actor.set_style("background:transparent;"); - - actor._windowList.get_children().forEach( - window => this.style_window_button(window) - ); - - this.connections.connect( - actor._windowList, - 'child-added', - (_, window) => this.style_window_button(window) - ); - - this.connections.connect( - actor, - 'destroy', - _ => this.destroy_blur(pipeline, true) - ); - - - // HACK - // - //`Shell.BlurEffect` does not repaint when shadows are under it. [1] - // - // This does not entirely fix this bug (shadows caused by windows - // still cause artifacts), but it prevents the shadows of the panel - // buttons to cause artifacts on the panel itself - // - // [1]: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2857 - - if (this.settings.HACKS_LEVEL === 1) { - this._log("window list hack level 1"); - - this.paint_signals.disconnect_all_for_actor(actor); - this.paint_signals.connect(actor, pipeline.effect); - } else { - this.paint_signals.disconnect_all_for_actor(actor); - } - } - } - - style_window_button(window) { - window.get_child_at_index(0).set_style( - "box-shadow:none; background-color:rgba(0,0,0,0.2); border-radius:5px;" - ); - } - - // IMPORTANT: do never call this in a mutable `this.pipelines.forEach` - destroy_blur(pipeline, actor_destroyed = false) { - if (!actor_destroyed) { - this.remove_style(pipeline.actor); - this.paint_signals.disconnect_all_for_actor(pipeline.actor); - } - - pipeline.destroy(); - - let index = this.pipelines.indexOf(pipeline); - if (index >= 0) - this.pipelines.splice(pipeline, 1); - } - - remove_style(actor) { - if ( - actor.constructor.name === "WindowList" && - actor.style === "background:transparent;" - ) { - actor.style = null; - actor._windowList.get_children().forEach( - child => child.get_child_at_index(0).set_style(null) - ); - } - } - - hide() { - this.pipelines.forEach(pipeline => pipeline.effect?.set_enabled(false)); - } - - show() { - this.pipelines.forEach(pipeline => pipeline.effect?.set_enabled(true)); - } - - disable() { - this._log("removing blur from window list"); - - const immutable_pipelines_list = [...this.pipelines]; - immutable_pipelines_list.forEach(pipeline => this.destroy_blur(pipeline)); - - this.pipelines = []; - this.connections.disconnect_all(); - } - - _log(str) { - if (this.settings.DEBUG) - console.log(`[Blur my Shell > window list] ${str}`); - } -}; \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/connections.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/connections.js deleted file mode 100644 index 0583db3..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/connections.js +++ /dev/null @@ -1,106 +0,0 @@ -import GObject from 'gi://GObject'; - -/// An object to easily manage signals. -export const Connections = class Connections { - constructor() { - this.buffer = []; - } - - /// Adds a connection. - /// - /// Takes as arguments: - /// - an actor, which fires the signal - /// - signal(s) (string or array of strings), which are watched for - /// - a callback, which is called when the signal is fired - connect(actor, signals, handler) { - if (signals instanceof Array) { - signals.forEach(signal => { - let id = actor.connect(signal, handler); - this.process_connection(actor, id); - }); - } else { - let id = actor.connect(signals, handler); - this.process_connection(actor, id); - } - - } - - /// Process the given actor and id. - /// - /// This makes sure that the signal is disconnected when the actor is - /// destroyed, and that the signal can be managed through other Connections - /// methods. - process_connection(actor, id) { - let infos = { - actor: actor, - id: id - }; - - // remove the signal when the actor is destroyed - if ( - actor.connect && - ( - !(actor instanceof GObject.Object) || - GObject.signal_lookup('destroy', actor) - ) - ) { - let destroy_id = actor.connect('destroy', () => { - actor.disconnect(id); - actor.disconnect(destroy_id); - - let index = this.buffer.indexOf(infos); - if (index >= 0) { - this.buffer.splice(index, 1); - } - }); - infos.destroy_id = destroy_id; - } - - this.buffer.push(infos); - } - - /// Disconnects every connection found for an actor. - disconnect_all_for(actor) { - // get every connection stored for the actor - let actor_connections = this.buffer.filter( - infos => infos.actor === actor - ); - - // remove each of them - actor_connections.forEach(connection => { - // disconnect - try { - connection.actor.disconnect(connection.id); - if ('destroy_id' in connection) - connection.actor.disconnect(connection.destroy_id); - } catch (e) { - this._warn(`error removing connection: ${e}; continuing`); - } - - // remove from buffer - let index = this.buffer.indexOf(connection); - this.buffer.splice(index, 1); - }); - } - - /// Disconnect every connection for each actor. - disconnect_all() { - this.buffer.forEach(connection => { - // disconnect - try { - connection.actor.disconnect(connection.id); - if ('destroy_id' in connection) - connection.actor.disconnect(connection.destroy_id); - } catch (e) { - this._warn(`error removing connection: ${e}; continuing`); - } - }); - - // reset buffer - this.buffer = []; - } - - _warn(str) { - console.warn(`[Blur my Shell > connections] ${str}`); - } -}; \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/dummy_pipeline.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/dummy_pipeline.js deleted file mode 100644 index 544d68c..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/dummy_pipeline.js +++ /dev/null @@ -1,112 +0,0 @@ -import St from 'gi://St'; -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) { - this.effects_manager = effects_manager; - this.settings = settings; - this.effect = null; - this.attach_effect_to_actor(actor); - } - - create_background_with_effect( - background_group, - widget_name - ) { - // create the new actor - this.actor = new St.Widget({ name: widget_name }); - - this.attach_effect_to_actor(this.actor); - - // a dummy `BackgroundManager`, just to access the pipeline easily - let bg_manager = new Clutter.Actor; - bg_manager.backgroundActor = this.actor; - bg_manager._bms_pipeline = this; - - background_group.insert_child_at_index(this.actor, 0); - - return [this.actor, bg_manager]; - }; - - attach_effect_to_actor(actor) { - // set the actor - if (actor) - this.actor = actor; - else { - this.remove_pipeline_from_actor(); - return; - } - - // build the new effect to be added - this.build_effect({ - unscaled_radius: 2 * this.settings.SIGMA, - brightness: this.settings.BRIGHTNESS, - }); - - this.actor_destroy_id = this.actor.connect( - "destroy", () => this.remove_pipeline_from_actor() - ); - - // add the effect to the actor - if (this.actor) - this.actor.add_effect(this.effect); - else - this._warn(`could not add effect to actor, actor does not exist anymore`); - } - - remove_pipeline_from_actor() { - this.remove_effect(); - if (this.actor && this.actor_destroy_id) - this.actor.disconnect(this.actor_destroy_id); - this.actor_destroy_id = null; - this.actor = null; - } - - build_effect(params) { - // create the effect - 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 - ); - } - - repaint_effect() { - this.effect?.queue_repaint(); - } - - /// Remove every effect from the actor it is attached to. Please note that they are not - /// destroyed, but rather stored (thanks to the `EffectManager` class) to be reused later. - remove_effect() { - if (this.effect) - this.effects_manager.remove(this.effect); - this.effect = null; - - if (this._sigma_changed_id) - this.settings.settings.disconnect(this._sigma_changed_id); - if (this._brightness_changed_id) - this.settings.settings.disconnect(this._brightness_changed_id); - delete this._sigma_changed_id; - delete this._brightness_changed_id; - } - - /// Do nothing for this dummy pipeline. - /// Note: exposed to public API. - change_pipeline_to() { return; } - - /// Note: exposed to public API. - destroy() { - this.remove_effect(); - this.remove_pipeline_from_actor(); - } - - _warn(str) { - console.warn(`[Blur my Shell > dummy pip] ${str}`); - } -}; \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/effects_manager.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/effects_manager.js deleted file mode 100644 index 947d535..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/effects_manager.js +++ /dev/null @@ -1,90 +0,0 @@ -import { get_supported_effects } from '../effects/effects.js'; - -/// An object to manage effects (by not destroying them all the time) -export const EffectsManager = class EffectsManager { - constructor(connections) { - this.connections = connections; - this.used = []; - this.SUPPORTED_EFFECTS = get_supported_effects(); - - Object.keys(this.SUPPORTED_EFFECTS).forEach(effect_name => { - // init the arrays containing each unused effect - this[effect_name + '_effects'] = []; - - // init the functions for each effect - this['new_' + effect_name + '_effect'] = function (params) { - let effect; - if (this[effect_name + '_effects'].length > 0) { - effect = this[effect_name + '_effects'].splice(0, 1)[0]; - effect.set({ - ...this.SUPPORTED_EFFECTS[effect_name].class.default_params, ...params - }); - } else - effect = new this.SUPPORTED_EFFECTS[effect_name].class({ - ...this.SUPPORTED_EFFECTS[effect_name].class.default_params, ...params - }); - - this.used.push(effect); - this.connect_to_destroy(effect); - return effect; - }; - }); - } - - connect_to_destroy(effect) { - effect.old_actor = effect.get_actor(); - if (effect.old_actor) - effect.old_actor_id = effect.old_actor.connect('destroy', _ => { - this.remove(effect, true); - }); - - this.connections.connect(effect, 'notify::actor', _ => { - let actor = effect.get_actor(); - - if (effect.old_actor && actor != effect.old_actor) - effect.old_actor.disconnect(effect.old_actor_id); - - if (actor && actor != effect.old_actor) { - effect.old_actor_id = actor.connect('destroy', _ => { - this.remove(effect, true); - }); - } - }); - } - - // IMPORTANT: do never call this in a mutable `this.used.forEach` - remove(effect, actor_already_destroyed = false) { - if (!actor_already_destroyed) - try { - effect.get_actor()?.remove_effect(effect); - } catch (e) { - this._warn(`could not remove the effect, continuing: ${e}`); - } - if (effect.old_actor) - effect.old_actor.disconnect(effect.old_actor_id); - delete effect.old_actor; - delete effect.old_actor_id; - - let index = this.used.indexOf(effect); - if (index >= 0) { - this.used.splice(index, 1); - - Object.keys(this.SUPPORTED_EFFECTS).forEach(effect_name => { - if (effect instanceof this.SUPPORTED_EFFECTS[effect_name].class) - this[effect_name + '_effects'].push(effect); - }); - } - } - - destroy_all() { - const immutable_used_list = [...this.used]; - immutable_used_list.forEach(effect => this.remove(effect)); - Object.keys(this.SUPPORTED_EFFECTS).forEach(effect_name => { - this[effect_name + '_effects'].splice(0, this[effect_name + '_effects'].length); - }); - } - - _warn(str) { - console.warn(`[Blur my Shell > effects mng] ${str}`); - } -}; diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/keys.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/keys.js deleted file mode 100644 index fcde72b..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/keys.js +++ /dev/null @@ -1,190 +0,0 @@ -import { Type } from './settings.js'; - -// This lists the preferences keys -export const KEYS = [ - { - component: "general", schemas: [ - { type: Type.PIPELINES, name: "pipelines" }, - { type: Type.I, name: "hacks-level" }, - { type: Type.B, name: "debug" }, - ] - }, - { - component: "overview", schemas: [ - { type: Type.B, name: "blur" }, - { type: Type.S, name: "pipeline" }, - { type: Type.I, name: "style-components" }, - ] - }, - { - component: "appfolder", schemas: [ - { type: Type.B, name: "blur" }, - { type: Type.I, name: "sigma" }, - { type: Type.D, name: "brightness" }, - { type: Type.I, name: "style-dialogs" }, - ] - }, - { - component: "panel", schemas: [ - { type: Type.B, name: "blur" }, - { type: Type.B, name: "static-blur" }, - { type: Type.S, name: "pipeline" }, - { type: Type.I, name: "sigma" }, - { type: Type.D, name: "brightness" }, - { type: Type.B, name: "unblur-in-overview" }, - { type: Type.B, name: "force-light-text" }, - { type: Type.B, name: "override-background" }, - { type: Type.I, name: "style-panel" }, - { type: Type.B, name: "override-background-dynamically" }, - ] - }, - { - component: "dash-to-dock", schemas: [ - { type: Type.B, name: "blur" }, - { type: Type.B, name: "static-blur" }, - { type: Type.S, name: "pipeline" }, - { type: Type.I, name: "sigma" }, - { type: Type.D, name: "brightness" }, - { type: Type.B, name: "unblur-in-overview" }, - { type: Type.B, name: "override-background" }, - { type: Type.I, name: "style-dash-to-dock" }, - ] - }, - { - component: "applications", schemas: [ - { type: Type.B, name: "blur" }, - { type: Type.B, name: "static-blur" }, - { type: Type.S, name: "pipeline" }, - { type: Type.I, name: "sigma" }, - { type: Type.D, name: "brightness" }, - { type: Type.I, name: "opacity" }, - { type: Type.B, name: "dynamic-opacity" }, - { type: Type.B, name: "blur-on-overview" }, - { type: Type.B, name: "enable-all" }, - { type: Type.AS, name: "whitelist" }, - { type: Type.AS, name: "blacklist" }, - ] - }, - { - component: "lockscreen", schemas: [ - { type: Type.B, name: "blur" }, - { type: Type.S, name: "pipeline" }, - ] - }, - { - component: "window-list", schemas: [ - { type: Type.B, name: "blur" }, - { type: Type.S, name: "pipeline" }, - { type: Type.I, name: "sigma" }, - { type: Type.D, name: "brightness" }, - ] - }, - { - component: "coverflow-alt-tab", schemas: [ - { type: Type.B, name: "blur" }, - { type: Type.S, name: "pipeline" }, - ] - }, - { - component: "screenshot", schemas: [ - { type: Type.B, name: "blur" }, - { type: Type.S, name: "pipeline" }, - ] - }, - { - component: "hidetopbar", schemas: [ - { type: Type.B, name: "compatibility" }, - ] - }, - { - component: "dash-to-panel", schemas: [ - { type: Type.B, name: "blur-original-panel" }, - ] - }, -]; - - -// This lists the deprecated preferences keys -export const DEPRECATED_KEYS = [ - { - component: "general", schemas: [ - { type: Type.I, name: "sigma" }, - { type: Type.D, name: "brightness" }, - { type: Type.C, name: "color" }, - { type: Type.D, name: "noise-amount" }, - { type: Type.D, name: "noise-lightness" }, - { type: Type.B, name: "color-and-noise" }, - ] - }, - { - component: "overview", schemas: [ - { type: Type.B, name: "customize" }, - { type: Type.I, name: "sigma" }, - { type: Type.D, name: "brightness" }, - { type: Type.C, name: "color" }, - { type: Type.D, name: "noise-amount" }, - { type: Type.D, name: "noise-lightness" }, - ] - }, - { - component: "appfolder", schemas: [ - { type: Type.B, name: "customize" }, - { type: Type.C, name: "color" }, - { type: Type.D, name: "noise-amount" }, - { type: Type.D, name: "noise-lightness" }, - ] - }, - { - component: "panel", schemas: [ - { type: Type.B, name: "customize" }, - { type: Type.C, name: "color" }, - { type: Type.D, name: "noise-amount" }, - { type: Type.D, name: "noise-lightness" }, - ] - }, - { - component: "dash-to-dock", schemas: [ - { type: Type.B, name: "customize" }, - { type: Type.C, name: "color" }, - { type: Type.D, name: "noise-amount" }, - { type: Type.D, name: "noise-lightness" }, - { type: Type.I, name: "corner-radius" }, - ] - }, - { - component: "applications", schemas: [ - { type: Type.B, name: "customize" }, - { type: Type.C, name: "color" }, - { type: Type.D, name: "noise-amount" }, - { type: Type.D, name: "noise-lightness" }, - ] - }, - { - component: "lockscreen", schemas: [ - { type: Type.B, name: "customize" }, - { type: Type.I, name: "sigma" }, - { type: Type.D, name: "brightness" }, - { type: Type.C, name: "color" }, - { type: Type.D, name: "noise-amount" }, - { type: Type.D, name: "noise-lightness" }, - ] - }, - { - component: "window-list", schemas: [ - { type: Type.B, name: "customize" }, - { type: Type.C, name: "color" }, - { type: Type.D, name: "noise-amount" }, - { type: Type.D, name: "noise-lightness" }, - ] - }, - { - component: "screenshot", schemas: [ - { type: Type.B, name: "customize" }, - { type: Type.I, name: "sigma" }, - { type: Type.D, name: "brightness" }, - { type: Type.C, name: "color" }, - { type: Type.D, name: "noise-amount" }, - { type: Type.D, name: "noise-lightness" }, - ] - }, -]; \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/paint_signals.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/paint_signals.js deleted file mode 100644 index 5fbfee4..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/paint_signals.js +++ /dev/null @@ -1,91 +0,0 @@ -import GObject from 'gi://GObject'; -import Clutter from 'gi://Clutter'; - - -export const PaintSignals = class PaintSignals { - constructor(connections) { - this.buffer = []; - this.connections = connections; - } - - connect(actor, blur_effect) { - let paint_effect = new EmitPaintSignal(); - let infos = { - actor: actor, - paint_effect: paint_effect - }; - let counter = 0; - - actor.add_effect(paint_effect); - this.connections.connect(paint_effect, 'update-blur', () => { - try { - // checking if blur_effect.queue_repaint() has been recently called - if (counter === 0) { - counter = 2; - blur_effect.queue_repaint(); - } - else counter--; - } catch (e) { } - }); - - // remove the actor from buffer when it is destroyed - if ( - actor.connect && - ( - !(actor instanceof GObject.Object) || - GObject.signal_lookup('destroy', actor) - ) - ) - this.connections.connect(actor, 'destroy', () => { - const immutable_buffer = [...this.buffer]; - immutable_buffer.forEach(infos => { - if (infos.actor === actor) { - // remove from buffer - let index = this.buffer.indexOf(infos); - this.buffer.splice(index, 1); - } - }); - }); - - this.buffer.push(infos); - } - - disconnect_all_for_actor(actor) { - const immutable_buffer = [...this.buffer]; - immutable_buffer.forEach(infos => { - if (infos.actor === actor) { - this.connections.disconnect_all_for(infos.paint_effect); - infos.actor.remove_effect(infos.paint_effect); - - // remove from buffer - let index = this.buffer.indexOf(infos); - this.buffer.splice(index, 1); - } - }); - } - - disconnect_all() { - this.buffer.forEach(infos => { - this.connections.disconnect_all_for(infos.paint_effect); - infos.actor.remove_effect(infos.paint_effect); - }); - - this.buffer = []; - } -}; - -export const EmitPaintSignal = GObject.registerClass({ - GTypeName: 'EmitPaintSignal', - Signals: { - 'update-blur': { - param_types: [] - }, - } -}, - class EmitPaintSignal extends Clutter.Effect { - vfunc_paint(node, paint_context, paint_flags) { - this.emit("update-blur"); - super.vfunc_paint(node, paint_context, paint_flags); - } - } -); \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/pipeline.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/pipeline.js deleted file mode 100644 index 84b1d7a..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/pipeline.js +++ /dev/null @@ -1,223 +0,0 @@ -import St from 'gi://St'; -import * as Main from 'resource:///org/gnome/shell/ui/main.js'; -import * as Background from 'resource:///org/gnome/shell/ui/background.js'; - -/// A `Pipeline` object is a handy way to manage the effects attached to an actor. It only manages -/// one actor at a time (so blurring multiple widgets will need multiple `Pipeline`), and is -/// linked to a `pipeline_id` that has been (hopefully) defined in the settings. -/// -/// It communicates with the settings through the `PipelinesManager` object, and receives different -/// signals (with `pipeline_id` being an unique string): -/// - `'pipeline_id'::pipeline-updated`, handing a new pipeline descriptor object, when the pipeline -/// has been changed enough that it needs to rebuild the effects configuration -/// - `'pipeline_id'::pipeline-destroyed`, when the pipeline has been destroyed; thus making the -/// `Pipeline` change its id to `pipeline_default` -/// -/// And each effect, with an unique `id`, is connected to the `PipelinesManager` for the signals: -/// - `'pipeline_id'::effect-'id'-key-removed`, handing the key that was removed -/// - `'pipeline_id'::effect-'id'-key-updated`, handing the key that was changed and its new value -/// - `'pipeline_id'::effect-'id'-key-added`, handing the key that was added and its value -export const Pipeline = class Pipeline { - constructor(effects_manager, pipelines_manager, pipeline_id, actor = null) { - this.effects_manager = effects_manager; - this.pipelines_manager = pipelines_manager; - this.effects = []; - this.set_pipeline_id(pipeline_id); - this.attach_pipeline_to_actor(actor); - } - - /// Create a background linked to the monitor with index `monitor_index`, with a - /// `BackgroundManager` that is appended to the list `background_managers`. The background actor - /// will be given the name `widget_name` and inserted into the given `background_group`. - /// If `use_absolute_position` is false, then the position used is at (0,0); useful when the - /// positioning is relative. - /// Note: exposed to public API. - create_background_with_effects( - monitor_index, - background_managers, - background_group, - widget_name, - use_absolute_position = true - ) { - let monitor = Main.layoutManager.monitors[monitor_index]; - - // create the new actor - this.actor = new St.Widget({ - name: widget_name, - x: use_absolute_position ? monitor.x : 0, - y: .5 + (use_absolute_position ? monitor.y : 0), // add 1 to correct z-position - z_position: 1, // seems to fix the multi-monitor glitch - width: monitor.width, - height: monitor.height - }); - - // remove the effects, wether or not we attach the pipeline to the actor: if they are fired - // while the actor has changed, this could go bad - this.remove_all_effects(); - if (this.pipeline_id) - this.attach_pipeline_to_actor(this.actor); - - let bg_manager = new Background.BackgroundManager({ - container: this.actor, - monitorIndex: monitor_index, - controlPosition: false, - }); - bg_manager._bms_pipeline = this; - - background_managers.push(bg_manager); - background_group.insert_child_at_index(this.actor, 0); - - return this.actor; - }; - - /// Set the pipeline id, correctly connecting the `Pipeline` object to listen the pipelines - /// manager for pipeline-wide changes. This does not update the effects in consequence, call - /// `change_pipeline_to` instead if you want to reconstruct the effects too. - set_pipeline_id(pipeline_id) { - // disconnect ancient signals - this.remove_connections(); - - // change the id - this.pipeline_id = pipeline_id; - - // connect to settings changes - this._pipeline_changed_id = this.pipelines_manager.connect( - this.pipeline_id + '::pipeline-updated', - (_, new_pipeline) => this.update_effects_from_pipeline(new_pipeline) - ); - this._pipeline_destroyed_id = this.pipelines_manager.connect( - this.pipeline_id + '::pipeline-destroyed', - _ => this.change_pipeline_to("pipeline_default") - ); - } - - /// Disconnect the signals for the pipeline changes. Please note that the signals related to the - /// effects are stored with them and removed with `remove_all_effects`. - remove_connections() { - if (this._pipeline_changed_id) - this.pipelines_manager.disconnect(this._pipeline_changed_id); - if (this._pipeline_destroyed_id) - this.pipelines_manager.disconnect(this._pipeline_destroyed_id); - this._pipeline_changed_id = null; - this._pipeline_destroyed_id = null; - } - - /// Attach a Pipeline object with `pipeline_id` already set to an actor. - attach_pipeline_to_actor(actor) { - // set the actor - if (actor) - this.actor = actor; - else { - this.remove_pipeline_from_actor(); - return; - } - - // attach the pipeline - let pipeline = this.pipelines_manager.pipelines[this.pipeline_id]; - if (!pipeline) { - this._warn(`could not attach pipeline to actor, pipeline "${this.pipeline_id}" not found`); - // do not recurse... - if ("pipeline_default" in this.pipelines_manager.pipelines) { - this.set_pipeline_id("pipeline_default"); - pipeline = this.pipelines_manager.pipelines["pipeline_default"]; - } else - return; - } - - this.actor_destroy_id = this.actor.connect( - "destroy", () => this.remove_pipeline_from_actor() - ); - - // update the effects - this.update_effects_from_pipeline(pipeline); - } - - remove_pipeline_from_actor() { - this.remove_all_effects(); - if (this.actor && this.actor_destroy_id) - this.actor.disconnect(this.actor_destroy_id); - this.actor_destroy_id = null; - this.actor = null; - } - - /// Update the effects from the given pipeline object, the hard way. - update_effects_from_pipeline(pipeline) { - // remove all effects - this.remove_all_effects(); - - // build the new effects to be added - pipeline.effects.forEach(effect => { - if ('new_' + effect.type + '_effect' in this.effects_manager) - this.build_effect(effect); - else - this._warn(`could not add effect to actor, effect "${effect.type}" not found`); - }); - this.effects.reverse(); - - // add the effects to the actor - if (this.actor) - this.effects.forEach(effect => this.actor.add_effect(effect)); - else - this._warn(`could not add effect to actor, actor does not exist anymore`); - } - - /// Given an `effect_infos` object containing the effect type, id and params, build an effect - /// and append it to the effects list - build_effect(effect_infos) { - let effect = this.effects_manager['new_' + effect_infos.type + '_effect'](effect_infos.params); - this.effects.push(effect); - - // connect to settings changes - effect._effect_key_removed_id = this.pipelines_manager.connect( - this.pipeline_id + '::effect-' + effect_infos.id + '-key-removed', - (_, key) => effect[key] = effect.constructor.default_params[key] - ); - effect._effect_key_updated_id = this.pipelines_manager.connect( - this.pipeline_id + '::effect-' + effect_infos.id + '-key-updated', - (_, key, value) => effect[key] = value - ); - effect._effect_key_added_id = this.pipelines_manager.connect( - this.pipeline_id + '::effect-' + effect_infos.id + '-key-added', - (_, key, value) => effect[key] = value - ); - } - - /// Remove every effect from the actor it is attached to. Please note that they are not - /// destroyed, but rather stored (thanks to the `EffectManager` class) to be reused later. - remove_all_effects() { - this.effects.forEach(effect => { - this.effects_manager.remove(effect); - [ - effect._effect_key_removed_id, - effect._effect_key_updated_id, - effect._effect_key_added_id - ].forEach( - id => { if (id) this.pipelines_manager.disconnect(id); } - ); - delete effect._effect_key_removed_id; - delete effect._effect_key_updated_id; - delete effect._effect_key_added_id; - }); - this.effects = []; - } - - /// Change the pipeline id, and update the effects according to this change. - /// Note: exposed to public API. - change_pipeline_to(pipeline_id) { - this.set_pipeline_id(pipeline_id); - this.attach_pipeline_to_actor(this.actor); - } - - /// Resets the `Pipeline` object to a sane state, removing every effect and signal. - /// Note: exposed to public API. - destroy() { - this.remove_all_effects(); - this.remove_connections(); - this.remove_pipeline_from_actor(); - this.pipeline_id = null; - } - - _warn(str) { - console.warn(`[Blur my Shell > pipeline] ${str}`); - } -}; \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/pipelines_manager.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/pipelines_manager.js deleted file mode 100644 index 0fdfe9e..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/pipelines_manager.js +++ /dev/null @@ -1,168 +0,0 @@ -const Signals = imports.signals; - -/// The `PipelinesManager` object permits to store the list of pipelines and their effects in -/// memory. It is meant to *always* be in sync with the `org.gnome.shell.extensions.blur-my-shell`'s -/// `pipelines` gschema. However, we do not want to re-create every effect each time this schema is -/// changed, so the pipelines manager handles it, and dispatches the updates with targeted signals. -/// -/// It is only connected to ONE signal (the pipelines schema being changed), and emits numerous -/// which are connected to by both the different `Pipeline` objects in the extension, and by the -/// different pages of the extension preferences. -/// It emits three different types of signals: -/// -/// - general changes to the pipelines list, connected to by the extension preferences: -/// - `pipeline-list-changed`, when the list of pipelines has changed (by creation or deletion) -/// - `pipeline-names-changed`, when the name of a pipeline is changed -/// -/// - signals that are targeted towards a given pipeline, with `pipeline_id` being its unique id: -/// - `'pipeline_id'::pipeline-updated`, handing a new pipeline descriptor object, when the -/// pipeline has been changed quite a bit (added/destroyed/reordered the effects) -/// - `'pipeline_id'::pipeline-destroyed`, when the pipeline has been destroyed -/// - `'pipeline_id'::pipeline-renamed`, handing the new name, when the pipeline has been -/// renamed, which is only important for the preferences -/// -/// - signals that are targeted towards a given effect, with `effect_id` being its unique id, and -/// `pipeline_id` the unique id of the pipeline it is attached to: -/// - `'pipeline_id'::effect-'effect_id'-key-removed`, handing the key that was removed -/// - `'pipeline_id'::effect-'effect_id'-key-updated`, handing the key that was changed and its -/// new value -/// - `'pipeline_id'::effect-'effect_id'-key-added`, handing the key that was added and its -/// value -export class PipelinesManager { - constructor(settings) { - this.settings = settings; - this.pipelines = this.settings.PIPELINES; - this.settings.PIPELINES_changed(_ => this.on_pipeline_update()); - } - - create_pipeline(name, effects = []) { - // select a random id for the pipeline - let id = "pipeline_" + ("" + Math.random()).slice(2, 16); - // add a random ID for each effect, to help tracking them - effects.forEach(effect => effect.id = "effect_" + ("" + Math.random()).slice(2, 16)); - - this.pipelines[id] = { name, effects }; - this.settings.PIPELINES = this.pipelines; - this._emit('pipeline-created', id, this.pipelines[id]); - this._emit('pipeline-list-changed'); - return id; - } - - duplicate_pipeline(id) { - if (!(id in this.pipelines)) { - this._warn(`could not duplicate pipeline, id ${id} does not exist`); - return; - } - const pipeline = this.pipelines[id]; - this.create_pipeline(pipeline.name + " - duplicate", [...pipeline.effects]); - this.settings.PIPELINES = this.pipelines; - } - - delete_pipeline(id) { - if (!(id in this.pipelines)) { - this._warn(`could not delete pipeline, id ${id} does not exist`); - return; - } - if (id == "pipeline_default") { - this._warn(`could not delete pipeline "pipeline_default" as it is immutable`); - return; - } - delete this.pipelines[id]; - this.settings.PIPELINES = this.pipelines; - this._emit(id + '::pipeline-destroyed'); - this._emit('pipeline-list-changed'); - } - - update_pipeline_effects(id, effects, emit_update_signal = true) { - if (!(id in this.pipelines)) { - this._warn(`could not update pipeline effects, id ${id} does not exist`); - return; - } - this.pipelines[id].effects = [...effects]; - this.settings.PIPELINES = this.pipelines; - if (emit_update_signal) - this._emit(id + '::pipeline-updated'); - } - - rename_pipeline(id, name) { - if (!(id in this.pipelines)) { - this._warn(`could not rename pipeline, id ${id} does not exist`); - return; - } - this.pipelines[id].name = name.slice(); - this.settings.PIPELINES = this.pipelines; - this._emit(id + '::pipeline-renamed', name); - this._emit('pipeline-names-changed'); - } - - on_pipeline_update() { - const old_pipelines = this.pipelines; - this.pipelines = this.settings.PIPELINES; - - for (var pipeline_id in old_pipelines) { - // if we find a pipeline that does not exist anymore, signal it - if (!(pipeline_id in this.pipelines)) { - this._emit(pipeline_id + '::pipeline-destroyed'); - continue; - } - - const old_pipeline = old_pipelines[pipeline_id]; - const new_pipeline = this.pipelines[pipeline_id]; - - // verify if both pipelines have effects in the same order - // if they have, then check for their parameters - if ( - old_pipeline.effects.length == new_pipeline.effects.length && - old_pipeline.effects.every((effect, i) => effect.id === new_pipeline.effects[i].id) - ) { - for (let i = 0; i < old_pipeline.effects.length; i++) { - const old_effect = old_pipeline.effects[i]; - const new_effect = new_pipeline.effects[i]; - const id = old_effect.id; - for (let key in old_effect.params) { - // if a key was removed, we emit to tell the effect to use the default value - if (!(key in new_effect.params)) - this._emit( - pipeline_id + '::effect-' + id + '-key-removed', key - ); - // if a key was updated, we emit to tell the effect to change its value - else if (old_effect.params[key] != new_effect.params[key]) - this._emit( - pipeline_id + '::effect-' + id + '-key-updated', key, new_effect.params[key] - ); - } - for (let key in new_effect.params) { - // if a key was added, we emit to tell the effect the key and its value - if (!(key in old_effect.params)) - this._emit( - pipeline_id + '::effect-' + id + '-key-added', key, new_effect.params[key] - ); - } - } - } - // if either the order has changed, or there are new effects, then rebuild it - else - this._emit(pipeline_id + '::pipeline-updated', new_pipeline); - } - } - - destroy() { - this.settings.PIPELINES_disconnect(); - } - - _emit(signal, ...args) { - this.emit(signal, ...args); - this._log(`signal: '${signal}', arguments: ${args}`); - } - - _log(str) { - if (this.settings.DEBUG) - console.log(`[Blur my Shell > pipelines] ${str}`); - } - - _warn(str) { - console.warn(`[Blur my Shell > pipelines] ${str}`); - } -} - -Signals.addSignalMethods(PipelinesManager.prototype); \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/settings.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/settings.js deleted file mode 100644 index 53f8497..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/settings.js +++ /dev/null @@ -1,363 +0,0 @@ -import GLib from 'gi://GLib'; -const Signals = imports.signals; - -/// An enum non-extensively describing the type of gsettings key. -export const Type = { - B: 'Boolean', - I: 'Integer', - D: 'Double', - S: 'String', - C: 'Color', - AS: 'StringArray', - PIPELINES: 'Pipelines' -}; - -/// An object to get and manage the gsettings preferences. -/// -/// Should be initialized with an array of keys, for example: -/// -/// let settings = new Settings([ -/// { type: Type.I, name: "panel-corner-radius" }, -/// { type: Type.B, name: "debug" } -/// ]); -/// -/// Each {type, name} object represents a gsettings key, which must be created -/// in the gschemas.xml file of the extension. -export const Settings = class Settings { - constructor(keys, settings) { - this.settings = settings; - this.keys = keys; - - this.keys.forEach(bundle => { - let component = this; - let component_settings = settings; - if (bundle.component !== "general") { - let bundle_component = bundle.component.replaceAll('-', '_'); - this[bundle_component] = { - settings: this.settings.get_child(bundle.component) - }; - component = this[bundle_component]; - component_settings = settings.get_child(bundle.component); - } - - - bundle.schemas.forEach(key => { - let property_name = this.get_property_name(key.name); - - switch (key.type) { - case Type.B: - Object.defineProperty(component, property_name, { - get() { - return component_settings.get_boolean(key.name); - }, - set(v) { - component_settings.set_boolean(key.name, v); - } - }); - break; - - case Type.I: - Object.defineProperty(component, property_name, { - get() { - return component_settings.get_int(key.name); - }, - set(v) { - component_settings.set_int(key.name, v); - } - }); - break; - - case Type.D: - Object.defineProperty(component, property_name, { - get() { - return component_settings.get_double(key.name); - }, - set(v) { - component_settings.set_double(key.name, v); - } - }); - break; - - case Type.S: - Object.defineProperty(component, property_name, { - get() { - return component_settings.get_string(key.name); - }, - set(v) { - component_settings.set_string(key.name, v); - } - }); - break; - - case Type.C: - Object.defineProperty(component, property_name, { - // returns the array [red, blue, green, alpha] with - // values between 0 and 1 - get() { - let val = component_settings.get_value(key.name); - return val.deep_unpack(); - }, - // takes an array [red, blue, green, alpha] with - // values between 0 and 1 - set(v) { - let val = new GLib.Variant("(dddd)", v); - component_settings.set_value(key.name, val); - } - }); - break; - - case Type.AS: - Object.defineProperty(component, property_name, { - get() { - let val = component_settings.get_value(key.name); - return val.deep_unpack(); - }, - set(v) { - let val = new GLib.Variant("as", v); - component_settings.set_value(key.name, val); - } - }); - break; - - case Type.PIPELINES: - Object.defineProperty(component, property_name, { - get() { - let pips = component_settings.get_value(key.name).deep_unpack(); - Object.keys(pips).forEach(pipeline_id => { - let pipeline = pips[pipeline_id]; - - if (!('name' in pipeline)) { - this._warn('impossible to get pipelines, pipeline has not name, resetting'); - component[property_name + '_reset'](); - return component[property_name]; - } - let name = pipeline.name.deep_unpack(); - if (typeof name !== 'string') { - this._warn('impossible to get pipelines, pipeline name is not a string, resetting'); - component[property_name + '_reset'](); - return component[property_name]; - } - - if (!('effects' in pipeline)) { - this._warn('impossible to get pipelines, pipeline has not effects, resetting'); - component[property_name + '_reset'](); - return component[property_name]; - } - let effects = pipeline.effects.deep_unpack(); - if (!Array.isArray(effects)) { - this._warn('impossible to get pipelines, pipeline effects is not an array, resetting'); - component[property_name + '_reset'](); - return component[property_name]; - } - - effects = effects.map(effect => effect.deep_unpack()); - effects.forEach(effect => { - if (!('type' in effect)) { - this._warn('impossible to get pipelines, effect has not type, resetting'); - component[property_name + '_reset'](); - return component[property_name]; - } - let type = effect.type.deep_unpack(); - if (typeof type !== 'string') { - this._warn('impossible to get pipelines, effect type is not a string, resetting'); - component[property_name + '_reset'](); - return component[property_name]; - } - - if (!('id' in effect)) { - this._warn('impossible to get pipelines, effect has not id, resetting'); - component[property_name + '_reset'](); - return component[property_name]; - } - let id = effect.id.deep_unpack(); - if (typeof id !== 'string') { - this._warn('impossible to get pipelines, effect id is not a string, resetting'); - component[property_name + '_reset'](); - return component[property_name]; - } - - let params = {}; - if ('params' in effect) - params = effect.params.deep_unpack(); - if (!(params && typeof params === 'object' && params.constructor === Object)) { - this._warn('impossible to get pipelines, effect params is not an object, resetting'); - component[property_name + '_reset'](); - return component[property_name]; - } - Object.keys(params).forEach(param_key => { - params[param_key] = params[param_key].deep_unpack(); - }); - - effect.type = type; - effect.id = id; - effect.params = params; - }); - pipeline.name = name; - pipeline.effects = effects; - }); - return pips; - }, - set(pips) { - let pipelines = {}; - Object.keys(pips).forEach(pipeline_id => { - let pipeline = pips[pipeline_id]; - if (!(pipeline && typeof pipeline === 'object' && pipeline.constructor === Object)) { - this._warn('impossible to set pipelines, pipeline is not an object'); - return; - } - - if (!('name' in pipeline)) { - this._warn('impossible to set pipelines, pipeline has no name'); - return; - } - if (typeof pipeline.name !== 'string') { - this._warn('impossible to set pipelines, pipeline name is not a string'); - return; - } - - if (!('effects' in pipeline)) { - this._warn('impossible to set pipelines, pipeline has no effect'); - return; - } - if (!Array.isArray(pipeline.effects)) { - this._warn('impossible to set pipelines, effects is not an array'); - return; - } - - let gvariant_effects = []; - pipeline.effects.forEach(effect => { - if (!(effect instanceof Object)) { - this._warn('impossible to set pipelines, effect is not an object'); - return; - } - - if (!('type' in effect)) { - this._warn('impossible to set pipelines, effect has not type'); - return; - } - if (typeof effect.type !== 'string') { - this._warn('impossible to set pipelines, effect type is not a string'); - return; - } - - if (!('id' in effect)) { - this._warn('impossible to set pipelines, effect has not id'); - return; - } - if (typeof effect.id !== 'string') { - this._warn('impossible to set pipelines, effect id is not a string'); - return; - } - - let params = {}; - if ('params' in effect) { - params = effect.params; - } - let gvariant_params = {}; - Object.keys(params).forEach(param_key => { - let param = params[param_key]; - if (typeof param === 'boolean') - gvariant_params[param_key] = GLib.Variant.new_boolean(param); - else if (typeof param === 'number') { - if (Number.isInteger(param)) - gvariant_params[param_key] = GLib.Variant.new_int32(param); - else - gvariant_params[param_key] = GLib.Variant.new_double(param); - } else if (typeof param === 'string') - gvariant_params[param_key] = GLib.Variant.new_string(param); - else if (Array.isArray(param) && param.length == 4) - gvariant_params[param_key] = new GLib.Variant("(dddd)", param); - else - this._warn('impossible to set pipeline, effect parameter type is unknown'); - }); - - gvariant_effects.push( - new GLib.Variant("a{sv}", { - type: GLib.Variant.new_string(effect.type), - id: GLib.Variant.new_string(effect.id), - params: new GLib.Variant("a{sv}", gvariant_params) - }) - ); - }); - - pipelines[pipeline_id] = { - name: GLib.Variant.new_string(pipeline.name), - effects: new GLib.Variant("av", gvariant_effects) - }; - }); - let val = new GLib.Variant("a{sa{sv}}", pipelines); - component_settings.set_value(key.name, val); - } - }); - break; - } - - - component[property_name + '_reset'] = function () { - return component_settings.reset(key.name); - }; - - component[property_name + '_signal_ids'] = []; - component[property_name + '_changed'] = function (cb) { - component[property_name + '_signal_ids'].push( - component_settings.connect('changed::' + key.name, cb) - ); - }; - - component[property_name + '_disconnect'] = function () { - component[property_name + '_signal_ids'].forEach( - id => component_settings.disconnect(id) - ); - component[property_name + '_signal_ids'] = []; - }; - }); - }); - }; - - /// Reset the preferences. - reset() { - this.keys.forEach(bundle => { - let component = this; - if (bundle.component !== "general") { - let bundle_component = bundle.component.replaceAll('-', '_'); - component = this[bundle_component]; - } - - bundle.schemas.forEach(key => { - let property_name = this.get_property_name(key.name); - component[property_name + '_reset'](); - }); - }); - - this.emit('reset', true); - } - - /// From the gschema name, returns the name of the associated property on - /// the Settings object. - get_property_name(name) { - return name.replaceAll('-', '_').toUpperCase(); - } - - /// Remove all connections managed by the Settings object, i.e. created with - /// `settings.PROPERTY_changed(callback)`. - disconnect_all_settings() { - this.keys.forEach(bundle => { - let component = this; - if (bundle.component !== "general") { - let bundle_component = bundle.component.replaceAll('-', '_'); - component = this[bundle_component]; - } - - bundle.schemas.forEach(key => { - let property_name = this.get_property_name(key.name); - component[property_name + '_disconnect'](); - }); - }); - } - - _warn(str) { - console.warn(`[Blur my Shell > settings] ${str}`); - } -}; - -Signals.addSignalMethods(Settings.prototype); \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/settings_updater.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/settings_updater.js deleted file mode 100644 index 2affbc1..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/settings_updater.js +++ /dev/null @@ -1,40 +0,0 @@ -import { Settings } from './settings.js'; -import { KEYS, DEPRECATED_KEYS } from './keys.js'; - -const CURRENT_SETTINGS_VERSION = 2; - -export function update_from_old_settings(gsettings) { - const preferences = new Settings(KEYS, gsettings); - const deprecated_preferences = new Settings(DEPRECATED_KEYS, gsettings); - const old_version = preferences.settings.get_int('settings-version'); - - if (old_version < CURRENT_SETTINGS_VERSION) { - // set artifacts hacks to be 1 at most, as it should be suitable now that most big bugs have - // been resolved (and especially because hack levels to 2 now means disabling clipped - // redraws entirely, which is very much not what we want for users that update) - if (preferences.HACKS_LEVEL > 1) - preferences.HACKS_LEVEL = 1; - - // enable dash-to-dock blurring, as most disabled it due to the lack of rounded corners; set - // it to static blur by default too and with transparent background - preferences.dash_to_dock.BLUR = true; - preferences.dash_to_dock.STATIC_BLUR = true; - preferences.dash_to_dock.STYLE_DASH_TO_DOCK = 0; - - // 'customize' has been removed: we merge the current used settings - ['appfolder', 'panel', 'dash_to_dock', 'applications', 'window_list'].forEach( - component_name => { - const deprecated_component = deprecated_preferences[component_name]; - const new_component = preferences[component_name]; - if (!deprecated_component.CUSTOMIZE) { - new_component.SIGMA = deprecated_preferences.SIGMA; - new_component.BRIGHTNESS = deprecated_preferences.BRIGHTNESS; - } - }); - - // remove old preferences in order not to clutter the gsettings - deprecated_preferences.reset(); - } - - preferences.settings.set_int('settings-version', CURRENT_SETTINGS_VERSION); -} \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/utils.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/utils.js deleted file mode 100644 index 0277e0e..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/utils.js +++ /dev/null @@ -1,38 +0,0 @@ -import GLib from 'gi://GLib'; - -export const IS_IN_PREFERENCES = typeof global === 'undefined'; - -// Taken from https://github.com/Schneegans/Burn-My-Windows/blob/main/src/utils.js -// This method can be used to import a module in the GNOME Shell process only. This -// is useful if you want to use a module in extension.js, but not in the preferences -// process. This method returns null if it is called in the preferences process. -export async function import_in_shell_only(module) { - if (IS_IN_PREFERENCES) - return null; - return (await import(module)).default; -} - -// In use for the effects, to prevent boilerplate code -export function setup_params(outer_this, params) { - // setup each parameter, either with the given or the default value - for (const params_name in outer_this.constructor.default_params) { - outer_this["_" + params_name] = null; - outer_this[params_name] = params_name in params ? - params[params_name] : - outer_this.constructor.default_params[params_name]; - } -}; - -export const get_shader_source = (Shell, shader_filename, self_uri) => { - if (!Shell) - return; - const shader_path = GLib.filename_from_uri( - GLib.uri_resolve_relative(self_uri, shader_filename, GLib.UriFlags.NONE) - )[0]; - try { - return Shell.get_file_contents_utf8_sync(shader_path); - } catch (e) { - console.warn(`[Blur my Shell > effect] error loading shader from ${shader_path}: ${e}`); - return null; - } -}; \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/dbus/client.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/dbus/client.js deleted file mode 100644 index 3867b3a..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/dbus/client.js +++ /dev/null @@ -1,58 +0,0 @@ -import Gio from 'gi://Gio'; - -const bus_name = 'org.gnome.Shell'; -const iface_name = 'dev.aunetx.BlurMyShell'; -const obj_path = '/dev/aunetx/BlurMyShell'; - - -/// Call pick() from the DBus service, it will open the Inspector from -/// gnome-shell to pick an actor on stage. -export function pick() { - Gio.DBus.session.call( - bus_name, - obj_path, - iface_name, - 'pick', - null, - null, - Gio.DBusCallFlags.NO_AUTO_START, - -1, - null, - null - ); -} - -/// Connect to DBus 'picking' signal, which will be emitted when the inspector -/// is picking a window. -export function on_picking(cb) { - const id = Gio.DBus.session.signal_subscribe( - bus_name, - iface_name, - 'picking', - obj_path, - null, - Gio.DBusSignalFlags.NONE, - _ => { - cb(); - Gio.DBus.session.signal_unsubscribe(id); - } - ); -} - -/// Connect to DBus 'picked' signal, which will be emitted when a window is -/// picked. -export function on_picked(cb) { - const id = Gio.DBus.session.signal_subscribe( - bus_name, - iface_name, - 'picked', - obj_path, - null, - Gio.DBusSignalFlags.NONE, - (conn, sender, obj_path, iface, signal, params) => { - const val = params.get_child_value(0); - cb(val.get_string()[0]); - Gio.DBus.session.signal_unsubscribe(id); - } - ); -} diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/dbus/iface.xml b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/dbus/iface.xml deleted file mode 100644 index 4f298ad..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/dbus/iface.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/dbus/services.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/dbus/services.js deleted file mode 100644 index 4b1f4f0..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/dbus/services.js +++ /dev/null @@ -1,93 +0,0 @@ -import Gio from 'gi://Gio'; -import GLib from 'gi://GLib'; -import * as Main from 'resource:///org/gnome/shell/ui/main.js'; -import * as LookingGlass from 'resource:///org/gnome/shell/ui/lookingGlass.js'; - - -export const ApplicationsService = class ApplicationsService { - constructor() { - let decoder = new TextDecoder(); - let path = GLib.filename_from_uri(GLib.uri_resolve_relative( - import.meta.url, 'iface.xml', GLib.UriFlags.NONE) - )[0]; - let [, buffer] = GLib.file_get_contents(path); - let iface = decoder.decode(buffer); - GLib.free(buffer); - - this.DBusImpl = Gio.DBusExportedObject.wrapJSObject(iface, this); - } - - /// Pick Window for Preferences Page, exported to DBus client. - pick() { - // emit `picking` signal to know we are listening - const send_picking_signal = _ => - this.DBusImpl.emit_signal( - 'picking', - null - ); - - // emit `picked` signal to send wm_class - const send_picked_signal = wm_class => - this.DBusImpl.emit_signal( - 'picked', - new GLib.Variant('(s)', [wm_class]) - ); - - // notify the preferences that we are listening - send_picking_signal(); - - // A very interesting way to pick a window: - // 1. Open LookingGlass to mask all event handles of window - // 2. Use inspector to pick window, thats is also lookingGlass do - // 3. Close LookingGlass when done - // It will restore event handles of window - - // open then hide LookingGlass - const looking_class = Main.createLookingGlass(); - looking_class.open(); - looking_class.hide(); - - // inspect window now - const inspector = new LookingGlass.Inspector(Main.createLookingGlass()); - inspector.connect('target', (me, target, x, y) => { - // remove border effect when window is picked. - const effect_name = 'lookingGlass_RedBorderEffect'; - target - .get_effects() - .filter(e => e.toString().includes(effect_name)) - .forEach(e => target.remove_effect(e)); - - // get wm_class_instance property of window, then pass it to DBus - // client - const type_str = target.toString(); - - let actor = target; - if (type_str.includes('MetaSurfaceActor')) - actor = target.get_parent(); - - if (!actor.toString().includes('WindowActor')) - actor = actor.get_parent(); - - if (!actor.toString().includes('WindowActor')) - return send_picked_signal('window-not-found'); - - send_picked_signal( - actor.meta_window.get_wm_class() ?? 'window-not-found' - ); - }); - - // close LookingGlass when we're done - inspector.connect('closed', _ => looking_class.close()); - } - - export() { - this.DBusImpl.export( - Gio.DBus.session, - '/dev/aunetx/BlurMyShell' - ); - }; - - unexport() { - this.DBusImpl.unexport(); - } -}; diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/color.glsl b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/color.glsl deleted file mode 100644 index 5df6512..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/color.glsl +++ /dev/null @@ -1,111 +0,0 @@ -uniform sampler2D tex; -uniform float red; -uniform float green; -uniform float blue; -uniform float blend; -uniform int mode; - -const int NORMAL = 0; -const int MULTIPLY = 1; -const int SCREEN = 2; -const int OVERLAY = 3; -const int DARKEN = 4; -const int LIGHTEN = 5; -const int PLUS_DARKER = 6; -const int PLUS_LIGHTER = 7; -const int COLOR_DODGE = 8; -const int COLOR_BURN = 9; -const int HARD_LIGHT = 10; -const int SOFT_LIGHT = 11; -const int DIFFERENCE = 12; -const int EXCLUSION = 13; -const int HUE = 14; -const int SATURATION = 15; -const int COLOR = 16; -const int LUMINOSITY = 17; - -vec3 rgb_to_hsl(vec3 c) { - vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); - vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); - vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); - - float d = q.x - min(q.w, q.y); - float e = 1.0e-10; - return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); -} - -vec3 hsl_to_rgb(vec3 c) { - vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); - vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); - return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); -} - -float soft_light_channel(float base, float _blend) { - if (_blend < 0.5) { - return base - (1.0 - 2.0 * _blend) * base * (1.0 - base); - } else { - float d = (base < 0.25) - ? ((16.0 * base - 12.0) * base + 4.0) * base - : sqrt(base); - return base + (2.0 * _blend - 1.0) * (d - base); - } -} - -vec3 get_blend(vec3 base, vec3 _blend) { - if (mode == MULTIPLY) return base * _blend; - if (mode == SCREEN) return 1 - (1 - base) * (1 - _blend); - if (mode == OVERLAY) { - vec3 result; - result.r = base.r < 0.5 ? (2.0 * base.r * _blend.r) : (1.0 - 2.0 * (1.0 - base.r) * (1.0 - _blend.r)); - result.g = base.g < 0.5 ? (2.0 * base.g * _blend.g) : (1.0 - 2.0 * (1.0 - base.g) * (1.0 - _blend.g)); - result.b = base.b < 0.5 ? (2.0 * base.b * _blend.b) : (1.0 - 2.0 * (1.0 - base.b) * (1.0 - _blend.b)); - return result; - } - if (mode == DARKEN) return min(base, _blend); - if (mode == LIGHTEN) return max(base, _blend); - if (mode == PLUS_DARKER) return base + _blend - 1; - if (mode == PLUS_LIGHTER) return base + _blend; - if (mode == COLOR_DODGE) return base / (1 - _blend); - if (mode == COLOR_BURN) return 1 - (1 - base) / _blend; - if (mode == HARD_LIGHT) { - vec3 result; - result.r = _blend.r < 0.5 ? (2.0 * base.r * _blend.r) : (1.0 - 2.0 * (1.0 - base.r) * (1.0 - _blend.r)); - result.g = _blend.g < 0.5 ? (2.0 * base.g * _blend.g) : (1.0 - 2.0 * (1.0 - base.g) * (1.0 - _blend.g)); - result.b = _blend.b < 0.5 ? (2.0 * base.b * _blend.b) : (1.0 - 2.0 * (1.0 - base.b) * (1.0 - _blend.b)); - return result; - } - if (mode == SOFT_LIGHT) { - return vec3(soft_light_channel(base.r, _blend.r), soft_light_channel(base.g, _blend.g), soft_light_channel(base.b, _blend.b)); - } - if (mode == DIFFERENCE) return abs(base - _blend); - if (mode == EXCLUSION) return 0.5 - 2 * (base - 0.5) * (_blend - 0.5); - if (mode == HUE) { - vec3 base_hsl = rgb_to_hsl(base); - vec3 blend_hsl = rgb_to_hsl(_blend); - return hsl_to_rgb(vec3(blend_hsl.x, base_hsl.y, base_hsl.z)); - } - if (mode == SATURATION) { - vec3 base_hsl = rgb_to_hsl(base); - vec3 blend_hsl = rgb_to_hsl(_blend); - return hsl_to_rgb(vec3(base_hsl.x, blend_hsl.y, base_hsl.z)); - } - if (mode == COLOR) { - vec3 base_hsl = rgb_to_hsl(base); - vec3 blend_hsl = rgb_to_hsl(_blend); - return hsl_to_rgb(vec3(blend_hsl.x, blend_hsl.y, base_hsl.z)); - } - if (mode == LUMINOSITY) { - vec3 base_hsl = rgb_to_hsl(base); - vec3 blend_hsl = rgb_to_hsl(_blend); - return hsl_to_rgb(vec3(base_hsl.x, base_hsl.y, blend_hsl.z)); - } - return _blend; // For NORMAL -} - -void main() { - vec4 c = texture2D(tex, cogl_tex_coord_in[0].st); - vec3 pix_color = c.xyz; - vec3 color = get_blend(pix_color, vec3(red, green, blue)); - - cogl_color_out = vec4(mix(pix_color, color, blend), 1.); -} \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/color.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/color.js deleted file mode 100644 index 1f4bdf4..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/color.js +++ /dev/null @@ -1,168 +0,0 @@ -import GObject from 'gi://GObject'; - -import * as utils from '../conveniences/utils.js'; - -const Shell = await utils.import_in_shell_only('gi://Shell'); -const Clutter = await utils.import_in_shell_only('gi://Clutter'); - -const SHADER_FILENAME = 'color.glsl'; -const DEFAULT_PARAMS = { - color: [0.0, 0.0, 0.0, 0.0], - blend_mode: 0 -}; - - -export const ColorEffect = utils.IS_IN_PREFERENCES ? - { default_params: DEFAULT_PARAMS } : - new GObject.registerClass({ - GTypeName: "ColorEffect", - Properties: { - 'red': GObject.ParamSpec.double( - `red`, - `Red`, - `Red value in shader`, - GObject.ParamFlags.READWRITE, - 0.0, 1.0, - 0.0, - ), - 'green': GObject.ParamSpec.double( - `green`, - `Green`, - `Green value in shader`, - GObject.ParamFlags.READWRITE, - 0.0, 1.0, - 0.0, - ), - 'blue': GObject.ParamSpec.double( - `blue`, - `Blue`, - `Blue value in shader`, - GObject.ParamFlags.READWRITE, - 0.0, 1.0, - 0.0, - ), - 'blend': GObject.ParamSpec.double( - `blend`, - `Blend`, - `Amount of blending between the colors`, - GObject.ParamFlags.READWRITE, - 0.0, 1.0, - 0.0, - ), - 'blend_mode': GObject.ParamSpec.int( - `blend_mode`, - `Blend mode`, - `Blend mode`, - GObject.ParamFlags.READWRITE, - 0, 17, - 0, - ) - } - // Normal (0), Multiply (1), Screen (2), Overlay (3), Darken (4), Lighten (5), Plus darker (6), Plus lighter (7), Color dodge (8), - // Color burn (9), Hard light (10), Soft light (11), Difference (12), Exclusion (13), Hue (14), Saturation (15), Color (16), - // Luminosity (17) - }, class ColorEffect extends Clutter.ShaderEffect { - constructor(params) { - // initialize without color as a parameter - const { color, ...parent_params } = params; - super(parent_params); - - this._red = null; - this._green = null; - this._blue = null; - this._blend = null; - this._blend_mode = null; - - // set shader source - this._source = utils.get_shader_source(Shell, SHADER_FILENAME, import.meta.url); - if (this._source) - this.set_shader_source(this._source); - - // set params; utils.setup_params doesn't work here with color - this.color = 'color' in params ? color : this.constructor.default_params.color; - this.blend_mode = 'blend_mode' in params ? params.blend_mode : this.constructor.default_params.blend_mode; - } - - static get default_params() { - return DEFAULT_PARAMS; - } - - get red() { - return this._red; - } - - set red(value) { - if (this._red !== value) { - this._red = value; - - this.set_uniform_value('red', parseFloat(this._red - 1e-6)); - } - } - - get green() { - return this._green; - } - - set green(value) { - if (this._green !== value) { - this._green = value; - - this.set_uniform_value('green', parseFloat(this._green - 1e-6)); - } - } - - get blue() { - return this._blue; - } - - set blue(value) { - if (this._blue !== value) { - this._blue = value; - - this.set_uniform_value('blue', parseFloat(this._blue - 1e-6)); - } - } - - get blend() { - return this._blend; - } - - set blend(value) { - if (this._blend !== value) { - this._blend = value; - - this.set_uniform_value('blend', parseFloat(this._blend - 1e-6)); - this.set_enabled(this.blend > 0); - } - } - - get blend_mode() { - return this._blend_mode; - } - - set blend_mode(value) { - if (this._blend_mode !== value) { - this._blend_mode = value; - - this.set_uniform_value('mode', this._blend_mode); - } - } - - set color(rgba) { - let [r, g, b, a] = rgba; - this.red = r; - this.green = g; - this.blue = b; - this.blend = a; - } - - get color() { - return [this.red, this.green, this.blue, this.blend]; - } - - /// False set function, only cares about the color. Too hard to change. - set(params) { - this.color = params.color; - this.blend_mode = params.blend_mode; - } - }); \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/corner.glsl b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/corner.glsl deleted file mode 100644 index 760798a..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/corner.glsl +++ /dev/null @@ -1,93 +0,0 @@ -// Heavily based on https://github.com/yilozt/rounded-window-corners -// which is itself based on upstream Mutter code - -uniform sampler2D tex; -uniform float radius; -uniform float width; -uniform float height; -uniform bool corners_top; -uniform bool corners_bottom; - -uniform float clip_x0; -uniform float clip_y0; -uniform float clip_width; -uniform float clip_height; - -float circle_bounds(vec2 p, vec2 center, float clip_radius) { - vec2 delta = p - center; - float dist_squared = dot(delta, delta); - - float outer_radius = clip_radius + 0.5; - if (dist_squared >= (outer_radius * outer_radius)) - return 0.0; - - float inner_radius = clip_radius - 0.5; - if (dist_squared <= (inner_radius * inner_radius)) - return 1.0; - - return outer_radius - sqrt(dist_squared); -} - -vec4 getTexture(vec2 uv) { - if (uv.x < 2. / width) - uv.x = 2. / width; - - if (uv.y < 2. / height) - uv.y = 2. / height; - - if (uv.x > 1. - 3. / width) - uv.x = 1. - 3. / width; - - if (uv.y > 1. - 3. / height) - uv.y = 1. - 3. / height; - - return texture2D(tex, uv); -} - -float rounded_rect_coverage(vec2 p, vec4 bounds, float clip_radius) { - // Outside the bounds - if (p.x < bounds.x || p.x > bounds.z || p.y < bounds.y || p.y > bounds.w) { - return 0.; - } - - vec2 center; - - float center_left = bounds.x + clip_radius; - float center_right = bounds.z - clip_radius; - - if (p.x < center_left) - center.x = center_left + 2.; - else if (p.x > center_right) - center.x = center_right - 1.; - else - return 1.0; - - float center_top = bounds.y + clip_radius; - float center_bottom = bounds.w - clip_radius; - - if (corners_top && p.y < center_top) - center.y = center_top + 2.; - else if (corners_bottom && p.y > center_bottom) - center.y = center_bottom - 1.; - else - return 1.0; - - return circle_bounds(p, center, clip_radius); -} - -void main(void) { - vec2 uv = cogl_tex_coord_in[0].xy; - vec2 pos = uv * vec2(width, height); - vec4 c = getTexture(uv); - - vec4 bounds; - if (clip_width < 0. || clip_height < 0.) { - bounds = vec4(clip_x0, clip_y0, clip_x0 + width, clip_y0 + height); - } else { - bounds = vec4(clip_x0, clip_y0, clip_x0 + clip_width, clip_y0 + clip_height); - } - - float alpha = rounded_rect_coverage(pos, bounds, radius); - - cogl_color_out = vec4(c.rgb * alpha, min(alpha, c.a)); -} \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/corner.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/corner.js deleted file mode 100644 index 109be12..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/corner.js +++ /dev/null @@ -1,211 +0,0 @@ -import GObject from 'gi://GObject'; - -import * as utils from '../conveniences/utils.js'; -const St = await utils.import_in_shell_only('gi://St'); -const Shell = await utils.import_in_shell_only('gi://Shell'); -const Clutter = await utils.import_in_shell_only('gi://Clutter'); - -const SHADER_FILENAME = 'corner.glsl'; -const DEFAULT_PARAMS = { - radius: 12, width: 0, height: 0, - corners_top: true, corners_bottom: true, - clip: [0, 0, -1, -1] -}; - - -export const CornerEffect = utils.IS_IN_PREFERENCES ? - { default_params: DEFAULT_PARAMS } : - new GObject.registerClass({ - GTypeName: "CornerEffect", - Properties: { - 'radius': GObject.ParamSpec.double( - `radius`, - `Corner Radius`, - `Corner Radius`, - GObject.ParamFlags.READWRITE, - 0, Number.MAX_SAFE_INTEGER, - 12, - ), - 'width': GObject.ParamSpec.double( - `width`, - `Width`, - `Width`, - GObject.ParamFlags.READWRITE, - 0.0, Number.MAX_SAFE_INTEGER, - 0.0, - ), - 'height': GObject.ParamSpec.double( - `height`, - `Height`, - `Height`, - GObject.ParamFlags.READWRITE, - 0.0, Number.MAX_SAFE_INTEGER, - 0.0, - ), - 'corners_top': GObject.ParamSpec.boolean( - `corners_top`, - `Round top corners`, - `Round top corners`, - GObject.ParamFlags.READWRITE, - true, - ), - 'corners_bottom': GObject.ParamSpec.boolean( - `corners_bottom`, - `Round bottom corners`, - `Round bottom corners`, - GObject.ParamFlags.READWRITE, - true, - ), - // FIXME this works but it logs an error, because I'm not a double... - // I don't want to fiddle with GVariants again - 'clip': GObject.ParamSpec.double( - `clip`, - `Clip`, - `Clip`, - GObject.ParamFlags.READWRITE, - 0.0, Number.MAX_SAFE_INTEGER, - 0.0, - ), - } - }, class CornerEffect extends Clutter.ShaderEffect { - constructor(params) { - super(params); - - this._clip_x0 = null; - this._clip_y0 = null; - this._clip_width = null; - this._clip_height = null; - - utils.setup_params(this, params); - - // set shader source - this._source = utils.get_shader_source(Shell, SHADER_FILENAME, import.meta.url); - if (this._source) - this.set_shader_source(this._source); - - const theme_context = St.ThemeContext.get_for_stage(global.stage); - theme_context.connectObject('notify::scale-factor', _ => this.update_radius(), this); - } - - static get default_params() { - return DEFAULT_PARAMS; - } - - get radius() { - return this._radius; - } - - set radius(value) { - if (this._radius !== value) { - this._radius = value; - - this.update_radius(); - } - } - - update_radius() { - const theme_context = St.ThemeContext.get_for_stage(global.stage); - let radius = Math.min( - this.radius * theme_context.scale_factor, - this.width / 2, this.height / 2 - ); - if (this._clip_width >= 0 || this._clip_height >= 0) - radius = Math.min(radius, this._clip_width / 2, this._clip_height / 2); - - this.set_uniform_value('radius', parseFloat(radius - 1e-6)); - } - - get width() { - return this._width; - } - - set width(value) { - if (this._width !== value) { - this._width = value; - - this.set_uniform_value('width', parseFloat(this._width + 3.0 - 1e-6)); - this.update_radius(); - } - } - - get height() { - return this._height; - } - - set height(value) { - if (this._height !== value) { - this._height = value; - - this.set_uniform_value('height', parseFloat(this._height + 3.0 - 1e-6)); - this.update_radius(); - } - } - - get corners_top() { - return this._corners_top; - } - - set corners_top(value) { - if (this._corners_top !== value) { - this._corners_top = value; - - this.set_uniform_value('corners_top', this._corners_top ? 1 : 0); - } - } - - get corners_bottom() { - return this._corners_bottom; - } - - set corners_bottom(value) { - if (this._corners_bottom !== value) { - this._corners_bottom = value; - - this.set_uniform_value('corners_bottom', this._corners_bottom ? 1 : 0); - } - } - - get clip() { - return [this._clip_x0, this._clip_y0, this._clip_width, this._clip_height]; - } - - set clip(value) { - [this._clip_x0, this._clip_y0, this._clip_width, this._clip_height] = value; - this.set_uniform_value('clip_x0', parseFloat(this._clip_x0 - 1e-6)); - this.set_uniform_value('clip_y0', parseFloat(this._clip_y0 - 1e-6)); - this.set_uniform_value('clip_width', parseFloat(this._clip_width + 3 - 1e-6)); - this.set_uniform_value('clip_height', parseFloat(this._clip_height + 3 - 1e-6)); - this.update_radius(); - } - - vfunc_set_actor(actor) { - if (this._actor_connection_size_id) { - let old_actor = this.get_actor(); - old_actor?.disconnect(this._actor_connection_size_id); - } - if (this._actor_connection_clip_rect_id) { - let old_actor = this.get_actor(); - old_actor?.disconnect(this._actor_connection_clip_rect_id); - } - - if (actor) { - this.width = actor.width; - this.height = actor.height; - this._actor_connection_size_id = actor.connect('notify::size', _ => { - this.width = actor.width; - this.height = actor.height; - }); - - this.clip = actor.has_clip ? actor.get_clip() : [0, 0, -10, -10]; - this._actor_connection_clip_rect_id = actor.connect('notify::clip-rect', _ => { - this.clip = actor.has_clip ? actor.get_clip() : [0, 0, -10, -10]; - }); - } - else { - this._actor_connection_size_id = null; - this._actor_connection_clip_rect_id = null; - } - - super.vfunc_set_actor(actor); - } - }); \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/derivative.glsl b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/derivative.glsl deleted file mode 100644 index 64c1682..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/derivative.glsl +++ /dev/null @@ -1,71 +0,0 @@ -uniform sampler2D tex; -uniform int operation; -uniform float width; -uniform float height; - -#define CORRECTION 2.25 -#define SIZE_ADDITION 3 - -vec4 get_texture_at_position(vec2 position) { - vec2 raw_position = position + vec2(CORRECTION, CORRECTION); - vec2 raw_uv = raw_position / vec2(width + SIZE_ADDITION, height + SIZE_ADDITION); - - return texture2D(tex, raw_uv); -} - -vec4 try_get_texture_at_position(vec2 position, inout int count) { - if (any(greaterThanEqual(position, vec2(width, height))) || - any(lessThan(position, vec2(0, 0)))) { - return vec4(0); - } else { - count++; - return get_texture_at_position(position); - } -} - -ivec2 get_corrected_position() { - vec2 raw_uv = cogl_tex_coord0_in.st; - vec2 raw_position = raw_uv * vec2(width + SIZE_ADDITION, height + SIZE_ADDITION); - return ivec2(raw_position - vec2(CORRECTION, CORRECTION)); -} - -void main() { - ivec2 corrected_position = get_corrected_position(); - - // 1-step derivative - if (operation == 0) { - vec4 color = vec4(0); - int c = 0; - color += try_get_texture_at_position(corrected_position + vec2(0, 1), c); - color -= try_get_texture_at_position(corrected_position + vec2(0, 0), c); - color += try_get_texture_at_position(corrected_position + vec2(1, 0), c); - color -= try_get_texture_at_position(corrected_position + vec2(0, 0), c); - if (c < 4) { - color = vec4(0); - } - cogl_color_out = vec4(color.xyz, 1); - } else - // 2-step derivative - if (operation == 1) { - vec4 color = vec4(0); - int c = 0; - color += try_get_texture_at_position(corrected_position + vec2(0, 1), c); - color -= try_get_texture_at_position(corrected_position + vec2(0, -1), c); - color += try_get_texture_at_position(corrected_position + vec2(1, 0), c); - color -= try_get_texture_at_position(corrected_position + vec2(-1, 0), c); - if (c < 4) { - color = vec4(0); - } - cogl_color_out = vec4(color.xyz / 2, 1); - } else - // laplacian - if (operation == 2) { - vec4 color = vec4(0); - color = -4 * get_texture_at_position(corrected_position); - color += get_texture_at_position(corrected_position + vec2(0, 1)); - color += get_texture_at_position(corrected_position + vec2(0, -1)); - color += get_texture_at_position(corrected_position + vec2(1, 0)); - color += get_texture_at_position(corrected_position + vec2(-1, 0)); - cogl_color_out = vec4(color.xyz, 1); - } -} \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/derivative.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/derivative.js deleted file mode 100644 index 04d6100..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/derivative.js +++ /dev/null @@ -1,120 +0,0 @@ -import GObject from 'gi://GObject'; - -import * as utils from '../conveniences/utils.js'; -const Shell = await utils.import_in_shell_only('gi://Shell'); -const Clutter = await utils.import_in_shell_only('gi://Clutter'); - -const SHADER_FILENAME = 'derivative.glsl'; -const DEFAULT_PARAMS = { - operation: 0, width: 0, height: 0 -}; - - -export const DerivativeEffect = utils.IS_IN_PREFERENCES ? - { default_params: DEFAULT_PARAMS } : - new GObject.registerClass({ - GTypeName: "DerivativeEffect", - Properties: { - 'operation': GObject.ParamSpec.int( - `operation`, - `Operation`, - `Operation`, - GObject.ParamFlags.READWRITE, - 0, 2, - 0, - ), - 'width': GObject.ParamSpec.double( - `width`, - `Width`, - `Width`, - GObject.ParamFlags.READWRITE, - 0.0, Number.MAX_SAFE_INTEGER, - 0.0, - ), - 'height': GObject.ParamSpec.double( - `height`, - `Height`, - `Height`, - GObject.ParamFlags.READWRITE, - 0.0, Number.MAX_SAFE_INTEGER, - 0.0, - ) - } - }, class DerivativeEffect extends Clutter.ShaderEffect { - constructor(params) { - super(params); - - utils.setup_params(this, params); - - // set shader source - this._source = utils.get_shader_source(Shell, SHADER_FILENAME, import.meta.url); - if (this._source) - this.set_shader_source(this._source); - } - - static get default_params() { - return DEFAULT_PARAMS; - } - - get operation() { - return this._operation; - } - - set operation(value) { - if (this._operation !== value) { - this._operation = value; - - this.set_uniform_value('operation', this._operation); - } - } - - get width() { - return this._width; - } - - set width(value) { - if (this._width !== value) { - this._width = value; - - this.set_uniform_value('width', parseFloat(this._width - 1e-6)); - } - } - - get height() { - return this._height; - } - - set height(value) { - if (this._height !== value) { - this._height = value; - - this.set_uniform_value('height', parseFloat(this._height - 1e-6)); - } - } - - vfunc_set_actor(actor) { - if (this._actor_connection_size_id) { - let old_actor = this.get_actor(); - old_actor?.disconnect(this._actor_connection_size_id); - } - if (actor) { - this.width = actor.width; - this.height = actor.height; - this._actor_connection_size_id = actor.connect('notify::size', _ => { - this.width = actor.width; - this.height = actor.height; - }); - } - else - this._actor_connection_size_id = null; - - super.vfunc_set_actor(actor); - } - - vfunc_paint_target(paint_node, paint_context) { - // force setting nearest-neighbour texture filtering - this.get_pipeline().set_layer_filters(0, 9728, 9728); - - super.vfunc_paint_target(paint_node, paint_context); - } - }); \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/downscale.glsl b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/downscale.glsl deleted file mode 100644 index 9871268..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/downscale.glsl +++ /dev/null @@ -1,76 +0,0 @@ -uniform sampler2D tex; -uniform int divider; -uniform float width; -uniform float height; -uniform int downsampling_mode; - -#define CORRECTION 2.25 -#define SIZE_ADDITION 3 - -vec4 get_texture_at_position(vec2 position) { - vec2 raw_position = position + vec2(CORRECTION, CORRECTION); - vec2 raw_uv = raw_position / vec2(width + SIZE_ADDITION, height + SIZE_ADDITION); - - return texture2D(tex, raw_uv); -} - -vec2 get_corrected_position() { - vec2 raw_uv = cogl_tex_coord0_in.st; - vec2 raw_position = raw_uv * vec2(width + SIZE_ADDITION, height + SIZE_ADDITION); - return raw_position - vec2(CORRECTION, CORRECTION); -} - -void main() { - ivec2 corrected_position = ivec2(get_corrected_position()); - vec2 multiplied_position = corrected_position * divider; - - if (any(greaterThan(multiplied_position, vec2(width, height)))) { - discard; - } - - // mode 0: boxcar downsampling - if (downsampling_mode == 0) { - - vec4 color = vec4(0.); - int count = 0; - for (int i = 0; i < divider; i++) { - for (int j = 0; j < divider; j++) { - vec2 lookup_position = multiplied_position + vec2(i, j); - if (all(greaterThanEqual(lookup_position, vec2(0, 0))) && - all(lessThan(lookup_position, vec2(width, height)))) { - color += get_texture_at_position(lookup_position); - count += 1; - } - } - } - cogl_color_out = color / count; - - } else - // mode 1: triangular downsampling - if (downsampling_mode == 1) { - - vec4 color = vec4(0.); - int count = 0; - int force = 1; - for (int i = 0; i < divider; i++) { - for (int j = 0; j < divider; j++) { - vec2 lookup_position = multiplied_position + vec2(i, j); - if (all(greaterThanEqual(lookup_position, vec2(0, 0))) && - all(lessThan(lookup_position, vec2(width, height)))) { - force = 1 + divider - int(abs(divider - i - j)); - color += get_texture_at_position(lookup_position) * force; - count += force; - } - } - } - cogl_color_out = color / count; - - } else - // mode 2: Dirac downsampling - if (downsampling_mode == 2) { - - vec2 lookup_position = min(multiplied_position + vec2(divider, divider) / 2, vec2(width - 1, height - 1)); - cogl_color_out = get_texture_at_position(lookup_position); - - } -} \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/downscale.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/downscale.js deleted file mode 100644 index 8103486..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/downscale.js +++ /dev/null @@ -1,140 +0,0 @@ -import GObject from 'gi://GObject'; - -import * as utils from '../conveniences/utils.js'; -const Shell = await utils.import_in_shell_only('gi://Shell'); -const Clutter = await utils.import_in_shell_only('gi://Clutter'); - -const SHADER_FILENAME = 'downscale.glsl'; -const DEFAULT_PARAMS = { - divider: 8, downsampling_mode: 0, width: 0, height: 0 -}; - - -export const DownscaleEffect = utils.IS_IN_PREFERENCES ? - { default_params: DEFAULT_PARAMS } : - new GObject.registerClass({ - GTypeName: "DownscaleEffect", - Properties: { - 'divider': GObject.ParamSpec.int( - `divider`, - `Divider`, - `Divider`, - GObject.ParamFlags.READWRITE, - 0, 64, - 8, - ), - 'downsampling_mode': GObject.ParamSpec.int( - `downsampling_mode`, - `Downsampling mode`, - `Downsampling mode`, - GObject.ParamFlags.READWRITE, - 0, 2, - 0, - ), - 'width': GObject.ParamSpec.double( - `width`, - `Width`, - `Width`, - GObject.ParamFlags.READWRITE, - 0.0, Number.MAX_SAFE_INTEGER, - 0.0, - ), - 'height': GObject.ParamSpec.double( - `height`, - `Height`, - `Height`, - GObject.ParamFlags.READWRITE, - 0.0, Number.MAX_SAFE_INTEGER, - 0.0, - ) - } - }, class DownscaleEffect extends Clutter.ShaderEffect { - constructor(params) { - super(params); - - utils.setup_params(this, params); - - // set shader source - this._source = utils.get_shader_source(Shell, SHADER_FILENAME, import.meta.url); - if (this._source) - this.set_shader_source(this._source); - } - - static get default_params() { - return DEFAULT_PARAMS; - } - - get divider() { - return this._divider; - } - - set divider(value) { - if (this._divider !== value) { - this._divider = value; - - this.set_uniform_value('divider', this._divider); - } - } - - get downsampling_mode() { - return this._downsampling_mode; - } - - set downsampling_mode(value) { - if (this._downsampling_mode !== value) { - this._downsampling_mode = value; - - this.set_uniform_value('downsampling_mode', this._downsampling_mode); - } - } - - get width() { - return this._width; - } - - set width(value) { - if (this._width !== value) { - this._width = value; - - this.set_uniform_value('width', parseFloat(this._width - 1e-6)); - } - } - - get height() { - return this._height; - } - - set height(value) { - if (this._height !== value) { - this._height = value; - - this.set_uniform_value('height', parseFloat(this._height - 1e-6)); - } - } - - vfunc_set_actor(actor) { - if (this._actor_connection_size_id) { - let old_actor = this.get_actor(); - old_actor?.disconnect(this._actor_connection_size_id); - } - if (actor) { - this.width = actor.width; - this.height = actor.height; - this._actor_connection_size_id = actor.connect('notify::size', _ => { - this.width = actor.width; - this.height = actor.height; - }); - } - else - this._actor_connection_size_id = null; - - super.vfunc_set_actor(actor); - } - - vfunc_paint_target(paint_node, paint_context) { - // force setting nearest-neighbour texture filtering - this.get_pipeline().set_layer_filters(0, 9728, 9728); - - super.vfunc_paint_target(paint_node, paint_context); - } - }); \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/effects.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/effects.js deleted file mode 100644 index e35588d..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/effects.js +++ /dev/null @@ -1,362 +0,0 @@ -import { NativeDynamicBlurEffect } from '../effects/native_dynamic_gaussian_blur.js'; -import { NativeStaticBlurEffect } from '../effects/native_static_gaussian_blur.js'; -import { GaussianBlurEffect } from '../effects/gaussian_blur.js'; -import { MonteCarloBlurEffect } from '../effects/monte_carlo_blur.js'; -import { ColorEffect } from '../effects/color.js'; -import { NoiseEffect } from '../effects/noise.js'; -import { CornerEffect } from '../effects/corner.js'; -import { DownscaleEffect } from './downscale.js'; -import { UpscaleEffect } from './upscale.js'; -import { PixelizeEffect } from './pixelize.js'; -import { DerivativeEffect } from './derivative.js'; -import { RgbToHslEffect } from './rgb_to_hsl.js'; -import { HslToRgbEffect } from './hsl_to_rgb.js'; - -// We do in this way because I've not found another way to store our preferences in a dictionnary -// while calling `gettext` on it while in preferences. Not so pretty, but works. -export function get_effects_groups(_ = _ => "") { - return { - blur_effects: { - name: _("Blur effects"), - contains: [ - "native_static_gaussian_blur", - "gaussian_blur", - "monte_carlo_blur" - ] - }, - texture_effects: { - name: _("Texture effects"), - contains: [ - "downscale", - "upscale", - "pixelize", - "derivative", - "noise", - "color", - "rgb_to_hsl", - "hsl_to_rgb" - ] - }, - shape_effects: { - name: _("Shape effects"), - contains: [ - "corner" - ] - } - }; -}; - -export function get_supported_effects(_ = () => "") { - return { - native_dynamic_gaussian_blur: { - class: NativeDynamicBlurEffect - }, - - native_static_gaussian_blur: { - class: NativeStaticBlurEffect, - name: _("Native gaussian blur"), - description: _("An optimized blur effect that smoothly blends pixels within a given radius."), - is_advanced: false, - editable_params: { - unscaled_radius: { - name: _("Radius"), - description: _("The intensity of the blur effect."), - type: "float", - min: 0., - max: 100., - increment: 1.0, - big_increment: 10., - digits: 0 - }, - brightness: { - name: _("Brightness"), - description: _("The brightness of the blur effect, a high value might make the text harder to read."), - type: "float", - min: 0., - max: 1., - increment: 0.01, - big_increment: 0.1, - digits: 2 - }, - } - }, - - gaussian_blur: { - class: GaussianBlurEffect, - name: _("Gaussian blur (advanced effect)"), - description: _("A blur effect that smoothly blends pixels within a given radius. This effect is more precise, but way less optimized."), - is_advanced: true, - editable_params: { - radius: { - name: _("Radius"), - description: _("The intensity of the blur effect. The bigger it is, the slower it will be."), - type: "float", - min: 0., - max: 100., - increment: .1, - big_increment: 10., - digits: 1 - }, - brightness: { - name: _("Brightness"), - description: _("The brightness of the blur effect, a high value might make the text harder to read."), - type: "float", - min: 0., - max: 1., - increment: 0.01, - big_increment: 0.1, - digits: 2 - }, - } - }, - - monte_carlo_blur: { - class: MonteCarloBlurEffect, - name: _("Monte Carlo blur"), - description: _("A blur effect that mimics a random walk, by picking pixels further and further away from its origin and mixing them all together."), - is_advanced: false, - editable_params: { - radius: { - name: _("Radius"), - description: _("The maximum travel distance for each step in the random walk. A higher value will make the blur more randomized."), - type: "float", - min: 0., - max: 10., - increment: 0.01, - big_increment: 0.1, - digits: 2 - }, - iterations: { - name: _("Iterations"), - description: _("The number of iterations. The more there are, the smoother the blur is."), - type: "integer", - min: 0, - max: 50, - increment: 1 - }, - brightness: { - name: _("Brightness"), - description: _("The brightness of the blur effect, a high value might make the text harder to read."), - type: "float", - min: 0., - max: 1., - increment: 0.01, - big_increment: 0.1, - digits: 2 - }, - use_base_pixel: { - name: _("Use base pixel"), - description: _("Whether or not the original pixel is counted for the blur. If it is, the image will be more legible."), - type: "boolean" - }, - prefer_closer_pixels: { - name: _("Prefer closer pixels"), - description: _("Whether or not the pixels that are closer to the original pixel will have more weight."), - type: "boolean" - } - } - }, - - color: { - class: ColorEffect, - name: _("Color"), - description: _("An effect that blends a color into the pipeline."), - is_advanced: false, - // TODO make this RGB + blend - editable_params: { - color: { - name: _("Color"), - description: _("The color to blend in. The blending amount is controled by the opacity of the color."), - type: "rgba" - }, - blend_mode: { - name: _("Blend mode"), - description: _("How the color is blended in."), - type: "dropdown", - options: [ - _("Normal"), - _("Multiply"), - _("Screen"), - _("Overlay"), - _("Darken"), - _("Lighten"), - _("Plus darker"), - _("Plus lighter"), - _("Color dodge"), - _("Color burn"), - _("Hard light"), - _("Soft light"), - _("Difference"), - _("Exclusion"), - _("Hue"), - _("Saturation"), - _("Color"), - _("Luminosity") - ] - } - } - }, - - pixelize: { - class: PixelizeEffect, - name: _("Pixelize"), - description: _("An effect that pixelizes the image."), - is_advanced: false, - editable_params: { - factor: { - name: _("Factor"), - description: _("How much to scale down the image."), - type: "integer", - min: 1, - max: 50, - increment: 1 - }, - downsampling_mode: { - name: _("Downsampling mode"), - description: _("The downsampling method that is used."), - type: "dropdown", - options: [ - _("Boxcar"), - _("Triangular"), - _("Dirac") - ] - } - } - }, - - downscale: { - class: DownscaleEffect, - name: _("Downscale (advanced effect)"), - description: _("An effect that downscales the image and put it on the top-left corner."), - is_advanced: true, - editable_params: { - divider: { - name: _("Factor"), - description: _("How much to scale down the image."), - type: "integer", - min: 1, - max: 50, - increment: 1 - }, - downsampling_mode: { - name: _("Downsampling mode"), - description: _("The downsampling method that is used."), - type: "dropdown", - options: [ - _("Boxcar"), - _("Triangular"), - _("Dirac") - ] - } - } - }, - - upscale: { - class: UpscaleEffect, - name: _("Upscale (advanced effect)"), - description: _("An effect that upscales the image from the top-left corner."), - is_advanced: true, - editable_params: { - factor: { - name: _("Factor"), - description: _("How much to scale up the image."), - type: "integer", - min: 1, - max: 50, - increment: 1 - } - } - }, - - derivative: { - class: DerivativeEffect, - name: _("Derivative"), - description: _("Apply a spatial derivative, or a laplacian."), - is_advanced: false, - editable_params: { - operation: { - name: _("Operation"), - description: _("The mathematical operation to apply."), - type: "dropdown", - options: [ - _("1-step derivative"), - _("2-step derivative"), - _("Laplacian") - ] - } - } - }, - - noise: { - class: NoiseEffect, - name: _("Noise"), - description: _("An effect that adds a random noise. Prefer the Monte Carlo blur for a more organic effect if needed."), - is_advanced: false, - editable_params: { - noise: { - name: _("Noise"), - description: _("The amount of noise to add."), - type: "float", - min: 0., - max: 1., - increment: 0.01, - big_increment: 0.1, - digits: 2 - }, - lightness: { - name: _("Lightness"), - description: _("The luminosity of the noise. A setting of '1.0' will make the effect transparent."), - type: "float", - min: 0., - max: 2., - increment: 0.01, - big_increment: 0.1, - digits: 2 - } - } - }, - - rgb_to_hsl: { - class: RgbToHslEffect, - name: _("RGB to HSL (advanced effect)"), - description: _("Converts the image from RGBA colorspace to HSLA."), - is_advanced: true, - editable_params: {} - }, - - hsl_to_rgb: { - class: HslToRgbEffect, - name: _("HSL to RGB (advanced effect)"), - description: _("Converts the image from HSLA colorspace to RGBA."), - is_advanced: true, - editable_params: {} - }, - - corner: { - class: CornerEffect, - name: _("Corner"), - description: _("An effect that draws corners. Add it last not to have the other effects perturb the corners."), - is_advanced: false, - editable_params: { - radius: { - name: _("Radius"), - description: _("The radius of the corner. GNOME apps use a radius of 12 px by default."), - type: "integer", - min: 0, - max: 50, - increment: 1, - }, - corners_top: { - name: _("Top corners"), - description: _("Whether or not to round the top corners."), - type: "boolean" - }, - corners_bottom: { - name: _("Bottom corners"), - description: _("Whether or not to round the bottom corners."), - type: "boolean" - } - } - } - }; -}; \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/gaussian_blur.glsl b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/gaussian_blur.glsl deleted file mode 100644 index 809cc93..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/gaussian_blur.glsl +++ /dev/null @@ -1,70 +0,0 @@ -uniform sampler2D tex; -uniform float sigma; -uniform int dir; -uniform float brightness; -uniform float width; -uniform float height; - -vec4 getTexture(vec2 uv) { - if (uv.x < 3. / width) - uv.x = 3. / width; - - if (uv.y < 3. / height) - uv.y = 3. / height; - - if (uv.x > 1. - 3. / width) - uv.x = 1. - 3. / width; - - if (uv.y > 1. - 3. / height) - uv.y = 1. - 3. / height; - - return texture2D(tex, uv); -} - -void main(void) { - vec2 uv = cogl_tex_coord_in[0].xy; - vec2 direction = vec2(dir, (1.0 - dir)); - - float pixel_step; - if (dir == 0) - pixel_step = 1.0 / height; - else - pixel_step = 1.0 / width; - - vec3 gauss_coefficient; - gauss_coefficient.x = 1.0 / (sqrt(2.0 * 3.14159265) * sigma); - gauss_coefficient.y = exp(-0.5 / (sigma * sigma)); - gauss_coefficient.z = gauss_coefficient.y * gauss_coefficient.y; - - float gauss_coefficient_total = gauss_coefficient.x; - - vec4 ret = getTexture(uv) * gauss_coefficient.x; - gauss_coefficient.xy *= gauss_coefficient.yz; - - int n_steps = int(ceil(1.5 * sigma)) * 2; - - for (int i = 1; i <= n_steps; i += 2) { - float coefficient_subtotal = gauss_coefficient.x; - gauss_coefficient.xy *= gauss_coefficient.yz; - coefficient_subtotal += gauss_coefficient.x; - - float gauss_ratio = gauss_coefficient.x / coefficient_subtotal; - - float foffset = float(i) + gauss_ratio; - vec2 offset = direction * foffset * pixel_step; - - ret += getTexture(uv + offset) * coefficient_subtotal; - ret += getTexture(uv - offset) * coefficient_subtotal; - - gauss_coefficient_total += 2.0 * coefficient_subtotal; - gauss_coefficient.xy *= gauss_coefficient.yz; - } - vec4 outColor = ret / gauss_coefficient_total; - - // apply brightness on the second pass (dir==0 comes last) - if (dir == 0) { - outColor.rgb *= brightness; - } - - cogl_color_out = outColor; -} \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/gaussian_blur.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/gaussian_blur.js deleted file mode 100644 index 113a6fd..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/gaussian_blur.js +++ /dev/null @@ -1,213 +0,0 @@ -import GObject from 'gi://GObject'; - -import * as utils from '../conveniences/utils.js'; -const St = await utils.import_in_shell_only('gi://St'); -const Shell = await utils.import_in_shell_only('gi://Shell'); -const Clutter = await utils.import_in_shell_only('gi://Clutter'); - -const SHADER_FILENAME = 'gaussian_blur.glsl'; -const DEFAULT_PARAMS = { - radius: 30, brightness: .6, - width: 0, height: 0, direction: 0, chained_effect: null -}; - - -export const GaussianBlurEffect = utils.IS_IN_PREFERENCES ? - { default_params: DEFAULT_PARAMS } : - new GObject.registerClass({ - GTypeName: "GaussianBlurEffect", - Properties: { - 'radius': GObject.ParamSpec.double( - `radius`, - `Radius`, - `Blur radius`, - GObject.ParamFlags.READWRITE, - 0.0, 2000.0, - 30.0, - ), - 'brightness': GObject.ParamSpec.double( - `brightness`, - `Brightness`, - `Blur brightness`, - GObject.ParamFlags.READWRITE, - 0.0, 1.0, - 0.6, - ), - 'width': GObject.ParamSpec.double( - `width`, - `Width`, - `Width`, - GObject.ParamFlags.READWRITE, - 0.0, Number.MAX_SAFE_INTEGER, - 0.0, - ), - 'height': GObject.ParamSpec.double( - `height`, - `Height`, - `Height`, - GObject.ParamFlags.READWRITE, - 0.0, Number.MAX_SAFE_INTEGER, - 0.0, - ), - 'direction': GObject.ParamSpec.int( - `direction`, - `Direction`, - `Direction`, - GObject.ParamFlags.READWRITE, - 0, 1, - 0, - ), - 'chained_effect': GObject.ParamSpec.object( - `chained_effect`, - `Chained Effect`, - `Chained Effect`, - GObject.ParamFlags.READWRITE, - GObject.Object, - ), - } - }, class GaussianBlurEffect extends Clutter.ShaderEffect { - constructor(params) { - super(params); - - utils.setup_params(this, params); - - // set shader source - this._source = utils.get_shader_source(Shell, SHADER_FILENAME, import.meta.url); - if (this._source) - this.set_shader_source(this._source); - - const theme_context = St.ThemeContext.get_for_stage(global.stage); - theme_context.connectObject( - 'notify::scale-factor', _ => - this.set_uniform_value('sigma', - parseFloat(this.radius * theme_context.scale_factor / 2 - 1e-6) - ), - this - ); - } - - static get default_params() { - return DEFAULT_PARAMS; - } - - get radius() { - return this._radius; - } - - set radius(value) { - if (this._radius !== value) { - this._radius = value; - - const scale_factor = St.ThemeContext.get_for_stage(global.stage).scale_factor; - - // like Clutter, we use the assumption radius = 2*sigma - this.set_uniform_value('sigma', parseFloat(this._radius * scale_factor / 2 - 1e-6)); - this.set_enabled(this.radius > 0.); - - if (this.chained_effect) - this.chained_effect.radius = value; - } - } - - get brightness() { - return this._brightness; - } - - set brightness(value) { - if (this._brightness !== value) { - this._brightness = value; - - this.set_uniform_value('brightness', parseFloat(this._brightness - 1e-6)); - - if (this.chained_effect) - this.chained_effect.brightness = value; - } - } - - get width() { - return this._width; - } - - set width(value) { - if (this._width !== value) { - this._width = value; - - this.set_uniform_value('width', parseFloat(this._width + 3.0 - 1e-6)); - - if (this.chained_effect) - this.chained_effect.width = value; - } - } - - get height() { - return this._height; - } - - set height(value) { - if (this._height !== value) { - this._height = value; - - this.set_uniform_value('height', parseFloat(this._height + 3.0 - 1e-6)); - - if (this.chained_effect) - this.chained_effect.height = value; - } - } - - get direction() { - return this._direction; - } - - set direction(value) { - if (this._direction !== value) - this._direction = value; - } - - get chained_effect() { - return this._chained_effect; - } - - set chained_effect(value) { - this._chained_effect = value; - } - - vfunc_set_actor(actor) { - if (this._actor_connection_size_id) { - let old_actor = this.get_actor(); - old_actor?.disconnect(this._actor_connection_size_id); - } - if (actor) { - this.width = actor.width; - this.height = actor.height; - this._actor_connection_size_id = actor.connect('notify::size', _ => { - this.width = actor.width; - this.height = actor.height; - }); - } - else - this._actor_connection_size_id = null; - - super.vfunc_set_actor(actor); - - if (this.direction == 0) { - if (this.chained_effect) - this.chained_effect.get_actor()?.remove_effect(this.chained_effect); - else - this.chained_effect = new GaussianBlurEffect({ - radius: this.radius, - brightness: this.brightness, - width: this.width, - height: this.height, - direction: 1 - }); - if (actor !== null) - actor.add_effect(this.chained_effect); - } - } - - vfunc_paint_target(paint_node, paint_context) { - this.set_uniform_value("dir", this.direction); - - super.vfunc_paint_target(paint_node, paint_context); - } - }); \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/hsl_to_rgb.glsl b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/hsl_to_rgb.glsl deleted file mode 100644 index 58d2694..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/hsl_to_rgb.glsl +++ /dev/null @@ -1,14 +0,0 @@ -uniform sampler2D tex; - -vec3 hsl_to_rgb(vec3 c) { - vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); - vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); - return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); -} - -void main(void) { - vec2 uv = cogl_tex_coord_in[0].xy; - vec4 hsla = texture2D(tex, uv); - vec4 rgba = vec4(hsl_to_rgb(hsla.xyz), hsla.w); - cogl_color_out = rgba; -} \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/hsl_to_rgb.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/hsl_to_rgb.js deleted file mode 100644 index fe53114..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/hsl_to_rgb.js +++ /dev/null @@ -1,31 +0,0 @@ -import GObject from 'gi://GObject'; - -import * as utils from '../conveniences/utils.js'; -const Shell = await utils.import_in_shell_only('gi://Shell'); -const Clutter = await utils.import_in_shell_only('gi://Clutter'); - -const SHADER_FILENAME = 'hsl_to_rgb.glsl'; -const DEFAULT_PARAMS = {}; - - -export const HslToRgbEffect = utils.IS_IN_PREFERENCES ? - { default_params: DEFAULT_PARAMS } : - new GObject.registerClass({ - GTypeName: "HslToRgbEffect", - Properties: {} - }, class HslToRgbEffect extends Clutter.ShaderEffect { - constructor(params) { - super(params); - - utils.setup_params(this, params); - - // set shader source - this._source = utils.get_shader_source(Shell, SHADER_FILENAME, import.meta.url); - if (this._source) - this.set_shader_source(this._source); - } - - static get default_params() { - return DEFAULT_PARAMS; - } - }); \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/monte_carlo_blur.glsl b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/monte_carlo_blur.glsl deleted file mode 100644 index 27b3806..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/monte_carlo_blur.glsl +++ /dev/null @@ -1,52 +0,0 @@ -uniform sampler2D tex; -uniform float radius; -uniform int iterations; -uniform float brightness; -uniform float width; -uniform float height; -uniform bool use_base_pixel; -uniform bool prefer_closer_pixels; - -float srand(vec2 a) { - return sin(dot(a, vec2(1233.224, 1743.335))); -} - -float rand(inout float r) { - r = fract(3712.65 * r + 0.61432); - return (r - 0.5) * 2.0; -} - -void main() { - vec2 uv = cogl_tex_coord0_in.st; - vec2 p = 16 * radius / vec2(width, height); - float r = srand(uv); - - vec2 rv; - vec2 dir; - vec2 new_uv; - int strength; - - int count = 0; - vec4 c = vec4(0.); - - for (int i = 0; i < iterations; i++) { - rv.x = rand(r); - rv.y = rand(r) * 3.141592; - dir = vec2(cos(rv.y), sin(rv.y)); - new_uv = uv + rv.x * dir * p; - if (new_uv.x > 2. / width && new_uv.y > 2. / height && new_uv.x < 1. - 3. / width && new_uv.y < 1. - 3. / height) { - strength = prefer_closer_pixels ? (iterations - i)^2 : 1; - c += strength * texture2D(tex, new_uv); - count += strength; - } - } - - if (count == 0 || use_base_pixel) { - strength = prefer_closer_pixels ? (iterations + 1)^2 : 1; - c += strength * texture2D(tex, uv); - count += strength; - } - - c.xyz *= brightness; - cogl_color_out = c / count; -} \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/monte_carlo_blur.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/monte_carlo_blur.js deleted file mode 100644 index 0da56ed..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/monte_carlo_blur.js +++ /dev/null @@ -1,207 +0,0 @@ -import GObject from 'gi://GObject'; - -import * as utils from '../conveniences/utils.js'; -const St = await utils.import_in_shell_only('gi://St'); -const Shell = await utils.import_in_shell_only('gi://Shell'); -const Clutter = await utils.import_in_shell_only('gi://Clutter'); - -const SHADER_FILENAME = 'monte_carlo_blur.glsl'; -const DEFAULT_PARAMS = { - radius: 2., iterations: 5, brightness: .6, - width: 0, height: 0, use_base_pixel: true, - prefer_closer_pixels: true, -}; - - -export const MonteCarloBlurEffect = utils.IS_IN_PREFERENCES ? - { default_params: DEFAULT_PARAMS } : - new GObject.registerClass({ - GTypeName: "MonteCarloBlurEffect", - Properties: { - 'radius': GObject.ParamSpec.double( - `radius`, - `Radius`, - `Blur radius`, - GObject.ParamFlags.READWRITE, - 0.0, 2000.0, - 2.0, - ), - 'iterations': GObject.ParamSpec.int( - `iterations`, - `Iterations`, - `Blur iterations`, - GObject.ParamFlags.READWRITE, - 0, 64, - 5, - ), - 'brightness': GObject.ParamSpec.double( - `brightness`, - `Brightness`, - `Blur brightness`, - GObject.ParamFlags.READWRITE, - 0.0, 1.0, - 0.6, - ), - 'width': GObject.ParamSpec.double( - `width`, - `Width`, - `Width`, - GObject.ParamFlags.READWRITE, - 0.0, Number.MAX_SAFE_INTEGER, - 0.0, - ), - 'height': GObject.ParamSpec.double( - `height`, - `Height`, - `Height`, - GObject.ParamFlags.READWRITE, - 0.0, Number.MAX_SAFE_INTEGER, - 0.0, - ), - 'use_base_pixel': GObject.ParamSpec.boolean( - `use_base_pixel`, - `Use base pixel`, - `Use base pixel`, - GObject.ParamFlags.READWRITE, - true, - ), - 'prefer_closer_pixels': GObject.ParamSpec.boolean( - `prefer_closer_pixels`, - `Prefer closer pixels`, - `Prefer closer pixels`, - GObject.ParamFlags.READWRITE, - true, - ), - } - }, class MonteCarloBlurEffect extends Clutter.ShaderEffect { - constructor(params) { - super(params); - - utils.setup_params(this, params); - - // set shader source - this._source = utils.get_shader_source(Shell, SHADER_FILENAME, import.meta.url); - if (this._source) - this.set_shader_source(this._source); - - const theme_context = St.ThemeContext.get_for_stage(global.stage); - theme_context.connectObject( - 'notify::scale-factor', - _ => this.set_uniform_value('radius', - parseFloat(this._radius * theme_context.scale_factor - 1e-6) - ), - this - ); - } - - static get default_params() { - return DEFAULT_PARAMS; - } - - get radius() { - return this._radius; - } - - set radius(value) { - if (this._radius !== value) { - this._radius = value; - - const scale_factor = St.ThemeContext.get_for_stage(global.stage).scale_factor; - - this.set_uniform_value('radius', parseFloat(this._radius * scale_factor - 1e-6)); - this.set_enabled(this.radius > 0. && this.iterations > 0); - } - } - - get iterations() { - return this._iterations; - } - - set iterations(value) { - if (this._iterations !== value) { - this._iterations = value; - - this.set_uniform_value('iterations', this._iterations); - this.set_enabled(this.radius > 0. && this.iterations > 0); - } - } - - get brightness() { - return this._brightness; - } - - set brightness(value) { - if (this._brightness !== value) { - this._brightness = value; - - this.set_uniform_value('brightness', parseFloat(this._brightness - 1e-6)); - } - } - - get width() { - return this._width; - } - - set width(value) { - if (this._width !== value) { - this._width = value; - - this.set_uniform_value('width', parseFloat(this._width + 3.0 - 1e-6)); - } - } - - get height() { - return this._height; - } - - set height(value) { - if (this._height !== value) { - this._height = value; - - this.set_uniform_value('height', parseFloat(this._height + 3.0 - 1e-6)); - } - } - - get use_base_pixel() { - return this._use_base_pixel; - } - - set use_base_pixel(value) { - if (this._use_base_pixel !== value) { - this._use_base_pixel = value; - - this.set_uniform_value('use_base_pixel', this._use_base_pixel ? 1 : 0); - } - } - - get prefer_closer_pixels() { - return this._prefer_closer_pixels; - } - - set prefer_closer_pixels(value) { - if (this._prefer_closer_pixels !== value) { - this._prefer_closer_pixels = value; - - this.set_uniform_value('prefer_closer_pixels', this._prefer_closer_pixels ? 1 : 0); - } - } - - vfunc_set_actor(actor) { - if (this._actor_connection_size_id) { - let old_actor = this.get_actor(); - old_actor?.disconnect(this._actor_connection_size_id); - } - if (actor) { - this.width = actor.width; - this.height = actor.height; - this._actor_connection_size_id = actor.connect('notify::size', _ => { - this.width = actor.width; - this.height = actor.height; - }); - } - else - this._actor_connection_size_id = null; - - super.vfunc_set_actor(actor); - } - }); \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/native_dynamic_gaussian_blur.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/native_dynamic_gaussian_blur.js deleted file mode 100644 index 556ffa4..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/native_dynamic_gaussian_blur.js +++ /dev/null @@ -1,43 +0,0 @@ -import GObject from 'gi://GObject'; - -import * as utils from '../conveniences/utils.js'; -const St = await utils.import_in_shell_only('gi://St'); -const Shell = await utils.import_in_shell_only('gi://Shell'); - -const DEFAULT_PARAMS = { - unscaled_radius: 30, brightness: 0.6 -}; - - -export const NativeDynamicBlurEffect = utils.IS_IN_PREFERENCES ? - { default_params: DEFAULT_PARAMS } : - new GObject.registerClass({ - GTypeName: "NativeDynamicBlurEffect" - }, class NativeDynamicBlurEffect extends Shell.BlurEffect { - constructor(params) { - const { unscaled_radius, brightness, ...parent_params } = params; - super({ ...parent_params, mode: Shell.BlurMode.BACKGROUND }); - - this._theme_context = St.ThemeContext.get_for_stage(global.stage); - this._theme_context.connectObject( - 'notify::scale-factor', - _ => this.radius = this.unscaled_radius * this._theme_context.scale_factor, - this - ); - - utils.setup_params(this, params); - } - - static get default_params() { - return DEFAULT_PARAMS; - } - - get unscaled_radius() { - return this._unscaled_radius; - } - - set unscaled_radius(value) { - this._unscaled_radius = value; - this.radius = value * this._theme_context.scale_factor; - } - }); \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/native_static_gaussian_blur.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/native_static_gaussian_blur.js deleted file mode 100644 index fe003f5..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/native_static_gaussian_blur.js +++ /dev/null @@ -1,43 +0,0 @@ -import GObject from 'gi://GObject'; - -import * as utils from '../conveniences/utils.js'; -const St = await utils.import_in_shell_only('gi://St'); -const Shell = await utils.import_in_shell_only('gi://Shell'); - -const DEFAULT_PARAMS = { - unscaled_radius: 30, brightness: 0.6 -}; - - -export const NativeStaticBlurEffect = utils.IS_IN_PREFERENCES ? - { default_params: DEFAULT_PARAMS } : - new GObject.registerClass({ - GTypeName: "NativeStaticBlurEffect" - }, class NativeStaticBlurEffect extends Shell.BlurEffect { - constructor(params) { - const { unscaled_radius, brightness, ...parent_params } = params; - super({ ...parent_params, mode: Shell.BlurMode.ACTOR }); - - this._theme_context = St.ThemeContext.get_for_stage(global.stage); - this._theme_context.connectObject( - 'notify::scale-factor', - _ => this.radius = this.unscaled_radius * this._theme_context.scale_factor, - this - ); - - utils.setup_params(this, params); - } - - static get default_params() { - return DEFAULT_PARAMS; - } - - get unscaled_radius() { - return this._unscaled_radius; - } - - set unscaled_radius(value) { - this._unscaled_radius = value; - this.radius = value * this._theme_context.scale_factor; - } - }); \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/noise.glsl b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/noise.glsl deleted file mode 100644 index 6d701b6..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/noise.glsl +++ /dev/null @@ -1,20 +0,0 @@ -uniform sampler2D tex; -uniform float noise; -uniform float lightness; - -float PHI = 1.61803398874989484820459; -float SEED = 24; - -float noise_gen(in vec2 xy) { - float r = fract(tan(distance(xy * PHI, xy) * SEED) * xy.x); - r = r != r ? 0.0 : r; - return r; -} - -void main() { - vec4 c = texture2D(tex, cogl_tex_coord_in[0].st); - vec3 pix_color = c.xyz; - float blend = noise * (1. - noise_gen(gl_FragCoord.xy)); - - cogl_color_out = vec4(mix(pix_color, lightness * pix_color, blend), 1.); -} \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/noise.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/noise.js deleted file mode 100644 index 3049fa1..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/noise.js +++ /dev/null @@ -1,76 +0,0 @@ -import GObject from 'gi://GObject'; - -import * as utils from '../conveniences/utils.js'; -const Shell = await utils.import_in_shell_only('gi://Shell'); -const Clutter = await utils.import_in_shell_only('gi://Clutter'); - -const SHADER_FILENAME = 'noise.glsl'; -const DEFAULT_PARAMS = { - noise: 0.4, lightness: 0.4 -}; - - -export const NoiseEffect = utils.IS_IN_PREFERENCES ? - { default_params: DEFAULT_PARAMS } : - new GObject.registerClass({ - GTypeName: "NoiseEffect", - Properties: { - 'noise': GObject.ParamSpec.double( - `noise`, - `Noise`, - `Amount of noise integrated with the image`, - GObject.ParamFlags.READWRITE, - 0.0, 1.0, - 0.4, - ), - 'lightness': GObject.ParamSpec.double( - `lightness`, - `Lightness`, - `Lightness of the grey used for the noise`, - GObject.ParamFlags.READWRITE, - 0.0, 2.0, - 0.4, - ), - } - }, class NoiseEffect extends Clutter.ShaderEffect { - constructor(params) { - super(params); - - utils.setup_params(this, params); - - // set shader source - this._source = utils.get_shader_source(Shell, SHADER_FILENAME, import.meta.url); - if (this._source) - this.set_shader_source(this._source); - } - - static get default_params() { - return DEFAULT_PARAMS; - } - - get noise() { - return this._noise; - } - - set noise(value) { - if (this._noise !== value) { - this._noise = value; - - this.set_uniform_value('noise', parseFloat(this._noise - 1e-6)); - this.set_enabled(this.noise > 0. && this.lightness != 1); - } - } - - get lightness() { - return this._lightness; - } - - set lightness(value) { - if (this._lightness !== value) { - this._lightness = value; - - this.set_uniform_value('lightness', parseFloat(this._lightness - 1e-6)); - this.set_enabled(this.noise > 0. && this.lightness != 1); - } - } - }); \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/pixelize.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/pixelize.js deleted file mode 100644 index e9cad9b..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/pixelize.js +++ /dev/null @@ -1,88 +0,0 @@ -import GObject from 'gi://GObject'; - -import * as utils from '../conveniences/utils.js'; -const Clutter = await utils.import_in_shell_only('gi://Clutter'); - -import { UpscaleEffect } from './upscale.js'; -import { DownscaleEffect } from './downscale.js'; - -const DEFAULT_PARAMS = { - factor: 8, downsampling_mode: 0 -}; - - -export const PixelizeEffect = utils.IS_IN_PREFERENCES ? - { default_params: DEFAULT_PARAMS } : - new GObject.registerClass({ - GTypeName: "PixelizeEffect", - Properties: { - 'factor': GObject.ParamSpec.int( - `factor`, - `Factor`, - `Factor`, - GObject.ParamFlags.READWRITE, - 0, 64, - 8, - ), - 'downsampling_mode': GObject.ParamSpec.int( - `downsampling_mode`, - `Downsampling mode`, - `Downsampling mode`, - GObject.ParamFlags.READWRITE, - 0, 2, - 0, - ) - } - }, class PixelizeEffect extends Clutter.Effect { - constructor(params) { - super(); - - this.upscale_effect = new UpscaleEffect({}); - this.downscale_effect = new DownscaleEffect({}); - - utils.setup_params(this, params); - } - - static get default_params() { - return DEFAULT_PARAMS; - } - - get factor() { - // should be the same as `this.downscale_effect.divider` - return this.upscale_effect.factor; - } - - set factor(value) { - this.upscale_effect.factor = value; - this.downscale_effect.divider = value; - } - - get downsampling_mode() { - return this.downscale_effect.downsampling_mode; - } - - set downsampling_mode(value) { - this.downscale_effect.downsampling_mode = value; - } - - vfunc_set_actor(actor) { - // deattach effects from old actor - this.upscale_effect?.actor?.remove_effect(this.upscale_effect); - this.downscale_effect?.actor?.remove_effect(this.downscale_effect); - // attach effects to new actor - if (actor) { - if (this.upscale_effect) - actor.add_effect(this.upscale_effect); - if (this.downscale_effect) - actor.add_effect(this.downscale_effect); - } - - super.vfunc_set_actor(actor); - } - - vfunc_set_enabled(is_enabled) { - this.upscale_effect?.set_enabled(is_enabled); - this.downscale_effect?.set_enabled(is_enabled); - super.vfunc_set_enabled(is_enabled); - } - }); \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/rgb_to_hsl.glsl b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/rgb_to_hsl.glsl deleted file mode 100644 index b7a35ac..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/rgb_to_hsl.glsl +++ /dev/null @@ -1,18 +0,0 @@ -uniform sampler2D tex; - -vec3 rgb_to_hsl(vec3 c) { - vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); - vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); - vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); - - float d = q.x - min(q.w, q.y); - float e = 1.0e-10; - return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); -} - -void main(void) { - vec2 uv = cogl_tex_coord_in[0].xy; - vec4 rgba = texture2D(tex, uv); - vec4 hsla = vec4(rgb_to_hsl(rgba.xyz), rgba.w); - cogl_color_out = hsla; -} \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/rgb_to_hsl.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/rgb_to_hsl.js deleted file mode 100644 index 5c4eb05..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/rgb_to_hsl.js +++ /dev/null @@ -1,31 +0,0 @@ -import GObject from 'gi://GObject'; - -import * as utils from '../conveniences/utils.js'; -const Shell = await utils.import_in_shell_only('gi://Shell'); -const Clutter = await utils.import_in_shell_only('gi://Clutter'); - -const SHADER_FILENAME = 'rgb_to_hsl.glsl'; -const DEFAULT_PARAMS = {}; - - -export const RgbToHslEffect = utils.IS_IN_PREFERENCES ? - { default_params: DEFAULT_PARAMS } : - new GObject.registerClass({ - GTypeName: "RgbToHslEffect", - Properties: {} - }, class RgbToHslEffect extends Clutter.ShaderEffect { - constructor(params) { - super(params); - - utils.setup_params(this, params); - - // set shader source - this._source = utils.get_shader_source(Shell, SHADER_FILENAME, import.meta.url); - if (this._source) - this.set_shader_source(this._source); - } - - static get default_params() { - return DEFAULT_PARAMS; - } - }); \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/upscale.glsl b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/upscale.glsl deleted file mode 100644 index 5cc06ec..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/upscale.glsl +++ /dev/null @@ -1,57 +0,0 @@ -uniform sampler2D tex; -uniform int factor; -uniform float width; -uniform float height; - -#define CORRECTION 2.25 -#define SIZE_ADDITION 3 - -vec4 get_texture_at_position(vec2 position) { - vec2 raw_position = position + vec2(CORRECTION, CORRECTION); - vec2 raw_uv = raw_position / vec2(width + SIZE_ADDITION, height + SIZE_ADDITION); - - return texture2D(tex, raw_uv); -} - -ivec2 get_corrected_position() { - vec2 raw_uv = cogl_tex_coord0_in.st; - vec2 raw_position = raw_uv * vec2(width + SIZE_ADDITION, height + SIZE_ADDITION); - return ivec2(raw_position - vec2(CORRECTION, CORRECTION)); -} - -void main() { - ivec2 corrected_position = get_corrected_position(); - - vec2 adjusted_position = corrected_position / factor; - - cogl_color_out = get_texture_at_position(adjusted_position); - - // round - if (distance(corrected_position, (floor(adjusted_position) + 0.5) * factor) < factor / 2.5) { - //cogl_color_out = get_texture_at_position(adjusted_position); - } else { - //cogl_color_out = vec4(0, 0, 0, 1); - } - - // square - if (mod(corrected_position.x, factor) >= 2 && mod(corrected_position.y, factor) >= 2) { - //cogl_color_out = get_texture_at_position(adjusted_position); - } else { - //cogl_color_out = vec4(0, 0, 0, 1); - } - - // local mix - vec4 color = vec4(0); - int count = 0; - for (int i = -1; i <= 1; i++) { - for (int j = -1; j <= 1; j++) { - vec2 lookup_position = adjusted_position + vec2(i, j); - if (all(greaterThanEqual(lookup_position, vec2(0, 0))) && - all(lessThan(lookup_position, vec2(width, height) / factor))) { - color += get_texture_at_position(lookup_position); - count += 1; - } - } - } - //cogl_color_out = color / count; -} \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/upscale.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/upscale.js deleted file mode 100644 index fb719c3..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/effects/upscale.js +++ /dev/null @@ -1,120 +0,0 @@ -import GObject from 'gi://GObject'; - -import * as utils from '../conveniences/utils.js'; -const Shell = await utils.import_in_shell_only('gi://Shell'); -const Clutter = await utils.import_in_shell_only('gi://Clutter'); - -const SHADER_FILENAME = 'upscale.glsl'; -const DEFAULT_PARAMS = { - factor: 8, width: 0, height: 0 -}; - - -export const UpscaleEffect = utils.IS_IN_PREFERENCES ? - { default_params: DEFAULT_PARAMS } : - new GObject.registerClass({ - GTypeName: "UpscaleEffect", - Properties: { - 'factor': GObject.ParamSpec.int( - `factor`, - `Factor`, - `Factor`, - GObject.ParamFlags.READWRITE, - 0, 64, - 8, - ), - 'width': GObject.ParamSpec.double( - `width`, - `Width`, - `Width`, - GObject.ParamFlags.READWRITE, - 0.0, Number.MAX_SAFE_INTEGER, - 0.0, - ), - 'height': GObject.ParamSpec.double( - `height`, - `Height`, - `Height`, - GObject.ParamFlags.READWRITE, - 0.0, Number.MAX_SAFE_INTEGER, - 0.0, - ) - } - }, class UpscaleEffect extends Clutter.ShaderEffect { - constructor(params) { - super(params); - - utils.setup_params(this, params); - - // set shader source - this._source = utils.get_shader_source(Shell, SHADER_FILENAME, import.meta.url); - if (this._source) - this.set_shader_source(this._source); - } - - static get default_params() { - return DEFAULT_PARAMS; - } - - get factor() { - return this._factor; - } - - set factor(value) { - if (this._factor !== value) { - this._factor = value; - - this.set_uniform_value('factor', this._factor); - } - } - - get width() { - return this._width; - } - - set width(value) { - if (this._width !== value) { - this._width = value; - - this.set_uniform_value('width', parseFloat(this._width - 1e-6)); - } - } - - get height() { - return this._height; - } - - set height(value) { - if (this._height !== value) { - this._height = value; - - this.set_uniform_value('height', parseFloat(this._height - 1e-6)); - } - } - - vfunc_set_actor(actor) { - if (this._actor_connection_size_id) { - let old_actor = this.get_actor(); - old_actor?.disconnect(this._actor_connection_size_id); - } - if (actor) { - this.width = actor.width; - this.height = actor.height; - this._actor_connection_size_id = actor.connect('notify::size', _ => { - this.width = actor.width; - this.height = actor.height; - }); - } - else - this._actor_connection_size_id = null; - - super.vfunc_set_actor(actor); - } - - vfunc_paint_target(paint_node, paint_context) { - // force setting nearest-neighbour texture filtering - this.get_pipeline().set_layer_filters(0, 9728, 9728); - - super.vfunc_paint_target(paint_node, paint_context); - } - }); \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/extension.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/extension.js deleted file mode 100644 index fbfb54c..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/extension.js +++ /dev/null @@ -1,614 +0,0 @@ -import Meta from 'gi://Meta'; -import Clutter from 'gi://Clutter'; -import * as Main from 'resource:///org/gnome/shell/ui/main.js'; -import * as Config from 'resource:///org/gnome/shell/misc/config.js'; - -import { Extension } from 'resource:///org/gnome/shell/extensions/extension.js'; - -import { update_from_old_settings } from './conveniences/settings_updater.js'; -import { PipelinesManager } from './conveniences/pipelines_manager.js'; -import { EffectsManager } from './conveniences/effects_manager.js'; -import { Connections } from './conveniences/connections.js'; -import { Settings } from './conveniences/settings.js'; -import { KEYS } from './conveniences/keys.js'; - -import { PanelBlur } from './components/panel.js'; -import { OverviewBlur } from './components/overview.js'; -import { DashBlur } from './components/dash_to_dock.js'; -import { LockscreenBlur } from './components/lockscreen.js'; -import { AppFoldersBlur } from './components/appfolders.js'; -import { WindowListBlur } from './components/window_list.js'; -import { CoverflowAltTabBlur } from './components/coverflow_alt_tab.js'; -import { ApplicationsBlur } from './components/applications.js'; -import { ScreenshotBlur } from './components/screenshot.js'; - - -/// The main extension class, created when the GNOME Shell is loaded. -export default class BlurMyShell extends Extension { - /// Enables the extension. - enable() { - // add the extension to global to make it accessible to other extensions - // create it first as it is very useful when debugging crashes - global.blur_my_shell = this; - - // update from old settings, very important for hacks level specifically - update_from_old_settings(this.getSettings()); - - // create a Settings instance, to manage extension's preferences - // it needs to be loaded before logging, as it checks for DEBUG - this._settings = new Settings(KEYS, this.getSettings()); - - this._log("enabling extension..."); - - // create main extension Connections instance - this._connection = new Connections; - - // store it in a global array - this._connections = [this._connection]; - - // create a global effects manager (to prevent RAM bleeding) - this._effects_manager = new EffectsManager(this._connection); - - // create a global pipelines manager, that helps talking with preferences - this._pipelines_manager = new PipelinesManager(this._settings); - - // create an instance of each component, with its associated Connections - let init = () => { - // create a Connections instance, to manage signals - let connection = new Connections; - - // store it to keeps track of them globally - this._connections.push(connection); - - return [connection, this._settings, this._effects_manager]; - }; - - this._panel_blur = new PanelBlur(...init()); - this._dash_to_dock_blur = new DashBlur(...init()); - this._overview_blur = new OverviewBlur(...init()); - this._lockscreen_blur = new LockscreenBlur(...init()); - this._appfolder_blur = new AppFoldersBlur(...init()); - this._window_list_blur = new WindowListBlur(...init()); - this._coverflow_alt_tab_blur = new CoverflowAltTabBlur(...init()); - this._applications_blur = new ApplicationsBlur(...init()); - this._screenshot_blur = new ScreenshotBlur(...init()); - - // connect each component to preferences change - this._connect_to_settings(); - - // enable the lockscreen blur, only one important in both `user` session and `unlock-dialog` - if (this._settings.lockscreen.BLUR && !this._lockscreen_blur.enabled) - this._lockscreen_blur.enable(); - - // ensure we take the correct action for the current session mode - this._user_session_mode_enabled = false; - this._on_session_mode_changed(Main.sessionMode); - - // watch for changes to the session mode - this._connection.connect(Main.sessionMode, 'updated', - () => this._on_session_mode_changed(Main.sessionMode) - ); - } - - /// Enables the components related to the user session (everything except lockscreen blur). - _enable_user_session() { - this._log("changing mode to user session..."); - - // maybe disable clipped redraw - this._update_clipped_redraws(); - - // enable every component - // if the shell is still starting up, wait for it to be entirely loaded; - // this should prevent bugs like #136 and #137 - if (Main.layoutManager._startingUp) { - this._connection.connect( - Main.layoutManager, - 'startup-complete', - () => this._enable_components() - ); - } else - this._enable_components(); - - // try to enable the components as soon as possible anyway, this way the - // overview may load before the user sees it - try { - if (this._settings.overview.BLUR && !this._overview_blur.enabled) - this._overview_blur.enable(); - } catch (e) { - this._log("Could not enable overview blur directly"); - this._log(e); - } - try { - if (this._settings.dash_to_dock.BLUR - && !this._dash_to_dock_blur.enabled) - this._dash_to_dock_blur.enable(); - } catch (e) { - this._log("Could not enable dash-to-dock blur directly"); - this._log(e); - } - try { - if (this._settings.panel.BLUR && !this._panel_blur.enabled) - this._panel_blur.enable(); - } catch (e) { - this._log("Could not enable panel blur directly"); - this._log(e); - } - - // tells the extension we have enabled the user session components, so that we do not - // disable them later if they were not even enabled to begin with - this._user_session_mode_enabled = true; - } - - /// Disables the extension. - /// - /// This extension needs to use the 'unlock-dialog' session mode in order to change the blur on - /// the lockscreen. We have kind of two states of enablement for this extension: - /// - the 'enabled' state, which means that we have created the necessary components (which only - /// are js objects) and enabled the lockscreen blur (which means swapping two functions from - /// the `UnlockDialog` constructor with our ones; - /// - the 'user session enabled` mode, which means that we are in the 'enabled' mode AND we are - /// in the user mode, and so we enable all the other components that we created before. - /// We switch from one state to the other thanks to `this._on_session_mode_changed`, and we - /// track wether or not we are in the user mode with `this._user_session_mode_enabled` (because - /// `this._on_session_mode_changed` might be called multiple times while in the user session - /// mode, typically when going back from simple lockscreen and not sleep mode). - disable() { - this._log("disabling extension..."); - - // disable every component from user session mode - if (this._user_session_mode_enabled) - this._disable_user_session(); - this._overview_blur.restore_patched_proto(); - - // disable lockscreen blur too - this._lockscreen_blur.disable(); - - // untrack them - this._panel_blur = null; - this._dash_to_dock_blur = null; - this._overview_blur = null; - this._appfolder_blur = null; - this._lockscreen_blur = null; - this._window_list_blur = null; - this._coverflow_alt_tab_blur = null; - this._applications_blur = null; - this._screenshot_blur = null; - - // make sure no settings change can re-enable them - this._settings.disconnect_all_settings(); - - // force disconnecting every signal, even if component crashed - this._connections.forEach((connections) => { - connections.disconnect_all(); - }); - this._connections = []; - - // remove the clipped redraws flag - this._reenable_clipped_redraws(); - - // remove the extension from GJS's global - delete global.blur_my_shell; - - this._log("extension disabled."); - - this._settings = null; - } - - /// Disables the components related to the user session (everything except lockscreen blur). - _disable_user_session() { - this._log("disabling user session mode..."); - - // disable every component except lockscreen blur - this._panel_blur.disable(); - this._dash_to_dock_blur.disable(); - this._overview_blur.disable(); - this._appfolder_blur.disable(); - this._window_list_blur.disable(); - this._coverflow_alt_tab_blur.disable(); - this._applications_blur.disable(); - this._screenshot_blur.disable(); - - // remove the clipped redraws flag - this._reenable_clipped_redraws(); - - // tells the extension we have disabled the user session components, so that we do not - // disable them later again if they were already disabled - this._user_session_mode_enabled = false; - } - - /// Restarts the components related to the user session. - _restart() { - this._log("restarting..."); - - this._disable_user_session(); - this._enable_user_session(); - - this._log("restarted."); - } - - /// Changes the extension to operate either on 'user' mode or 'unlock-dialog' mode, switching - /// from one to the other means enabling/disabling every component except lockscreen blur. - _on_session_mode_changed(session) { - if (session.currentMode === 'user' || session.parentMode === 'user') { - if (!this._user_session_mode_enabled) - // we need to activate everything - this._enable_user_session(); - } - else if (session.currentMode === 'unlock-dialog') { - if (this._user_session_mode_enabled) - // we need to disable the components related to the user session mode - this._disable_user_session(); - } - } - - /// Add or remove the clutter debug flag to disable clipped redraws. - /// This will entirely fix the blur effect, but should not be used except if - /// the user really needs it, as clipped redraws are a huge performance - /// boost for the compositor. - _update_clipped_redraws() { - if (this._settings.HACKS_LEVEL === 2) - this._disable_clipped_redraws(); - else - this._reenable_clipped_redraws(); - } - - /// Add the Clutter debug flag. - _disable_clipped_redraws() { - let gnome_shell_major_version = parseInt(Config.PACKAGE_VERSION.split('.')[0]); - if (gnome_shell_major_version >= 48) - Clutter.add_debug_flags( - null, Clutter.DrawDebugFlag.DISABLE_CLIPPED_REDRAWS, null - ); - else - Meta.add_clutter_debug_flags( - null, Clutter.DrawDebugFlag.DISABLE_CLIPPED_REDRAWS, null - ); - } - - /// Remove the Clutter debug flag. - _reenable_clipped_redraws() { - let gnome_shell_major_version = parseInt(Config.PACKAGE_VERSION.split('.')[0]); - if (gnome_shell_major_version >= 48) - Clutter.remove_debug_flags( - null, Clutter.DrawDebugFlag.DISABLE_CLIPPED_REDRAWS, null - ); - else - Meta.remove_clutter_debug_flags( - null, Clutter.DrawDebugFlag.DISABLE_CLIPPED_REDRAWS, null - ); - } - - /// Enables every component from the user session needed, should be called when the shell is - /// entirely loaded as the `enable` methods interact with it. - _enable_components() { - // enable each component if needed, and if it is not already enabled - - if (this._settings.panel.BLUR && !this._panel_blur.enabled) - this._panel_blur.enable(); - - if (this._settings.dash_to_dock.BLUR && !this._dash_to_dock_blur.enabled) - this._dash_to_dock_blur.enable(); - - if (this._settings.overview.BLUR && !this._overview_blur.enabled) - this._overview_blur.enable(); - - if (this._settings.appfolder.BLUR) - this._appfolder_blur.enable(); - - if (this._settings.applications.BLUR) - this._applications_blur.enable(); - - if (this._settings.window_list.BLUR) - this._window_list_blur.enable(); - - if (this._settings.coverflow_alt_tab.BLUR) - this._coverflow_alt_tab_blur.enable(); - - if (this._settings.screenshot.BLUR) - this._screenshot_blur.enable(); - - this._log("all components enabled."); - } - - /// Updates needed things in each component when a preference changed - _connect_to_settings() { - // restart the extension when hacks level is changed, easier than - // restarting individual components and should not happen often either - this._settings.HACKS_LEVEL_changed(() => this._restart()); - - - // ---------- OVERVIEW ---------- - - // toggled on/off - this._settings.overview.BLUR_changed(() => { - if (this._settings.overview.BLUR) - this._overview_blur.enable(); - else - this._overview_blur.disable(); - }); - - // overview pipeline changed - this._settings.overview.PIPELINE_changed(() => { - if (this._settings.overview.BLUR) - this._overview_blur.update_backgrounds(); - }); - - // overview components style changed - this._settings.overview.STYLE_COMPONENTS_changed(() => { - if (this._settings.overview.BLUR) - this._overview_blur.update_components_classname(); - }); - - - // ---------- APPFOLDER ---------- - - // toggled on/off - this._settings.appfolder.BLUR_changed(() => { - if (this._settings.appfolder.BLUR) - this._appfolder_blur.enable(); - else - this._appfolder_blur.disable(); - }); - - // appfolder sigma changed - this._settings.appfolder.SIGMA_changed(() => { - if (this._settings.appfolder.BLUR) - this._appfolder_blur.set_sigma( - this._settings.appfolder.SIGMA - ); - }); - - // appfolder brightness changed - this._settings.appfolder.BRIGHTNESS_changed(() => { - if (this._settings.appfolder.BLUR) - this._appfolder_blur.set_brightness( - this._settings.appfolder.BRIGHTNESS - ); - }); - - // appfolder dialogs style changed - this._settings.appfolder.STYLE_DIALOGS_changed(() => { - if (this._settings.appfolder.BLUR) - this._appfolder_blur.blur_appfolders(); - }); - - - // ---------- PANEL ---------- - - // toggled on/off - this._settings.panel.BLUR_changed(() => { - if (this._settings.panel.BLUR) - this._panel_blur.enable(); - else - this._panel_blur.disable(); - }); - - // static blur toggled on/off, really we can just reload the blur at this point - this._settings.panel.STATIC_BLUR_changed(() => { - if (this._settings.panel.BLUR) - this._panel_blur.reset(); - }); - - // panel pipeline changed - this._settings.panel.PIPELINE_changed(() => { - if (this._settings.panel.BLUR) - this._panel_blur.update_pipeline(); - }); - - // panel blur's overview connection toggled on/off - this._settings.panel.UNBLUR_IN_OVERVIEW_changed(() => { - this._panel_blur.connect_to_windows_and_overview(); - }); - - // force light text toggled on/off - this._settings.panel.FORCE_LIGHT_TEXT_changed(() => { - if (this._settings.panel.BLUR) - this._panel_blur.update_light_text_classname(); - }); - - // panel override background toggled on/off - this._settings.panel.OVERRIDE_BACKGROUND_changed(() => { - if (this._settings.panel.BLUR) - this._panel_blur.connect_to_windows_and_overview(); - }); - - // panel style changed - this._settings.panel.STYLE_PANEL_changed(() => { - if (this._settings.panel.BLUR) - this._panel_blur.connect_to_windows_and_overview(); - }); - - // panel background's dynamic overriding toggled on/off - this._settings.panel.OVERRIDE_BACKGROUND_DYNAMICALLY_changed(() => { - if (this._settings.panel.BLUR) - this._panel_blur.connect_to_windows_and_overview(); - }); - - - // ---------- DASH TO DOCK ---------- - - // toggled on/off - this._settings.dash_to_dock.BLUR_changed(() => { - if (this._settings.dash_to_dock.BLUR) - this._dash_to_dock_blur.enable(); - else - this._dash_to_dock_blur.disable(); - }); - - // static blur toggled on/off - this._settings.dash_to_dock.STATIC_BLUR_changed(() => { - if (this._settings.dash_to_dock.BLUR) - this._dash_to_dock_blur.change_blur_type(); - }); - - // overview pipeline changed - this._settings.dash_to_dock.PIPELINE_changed(() => { - if (this._settings.dash_to_dock.BLUR) - this._dash_to_dock_blur.update_pipeline(); - }); - - // dash-to-dock override background toggled on/off - this._settings.dash_to_dock.OVERRIDE_BACKGROUND_changed(() => { - if (this._settings.dash_to_dock.BLUR) - this._dash_to_dock_blur.update_background(); - }); - - // dash-to-dock style changed - this._settings.dash_to_dock.STYLE_DASH_TO_DOCK_changed(() => { - if (this._settings.dash_to_dock.BLUR) - this._dash_to_dock_blur.update_background(); - }); - - // dash-to-dock blur's overview connection toggled on/off - this._settings.dash_to_dock.UNBLUR_IN_OVERVIEW_changed(() => { - if (this._settings.dash_to_dock.BLUR) - this._dash_to_dock_blur.connect_to_overview(); - }); - - - // ---------- APPLICATIONS ---------- - - // toggled on/off - this._settings.applications.BLUR_changed(() => { - if (this._settings.applications.BLUR) - this._applications_blur.enable(); - else - this._applications_blur.disable(); - }); - - // static blur toggled on/off - this._settings.applications.STATIC_BLUR_changed(() => { - if (this._settings.applications.BLUR) - this._applications_blur.change_blur_type(); - }); - - // pipeline changed - this._settings.applications.PIPELINE_changed(() => { - if (this._settings.applications.BLUR) - this._applications_blur.change_pipeline(); - }); - - // application opacity changed - this._settings.applications.OPACITY_changed(() => { - if (this._settings.applications.BLUR) - this._applications_blur.set_opacity( - this._settings.applications.OPACITY - ); - }); - - // application dynamic-opacity changed - this._settings.applications.DYNAMIC_OPACITY_changed(() => { - if (this._settings.applications.BLUR) - this._applications_blur.init_dynamic_opacity(); - }); - - // application blur-on-overview changed - this._settings.applications.BLUR_ON_OVERVIEW_changed(() => { - if (this._settings.applications.BLUR) - this._applications_blur.connect_to_overview(); - }); - - // application enable-all changed - this._settings.applications.ENABLE_ALL_changed(() => { - if (this._settings.applications.BLUR) - this._applications_blur.update_all_windows(); - }); - - // application whitelist changed - this._settings.applications.WHITELIST_changed(() => { - if ( - this._settings.applications.BLUR - && !this._settings.applications.ENABLE_ALL - ) - this._applications_blur.update_all_windows(); - }); - - // application blacklist changed - this._settings.applications.BLACKLIST_changed(() => { - if ( - this._settings.applications.BLUR - && this._settings.applications.ENABLE_ALL - ) - this._applications_blur.update_all_windows(); - }); - - - // ---------- LOCKSCREEN ---------- - - // toggled on/off - this._settings.lockscreen.BLUR_changed(() => { - if (this._settings.lockscreen.BLUR) - this._lockscreen_blur.enable(); - else - this._lockscreen_blur.disable(); - }); - - // lockscreen pipeline changed - this._settings.lockscreen.PIPELINE_changed(() => { - if (this._settings.lockscreen.BLUR) - this._lockscreen_blur.update_lockscreen(); - }); - - - // ---------- WINDOW LIST ---------- - - // toggled on/off - this._settings.window_list.BLUR_changed(() => { - if (this._settings.window_list.BLUR) - this._window_list_blur.enable(); - else - this._window_list_blur.disable(); - }); - - - // ---------- COVERFLOW ALT-TAB ---------- - - // toggled on/off - this._settings.coverflow_alt_tab.BLUR_changed(() => { - if (this._settings.coverflow_alt_tab.BLUR) - this._coverflow_alt_tab_blur.enable(); - else - this._coverflow_alt_tab_blur.disable(); - }); - - - // ---------- HIDETOPBAR ---------- - - // toggled on/off - this._settings.hidetopbar.COMPATIBILITY_changed(() => { - // no need to verify if it is enabled or not, it is done anyway - this._panel_blur.connect_to_windows_and_overview(); - }); - - - // ---------- DASH TO PANEL ---------- - - // toggled on/off - this._settings.dash_to_panel.BLUR_ORIGINAL_PANEL_changed(() => { - if (this._settings.panel.BLUR) - this._panel_blur.reset(); - }); - - - // ---------- SCREENSHOT ---------- - - // toggled on/off - this._settings.screenshot.BLUR_changed(() => { - if (this._settings.screenshot.BLUR) - this._screenshot_blur.enable(); - else - this._screenshot_blur.disable(); - }); - - // screenshot pipeline changed - this._settings.screenshot.PIPELINE_changed(() => { - if (this._settings.screenshot.BLUR) - this._screenshot_blur.update_pipeline(); - }); - } - - _log(str) { - if (this._settings.DEBUG) - console.log(`[Blur my Shell > extension] ${str}`); - } -} diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/add-row-symbolic.svg b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/add-row-symbolic.svg deleted file mode 100644 index bdab309..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/add-row-symbolic.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/applications-symbolic.svg b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/applications-symbolic.svg deleted file mode 100644 index 87f307f..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/applications-symbolic.svg +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/bottom-panel-symbolic.svg b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/bottom-panel-symbolic.svg deleted file mode 100644 index 2eda98b..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/bottom-panel-symbolic.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/dash-symbolic.svg b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/dash-symbolic.svg deleted file mode 100644 index 5a78b46..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/dash-symbolic.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/down-symbolic.svg b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/down-symbolic.svg deleted file mode 100644 index 652f8c0..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/down-symbolic.svg +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/duplicate-row-symbolic.svg b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/duplicate-row-symbolic.svg deleted file mode 100644 index 925e900..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/duplicate-row-symbolic.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/dynamic-mode-symbolic.svg b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/dynamic-mode-symbolic.svg deleted file mode 100644 index c37b9aa..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/dynamic-mode-symbolic.svg +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/edit-row-symbolic.svg b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/edit-row-symbolic.svg deleted file mode 100644 index f4115ad..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/edit-row-symbolic.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/heart-symbolic.svg b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/heart-symbolic.svg deleted file mode 100644 index fa045a8..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/heart-symbolic.svg +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/other-symbolic.svg b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/other-symbolic.svg deleted file mode 100644 index 45e703e..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/other-symbolic.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/overview-symbolic.svg b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/overview-symbolic.svg deleted file mode 100644 index 445f662..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/overview-symbolic.svg +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/pipelines-symbolic.svg b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/pipelines-symbolic.svg deleted file mode 100644 index d451b23..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/pipelines-symbolic.svg +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/remove-row-symbolic.svg b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/remove-row-symbolic.svg deleted file mode 100644 index a8da14f..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/remove-row-symbolic.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/reset-symbolic.svg b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/reset-symbolic.svg deleted file mode 100644 index e443de4..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/reset-symbolic.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/select-row-symbolic.svg b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/select-row-symbolic.svg deleted file mode 100644 index e6d2d9e..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/select-row-symbolic.svg +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/select-window-symbolic.svg b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/select-window-symbolic.svg deleted file mode 100644 index cad2da8..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/select-window-symbolic.svg +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/static-mode-symbolic.svg b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/static-mode-symbolic.svg deleted file mode 100644 index 5b0eb20..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/icons/hicolor/scalable/actions/static-mode-symbolic.svg +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/af/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/af/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 7fd4c31..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/af/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ar/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ar/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index aac168e..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ar/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/az/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/az/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 2d37384..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/az/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/be/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/be/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 6229b38..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/be/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/bg/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/bg/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 9d8da30..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/bg/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ca/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ca/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index f804035..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ca/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/cs/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/cs/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 8f46756..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/cs/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/da/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/da/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index b44f3c8..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/da/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/de/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/de/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 923e3e6..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/de/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/el/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/el/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index c671ffa..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/el/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/es/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/es/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 352d3bc..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/es/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/et/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/et/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index a92f357..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/et/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/fi/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/fi/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 4e50603..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/fi/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/fr/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/fr/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index a3a72a3..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/fr/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/he/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/he/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index c00a0b0..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/he/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/hi/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/hi/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index d3801bb..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/hi/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/hr/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/hr/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 45ed92c..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/hr/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/hu/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/hu/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 40e34c4..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/hu/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/id/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/id/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 034f55a..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/id/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/it/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/it/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index a6fc86a..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/it/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ja/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ja/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 12d1d52..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ja/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ka/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ka/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index f38aa09..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ka/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ko/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ko/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 9088bf3..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ko/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ml/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ml/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index a03d776..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ml/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/mrh/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/mrh/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 52a61c4..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/mrh/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/my/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/my/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 0d81fb0..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/my/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/nb_NO/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/nb_NO/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 50cdf68..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/nb_NO/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/nl/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/nl/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index a1a3517..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/nl/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/nn/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/nn/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 28f7c42..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/nn/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/pl/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/pl/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 47fc350..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/pl/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/pt/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/pt/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 10d3aa1..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/pt/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/pt_BR/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/pt_BR/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 3dcad8d..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/pt_BR/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ro/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ro/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index dd7822e..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ro/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ru/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ru/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index f7ba1de..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ru/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/sk/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/sk/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index be8e9a4..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/sk/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/sl/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/sl/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 34b6505..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/sl/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/sv/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/sv/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index c7bc46f..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/sv/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ta/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ta/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 8fc6e3d..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/ta/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/th/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/th/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index e04e4a5..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/th/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/tr/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/tr/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 04fce82..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/tr/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/uk/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/uk/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 9957d99..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/uk/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/vi/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/vi/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 385f8fa..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/vi/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/zh_CN/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/zh_CN/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 7b84952..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/zh_CN/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/zh_TW/LC_MESSAGES/blur-my-shell@aunetx.mo b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/zh_TW/LC_MESSAGES/blur-my-shell@aunetx.mo deleted file mode 100644 index 20e60f5..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/locale/zh_TW/LC_MESSAGES/blur-my-shell@aunetx.mo and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/metadata.json b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/metadata.json deleted file mode 100644 index cce8059..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/metadata.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_generated": "Generated by SweetTooth, do not edit", - "description": "Adds a blur look to different parts of the GNOME Shell, including the top panel, dash and overview.\n\nYou can support my work by sponsoring me on:\n- github: https://github.com/sponsors/aunetx\n- ko-fi: https://ko-fi.com/aunetx\n\nIf you use Ubuntu, you may want to change the radius of the corner effect for Dash-to-Dock in preferences, else you may see unpleasantly mixed radii in your dock.\n\nNote: if the extension shows an error after updating, please make sure to restart your session to see if it persists. This is due to a bug in gnome shell, which I can't fix by myself.", - "donations": { - "github": "aunetx", - "kofi": "aunetx" - }, - "gettext-domain": "blur-my-shell@aunetx", - "name": "Blur my Shell", - "original-authors": [ - "me@aunetx.dev" - ], - "session-modes": [ - "unlock-dialog", - "user" - ], - "settings-schema": "org.gnome.shell.extensions.blur-my-shell", - "shell-version": [ - "46", - "47", - "48", - "49", - "50" - ], - "url": "https://github.com/aunetx/blur-my-shell", - "uuid": "blur-my-shell@aunetx", - "version": 71 -} \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/applications.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/applications.js deleted file mode 100644 index a4dd5be..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/applications.js +++ /dev/null @@ -1,217 +0,0 @@ -import Adw from 'gi://Adw'; -import GLib from 'gi://GLib'; -import GObject from 'gi://GObject'; -import Gio from 'gi://Gio'; - -import { ApplicationRow } from './applications_management/application_row.js'; - - -const make_array = prefs_group => { - let list_box = prefs_group - .get_first_child() - .get_last_child() - .get_first_child(); - - let elements = []; - let i = 0; - let element = list_box.get_row_at_index(i); - while (element) { - elements.push(element); - i++; - element = list_box.get_row_at_index(i); - } - - return elements; -}; - - -export const Applications = GObject.registerClass({ - GTypeName: 'Applications', - Template: GLib.uri_resolve_relative(import.meta.url, '../ui/applications.ui', GLib.UriFlags.NONE), - InternalChildren: [ - 'blur', - 'pipeline_choose_row', - 'mode_static', - 'mode_dynamic', - 'sigma_row', - 'sigma', - 'brightness_row', - 'brightness', - 'opacity', - 'dynamic_opacity', - 'blur_on_overview', - 'enable_all', - 'whitelist', - 'add_window_whitelist', - 'blacklist', - 'add_window_blacklist' - ], -}, class Applications extends Adw.PreferencesPage { - constructor(preferences, preferences_window, pipelines_manager, pipelines_page) { - super({}); - this._preferences_window = preferences_window; - - this.preferences = preferences; - this.pipelines_manager = pipelines_manager; - this.pipelines_page = pipelines_page; - - this.preferences.applications.settings.bind( - 'blur', this._blur, 'active', - Gio.SettingsBindFlags.DEFAULT - ); - - this._pipeline_choose_row.initialize( - this.preferences.applications, this.pipelines_manager, this.pipelines_page - ); - - this.change_blur_mode(this.preferences.applications.STATIC_BLUR, true); - - this._mode_static.connect('toggled', - () => this.preferences.applications.STATIC_BLUR = this._mode_static.active - ); - this.preferences.applications.STATIC_BLUR_changed( - () => this.change_blur_mode(this.preferences.applications.STATIC_BLUR, false) - ); - - this.preferences.applications.settings.bind( - 'opacity', this._opacity, 'value', - Gio.SettingsBindFlags.DEFAULT - ); - this.preferences.applications.settings.bind( - 'dynamic-opacity', this._dynamic_opacity, 'active', - Gio.SettingsBindFlags.DEFAULT - ); - this.preferences.applications.settings.bind( - 'blur-on-overview', this._blur_on_overview, 'active', - Gio.SettingsBindFlags.DEFAULT - ); - this.preferences.applications.settings.bind( - 'enable-all', this._enable_all, 'active', - Gio.SettingsBindFlags.DEFAULT - ); - this.preferences.applications.settings.bind( - 'sigma', this._sigma, 'value', - Gio.SettingsBindFlags.DEFAULT - ); - this.preferences.applications.settings.bind( - 'brightness', this._brightness, 'value', - Gio.SettingsBindFlags.DEFAULT - ); - - // connect 'enable all' button to whitelist/blacklist visibility - this._enable_all.bind_property( - 'active', this._whitelist, 'visible', - GObject.BindingFlags.INVERT_BOOLEAN - ); - this._enable_all.bind_property( - 'active', this._blacklist, 'visible', - GObject.BindingFlags.DEFAULT - ); - - // make sure that blacklist / whitelist is correctly hidden - if (this._enable_all.active) - this._whitelist.visible = false; - this._blacklist.visible = !this._whitelist.visible; - - // listen to app row addition - this._add_window_whitelist.connect('clicked', - () => this.add_to_whitelist() - ); - this._add_window_blacklist.connect('clicked', - () => this.add_to_blacklist() - ); - - // add initial applications - this.add_widgets_from_lists(); - - this.preferences.connect('reset', () => { - this.remove_all_widgets(); - this.add_widgets_from_lists(); - }); - } - - // A way to retriew the whitelist widgets. - get _whitelist_elements() { - return make_array(this._whitelist); - } - - // A way to retriew the blacklist widgets. - get _blacklist_elements() { - return make_array(this._blacklist); - } - - add_widgets_from_lists() { - this.preferences.applications.WHITELIST.forEach( - app_name => this.add_to_whitelist(app_name) - ); - - this.preferences.applications.BLACKLIST.forEach( - app_name => this.add_to_blacklist(app_name) - ); - - } - - close_all_expanded_rows() { - this._whitelist_elements.forEach( - element => element.set_expanded(false) - ); - this._blacklist_elements.forEach( - element => element.set_expanded(false) - ); - } - - remove_all_widgets() { - this._whitelist_elements.forEach( - element => this._whitelist.remove(element) - ); - this._blacklist_elements.forEach( - element => this._blacklist.remove(element) - ); - } - - add_to_whitelist(app_name = null) { - let window_row = new ApplicationRow('whitelist', this, app_name); - this._whitelist.add(window_row); - } - - add_to_blacklist(app_name = null) { - let window_row = new ApplicationRow('blacklist', this, app_name); - this._blacklist.add(window_row); - } - - update_whitelist_titles() { - let titles = this._whitelist_elements - .map(element => element._window_class.buffer.text) - .filter(title => title != ""); - - this.preferences.applications.WHITELIST = titles; - } - - update_blacklist_titles() { - let titles = this._blacklist_elements - .map(element => element._window_class.buffer.text) - .filter(title => title != ""); - - this.preferences.applications.BLACKLIST = titles; - } - - remove_from_whitelist(widget) { - this._whitelist.remove(widget); - this.update_whitelist_titles(); - } - - remove_from_blacklist(widget) { - this._blacklist.remove(widget); - this.update_blacklist_titles(); - } - - change_blur_mode(is_static_blur, first_run) { - this._mode_static.set_active(is_static_blur); - if (first_run) - this._mode_dynamic.set_active(!is_static_blur); - - this._pipeline_choose_row.set_visible(is_static_blur); - this._sigma_row.set_visible(!is_static_blur); - this._brightness_row.set_visible(!is_static_blur); - } -}); \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/applications_management/application_row.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/applications_management/application_row.js deleted file mode 100644 index 4af3bf8..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/applications_management/application_row.js +++ /dev/null @@ -1,112 +0,0 @@ -import Adw from 'gi://Adw'; -import GLib from 'gi://GLib'; -import GObject from 'gi://GObject'; -import Gio from 'gi://Gio'; -import Gtk from 'gi://Gtk'; - -import { pick, on_picking, on_picked } from '../../dbus/client.js'; - - -export const ApplicationRow = GObject.registerClass({ - GTypeName: 'ApplicationRow', - Template: GLib.uri_resolve_relative(import.meta.url, '../../ui/application-row.ui', GLib.UriFlags.NONE), - InternalChildren: [ - 'window_picker', - 'window_class', - 'picking_failure_toast', - 'window_not_found_toast' - ], -}, class ApplicationRow extends Adw.ExpanderRow { - constructor(list, app_page, app_name) { - super({}); - this._list = list; - this._app_page = app_page; - - // add a 'remove' button before the text - let action_row = this.child.get_first_child().get_first_child(); - let remove_button = new Gtk.Button({ - 'icon-name': 'remove-row-symbolic', - 'width-request': 38, - 'height-request': 38, - 'margin-top': 6, - 'margin-bottom': 6, - }); - remove_button.add_css_class('circular'); - remove_button.add_css_class('flat'); - action_row.add_prefix(remove_button); - - // connect the button to the whitelist / blacklist removal - remove_button.connect('clicked', () => this._remove_row()); - - // bind row title to text buffer - this._window_class.buffer.bind_property( - 'text', this, 'title', - Gio.SettingsBindFlags.BIDIRECTIONNAL - ); - - // set application name if it exists, or open the revealer and pick one - if (app_name) - this._window_class.buffer.text = app_name; - else { - app_page.close_all_expanded_rows(); - this.set_expanded(true); - this._do_pick_window(true); - } - - // pick a window when the picker button is clicked - this._window_picker.connect('clicked', () => this._do_pick_window()); - - // update list on text buffer change - this._window_class.connect('changed', - () => this._update_rows_titles() - ); - } - - _remove_row() { - this._app_page["remove_from_" + this._list](this); - } - - _update_rows_titles() { - this._app_page["update_" + this._list + "_titles"](this); - } - - _do_pick_window(remove_if_failed = false) { - // a mechanism to know if the extension is listening correcly - let has_responded = false; - let should_take_answer = true; - setTimeout(() => { - if (!has_responded) { - // show toast about failure - this._app_page._preferences_window.add_toast( - this._picking_failure_toast - ); - - // prevent title from changing with later picks - should_take_answer = false; - - // remove row if asked - if (remove_if_failed) - this._remove_row(); - } - }, 250); - - on_picking(() => - has_responded = true - ); - - on_picked(wm_class => { - if (should_take_answer) { - if (wm_class == 'window-not-found') { - console.warn("Can't pick window from here"); - this._app_page._preferences_window.add_toast( - this._window_not_found_toast - ); - return; - } - this._window_class.buffer.text = wm_class; - } - }); - - pick(); - } -}); diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/dash.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/dash.js deleted file mode 100644 index aae3768..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/dash.js +++ /dev/null @@ -1,81 +0,0 @@ -import Adw from 'gi://Adw'; -import GLib from 'gi://GLib'; -import GObject from 'gi://GObject'; -import Gio from 'gi://Gio'; - - -export const Dash = GObject.registerClass({ - GTypeName: 'Dash', - Template: GLib.uri_resolve_relative(import.meta.url, '../ui/dash.ui', GLib.UriFlags.NONE), - InternalChildren: [ - 'blur', - 'pipeline_choose_row', - 'mode_static', - 'mode_dynamic', - 'sigma_row', - 'sigma', - 'brightness_row', - 'brightness', - 'override_background', - 'style_dash_to_dock', - 'unblur_in_overview' - ], -}, class Dash extends Adw.PreferencesPage { - constructor(preferences, pipelines_manager, pipelines_page) { - super({}); - - this.preferences = preferences; - this.pipelines_manager = pipelines_manager; - this.pipelines_page = pipelines_page; - - this.preferences.dash_to_dock.settings.bind( - 'blur', this._blur, 'active', - Gio.SettingsBindFlags.DEFAULT - ); - - this._pipeline_choose_row.initialize( - this.preferences.dash_to_dock, this.pipelines_manager, this.pipelines_page - ); - - this.change_blur_mode(this.preferences.dash_to_dock.STATIC_BLUR, true); - - this._mode_static.connect('toggled', - () => this.preferences.dash_to_dock.STATIC_BLUR = this._mode_static.active - ); - this.preferences.dash_to_dock.STATIC_BLUR_changed( - () => this.change_blur_mode(this.preferences.dash_to_dock.STATIC_BLUR, false) - ); - - this.preferences.dash_to_dock.settings.bind( - 'sigma', this._sigma, 'value', - Gio.SettingsBindFlags.DEFAULT - ); - this.preferences.dash_to_dock.settings.bind( - 'brightness', this._brightness, 'value', - Gio.SettingsBindFlags.DEFAULT - ); - this.preferences.dash_to_dock.settings.bind( - 'override-background', - this._override_background, 'enable-expansion', - Gio.SettingsBindFlags.DEFAULT - ); - this.preferences.dash_to_dock.settings.bind( - 'style-dash-to-dock', this._style_dash_to_dock, 'selected', - Gio.SettingsBindFlags.DEFAULT - ); - this.preferences.dash_to_dock.settings.bind( - 'unblur-in-overview', this._unblur_in_overview, 'active', - Gio.SettingsBindFlags.DEFAULT - ); - } - - change_blur_mode(is_static_blur, first_run) { - this._mode_static.set_active(is_static_blur); - if (first_run) - this._mode_dynamic.set_active(!is_static_blur); - - this._pipeline_choose_row.set_visible(is_static_blur); - this._sigma_row.set_visible(!is_static_blur); - this._brightness_row.set_visible(!is_static_blur); - } -}); \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/menu.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/menu.js deleted file mode 100644 index 899fdcf..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/menu.js +++ /dev/null @@ -1,68 +0,0 @@ -import Gdk from 'gi://Gdk'; -import Gtk from 'gi://Gtk'; -import Gio from 'gi://Gio'; -import GLib from 'gi://GLib'; - - -export function addMenu(window) { - const builder = new Gtk.Builder(); - - // add a dummy page and remove it immediately, to access headerbar - builder.add_from_file(GLib.filename_from_uri(GLib.uri_resolve_relative(import.meta.url, '../ui/menu.ui', GLib.UriFlags.NONE))[0]); - let menu_util = builder.get_object('menu_util'); - window.add(menu_util); - try { - addMenuToHeader(window, builder); - } catch (error) { - // could not add menu... not so bad - } - window.remove(menu_util); -} - -function addMenuToHeader(window, builder) { - // a little hack to get to the headerbar - const page = builder.get_object('menu_util'); - const pages_stack = page.get_parent(); // AdwViewStack - const content_stack = pages_stack.get_parent().get_parent(); // GtkStack - const preferences = content_stack.get_parent(); // GtkBox - const headerbar = preferences.get_first_child().get_next_sibling() - .get_first_child().get_first_child().get_first_child(); // AdwHeaderBar - headerbar.pack_start(builder.get_object('info_menu')); - - // setup menu actions - const actionGroup = new Gio.SimpleActionGroup(); - window.insert_action_group('prefs', actionGroup); - - // a list of actions with their associated link - const actions = [ - { - name: 'open-bug-report', - link: 'https://github.com/aunetx/blur-my-shell/issues' - }, - { - name: 'open-readme', - link: 'https://github.com/aunetx/blur-my-shell' - }, - { - name: 'open-license', - link: 'https://github.com/aunetx/blur-my-shell/blob/master/LICENSE' - }, - { - name: 'donate-github', - link: 'https://github.com/sponsors/aunetx' - }, - { - name: 'donate-kofi', - link: 'https://ko-fi.com/aunetx' - }, - ]; - - actions.forEach(action => { - let act = new Gio.SimpleAction({ name: action.name }); - act.connect( - 'activate', - () => Gtk.show_uri(window, action.link, Gdk.CURRENT_TIME) - ); - actionGroup.add_action(act); - }); -} diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/other.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/other.js deleted file mode 100644 index 0fac364..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/other.js +++ /dev/null @@ -1,86 +0,0 @@ -import Adw from 'gi://Adw'; -import GLib from 'gi://GLib'; -import GObject from 'gi://GObject'; -import Gio from 'gi://Gio'; - - -export const Other = GObject.registerClass({ - GTypeName: 'Other', - Template: GLib.uri_resolve_relative(import.meta.url, '../ui/other.ui', GLib.UriFlags.NONE), - InternalChildren: [ - 'lockscreen_blur', - 'lockscreen_pipeline_choose_row', - - 'screenshot_blur', - 'screenshot_pipeline_choose_row', - - 'window_list_blur', - 'window_list_sigma', - 'window_list_brightness', - - 'coverflow_alt_tab_blur', - 'coverflow_alt_tab_pipeline_choose_row', - - 'hack_level', - 'debug', - 'reset' - ], -}, class Overview extends Adw.PreferencesPage { - constructor(preferences, pipelines_manager, pipelines_page) { - super({}); - - this.preferences = preferences; - this.pipelines_manager = pipelines_manager; - this.pipelines_page = pipelines_page; - - this.preferences.lockscreen.settings.bind( - 'blur', this._lockscreen_blur, 'active', - Gio.SettingsBindFlags.DEFAULT - ); - - this._lockscreen_pipeline_choose_row.initialize( - this.preferences.lockscreen, this.pipelines_manager, this.pipelines_page - ); - - this.preferences.screenshot.settings.bind( - 'blur', this._screenshot_blur, 'active', - Gio.SettingsBindFlags.DEFAULT - ); - - this._screenshot_pipeline_choose_row.initialize( - this.preferences.screenshot, this.pipelines_manager, this.pipelines_page - ); - - this.preferences.window_list.settings.bind( - 'blur', this._window_list_blur, 'active', - Gio.SettingsBindFlags.DEFAULT - ); - this.preferences.window_list.settings.bind( - 'sigma', this._window_list_sigma, 'value', - Gio.SettingsBindFlags.DEFAULT - ); - this.preferences.window_list.settings.bind( - 'brightness', this._window_list_brightness, 'value', - Gio.SettingsBindFlags.DEFAULT - ); - - this.preferences.coverflow_alt_tab.settings.bind( - 'blur', this._coverflow_alt_tab_blur, 'active', - Gio.SettingsBindFlags.DEFAULT - ); - this._coverflow_alt_tab_pipeline_choose_row.initialize( - this.preferences.coverflow_alt_tab, this.pipelines_manager, this.pipelines_page - ); - - this.preferences.settings.bind( - 'hacks-level', this._hack_level, 'selected', - Gio.SettingsBindFlags.DEFAULT - ); - this.preferences.settings.bind( - 'debug', this._debug, 'active', - Gio.SettingsBindFlags.DEFAULT - ); - - this._reset.connect('clicked', () => this.preferences.reset()); - } -}); \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/overview.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/overview.js deleted file mode 100644 index f6fe592..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/overview.js +++ /dev/null @@ -1,59 +0,0 @@ -import Adw from 'gi://Adw'; -import GLib from 'gi://GLib'; -import GObject from 'gi://GObject'; -import Gio from 'gi://Gio'; - - -export const Overview = GObject.registerClass({ - GTypeName: 'Overview', - Template: GLib.uri_resolve_relative(import.meta.url, '../ui/overview.ui', GLib.UriFlags.NONE), - InternalChildren: [ - 'overview_blur', - 'pipeline_choose_row', - 'overview_style_components', - - 'appfolder_blur', - 'appfolder_sigma', - 'appfolder_brightness', - 'appfolder_style_dialogs' - ], -}, class Overview extends Adw.PreferencesPage { - constructor(preferences, pipelines_manager, pipelines_page) { - super({}); - - this.preferences = preferences; - this.pipelines_manager = pipelines_manager; - this.pipelines_page = pipelines_page; - - this.preferences.overview.settings.bind( - 'blur', this._overview_blur, 'active', - Gio.SettingsBindFlags.DEFAULT - ); - - this._pipeline_choose_row.initialize( - this.preferences.overview, this.pipelines_manager, this.pipelines_page - ); - - this.preferences.overview.settings.bind( - 'style-components', this._overview_style_components, 'selected', - Gio.SettingsBindFlags.DEFAULT - ); - - this.preferences.appfolder.settings.bind( - 'blur', this._appfolder_blur, 'active', - Gio.SettingsBindFlags.DEFAULT - ); - this.preferences.appfolder.settings.bind( - 'sigma', this._appfolder_sigma, 'value', - Gio.SettingsBindFlags.DEFAULT - ); - this.preferences.appfolder.settings.bind( - 'brightness', this._appfolder_brightness, 'value', - Gio.SettingsBindFlags.DEFAULT - ); - this.preferences.appfolder.settings.bind( - 'style-dialogs', this._appfolder_style_dialogs, 'selected', - Gio.SettingsBindFlags.DEFAULT - ); - } -}); \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/panel.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/panel.js deleted file mode 100644 index c49f323..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/panel.js +++ /dev/null @@ -1,102 +0,0 @@ -import Adw from 'gi://Adw'; -import GLib from 'gi://GLib'; -import GObject from 'gi://GObject'; -import Gio from 'gi://Gio'; - - -export const Panel = GObject.registerClass({ - GTypeName: 'Panel', - Template: GLib.uri_resolve_relative(import.meta.url, '../ui/panel.ui', GLib.UriFlags.NONE), - InternalChildren: [ - 'blur', - 'pipeline_choose_row', - 'mode_static', - 'mode_dynamic', - 'sigma_row', - 'sigma', - 'brightness_row', - 'brightness', - 'unblur_in_overview', - 'force_light_text', - 'override_background', - 'style_panel', - 'override_background_dynamically', - 'hidetopbar_compatibility', - 'dtp_blur_original_panel' - ], -}, class Panel extends Adw.PreferencesPage { - constructor(preferences, pipelines_manager, pipelines_page) { - super({}); - - this.preferences = preferences; - this.pipelines_manager = pipelines_manager; - this.pipelines_page = pipelines_page; - - this.preferences.panel.settings.bind( - 'blur', this._blur, 'active', - Gio.SettingsBindFlags.DEFAULT - ); - - this._pipeline_choose_row.initialize( - this.preferences.panel, this.pipelines_manager, this.pipelines_page - ); - - this.change_blur_mode(this.preferences.panel.STATIC_BLUR, true); - - this._mode_static.connect('toggled', - () => this.preferences.panel.STATIC_BLUR = this._mode_static.active - ); - this.preferences.panel.STATIC_BLUR_changed( - () => this.change_blur_mode(this.preferences.panel.STATIC_BLUR, false) - ); - - this.preferences.panel.settings.bind( - 'sigma', this._sigma, 'value', - Gio.SettingsBindFlags.DEFAULT - ); - this.preferences.panel.settings.bind( - 'brightness', this._brightness, 'value', - Gio.SettingsBindFlags.DEFAULT - ); - this.preferences.panel.settings.bind( - 'unblur-in-overview', this._unblur_in_overview, 'active', - Gio.SettingsBindFlags.DEFAULT - ); - this.preferences.panel.settings.bind( - 'force-light-text', this._force_light_text, 'active', - Gio.SettingsBindFlags.DEFAULT - ); - this.preferences.panel.settings.bind( - 'override-background', - this._override_background, 'enable-expansion', - Gio.SettingsBindFlags.DEFAULT - ); - this.preferences.panel.settings.bind( - 'style-panel', this._style_panel, 'selected', - Gio.SettingsBindFlags.DEFAULT - ); - this.preferences.panel.settings.bind( - 'override-background-dynamically', - this._override_background_dynamically, 'active', - Gio.SettingsBindFlags.DEFAULT - ); - this.preferences.hidetopbar.settings.bind( - 'compatibility', this._hidetopbar_compatibility, 'active', - Gio.SettingsBindFlags.DEFAULT - ); - this.preferences.dash_to_panel.settings.bind( - 'blur-original-panel', this._dtp_blur_original_panel, 'active', - Gio.SettingsBindFlags.DEFAULT - ); - } - - change_blur_mode(is_static_blur, first_run) { - this._mode_static.set_active(is_static_blur); - if (first_run) - this._mode_dynamic.set_active(!is_static_blur); - - this._pipeline_choose_row.set_visible(is_static_blur); - this._sigma_row.set_visible(!is_static_blur); - this._brightness_row.set_visible(!is_static_blur); - } -}); \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/pipelines.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/pipelines.js deleted file mode 100644 index 158ea9a..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/pipelines.js +++ /dev/null @@ -1,98 +0,0 @@ -import Adw from 'gi://Adw'; -import GLib from 'gi://GLib'; -import GObject from 'gi://GObject'; -import { gettext as _ } from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js'; - -import { PipelineGroup } from './pipelines_management/pipeline_group.js'; -import { EffectsDialog } from './pipelines_management/effects_dialog.js'; - - -export const Pipelines = GObject.registerClass({ - GTypeName: 'Pipelines', - Template: GLib.uri_resolve_relative(import.meta.url, '../ui/pipelines.ui', GLib.UriFlags.NONE), - InternalChildren: [ - 'add_pipeline' - ], -}, class Pipelines extends Adw.PreferencesPage { - constructor(preferences, pipelines_manager, window) { - super({}); - - this.preferences = preferences; - this.pipelines_manager = pipelines_manager; - this.window = window; - - this.pipelines_map = new Map; - - for (let pipeline_id in this.pipelines_manager.pipelines) - this.add_pipeline(pipeline_id, false); - - this.preferences.connect('reset', _ => { - this.pipelines_map.forEach((_infos, pid) => this.remove_pipeline(pid)); - for (let pipeline_id in this.pipelines_manager.pipelines) - this.add_pipeline(pipeline_id, false); - }); - - this._add_pipeline.connect( - "clicked", - () => this.pipelines_manager.create_pipeline(_("New pipeline")) - ); - - this.pipelines_manager.connect( - "pipeline-created", - (_obj, id, _pipeline) => this.add_pipeline(id, true) - ); - } - - add_pipeline(pipeline_id, scroll_to_bottom) { - let pipeline = this.pipelines_manager.pipelines[pipeline_id]; - let pipeline_group = new PipelineGroup( - this.pipelines_manager, pipeline_id, pipeline, this - ); - - let pipeline_destroyed_id = this.pipelines_manager.connect( - pipeline_id + "::pipeline-destroyed", - () => this.remove_pipeline(pipeline_id) - ); - - let pipeline_renamed_id = this.pipelines_manager.connect( - pipeline_id + "::pipeline-renamed", - (_obj, name) => this.rename_pipeline(pipeline_id, name) - ); - - this.pipelines_map.set(pipeline_id, { - pipeline_group, pipeline_destroyed_id, pipeline_renamed_id - }); - - this.add(pipeline_group); - - // scroll to the bottom of the page - if (scroll_to_bottom) { - this.window.set_visible_page(this); - setTimeout(() => { - const scroll_adjustment = this.get_first_child().get_vadjustment(); - scroll_adjustment.value = scroll_adjustment.get_upper(); - }, 10); - pipeline_group._title.grab_focus(); - } - } - - remove_pipeline(pipeline_id) { - let pipeline_infos = this.pipelines_map.get(pipeline_id); - if (pipeline_infos) { - this.pipelines_manager.disconnect(pipeline_infos.pipeline_destroyed_id); - this.remove(pipeline_infos.pipeline_group); - this.pipelines_map.delete(pipeline_id); - } - } - - rename_pipeline(pipeline_id, name) { - let pipeline_infos = this.pipelines_map.get(pipeline_id); - if (pipeline_infos) - pipeline_infos.pipeline_group.set_title(name.length > 0 ? name : " "); - } - - open_effects_dialog(pipeline_id) { - let dialog = new EffectsDialog(this.pipelines_manager, pipeline_id); - dialog.present(this.window); - } -}); \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/pipelines_management/effect_row.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/pipelines_management/effect_row.js deleted file mode 100644 index 130edfd..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/pipelines_management/effect_row.js +++ /dev/null @@ -1,222 +0,0 @@ -import Adw from 'gi://Adw'; -import GObject from 'gi://GObject'; -import Gtk from 'gi://Gtk'; -import { gettext as _ } from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js'; - -import { get_supported_effects } from '../../effects/effects.js'; - - -export const EffectRow = GObject.registerClass({ - GTypeName: 'EffectRow', - InternalChildren: [], -}, class EffectRow extends Adw.ExpanderRow { - constructor(effect, effects_dialog) { - super({}); - - this.SUPPORTED_EFFECTS = get_supported_effects(_); - - this.effect = effect; - this.effects_dialog = effects_dialog; - this.pipeline_id = effects_dialog.pipeline_id; - this.pipelines_manager = effects_dialog.pipelines_manager; - - if (effect.type in this.SUPPORTED_EFFECTS) { - this.set_title(this.SUPPORTED_EFFECTS[effect.type].name); - this.set_subtitle(this.SUPPORTED_EFFECTS[effect.type].description); - this.populate_options(); - } - else { - this._warn(`could not assign effect ${effect.type} to its correct name`); - this.set_title(effect.type); - } - - let prefix_bin = new Gtk.Box({ - spacing: 6 - }); - this.add_prefix(prefix_bin); - - let move_bin = new Gtk.Box({ - orientation: Gtk.Orientation.VERTICAL, - 'width-request': 38, - 'height-request': 38, - 'margin-top': 6, - 'margin-bottom': 6 - }); - prefix_bin.append(move_bin); - move_bin.add_css_class('linked'); - - this._move_up_button = new Gtk.Button({ - 'icon-name': 'go-up-symbolic', - 'width-request': 38, - 'height-request': 19 - }); - this._move_down_button = new Gtk.Button({ - 'icon-name': 'go-down-symbolic', - 'width-request': 38, - 'height-request': 19 - }); - this._move_up_button.add_css_class('flat'); - this._move_down_button.add_css_class('flat'); - move_bin.append(this._move_up_button); - move_bin.append(this._move_down_button); - - this._move_up_button.connect('clicked', () => effects_dialog.move_row_by(this, -1)); - this._move_down_button.connect('clicked', () => effects_dialog.move_row_by(this, +1)); - - let remove_button = new Gtk.Button({ - 'icon-name': 'remove-row-symbolic', - 'width-request': 38, - 'height-request': 38, - 'margin-top': 6, - 'margin-bottom': 6, - 'valign': Gtk.Align.CENTER - }); - prefix_bin.append(remove_button); - remove_button.add_css_class('destructive-action'); - - remove_button.connect('clicked', () => effects_dialog.remove_row(this)); - } - - populate_options() { - const editable_params = this.SUPPORTED_EFFECTS[this.effect.type].editable_params; - - if (Object.keys(editable_params).length == 0) - this.enable_expansion = false; - - for (const param_key in editable_params) { - let param = editable_params[param_key]; - let row; - switch (param.type) { - case "integer": - row = new Adw.SpinRow({ - adjustment: new Gtk.Adjustment({ - lower: param.min, - upper: param.max, - step_increment: param.increment - }) - }); - row.adjustment.set_value(this.get_effect_param(param_key)); - row.adjustment.connect( - 'value-changed', () => this.set_effect_param(param_key, row.adjustment.value) - ); - break; - - case "float": - row = new Adw.ActionRow; - let scale = new Gtk.Scale({ - valign: Gtk.Align.CENTER, - hexpand: true, - width_request: 200, - draw_value: true, - value_pos: Gtk.PositionType.RIGHT, - digits: param.digits, - adjustment: new Gtk.Adjustment({ - lower: param.min, - upper: param.max, - step_increment: param.increment, - page_increment: param.big_increment - }) - }); - // TODO check if it's a good idea to set the default parameter, as the "good" - // value really change depending on the user wallpaper... if so, do for dynamic - // blur too - scale.add_mark( - this.get_default_effect_param(param_key), Gtk.PositionType.BOTTOM, null - ); - row.add_suffix(scale); - scale.adjustment.set_value(this.get_effect_param(param_key)); - scale.adjustment.connect( - 'value-changed', () => this.set_effect_param(param_key, scale.adjustment.value) - ); - break; - - case "boolean": - row = new Adw.SwitchRow; - row.set_active(this.get_effect_param(param_key)); - row.connect( - 'notify::active', () => this.set_effect_param(param_key, row.active) - ); - break; - - case "dropdown": - row = new Adw.ComboRow({ model: new Gtk.StringList }); - param.options.forEach(option => row.model.append(option)); - row.selected = this.get_effect_param(param_key); - row.connect( - 'notify::selected', () => this.set_effect_param(param_key, row.selected) - ); - break; - - case "rgba": - row = new Adw.ActionRow; - let color_button = new Gtk.ColorButton({ - valign: Gtk.Align.CENTER, - width_request: 75, - height_request: 45, - show_editor: true, - use_alpha: true - }); - row.add_suffix(color_button); - // set original color - let c = color_button.get_rgba().copy(); - [c.red, c.green, c.blue, c.alpha] = this.get_effect_param(param_key); - color_button.set_rgba(c); - // update on on 'color-set' - color_button.connect( - 'color-set', () => { - let c = color_button.get_rgba(); - this.set_effect_param(param_key, [c.red, c.green, c.blue, c.alpha]); - } - ); - break; - - default: - row = new Adw.ActionRow; - break; - } - row.set_title(param.name); - row.set_subtitle(param.description); - this.add_row(row); - } - } - - get_effect_param(key) { - let effects = this.pipelines_manager.pipelines[this.pipeline_id].effects; - const gsettings_effect = effects.find(e => e.id == this.effect.id); - - if ('params' in gsettings_effect && key in gsettings_effect.params) - return gsettings_effect.params[key]; - else - return this.get_default_effect_param(key); - } - - get_default_effect_param(key) { - return this.SUPPORTED_EFFECTS[this.effect.type].class.default_params[key]; - } - - set_effect_param(key, value) { - // we must pay attention not to change the effects in the pipelines manager before updating - // it in gsettings, else it won't be updated (or every effect will be) - let effects = this.pipelines_manager.pipelines[this.pipeline_id].effects; - const effect_index = effects.findIndex(e => e.id == this.effect.id); - - if (effect_index >= 0) { - effects[effect_index] = { - ...this.effect, params: { ...this.effect.params } - }; - effects[effect_index].params[key] = value; - this.effect = effects[effect_index]; - } - else - this._warn(`effect not found when setting key ${key}`); - - this.pipelines_manager.update_pipeline_effects(this.pipeline_id, effects, false); - } - - _warn(str) { - console.warn( - `[Blur my Shell > effect row] pipeline '${this.pipeline_id}',` - + ` effect '${this.effect.id}': ${str}` - ); - } -}); diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/pipelines_management/effects_dialog.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/pipelines_management/effects_dialog.js deleted file mode 100644 index 222a92e..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/pipelines_management/effects_dialog.js +++ /dev/null @@ -1,174 +0,0 @@ -import Adw from 'gi://Adw'; -import GLib from 'gi://GLib'; -import GObject from 'gi://GObject'; -import Gtk from 'gi://Gtk'; -import Gio from 'gi://Gio'; -import { gettext as _ } from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js'; - -import { EffectRow } from './effect_row.js'; -import { get_effects_groups, get_supported_effects } from '../../effects/effects.js'; - -export const EffectsDialog = GObject.registerClass({ - GTypeName: 'EffectsDialog', - Template: GLib.uri_resolve_relative(import.meta.url, '../../ui/effects-dialog.ui', GLib.UriFlags.NONE), - InternalChildren: [ - "add_effect", - "add_effect_alt_menu", - "effects_list" - ], -}, class EffectsDialog extends Adw.PreferencesDialog { - constructor(pipelines_manager, pipeline_id) { - super({}); - - this.EFFECTS_GROUPS = get_effects_groups(_); - this.SUPPORTED_EFFECTS = get_supported_effects(_); - - this.pipelines_manager = pipelines_manager; - this.pipeline_id = pipeline_id; - - let pipeline = pipelines_manager.pipelines[pipeline_id]; - - this.set_title(pipeline.name.length > 0 ? _(`Effects for "${pipeline.name}"`) : _("Effects")); - - pipeline.effects.forEach(effect => { - const effect_row = new EffectRow(effect, this); - this._effects_list.add(effect_row); - this.update_rows_insensitive_mover(effect_row); - }); - - // setup advanced effects chooser action - this.show_advanced_effects = false; - let action_group = new Gio.SimpleActionGroup(); - this.insert_action_group('effects-dialog', action_group); - let advanced_effects_action = Gio.SimpleAction.new_stateful( - 'advanced-effects-bool', - null, - GLib.Variant.new_boolean(this.show_advanced_effects) - ); - advanced_effects_action.connect( - 'change-state', - (_, state) => { - this.show_advanced_effects = state.get_boolean(); - this.build_effects_chooser(); - advanced_effects_action.set_state(state); - } - ); - action_group.add_action(advanced_effects_action); - - this.build_effects_chooser(); - this._add_effect.connect('clicked', () => this.effects_chooser_dialog.present(this)); - } - - build_effects_chooser() { - this.effects_chooser_dialog = new Adw.Dialog({ - presentation_mode: Adw.DialogPresentationMode.BOTTOM_SHEET, - content_width: 450 - }); - - let page = new Adw.PreferencesPage; - this.effects_chooser_dialog.set_child(page); - - for (const effects_group in this.EFFECTS_GROUPS) { - const group_infos = this.EFFECTS_GROUPS[effects_group]; - - let group = new Adw.PreferencesGroup({ - title: group_infos.name - }); - page.add(group); - - for (const effect_type of group_infos.contains) { - if (!(effect_type in this.SUPPORTED_EFFECTS)) - continue; - - if (!this.show_advanced_effects && this.SUPPORTED_EFFECTS[effect_type].is_advanced) - continue; - - let action_row = new Adw.ActionRow({ - title: this.SUPPORTED_EFFECTS[effect_type].name, - subtitle: this.SUPPORTED_EFFECTS[effect_type].description - }); - let select_button = new Gtk.Button({ - 'icon-name': 'select-row-symbolic', - 'width-request': 38, - 'height-request': 38, - 'margin-top': 6, - 'margin-bottom': 6 - }); - group.add(action_row); - - select_button.add_css_class('flat'); - action_row.add_suffix(select_button); - action_row.set_activatable_widget(select_button); - select_button.connect('clicked', () => { - this.append_effect(effect_type); - this.effects_chooser_dialog.close(); - }); - } - } - } - - append_effect(effect_type) { - const effect = { - type: effect_type, id: "effect_" + ("" + Math.random()).slice(2, 16) - }; - this.pipelines_manager.update_pipeline_effects( - this.pipeline_id, - [...this.pipelines_manager.pipelines[this.pipeline_id].effects, effect] - ); - - const effect_row = new EffectRow(effect, this); - this._effects_list.add(effect_row); - this.move_row_by(effect_row, 0); - this.update_rows_insensitive_mover(effect_row); - } - - move_row_by(row, number) { - const effects = this.pipelines_manager.pipelines[this.pipeline_id].effects; - const effect_index = effects.findIndex(e => e.id == row.effect.id); - - if (effect_index >= 0) { - effects.splice(effect_index, 1); - effects.splice(effect_index + number, 0, row.effect); - - const listbox = row.get_parent(); - listbox.set_sort_func((row_a, row_b) => { - const id_a = effects.findIndex(e => e.id == row_a.effect.id); - const id_b = effects.findIndex(e => e.id == row_b.effect.id); - return id_a > id_b; - }); - - this.update_rows_insensitive_mover(row); - - this.pipelines_manager.update_pipeline_effects( - this.pipeline_id, effects - ); - } - } - - update_rows_insensitive_mover(any_row) { - if (this._insensitive_top) - this._insensitive_top.set_sensitive(true); - if (this._insensitive_bottom) - this._insensitive_bottom.set_sensitive(true); - - const listbox = any_row.get_parent(); - this._insensitive_top = listbox.get_first_child()._move_up_button; - this._insensitive_top?.set_sensitive(false); - this._insensitive_bottom = listbox.get_last_child()._move_down_button; - this._insensitive_bottom?.set_sensitive(false); - } - - remove_row(row) { - const effects = this.pipelines_manager.pipelines[this.pipeline_id].effects; - const effect_index = effects.findIndex(e => e.id == row.effect.id); - - if (effect_index >= 0) { - effects.splice(effect_index, 1); - this.pipelines_manager.update_pipeline_effects( - this.pipeline_id, effects - ); - } - - this._effects_list.remove(row); - } -}); diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/pipelines_management/pipeline_choose_row.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/pipelines_management/pipeline_choose_row.js deleted file mode 100644 index e0c5165..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/pipelines_management/pipeline_choose_row.js +++ /dev/null @@ -1,106 +0,0 @@ -import Adw from 'gi://Adw'; -import GLib from 'gi://GLib'; -import GObject from 'gi://GObject'; -import Gtk from 'gi://Gtk'; -import { gettext as _ } from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js'; - - -export const PipelineChooseRow = GObject.registerClass({ - GTypeName: 'PipelineChooseRow', - Template: GLib.uri_resolve_relative(import.meta.url, '../../ui/pipeline-choose-row.ui', GLib.UriFlags.NONE), - InternalChildren: [ - 'pipeline_choose', - 'pipeline_model', - 'pipeline_edit' - ], -}, class PipelineChooseRow extends Adw.ActionRow { - initialize(preferences, pipelines_manager, pipelines_page) { - this.preferences = preferences; - this.pipelines_manager = pipelines_manager; - this.pipelines_page = pipelines_page; - - this.create_pipelines_list(); - - // display the correct pipeline name in the drop-down instead of their ids - const closure_func = string_object => { - const pipeline_id = string_object.get_string(); - if (pipeline_id == 'create_new') - return _("Create new pipeline"); - if (pipeline_id in this.pipelines_manager.pipelines) - return this.pipelines_manager.pipelines[pipeline_id].name; - else - return ""; - }; - - const expression = new Gtk.ClosureExpression(GObject.TYPE_STRING, closure_func, []); - this._pipeline_choose.expression = expression; - - // TODO fix the expression not being re-evaluated other than by setting it again - this.pipelines_manager.connect( - 'pipeline-names-changed', - () => this._pipeline_choose.expression = new Gtk.ClosureExpression( - GObject.TYPE_STRING, closure_func, [] - ) - ); - - this.preferences.PIPELINE_changed(() => this.on_settings_pipeline_changed()); - - this.pipelines_manager.connect('pipeline-list-changed', () => this.create_pipelines_list()); - - this._pipeline_choose.connect('notify::selected', () => this.on_selected_pipeline_changed()); - - this._pipeline_edit.connect( - 'clicked', - () => this.pipelines_page.open_effects_dialog(this.preferences.PIPELINE) - ); - } - - on_selected_pipeline_changed() { - if (!this._pipeline_choose.selected_item || this._is_creating_pipelines_list) - return; - - const pipeline_id = this._pipeline_choose.selected_item.get_string(); - if (pipeline_id == 'create_new') { - const id = this.pipelines_manager.create_pipeline(_("New pipeline")); - this.preferences.PIPELINE = id; - } - else - this.preferences.PIPELINE = pipeline_id; - } - - on_settings_pipeline_changed() { - for (let i = 0; i < this._pipeline_model.n_items; i++) { - const pipeline_id = this._pipeline_model.get_string(i); - // if we have more pipelines than we should have: rebuild... - // that is the case when resetting the preferences for example - if (!(pipeline_id in this.pipelines_manager)) { - this.create_pipelines_list(); - return; - } - if (pipeline_id == this.preferences.PIPELINE) - this._pipeline_choose.set_selected(i); - } - } - - create_pipelines_list() { - // prevent the pipeline selector from being updated while re-creating the list - this._is_creating_pipelines_list = true; - - // remove ancient items - this._pipeline_model.splice(0, this._pipeline_model.n_items, null); - - // add new ones - let i = 0; - for (let pipeline_id in this.pipelines_manager.pipelines) { - this._pipeline_model.append(pipeline_id); - if (pipeline_id == this.preferences.PIPELINE) - this._pipeline_choose.set_selected(i); - i++; - } - this._pipeline_model.append('create_new'); - - // now update the drop-down selector - this._is_creating_pipelines_list = false; - this.on_selected_pipeline_changed(); - } -}); \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/pipelines_management/pipeline_group.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/pipelines_management/pipeline_group.js deleted file mode 100644 index 627b576..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/preferences/pipelines_management/pipeline_group.js +++ /dev/null @@ -1,99 +0,0 @@ -import Adw from 'gi://Adw'; -import GLib from 'gi://GLib'; -import GObject from 'gi://GObject'; -import Gtk from 'gi://Gtk'; -import { gettext as _ } from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js'; - -import { get_supported_effects } from '../../effects/effects.js'; - - -export const PipelineGroup = GObject.registerClass({ - GTypeName: 'PipelineGroup', - Template: GLib.uri_resolve_relative(import.meta.url, '../../ui/pipeline-group.ui', GLib.UriFlags.NONE), - InternalChildren: [ - "title", - "effects_description_row", - "manage_effects" - ], -}, class PipelineGroup extends Adw.PreferencesGroup { - constructor(pipelines_manager, pipeline_id, pipeline, pipelines_page) { - super({}); - - this.SUPPORTED_EFFECTS = get_supported_effects(_); - - this._pipelines_manager = pipelines_manager; - this._pipelines_page = pipelines_page; - this._pipeline_id = pipeline_id; - - // set the description - this.set_description(_(`Pipeline id: "${pipeline_id}"`)); - - // set the title and connect it to the text entry - this.set_title(pipeline.name.length > 0 ? pipeline.name : " "); - this._title.set_text(pipeline.name); - this._title.connect( - 'changed', - () => pipelines_manager.rename_pipeline(pipeline_id, this._title.get_text()) - ); - - // the bin containing the actions - let prefix_bin = new Gtk.Box; - prefix_bin.add_css_class('linked'); - this._title.add_prefix(prefix_bin); - - // add a 'remove' button if we are not the default pipeline - if (pipeline_id != "pipeline_default") { - let remove_button = new Gtk.Button({ - 'icon-name': 'remove-row-symbolic', - 'width-request': 38, - 'height-request': 38, - 'margin-top': 6, - 'margin-bottom': 6 - }); - remove_button.add_css_class('destructive-action'); - prefix_bin.append(remove_button); - remove_button.connect('clicked', () => pipelines_manager.delete_pipeline(pipeline_id)); - } - // add a 'duplicate' button - let duplicate_button = new Gtk.Button({ - 'icon-name': 'duplicate-row-symbolic', - 'width-request': 38, - 'height-request': 38, - 'margin-top': 6, - 'margin-bottom': 6 - }); - prefix_bin.append(duplicate_button); - duplicate_button.connect('clicked', () => pipelines_manager.duplicate_pipeline(pipeline_id)); - - this.update_effects_description_row(); - this._pipelines_manager.connect( - pipeline_id + '::pipeline-updated', - () => this.update_effects_description_row() - ); - - this._manage_effects.connect( - 'clicked', - () => pipelines_page.open_effects_dialog(pipeline_id) - ); - } - - update_effects_description_row() { - const effects = this._pipelines_manager.pipelines[this._pipeline_id].effects; - - if (effects.length == 0) - this._effects_description_row.set_title(_("No effect")); - else if (effects.length == 1) - this._effects_description_row.set_title(_("1 effect")); - else - this._effects_description_row.set_title(_(`${effects.length} effects`)); - - let subtitle = ""; - effects.forEach(effect => { - if (effect.type in this.SUPPORTED_EFFECTS) - subtitle += _(`${this.SUPPORTED_EFFECTS[effect.type].name}, `); - else - subtitle += _("Unknown effect, "); - }); - this._effects_description_row.set_subtitle(subtitle.slice(0, -2)); - } -}); diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/prefs.js b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/prefs.js deleted file mode 100644 index 43c4889..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/prefs.js +++ /dev/null @@ -1,51 +0,0 @@ -import Gdk from 'gi://Gdk'; -import Gtk from 'gi://Gtk'; -import { ExtensionPreferences } from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js'; - -import { update_from_old_settings } from './conveniences/settings_updater.js'; -import { PipelinesManager } from './conveniences/pipelines_manager.js'; -import { Settings } from './conveniences/settings.js'; -import { KEYS } from './conveniences/keys.js'; - -import { addMenu } from './preferences/menu.js'; -import { Pipelines } from './preferences/pipelines.js'; -import { Panel } from './preferences/panel.js'; -import { Overview } from './preferences/overview.js'; -import { Dash } from './preferences/dash.js'; -import { Applications } from './preferences/applications.js'; -import { Other } from './preferences/other.js'; - -import './preferences/pipelines_management/pipeline_choose_row.js'; - - -export default class BlurMyShellPreferences extends ExtensionPreferences { - constructor(metadata) { - super(metadata); - - // load the icon theme - let iconPath = this.dir.get_child("icons").get_path(); - let iconTheme = Gtk.IconTheme.get_for_display(Gdk.Display.get_default()); - iconTheme.add_search_path(iconPath); - } - - fillPreferencesWindow(window) { - addMenu(window); - - // update from old settings, very important for hacks level specifically - update_from_old_settings(this.getSettings()); - - const preferences = new Settings(KEYS, this.getSettings()); - const pipelines_manager = new PipelinesManager(preferences); - - const pipelines_page = new Pipelines(preferences, pipelines_manager, window); - - window.add(pipelines_page); - window.add(new Panel(preferences, pipelines_manager, pipelines_page)); - window.add(new Overview(preferences, pipelines_manager, pipelines_page)); - window.add(new Dash(preferences, pipelines_manager, pipelines_page)); - window.add(new Applications(preferences, window, pipelines_manager, pipelines_page)); - window.add(new Other(preferences, pipelines_manager, pipelines_page)); - - window.search_enabled = true; - } -} diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/schemas/gschemas.compiled b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/schemas/gschemas.compiled deleted file mode 100644 index c2b6708..0000000 Binary files a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/schemas/gschemas.compiled and /dev/null differ diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/schemas/org.gnome.shell.extensions.blur-my-shell.gschema.xml b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/schemas/org.gnome.shell.extensions.blur-my-shell.gschema.xml deleted file mode 100644 index 7526e30..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/schemas/org.gnome.shell.extensions.blur-my-shell.gschema.xml +++ /dev/null @@ -1,595 +0,0 @@ - - - - - - - 1 - The version of the settings to update from. - - - - , - 'effects': <[ - <{ - 'type': <'native_static_gaussian_blur'>, - 'id': <'effect_000000000000'>, - 'params': <{ - 'radius': <30>, - 'brightness': <0.6> - }> - }> - ]> - }, - 'pipeline_default_rounded': { - 'name': <'Default rounded'>, - 'effects': <[ - <{ - 'type': <'native_static_gaussian_blur'>, - 'id': <'effect_000000000001'>, - 'params': <{ - 'radius': <30>, - 'brightness': <0.6> - }> - }>, - <{ - 'type': <'corner'>, - 'id': <'effect_000000000002'>, - 'params': <{ - 'radius': <24> - }> - }> - ]> - } - } - ]]> - A dictionnary describing the different pipelines and their effects. - - - - 30 - Global gaussian sigma to use - - - - 0.6 - Global brightness to use - - - - (0.,0.,0.,0.) - Color to mix with the blur effect - - - - 0. - Amount of noise to add to the blur effect - - - - 0. - Lightness of the noise added to the blur effect - - - - true - Boolean, controls wether or not the color and noise effects are in use globally - - - - 1 - Level of hacks to use (from 0 to 2, 2 disabling clipped redraws entirely) - - - - false - Boolean, set to true to activate debug mode (more verbose journalctl logs) - - - - - - - - - - - - - - - - - - - - true - Boolean, whether to blur activate the blur for this component or not - - - - "pipeline_default" - String, the name of the pipeline to use. It must exist, else "pipeline_default" will be used - - - - false - Boolean, whether to customize the blur effect sigma/brightness or use general values - - - - 30 - Gaussian sigma to use for the blur effect - - - - 0.6 - Brightness to use for the blur effect - - - - (0.,0.,0.,0.) - Color to mix with the blur effect - - - - 0. - Amount of noise to add to the blur effect - - - - 0. - Lightness of the noise added to the blur effect - - - - 1 - Enum to select the style of the components in overview (0 not styled, 1 light, 2 dark, 3 transparent) - - - - - - - - true - Boolean, whether to blur activate the blur for this component or not - - - - false - Boolean, whether to customize the blur effect sigma/brightness or use general values - - - - 30 - Gaussian sigma to use for the blur effect - - - - 0.6 - Brightness to use for the blur effect - - - - (0.,0.,0.,0.) - Color to mix with the blur effect - - - - 0. - Amount of noise to add to the blur effect - - - - 0. - Lightness of the noise added to the blur effect - - - - 1 - Enum to select the style of the appfolder dialogs (0 not styled, 1 transparent, 2 light, 3 dark) - - - - - - - - true - Boolean, whether to blur activate the blur for this component or not - - - - "pipeline_default" - String, the name of the pipeline to use. It must exist, else "pipeline_default" will be used - - - - false - Boolean, whether to customize the blur effect sigma/brightness or use general values - - - - 30 - Gaussian sigma to use for the blur effect - - - - 0.6 - Brightness to use for the blur effect - - - - (0.,0.,0.,0.) - Color to mix with the blur effect - - - - 0. - Amount of noise to add to the blur effect - - - - 0. - Lightness of the noise added to the blur effect - - - - true - Boolean, whether to use a static or dynamic blur for this component - - - - true - Boolean, whether to disable blur from this component when opening the overview or not - - - - false - Boolean, whether or not to force the panel to have light text, useful when using light theme - - - - true - Boolean, whether to override the background or not - - - - 0 - Enum to select the style of the panel (0 transparent, 1 light, 2 dark, 3 contrasted) - - - - false - Boolean, whether to disable blur from this component when a window is close to the panel - - - - - - - - true - Boolean, whether to blur activate the blur for this component or not - - - - "pipeline_default_rounded" - String, the name of the pipeline to use. It must exist, else "pipeline_default" will be used - - - - false - Boolean, whether to customize the blur effect sigma/brightness or use general values - - - - 30 - Gaussian sigma to use for the blur effect - - - - 0.6 - Brightness to use for the blur effect - - - - (0.,0.,0.,0.) - Color to mix with the blur effect - - - - 0. - Amount of noise to add to the blur effect - - - - 0. - Lightness of the noise added to the blur effect - - - - true - Boolean, whether to use static or dynamic blur for this component - - - - true - Boolean, whether to override the background or not - - - - 0 - Enum to select the style of dash to dock (0 transparent, 1 light, 2 dark) - - - - false - Boolean, whether to disable blur from this component when opening the overview or not - - - - 12 - Radius for the corner rounding effect - - - - - - - - false - Boolean, whether to blur activate the blur for this component or not - - - - "pipeline_default" - String, the name of the pipeline to use. It must exist, else "pipeline_default" will be used - - - - false - Boolean, whether to use static or dynamic blur for this component - - - - true - Boolean, whether to customize the blur effect sigma/brightness or use general values - - - - 30 - Gaussian sigma to use for the blur effect - - - - 1. - Brightness to use for the blur effect - - - - (0.,0.,0.,0.) - Color to mix with the blur effect - - - - 0. - Amount of noise to add to the blur effect - - - - 0. - Lightness of the noise added to the blur effect - - - - 215 - Opacity of the window actor on top of the blur effect - - - - true - Wether or not to make the focused window opaque - - - - false - Wether or not to blur applications on the overview - - - - false - Wether or not to blur all applications by default - - - - [] - List of applications to blur - - - - ["Plank","com.desktop.ding", "Conky"] - List of applications not to blur - - - - - - - - true - Boolean, whether to blur activate the blur for this component or not - - - - "pipeline_default" - String, the name of the pipeline to use. It must exist, else "pipeline_default" will be used - - - - false - Boolean, whether to customize the blur effect sigma/brightness or use general values - - - - 30 - Gaussian sigma to use for the blur effect - - - - 0.6 - Brightness to use for the blur effect - - - - (0.,0.,0.,0.) - Color to mix with the blur effect - - - - 0. - Amount of noise to add to the blur effect - - - - 0. - Lightness of the noise added to the blur effect - - - - - - - - true - Boolean, whether to blur activate the blur for this component or not - - - - "pipeline_default" - String, the name of the pipeline to use. It must exist, else "pipeline_default" will be used - - - - false - Boolean, whether to customize the blur effect sigma/brightness or use general values - - - - 30 - Gaussian sigma to use for the blur effect - - - - 0.6 - Brightness to use for the blur effect - - - - (0.,0.,0.,0.) - Color to mix with the blur effect - - - - 0. - Amount of noise to add to the blur effect - - - - 0. - Lightness of the noise added to the blur effect - - - - - - - - true - Boolean, whether to blur activate the blur for this component or not - - - - "pipeline_default" - String, the name of the pipeline to use. It must exist, else "pipeline_default" will be used - - - - false - Boolean, whether to customize the blur effect sigma/brightness or use general values - - - - 30 - Gaussian sigma to use for the blur effect - - - - 0.6 - Brightness to use for the blur effect - - - - (0.,0.,0.,0.) - Color to mix with the blur effect - - - - 0. - Amount of noise to add to the blur effect - - - - 0. - Lightness of the noise added to the blur effect - - - - - - - - true - Boolean, whether to blur activate the blur for this component or not - - - - "pipeline_default" - String, the name of the pipeline to use. It must exist, else "pipeline_default" will be used - - - - - - - - false - Boolean, whether to try compatibility with hidetopbar@mathieu.bidon.ca or not - - - - - - - - true - Boolean, whether to blur the original panel (if option selected) with Dash to Panel - - - \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/stylesheet.css b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/stylesheet.css deleted file mode 100644 index b61e530..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/stylesheet.css +++ /dev/null @@ -1,573 +0,0 @@ -/*** PANEL ***/ - -/* -* `.transparent-panel` -*/ -#panel.transparent-panel { - background: transparent; - transition-duration: 500ms; -} - -/* -* `.dark-panel` -*/ -#panel.dark-panel { - background-color: rgba(100, 100, 100, 0.35); - box-shadow: none; - transition-duration: 500ms; -} - -/* -* `.light-panel` -*/ -#panel.light-panel { - background-color: rgba(200, 200, 200, 0.2); - box-shadow: none; - transition-duration: 500ms; -} - -/* -* `.contrasted-panel` -*/ -#panel.contrasted-panel { - background-color: transparent; - box-shadow: none; - transition-duration: 500ms; -} - -.contrasted-panel .panel-button, -.contrasted-panel .clock, -.contrasted-panel .clock-display StIcon { - color: #ffffff; - border-radius: 14px; - border: 3px solid transparent; - background-color: rgba(0, 0, 0, 0.8); - box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.03); -} - - -.contrasted-panel .clock-display StIcon { - padding: 8px; - margin: 0; -} - -.contrasted-panel .panel-button:hover, -.contrasted-panel .panel-button:hover .clock { - color: #ffffff; - background-color: rgba(0, 0, 0, 0.8); -} - -.contrasted-panel .clock-display { - background-color: transparent !important; - box-shadow: none !important; - border: none !important; -} - -.contrasted-panel .clock { - margin: 0 !important; -} - - -/*** DASH-TO-DOCK ***/ - -/* -* `.transparent-dash` -*/ -.transparent-dash .dash-background { - background-color: transparent !important; -} - -/* -* `.light-dash` -*/ -.light-dash .dash-background { - background-color: rgba(200, 200, 200, 0.2) !important; -} - -/* -* `.dark-dash` -*/ -.dark-dash .dash-background { - background-color: rgba(100, 100, 100, 0.35) !important; -} - - -/*** OVERVIEW ***/ - -/* -* Add transparency to the workspace animation (between workspaces) -*/ -.blurred-overview .workspace-animation { - background-color: transparent !important; -} - - -/* -* `.overview-components-transparent` -*/ - -.overview-components-transparent .workspace-thumbnail { - border: 1px solid rgba(100, 100, 100, 0.35); -} - -.overview-components-transparent .search-entry { - color: white; - background-color: rgba(0, 0, 0, 0); - border-color: transparent; - box-shadow: none; -} - -.overview-components-transparent .search-entry .search-entry-icon { - color: rgba(255, 255, 255, 0.65); -} - -.overview-components-transparent .overview-tile, -.overview-components-transparent .overview-icon, -.overview-components-transparent .grid-search-result, -.overview-components-transparent .list-search-result, -.overview-components-transparent .search-provider-icon, -/* prevents the extension from interfering with Just Perfection */ -.overview-components-transparent.just-perfection .search-section-content, -/* remove the rectangular background from the dash */ -.overview-components-transparent #dash .overview-tile, -.overview-components-transparent #dashtopanelScrollview .overview-tile { - background-color: transparent; -} - -.overview-components-transparent .workspace-thumbnail, -.overview-components-transparent .search-section-content, -.overview-components-transparent .overview-tile.app-folder, -.overview-components-transparent .page-navigation-arrow, -.overview-components-transparent .app-folder-dialog .icon-button, -/* this shouldn't apply to Dash to Dock */ -.overview-components-transparent StBoxLayout>StWidget>#dash>.dash-background { - background-color: rgba(0, 0, 0, 0); -} - -.overview-components-transparent .overview-tile:hover, -.overview-components-transparent .overview-tile:focus, -.overview-components-transparent .overview-tile:selected, -.overview-components-transparent .overview-tile:highlighted, -.overview-components-transparent .grid-search-result:hover, -.overview-components-transparent .grid-search-result:focus, -.overview-components-transparent .grid-search-result:selected, -.overview-components-transparent .grid-search-result:highlighted, -.overview-components-transparent .list-search-result:hover, -.overview-components-transparent .list-search-result:focus, -.overview-components-transparent .list-search-result:selected, -.overview-components-transparent .list-search-result:highlighted, -.overview-components-transparent .search-provider-icon:hover, -.overview-components-transparent .search-provider-icon:focus, -.overview-components-transparent .page-navigation-arrow:hover, -.overview-components-transparent .page-navigation-arrow:focus, -.overview-components-transparent .app-folder-dialog .icon-button:hover, -.overview-components-transparent .app-folder-dialog .icon-button:focus, -.overview-components-transparent #dash .overview-tile:hover .overview-icon, -.overview-components-transparent #dash .overview-tile:focus .overview-icon, -.overview-components-transparent #dash .show-apps:hover .overview-icon, -.overview-components-transparent #dash .show-apps:focus .overview-icon { - background-color: rgba(230, 230, 230, 0.08); -} - -.overview-components-transparent .overview-tile:active, -.overview-components-transparent .overview-tile:focus:hover, -.overview-components-transparent .overview-tile:drop, -.overview-components-transparent .overview-tile:selected:hover, -.overview-components-transparent .overview-tile:highlighted:hover, -.overview-components-transparent .grid-search-result:active, -.overview-components-transparent .grid-search-result:focus:hover, -.overview-components-transparent .grid-search-result:selected:hover, -.overview-components-transparent .grid-search-result:highlighted:hover, -.overview-components-transparent .list-search-result:active, -.overview-components-transparent .list-search-result:focus:hover, -.overview-components-transparent .list-search-result:selected:hover, -.overview-components-transparent .list-search-result:highlighted:hover, -.overview-components-transparent .search-provider-icon:active, -.overview-components-transparent .search-provider-icon:focus:hover, -.overview-components-transparent .page-navigation-arrow:active, -.overview-components-transparent .page-navigation-arrow:focus:hover, -.overview-components-transparent .app-folder-dialog .icon-button:active, -.overview-components-transparent .app-folder-dialog .icon-button:focus:hover, -.overview-components-transparent #dash .overview-tile:active .overview-icon, -.overview-components-transparent #dash .overview-tile:focus:hover .overview-icon, -.overview-components-transparent #dash .overview-tile:drop .overview-icon, -.overview-components-transparent #dash .show-apps:checked .overview-icon { - background-color: rgba(230, 230, 230, 0.12); -} - -.overview-components-transparent .overview-tile:focus:active, -.overview-components-transparent .overview-tile:selected:active, -.overview-components-transparent .overview-tile:highlighted:active, -.overview-components-transparent .grid-search-result:focus:active, -.overview-components-transparent .grid-search-result:selected:active, -.overview-components-transparent .grid-search-result:highlighted:active, -.overview-components-transparent .list-search-result:focus:active, -.overview-components-transparent .list-search-result:selected:active, -.overview-components-transparent .list-search-result:highlighted:active, -.overview-components-transparent .search-provider-icon:focus:active, -.overview-components-transparent .page-navigation-arrow:focus:active, -.overview-components-transparent .app-folder-dialog .icon-button:focus:active, -.overview-components-transparent #dash .show-apps:checked .overview-icon:hover { - background-color: rgba(230, 230, 230, 0.15); -} - - -/* -* `.overview-components-light` -*/ - -.overview-components-light .search-entry { - color: white; - background-color: rgba(200, 200, 200, 0.2); - border-color: transparent; - box-shadow: none; -} - -.overview-components-light .search-entry .search-entry-icon { - color: rgba(255, 255, 255, 0.65); -} - -.overview-components-light .overview-tile, -.overview-components-light .overview-icon, -.overview-components-light .grid-search-result, -.overview-components-light .list-search-result, -.overview-components-light .search-provider-icon, -/* prevents the extension from interfering with Just Perfection */ -.overview-components-light.just-perfection .search-section-content, -/* remove the rectangular background from the dash */ -.overview-components-light #dash .overview-tile, -.overview-components-light #dashtopanelScrollview .overview-tile { - background-color: transparent; -} - -.overview-components-light .workspace-thumbnail, -.overview-components-light .search-section-content, -.overview-components-light .overview-tile.app-folder, -.overview-components-light .page-navigation-arrow, -.overview-components-light .app-folder-dialog .icon-button, -/* this shouldn't apply to Dash to Dock */ -.overview-components-light StBoxLayout>StWidget>#dash>.dash-background { - background-color: rgba(200, 200, 200, 0.2); -} - -.overview-components-light .overview-tile:hover, -.overview-components-light .overview-tile:focus, -.overview-components-light .overview-tile:selected, -.overview-components-light .overview-tile:highlighted, -.overview-components-light .grid-search-result:hover, -.overview-components-light .grid-search-result:focus, -.overview-components-light .grid-search-result:selected, -.overview-components-light .grid-search-result:highlighted, -.overview-components-light .list-search-result:hover, -.overview-components-light .list-search-result:focus, -.overview-components-light .list-search-result:selected, -.overview-components-light .list-search-result:highlighted, -.overview-components-light .search-provider-icon:hover, -.overview-components-light .search-provider-icon:focus, -.overview-components-light .page-navigation-arrow:hover, -.overview-components-light .page-navigation-arrow:focus, -.overview-components-light .app-folder-dialog .icon-button:hover, -.overview-components-light .app-folder-dialog .icon-button:focus, -.overview-components-light #dash .overview-tile:hover .overview-icon, -.overview-components-light #dash .overview-tile:focus .overview-icon, -.overview-components-light #dash .show-apps:hover .overview-icon, -.overview-components-light #dash .show-apps:focus .overview-icon { - background-color: rgba(230, 230, 230, 0.2); -} - -.overview-components-light .overview-tile:active, -.overview-components-light .overview-tile:focus:hover, -.overview-components-light .overview-tile:drop, -.overview-components-light .overview-tile:selected:hover, -.overview-components-light .overview-tile:highlighted:hover, -.overview-components-light .grid-search-result:active, -.overview-components-light .grid-search-result:focus:hover, -.overview-components-light .grid-search-result:selected:hover, -.overview-components-light .grid-search-result:highlighted:hover, -.overview-components-light .list-search-result:active, -.overview-components-light .list-search-result:focus:hover, -.overview-components-light .list-search-result:selected:hover, -.overview-components-light .list-search-result:highlighted:hover, -.overview-components-light .search-provider-icon:active, -.overview-components-light .search-provider-icon:focus:hover, -.overview-components-light .page-navigation-arrow:active, -.overview-components-light .page-navigation-arrow:focus:hover, -.overview-components-light .app-folder-dialog .icon-button:active, -.overview-components-light .app-folder-dialog .icon-button:focus:hover, -.overview-components-light #dash .overview-tile:active .overview-icon, -.overview-components-light #dash .overview-tile:focus:hover .overview-icon, -.overview-components-light #dash .overview-tile:drop .overview-icon, -.overview-components-light #dash .show-apps:checked .overview-icon { - background-color: rgba(230, 230, 230, 0.25); -} - -.overview-components-light .overview-tile:focus:active, -.overview-components-light .overview-tile:selected:active, -.overview-components-light .overview-tile:highlighted:active, -.overview-components-light .grid-search-result:focus:active, -.overview-components-light .grid-search-result:selected:active, -.overview-components-light .grid-search-result:highlighted:active, -.overview-components-light .list-search-result:focus:active, -.overview-components-light .list-search-result:selected:active, -.overview-components-light .list-search-result:highlighted:active, -.overview-components-light .search-provider-icon:focus:active, -.overview-components-light .page-navigation-arrow:focus:active, -.overview-components-light .app-folder-dialog .icon-button:focus:active, -.overview-components-light #dash .show-apps:checked .overview-icon:hover { - background-color: rgba(230, 230, 230, 0.3); -} - - -/* -* `.overview-components-dark` -*/ - -.overview-components-dark .search-entry { - color: white; - background-color: rgba(100, 100, 100, 0.35); - border-color: transparent; - box-shadow: none; -} - -.overview-components-dark .search-entry .search-entry-icon { - color: rgba(255, 255, 255, 0.65); -} - -.overview-components-dark .overview-tile, -.overview-components-dark .overview-icon, -.overview-components-dark .grid-search-result, -.overview-components-dark .list-search-result, -.overview-components-dark .search-provider-icon, -/* prevents the extension from interfering with Just Perfection */ -.overview-components-dark.just-perfection .search-section-content, -/* remove the rectangular background from the dash */ -.overview-components-dark #dash .overview-tile, -.overview-components-dark #dashtopanelScrollview .overview-tile { - background-color: transparent; -} - -.overview-components-dark .workspace-thumbnail, -.overview-components-dark .search-section-content, -.overview-components-dark .overview-tile.app-folder, -.overview-components-dark .page-navigation-arrow, -.overview-components-dark .app-folder-dialog .icon-button, -/* this shouldn't apply to Dash to Dock */ -.overview-components-dark StBoxLayout>StWidget>#dash>.dash-background { - background-color: rgba(100, 100, 100, 0.35); -} - -.overview-components-dark .overview-tile:hover, -.overview-components-dark .overview-tile:focus, -.overview-components-dark .overview-tile:selected, -.overview-components-dark .overview-tile:highlighted, -.overview-components-dark .grid-search-result:hover, -.overview-components-dark .grid-search-result:focus, -.overview-components-dark .grid-search-result:selected, -.overview-components-dark .grid-search-result:highlighted, -.overview-components-dark .list-search-result:hover, -.overview-components-dark .list-search-result:focus, -.overview-components-dark .list-search-result:selected, -.overview-components-dark .list-search-result:highlighted, -.overview-components-dark .search-provider-icon:hover, -.overview-components-dark .search-provider-icon:focus, -.overview-components-dark .page-navigation-arrow:hover, -.overview-components-dark .page-navigation-arrow:focus, -.overview-components-dark .app-folder-dialog .icon-button:hover, -.overview-components-dark .app-folder-dialog .icon-button:focus, -.overview-components-dark #dash .overview-tile:hover .overview-icon, -.overview-components-dark #dash .overview-tile:focus .overview-icon, -.overview-components-dark #dash .show-apps:hover .overview-icon, -.overview-components-dark #dash .show-apps:focus .overview-icon { - background-color: rgba(120, 120, 120, 0.35); -} - -.overview-components-dark .overview-tile:active, -.overview-components-dark .overview-tile:focus:hover, -.overview-components-dark .overview-tile:drop, -.overview-components-dark .overview-tile:selected:hover, -.overview-components-dark .overview-tile:highlighted:hover, -.overview-components-dark .grid-search-result:active, -.overview-components-dark .grid-search-result:focus:hover, -.overview-components-dark .grid-search-result:selected:hover, -.overview-components-dark .grid-search-result:highlighted:hover, -.overview-components-dark .list-search-result:active, -.overview-components-dark .list-search-result:focus:hover, -.overview-components-dark .list-search-result:selected:hover, -.overview-components-dark .list-search-result:highlighted:hover, -.overview-components-dark .search-provider-icon:active, -.overview-components-dark .search-provider-icon:focus:hover, -.overview-components-dark .page-navigation-arrow:active, -.overview-components-dark .page-navigation-arrow:focus:hover, -.overview-components-dark .app-folder-dialog .icon-button:active, -.overview-components-dark .app-folder-dialog .icon-button:focus:hover, -.overview-components-dark #dash .overview-tile:active .overview-icon, -.overview-components-dark #dash .overview-tile:focus:hover .overview-icon, -.overview-components-dark #dash .overview-tile:drop .overview-icon, -.overview-components-dark #dash .show-apps:checked .overview-icon { - background-color: rgba(120, 120, 120, 0.4); -} - -.overview-components-dark .overview-tile:focus:active, -.overview-components-dark .overview-tile:selected:active, -.overview-components-dark .overview-tile:highlighted:active, -.overview-components-dark .grid-search-result:focus:active, -.overview-components-dark .grid-search-result:selected:active, -.overview-components-dark .grid-search-result:highlighted:active, -.overview-components-dark .list-search-result:focus:active, -.overview-components-dark .list-search-result:selected:active, -.overview-components-dark .list-search-result:highlighted:active, -.overview-components-dark .search-provider-icon:focus:active, -.overview-components-dark .page-navigation-arrow:focus:active, -.overview-components-dark .app-folder-dialog .icon-button:focus:active, -.overview-components-dark #dash .show-apps:checked .overview-icon:hover { - background-color: rgba(120, 120, 120, 0.45); -} - - -/*** APPFOLDER DIALOG ***/ - -/* -* `.appfolder-dialogs-transparent` -*/ - -.appfolder-dialogs-transparent { - background-color: rgba(0, 0, 0, 0); - border: none; - box-shadow: none; -} - -.appfolder-dialogs-transparent .folder-name-entry { - color: white; - background-color: rgba(0, 0, 0, 0); - border: 0; - box-shadow: none; -} - -/* -* `.appfolder-dialogs-light` -*/ - -.appfolder-dialogs-light { - background-color: rgba(200, 200, 200, 0.2); - border: none; - box-shadow: none; -} - -.appfolder-dialogs-light .folder-name-entry { - color: white; - background-color: rgba(200, 200, 200, 0.2); - border: 0; - box-shadow: none; -} - - -/* -* `.appfolder-dialogs-dark` -*/ - -.appfolder-dialogs-dark { - background-color: rgba(100, 100, 100, 0.35); - border: none; - box-shadow: none; -} - -.appfolder-dialogs-dark .folder-name-entry { - color: white; - background-color: rgba(100, 100, 100, 0.35); - border: 0; - box-shadow: none; -} - - -/*** PANEL LIGHT TEXT ***/ - -/* -* `.panel-light-text`, adapted from gnome-shell-light.css -*/ - -#panel.panel-light-text .panel-button, -#panel.panel-light-text .panel-button.clock-display, -#panel.panel-light-text .netSpeedLabel { - color: #f6f5f4; - box-shadow: none; -} - -#panel.panel-light-text .panel-button:active, -#panel.panel-light-text .panel-button:focus, -#panel.panel-light-text .panel-button:checked, -#panel.panel-light-text .panel-button.clock-display:active .clock, -#panel.panel-light-text .panel-button.clock-display:focus .clock, -#panel.panel-light-text .panel-button.clock-display:checked .clock { - box-shadow: inset 0 0 0 100px rgba(246, 245, 244, 0.25); -} - -#panel.panel-light-text .panel-button:active:hover, -#panel.panel-light-text .panel-button:focus:hover, -#panel.panel-light-text .panel-button:checked:hover, -#panel.panel-light-text .panel-button.clock-display:active:hover, -#panel.panel-light-text .panel-button.clock-display:focus:hover, -#panel.panel-light-text .panel-button.clock-display:checked:hover, -#panel.panel-light-text .panel-button.clock-display:active .clock:hover, -#panel.panel-light-text .panel-button.clock-display:focus .clock:hover, -#panel.panel-light-text .panel-button.clock-display:checked .clock:hover { - box-shadow: inset 0 0 0 100px rgba(246, 245, 244, 0.35); -} - -#panel.panel-light-text .panel-button:hover, -#panel.panel-light-text .panel-button.clock-display:hover, -#panel.panel-light-text .panel-button.clock-display:hover .clock { - box-shadow: inset 0 0 0 100px rgba(246, 245, 244, 0.2); -} - -#panel.panel-light-text .panel-button#panelActivities .workspace-dot { - background-color: #f6f5f4; -} - -#panel.panel-light-text .panel-button.clock-display:active, -#panel.panel-light-text .panel-button.clock-display:focus, -#panel.panel-light-text .panel-button.clock-display:checked, -#panel.panel-light-text .panel-button.clock-display:hover { - box-shadow: none !important; -} - -#panel.panel-light-text .panel-button.screen-recording-indicator { - color: #f6f5f4; - box-shadow: inset 0 0 0 100px rgba(192, 28, 40, 0.8); -} - -#panel.panel-light-text .panel-button.screen-recording-indicator:active, -#panel.panel-light-text .panel-button.screen-recording-indicator:focus, -#panel.panel-light-text .panel-button.screen-recording-indicator:checked { - box-shadow: inset 0 0 0 100px #c01c28; -} - -#panel.panel-light-text .panel-button.screen-recording-indicator:active:hover, -#panel.panel-light-text .panel-button.screen-recording-indicator:focus:hover, -#panel.panel-light-text .panel-button.screen-recording-indicator:checked:hover { - box-shadow: inset 0 0 0 100px rgba(192, 28, 40, 0.95); -} - -#panel.panel-light-text .panel-button.screen-recording-indicator:hover { - box-shadow: inset 0 0 0 100px rgba(192, 28, 40, 0.9); -} - -#panel.panel-light-text .panel-button.screen-sharing-indicator { - color: #282828; - box-shadow: inset 0 0 0 100px rgba(255, 120, 0, 0.8); -} - -#panel.panel-light-text .panel-button.screen-sharing-indicator:active, -#panel.panel-light-text .panel-button.screen-sharing-indicator:focus, -#panel.panel-light-text .panel-button.screen-sharing-indicator:checked { - box-shadow: inset 0 0 0 100px #ff7800; -} - -#panel.panel-light-text .panel-button.screen-sharing-indicator:active:hover, -#panel.panel-light-text .panel-button.screen-sharing-indicator:focus:hover, -#panel.panel-light-text .panel-button.screen-sharing-indicator:checked:hover { - box-shadow: inset 0 0 0 100px rgba(255, 120, 0, 0.95); -} - -#panel.panel-light-text .panel-button.screen-sharing-indicator:hover { - box-shadow: inset 0 0 0 100px rgba(255, 120, 0, 0.9); -} \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/application-row.ui b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/application-row.ui deleted file mode 100644 index 2a26d14..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/application-row.ui +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - Could not pick window, make sure that the extension is enabled. - - - - Could not pick window from here, does not seem like a valid window. - - \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/applications.ui b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/applications.ui deleted file mode 100644 index 14c9364..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/applications.ui +++ /dev/null @@ -1,276 +0,0 @@ - - - - - - 0 - 100 - 1 - - - - 0.0 - 1.0 - 0.01 - - - - 25 - 255 - 1 - - diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/dash.ui b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/dash.ui deleted file mode 100644 index b08a4d1..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/dash.ui +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - 0 - 100 - 1 - - - - 0.0 - 1.0 - 0.01 - - - - - Transparent - Light - Dark - - - \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/effects-dialog.ui b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/effects-dialog.ui deleted file mode 100644 index c6baf62..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/effects-dialog.ui +++ /dev/null @@ -1,77 +0,0 @@ - - - - - -
- - Include advanced effects - effects-dialog.advanced-effects-bool - -
-
-
\ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/menu.ui b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/menu.ui deleted file mode 100644 index 6d2a474..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/menu.ui +++ /dev/null @@ -1,37 +0,0 @@ - - - -
- - Project page - prefs.open-readme - - - Report a Bug - prefs.open-bug-report - - - License - prefs.open-license - - - Donate - - GitHub - prefs.donate-github - - - Ko-fi - prefs.donate-kofi - - -
-
- - - info_menu_model - heart-symbolic - - - -
\ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/other.ui b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/other.ui deleted file mode 100644 index e136e38..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/other.ui +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - 0 - 100 - 1 - - - - 0.0 - 1.0 - 0.01 - - - - - High performances - Default - No artifact - - - \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/overview.ui b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/overview.ui deleted file mode 100644 index 36b91fc..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/overview.ui +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - Do not style - Light - Dark - Transparent - - - - - 0 - 100 - 1 - - - - 0.0 - 1.0 - 0.01 - - - - - - Do not style - Transparent - Light - Dark - - - \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/panel.ui b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/panel.ui deleted file mode 100644 index 306f4ef..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/panel.ui +++ /dev/null @@ -1,240 +0,0 @@ - - - - - - - Transparent - Light - Dark - Contrasted - - - - - 0 - 100 - 1 - - - - 0.0 - 1.0 - 0.01 - - \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/pipeline-choose-row.ui b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/pipeline-choose-row.ui deleted file mode 100644 index 72b854b..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/pipeline-choose-row.ui +++ /dev/null @@ -1,39 +0,0 @@ - - - - \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/pipeline-group.ui b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/pipeline-group.ui deleted file mode 100644 index 19a12bf..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/pipeline-group.ui +++ /dev/null @@ -1,29 +0,0 @@ - - - - \ No newline at end of file diff --git a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/pipelines.ui b/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/pipelines.ui deleted file mode 100644 index 555ec0a..0000000 --- a/raveos-theme/gnome/theme-data/extensions/installed/blur-my-shell@aunetx/ui/pipelines.ui +++ /dev/null @@ -1,44 +0,0 @@ - - - - \ No newline at end of file -- cgit v1.3