diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml
index 6f48d78..a38fb21 100644
--- a/.github/workflows/checks.yml
+++ b/.github/workflows/checks.yml
@@ -68,9 +68,29 @@ jobs:
run: |
find $GITHUB_WORKSPACE -type f -and \( -name "*.sh" \) | xargs shellcheck
+ references:
+ name: Generate References
+ runs-on: ubuntu-22.04
+ if: >
+ github.event_name == 'push' && contains(github.event.head_commit.message, '[generate-references]')
+ steps:
+ - uses: actions/checkout@v2
+ - name: Download Dependencies
+ run: |
+ sudo apt update -qq
+ sudo apt install gettext -qq
+ - name: Build Burn-My-Windows
+ run: make
+ - name: Generate References
+ run: sudo make references
+ - uses: actions/upload-artifact@v3
+ with:
+ name: references
+ path: tests/references/
+
build:
name: Run Tests
- runs-on: ubuntu-latest
+ runs-on: ubuntu-22.04
if: >
github.event_name == 'pull_request' ||
( contains(github.ref, 'main') && !contains(github.event.head_commit.message, '[no-ci]') ) ||
@@ -86,25 +106,20 @@ jobs:
- '35'
- '36'
session:
- #- 'gnome-xsession' Disabled for now as it miraculously fails on GitHub. Locally, all tests pass...
+ - 'gnome-xsession'
- 'gnome-wayland-nested'
steps:
- uses: actions/checkout@v2
- name: Download Dependencies
run: |
sudo apt update -qq
- sudo apt install gettext -qq
+ sudo apt install gettext imagemagick -qq
- name: Build Burn-My-Windows
run: make
- name: Test Burn-My-Windows
run: sudo $GITHUB_WORKSPACE/tests/run-test.sh -v ${{ matrix.version }} -s ${{ matrix.session }}
- - uses: actions/upload-artifact@v2
+ - uses: actions/upload-artifact@v3
if: failure()
with:
- name: log_${{ matrix.version }}_${{ matrix.session }}
- path: fail.log
- - uses: actions/upload-artifact@v2
- if: failure()
- with:
- name: screen_${{ matrix.version }}_${{ matrix.session }}
- path: fail.png
\ No newline at end of file
+ name: result_${{ matrix.version }}_${{ matrix.session }}
+ path: tests/output/
\ No newline at end of file
diff --git a/README.md b/README.md
index cc3bc0d..7d3c84c 100644
--- a/README.md
+++ b/README.md
@@ -24,6 +24,7 @@ Effect | Preview
-----|--------
**Apparition** This effect hides your windows by violently sucking them into the void of magic! |
**Broken Glass** Shatter your windows into a shower sharp shards! This effect can be configured so that the shards fly away from your mouse pointer position!|
+**Doom** Melt your windows. Inspired by the legendary screen transitions of the original Doom. |
**Energize A** Beam your windows away! |
**Energize B** Using different transporter technology results in an alternative visual effect. |
**Fire** The classic effect inspired by Compiz. However, this is implemented using a GLSL shader and not with a particle system like in the old days. |
@@ -51,6 +52,7 @@ Below is a table which summarizes the current availability for all effects.
3.36
3.38
40
41
42
5.25.0
Apparition
✅
✅
✅
✅
Broken Glass
✅
✅
✅
+
Doom
✅
✅
✅
✅
✅
Energize A
✅
✅
✅
✅
✅
✅
Energize B
✅
✅
✅
✅
✅
✅
Fire
✅
✅
✅
✅
✅
✅
diff --git a/docs/changelog.md b/docs/changelog.md
index 2daacdb..62d60de 100644
--- a/docs/changelog.md
+++ b/docs/changelog.md
@@ -6,11 +6,14 @@
#### New Features
+* **New Effect: Doom.** Melt your windows. Inspired by the legendary screen transitions of the original Doom.
* **New Effect: Pixelate.** Pixelate your windows and randomly hide pixels until the entire window is gone.
#### Enhancements
* Under KWin, the effects now use the same names as in the KDE store.
+* The continuous integration tests now use a fuzzy search for the images targets. This way, the test work again on X11 and Wayland.
+* A new GitHub Actions workflow has been added which is executed whenever a commit message includes the `[generate-references]` tag. This workflow re-creates all reference images for the continuous integration test.
## [Burn My Windows 19](https://github.com/schneegans/Burn-My-Windows/releases/tag/v19)
diff --git a/docs/pics/doom.gif b/docs/pics/doom.gif
new file mode 100644
index 0000000..a354e02
Binary files /dev/null and b/docs/pics/doom.gif differ
diff --git a/extension.js b/extension.js
index ae4452e..b13952d 100644
--- a/extension.js
+++ b/extension.js
@@ -52,6 +52,7 @@ class Extension {
this._ALL_EFFECTS = [
new Me.imports.src.Apparition.Apparition(),
new Me.imports.src.BrokenGlass.BrokenGlass(),
+ new Me.imports.src.Doom.Doom(),
new Me.imports.src.EnergizeA.EnergizeA(),
new Me.imports.src.EnergizeB.EnergizeB(),
new Me.imports.src.Fire.Fire(),
@@ -434,7 +435,7 @@ class Extension {
// windows are faded in / out scaled up / down slightly by GNOME Shell. Here, we tweak
// the transitions so that nothing changes. The window stays opaque and is scaled to
// actorScale.
- const actorScale = effect.getActorScale(this._settings);
+ const actorScale = effect.getActorScale(this._settings, forOpening, actor);
// To make things deterministic during testing, we set the effect duration to 5
// seconds.
diff --git a/kwin/build.sh b/kwin/build.sh
index fd6e2f3..e7678f7 100755
--- a/kwin/build.sh
+++ b/kwin/build.sh
@@ -130,6 +130,7 @@ generate() {
generate "energize-a" "Energize A [Burn-My-Windows]" "Beam your windows away"
generate "energize-b" "Energize B [Burn-My-Windows]" "Using different transporter technology results in an alternative visual effect"
+generate "doom" "Doom [Burn-My-Windows]" "Melt your windows"
generate "fire" "Fire [Burn-My-Windows]" "The classic effect inspired by Compiz"
generate "hexagon" "Hexagon [Burn-My-Windows]" "With glowing lines and hexagon-shaped tiles, this effect looks very sci-fi"
generate "incinerate" "Incinerate [Burn-My-Windows]" "A less snappy but definitely more fancy take on the fire effect"
diff --git a/kwin/doom/config.ui b/kwin/doom/config.ui
new file mode 100755
index 0000000..7c24788
--- /dev/null
+++ b/kwin/doom/config.ui
@@ -0,0 +1,113 @@
+
+
+ BMWConfigForm
+
+
+
+ 0
+ 0
+ 562
+ 365
+
+
+
+
+
+
+ 0
+
+
+ 1.000000000000000
+
+
+ 200.000000000000000
+
+
+
+
+
+
+ Duration:
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+
+ Horizontal Scale
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+
+ Pixel Size
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+
+ milliseconds
+
+
+ 100
+
+
+ 9999
+
+
+ 100
+
+
+
+
+
+
+ 0
+
+
+ 1.000000000000000
+
+
+ 50.000000000000000
+
+
+
+
+
+
+ 0
+
+
+ 1.000000000000000
+
+
+ 200.000000000000000
+
+
+
+
+
+
+ Vertical Scale
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+
+
+
diff --git a/kwin/doom/main.xml b/kwin/doom/main.xml
new file mode 100755
index 0000000..9860d47
--- /dev/null
+++ b/kwin/doom/main.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+ 500
+
+
+ 10
+
+
+ 50
+
+
+ 10
+
+
+
diff --git a/kwin/doom/onSettingsChanged.js b/kwin/doom/onSettingsChanged.js
new file mode 100644
index 0000000..d9a9eef
--- /dev/null
+++ b/kwin/doom/onSettingsChanged.js
@@ -0,0 +1,12 @@
+// This part is automatically included in the effect's source during the build process.
+// The code below is called whenever the user changes something in the configuration of
+// the effect.
+
+// I have not yet found a way to scaling the actor canvas on KWin. So this effect cannot
+// look as good as on GNOME.
+effect.setUniform(this.shader, 'uActorScale', 1.0);
+
+effect.setUniform(this.shader, 'uHorizontalScale',
+ effect.readConfig('HorizontalScale', 1.0));
+effect.setUniform(this.shader, 'uVerticalScale', effect.readConfig('VerticalScale', 1.0));
+effect.setUniform(this.shader, 'uPixelSize', effect.readConfig('PixelSize', 1.0));
diff --git a/kwin/pixelate/config.ui b/kwin/pixelate/config.ui
index ef0b778..d494703 100755
--- a/kwin/pixelate/config.ui
+++ b/kwin/pixelate/config.ui
@@ -50,7 +50,7 @@
- Randomness
+ NoiseQt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
@@ -85,6 +85,6 @@
-
-
-
+
+
+
\ No newline at end of file
diff --git a/prefs.js b/prefs.js
index 64799c0..05b9d5d 100644
--- a/prefs.js
+++ b/prefs.js
@@ -48,6 +48,7 @@ var PreferencesDialog = class PreferencesDialog {
this._ALL_EFFECTS = [
new Me.imports.src.Apparition.Apparition(),
new Me.imports.src.BrokenGlass.BrokenGlass(),
+ new Me.imports.src.Doom.Doom(),
new Me.imports.src.EnergizeA.EnergizeA(),
new Me.imports.src.EnergizeB.EnergizeB(),
new Me.imports.src.Fire.Fire(),
diff --git a/resources/shaders/doom.frag b/resources/shaders/doom.frag
new file mode 100644
index 0000000..cd25e0a
--- /dev/null
+++ b/resources/shaders/doom.frag
@@ -0,0 +1,65 @@
+//////////////////////////////////////////////////////////////////////////////////////////
+// ) ( //
+// ( /( ( ( ) ( ( ( ( )\ ) ( ( //
+// )\()) ))\ )( ( ( )\ ) )\))( )\ ( (()/( ( )\))( ( //
+// ((_)\ /((_|()\ )\ ) )\ '(()/( ((_)()((_) )\ ) ((_)))\((_)()\ )\ //
+// | |(_|_))( ((_)_(_/( _((_)) )(_)) _(()((_|_)_(_/( _| |((_)(()((_|(_) //
+// | '_ \ || | '_| ' \)) | ' \()| || | \ V V / | ' \)) _` / _ \ V V (_-< //
+// |_.__/\_,_|_| |_||_| |_|_|_| \_, | \_/\_/|_|_||_|\__,_\___/\_/\_//__/ //
+// |__/ //
+// Copyright (c) 2021 Simon Schneegans //
+// Released under the GPLv3 or later. See LICENSE file for details. //
+//////////////////////////////////////////////////////////////////////////////////////////
+
+// The content from common.glsl is automatically prepended to each shader effect.
+
+uniform float uActorScale;
+uniform float uHorizontalScale;
+uniform float uVerticalScale;
+uniform float uPixelSize;
+
+// This method returns a mask which smoothly transitions towards zero when approaching
+// the window's top or bottom border.
+float getEdgeMask(vec2 uv, float fadeWidth) {
+ float mask = 1.0;
+ mask *= smoothstep(0.0, 1.0, clamp(uv.y / fadeWidth, 0.0, 1.0));
+ mask *= smoothstep(0.0, 1.0, clamp((1.0 - uv.y) / fadeWidth, 0.0, 1.0));
+ return mask;
+}
+
+void main() {
+ // We simply inverse the pixelation progress for opening windows.
+ float pixelateProgress = uForOpening ? 0.9 - uProgress : uProgress;
+ float pixelSize = max(1.0, ceil(uPixelSize * pixelateProgress + 1.0));
+ vec2 pixelGrid = vec2(pixelSize) / uSize;
+
+ // Snap texcoords to pixel grid.
+ vec2 texcoord = iTexCoord.st;
+ texcoord.y = texcoord.y * uActorScale + 0.5 - uActorScale * 0.5;
+ texcoord -= mod(iTexCoord.st, pixelGrid);
+ texcoord += pixelGrid * 0.5;
+
+ // The pixel columns move vertically. The offset is generated with a random noise
+ // function.
+ float hScale = uHorizontalScale * uSize.x * 0.001;
+ float noise = simplex2DFractal(texcoord.xx * hScale) * 2.0 - 0.5;
+
+ // Shift the pixel columns vertically over time.
+ float vScale = uVerticalScale * uSize.y * 0.00002 * uActorScale;
+ float shiftProgress = uForOpening ? mix(-vScale - 1.0, 0.0, uProgress)
+ : mix(-vScale, 1.0 + vScale, uProgress);
+ float shift = noise * vScale + shiftProgress;
+
+ if (uForOpening) {
+ texcoord.y -= 0.5 * uActorScale * min(shift, 0.0);
+ } else {
+ texcoord.y -= 0.5 * uActorScale * max(shift, 0.0);
+ }
+
+ vec4 oColor = getInputColor(texcoord);
+
+ // Fade window texture at the top and bottom.
+ oColor.a *= getEdgeMask(iTexCoord.st, 0.1);
+
+ setOutputColor(oColor);
+}
\ No newline at end of file
diff --git a/resources/ui/gtk3/Doom.ui b/resources/ui/gtk3/Doom.ui
new file mode 100644
index 0000000..acb69bd
--- /dev/null
+++ b/resources/ui/gtk3/Doom.ui
@@ -0,0 +1,248 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/ui/gtk3/Pixelate.ui b/resources/ui/gtk3/Pixelate.ui
index e1691a1..1ef33b8 100644
--- a/resources/ui/gtk3/Pixelate.ui
+++ b/resources/ui/gtk3/Pixelate.ui
@@ -95,7 +95,7 @@
8
- Scale
+ Noise0startcenter
diff --git a/resources/ui/gtk4/Doom.ui b/resources/ui/gtk4/Doom.ui
new file mode 100644
index 0000000..36ff248
--- /dev/null
+++ b/resources/ui/gtk4/Doom.ui
@@ -0,0 +1,209 @@
+
+
+
+
+ vertical
+
+
+
+
+
+ none
+ 1
+
+
+
+
+ 0
+
+
+
+
+ Animation Time [ms]
+ 0
+ start
+ center
+ 1
+
+
+
+
+ end
+ center
+ 1
+ 0
+ left
+ 300
+
+
+ 10000
+ 100
+ 1
+ 100
+
+
+
+
+
+
+ edit-clear-symbolic
+ Reset to Default Value
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ Horizontal Scale
+ 0
+ start
+ center
+ 1
+
+
+
+
+ end
+ center
+ 1
+ 2
+ left
+ 300
+
+
+ 50
+ 1
+ 1
+ 10
+
+
+
+
+
+
+ edit-clear-symbolic
+ Reset to Default Value
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ Vertical Scale
+ 0
+ start
+ center
+ 1
+
+
+
+
+ end
+ center
+ 1
+ 2
+ left
+ 300
+
+
+ 50
+ 1
+ 1
+ 10
+
+
+
+
+
+
+ edit-clear-symbolic
+ Reset to Default Value
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ Pixel Size
+ 0
+ start
+ center
+ 1
+
+
+
+
+ end
+ center
+ 1
+ 0
+ left
+ 300
+
+
+ 50
+ 1
+ 1
+ 10
+
+
+
+
+
+
+ edit-clear-symbolic
+ Reset to Default Value
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/ui/gtk4/Pixelate.ui b/resources/ui/gtk4/Pixelate.ui
index 9098f61..4d34fd0 100644
--- a/resources/ui/gtk4/Pixelate.ui
+++ b/resources/ui/gtk4/Pixelate.ui
@@ -67,7 +67,7 @@
- Randomness
+ Noise0startcenter
diff --git a/schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml b/schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml
index 86cc161..b54d4e5 100644
--- a/schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml
+++ b/schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml
@@ -118,6 +118,46 @@
The size of the maximum pixelation.
+
+
+
+
+
+ false
+ Doom Close Effect
+ Use the Doom effect for window closing.
+
+
+
+ false
+ Doom Open Effect
+ Use the Doom effect for window opening.
+
+
+
+ 1000
+ Doom Animation Time
+ The time the Doom effect takes.
+
+
+
+ 10.0
+ Doom Horizontal Scale
+ The X scale of the effect.
+
+
+
+ 10.0
+ Doom Vertical Scale
+ The Y scale of the effect.
+
+
+
+ 10
+ Doom Pixel Size
+ The size of the maximum pixelation.
+
+
diff --git a/src/Doom.js b/src/Doom.js
new file mode 100644
index 0000000..004a086
--- /dev/null
+++ b/src/Doom.js
@@ -0,0 +1,120 @@
+//////////////////////////////////////////////////////////////////////////////////////////
+// ) ( //
+// ( /( ( ( ) ( ( ( ( )\ ) ( ( //
+// )\()) ))\ )( ( ( )\ ) )\))( )\ ( (()/( ( )\))( ( //
+// ((_)\ /((_|()\ )\ ) )\ '(()/( ((_)()((_) )\ ) ((_)))\((_)()\ )\ //
+// | |(_|_))( ((_)_(_/( _((_)) )(_)) _(()((_|_)_(_/( _| |((_)(()((_|(_) //
+// | '_ \ || | '_| ' \)) | ' \()| || | \ V V / | ' \)) _` / _ \ V V (_-< //
+// |_.__/\_,_|_| |_||_| |_|_|_| \_, | \_/\_/|_|_||_|\__,_\___/\_/\_//__/ //
+// |__/ //
+// Copyright (c) 2021 Simon Schneegans //
+// Released under the GPLv3 or later. See LICENSE file for details. //
+//////////////////////////////////////////////////////////////////////////////////////////
+
+'use strict';
+
+const GObject = imports.gi.GObject;
+
+const _ = imports.gettext.domain('burn-my-windows').gettext;
+
+const ExtensionUtils = imports.misc.extensionUtils;
+const Me = imports.misc.extensionUtils.getCurrentExtension();
+const utils = Me.imports.src.utils;
+const ShaderFactory = Me.imports.src.ShaderFactory.ShaderFactory;
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// This effect melts your windows. Inspired by the legendary screen transitions of the //
+// original Doom. //
+//////////////////////////////////////////////////////////////////////////////////////////
+
+// The effect class can be used to get some metadata (like the effect's name or supported
+// GNOME Shell versions), to initialize the respective page of the settings dialog, as
+// well as to create the actual shader for the effect.
+var Doom = class {
+
+ // The constructor creates a ShaderFactory which will be used by extension.js to create
+ // shader instances for this effect. The shaders will be automagically created using the
+ // GLSL file in resources/shaders/.glsl. The callback will be called for each
+ // newly created shader instance.
+ constructor() {
+ this.shaderFactory = new ShaderFactory(this.getNick(), (shader) => {
+ // Store uniform locations of newly created shaders.
+ shader._uActorScale = shader.get_uniform_location('uActorScale');
+ shader._uHorizontalScale = shader.get_uniform_location('uHorizontalScale');
+ shader._uVerticalScale = shader.get_uniform_location('uVerticalScale');
+ shader._uPixelSize = shader.get_uniform_location('uPixelSize');
+
+ // Write all uniform values at the start of each animation.
+ shader.connect('begin-animation', (shader, settings, forOpening, actor) => {
+ // For this effect, we scale the actor vertically so that it covers the entire
+ // screen. This ensures that the melted window will not be cut off.
+ let actorScale = 2.0 * Math.max(1.0, global.stage.height / actor.height);
+
+ // If we are currently performing integration test, nothing will be visible in the
+ // test images as the animation has passed the center of the window already. To
+ // fix this, we set the actor scale to a fixed low value when performing tests.
+ const testMode = settings.get_boolean('test-mode');
+
+ // clang-format off
+ shader.set_uniform_float(shader._uActorScale, 1, [testMode ? 1.0 : actorScale]);
+ shader.set_uniform_float(shader._uHorizontalScale, 1, [testMode ? 50.0 :settings.get_double('doom-horizontal-scale')]);
+ shader.set_uniform_float(shader._uVerticalScale, 1, [testMode ? 150.0 : settings.get_double('doom-vertical-scale')]);
+ shader.set_uniform_float(shader._uPixelSize, 1, [settings.get_int('doom-pixel-size')]);
+ // clang-format on
+ });
+ });
+ }
+
+ // ---------------------------------------------------------------------------- metadata
+
+ // The effect is not available on GNOME Shell 3.36 as it requires scaling of the window
+ // actor.
+ getMinShellVersion() {
+ return [3, 38];
+ }
+
+ // This will be called in various places where a unique identifier for this effect is
+ // required. It should match the prefix of the settings keys which store whether the
+ // effect is enabled currently (e.g. '*-close-effect'), and its animation time
+ // (e.g. '*-animation-time').
+ getNick() {
+ return 'doom';
+ }
+
+ // This will be shown in the sidebar of the preferences dialog as well as in the
+ // drop-down menus where the user can choose the effect.
+ getLabel() {
+ return _('Doom');
+ }
+
+ // -------------------------------------------------------------------- API for prefs.js
+
+ // This is called by the preferences dialog. It loads the settings page for this effect,
+ // and binds all properties to the settings.
+ getPreferences(dialog) {
+
+ // Add the settings page to the builder.
+ dialog.getBuilder().add_from_resource(`/ui/${utils.getGTKString()}/Doom.ui`);
+
+ // Bind all properties.
+ dialog.bindAdjustment('doom-animation-time');
+ dialog.bindAdjustment('doom-horizontal-scale');
+ dialog.bindAdjustment('doom-vertical-scale');
+ dialog.bindAdjustment('doom-pixel-size');
+
+ // Finally, return the new settings page.
+ return dialog.getBuilder().get_object('doom-prefs');
+ }
+
+ // ---------------------------------------------------------------- API for extension.js
+
+ // The getActorScale() is called from extension.js to adjust the actor's size during the
+ // animation. This is useful if the effect requires drawing something beyond the usual
+ // bounds of the actor. This only works for GNOME 3.38+.
+ // For this effect, we scale the actor vertically so that it covers the entire screen.
+ // This ensures that the melted window will not be cut off.
+ getActorScale(settings, forOpening, actor) {
+ let actorScale = 2.0 * Math.max(1.0, global.stage.height / actor.height);
+ return {x: 1.0, y: actorScale};
+ }
+}
diff --git a/tests/find-target.sh b/tests/find-target.sh
new file mode 100755
index 0000000..7ebafaf
--- /dev/null
+++ b/tests/find-target.sh
@@ -0,0 +1,124 @@
+#!/bin/bash
+
+# -------------------------------------------------------------------------------------- #
+# This script searches for a given image on the screen and prints the coordinates of the #
+# upper left corner to STDOUT if it's found. If the image is not found, an exit code #
+# of 1 is returned. #
+# #
+# -s scale_factor: In order to optimize the performance, both, the target image and the #
+# screen capture is scaled down by 1 / scale_factor. Lower numbers can #
+# help finding difficult targets but will also increase the calculation #
+# time. Reasonable values are [1...10], default is 4. #
+# -f fuzziness: A mean-squared-error threshold under which a location is considered #
+# to be a match. Default is 0.01. Increase this to make finding a #
+# target more likely but also increase the possibility of false #
+# positives. #
+# -------------------------------------------------------------------------------------- #
+
+usage() {
+ echo "Usage: $0 -s scale_factor -f fuzziness screen.png target.png" >&2
+}
+
+SCALE_FACTOR=4
+FUZZINESS=0.01
+
+while getopts "s:f:h" opt; do
+ case $opt in
+ s) SCALE_FACTOR="${OPTARG}";;
+ f) FUZZINESS="${OPTARG}";;
+ h) usage; exit 0;;
+ *) usage; exit 1;;
+ esac
+done
+
+shift $((OPTIND-1))
+SCREEN=$1
+TARGET=$2
+
+# Make sure the screen image is given.
+if [[ -z "${SCREEN}" ]]; then
+ usage
+ exit 1
+fi
+
+# Make sure the target image is given.
+if [[ -z "${TARGET}" ]]; then
+ usage
+ exit 1
+fi
+
+# Create a temporary directory.
+WORK_DIR=$(mktemp -d)
+if [[ ! "${WORK_DIR}" || ! -d "${WORK_DIR}" ]]; then
+ echo "Failed to create tmp directory!" >&2
+ exit 1
+fi
+
+# Deletes the temp directory on exit.
+function cleanup {
+ rm -r "${WORK_DIR}"
+}
+
+trap cleanup EXIT
+
+# Reduce the size of the screen capture and the target to optimize the search performance.
+convert "${SCREEN}" -resize $((100 / SCALE_FACTOR))% "${WORK_DIR}/screen_small.png"
+convert "${TARGET}" -resize $((100 / SCALE_FACTOR))% "${WORK_DIR}/target_small.png"
+
+# Make a search on the reduced images.
+RESULT=$(compare -metric MSE -subimage-search \
+ "${WORK_DIR}/screen_small.png" "${WORK_DIR}/target_small.png" "${WORK_DIR}/out.png" 2>&1)
+
+if [[ $RESULT == *"error"* ]]; then
+ echo "Failed to find the target: ${RESULT}" >&2
+ exit 1
+fi
+
+# We use the position of match to crop the original screen capture tightly around the
+# match. Some padding is added to make sure that the target is contained in the cropped
+# screen capture. We then search one more in the full resolution to get the exact pixel
+# location.
+
+# Here we extract the pixel location of the match in the scaled-down version.
+CROP_X=$(echo "${RESULT}" | awk -F[\,\ ] '{print $4}')
+CROP_Y=$(echo "${RESULT}" | awk -F[\,\ ] '{print $5}')
+
+# We add more padding if the images are more scaled down.
+PADDING=$SCALE_FACTOR
+
+CROP_X=$((CROP_X * SCALE_FACTOR - PADDING))
+CROP_Y=$((CROP_Y * SCALE_FACTOR - PADDING))
+
+# Clamp the result.
+CROP_X=$((CROP_X < 0 ? 0 : CROP_X))
+CROP_Y=$((CROP_Y < 0 ? 0 : CROP_Y))
+
+# The crop size depends on the target image size.
+TARGET_WIDTH=$(identify -format "%[fx:w]" "${TARGET}")
+TARGET_HEIGHT=$(identify -format "%[fx:h]" "${TARGET}")
+CROP_WIDTH=$((TARGET_WIDTH + 2*PADDING))
+CROP_HEIGHT=$((TARGET_HEIGHT + 2*PADDING))
+
+# Perform the crop.
+convert "${SCREEN}" -crop ${CROP_WIDTH}x${CROP_HEIGHT}+${CROP_X}+${CROP_Y} \
+ +repage "${WORK_DIR}/screen_cropped.png"
+
+# Search again on the full resolution.
+RESULT=$(compare -metric MSE -dissimilarity-threshold "${FUZZINESS}" -subimage-search \
+ "${WORK_DIR}/screen_cropped.png" "${TARGET}" "${WORK_DIR}/out.png" 2>&1)
+
+if [[ $RESULT == *"error"* ]]; then
+ echo "Failed to find the target: ${RESULT}" >&2
+ exit 1
+fi
+
+# Extract the pixel location from the result. This is now relative to the crop position.
+POS_X=$(echo "${RESULT}" | awk -F[\,\ ] '{print $4}')
+POS_Y=$(echo "${RESULT}" | awk -F[\,\ ] '{print $5}')
+
+# Therefore we have to add the crop position to the result.
+POS_X=$((POS_X + CROP_X))
+POS_Y=$((POS_Y + CROP_Y))
+
+# Finally print our result.
+echo "$POS_X $POS_Y"
diff --git a/tests/generate-references.sh b/tests/generate-references.sh
index a17f463..9810c6c 100755
--- a/tests/generate-references.sh
+++ b/tests/generate-references.sh
@@ -57,7 +57,7 @@ EXTENSION="burn-my-windows@schneegans.github.com"
# All references images of the effects are captured at & cropped to this region
# in the center of the screen. This is kind of arbitrary, but has been choosen so that
# something is visible from each effect.
-CROP="100x100+910+480"
+CROP="100x100+900+500"
# Run the container. For more info, visit https://github.com/Schneegans/gnome-shell-pod.
POD=$(podman run --rm --cap-add=SYS_NICE --cap-add=IPC_LOCK -td "${IMAGE}")
@@ -110,7 +110,8 @@ capture_effect() {
set_setting "open-preview-effect" "${1}"
set_setting "close-preview-effect" "${1}"
- do_in_pod gnome-extensions prefs "${EXTENSION}"
+ sleep 1
+ do_in_pod gnome-terminal
sleep 3
capture "tests/references/${1}-open-${SESSION}-${FEDORA_VERSION}.png"
send_keystroke "Alt+F4"
@@ -132,6 +133,11 @@ podman cp "${EXTENSION}.zip" "${POD}:/home/gnomeshell"
do_in_pod gnome-extensions install "${EXTENSION}.zip"
+# ----------------------- install gnome-terminal (this is used for testing the animations)
+
+do_in_pod sudo dnf install -y gnome-terminal
+
+
# ---------------------------------------------------------------------- start GNOME Shell
# Starting with GNOME 40, there is a "Welcome Tour" dialog popping up at first launch.
@@ -141,6 +147,9 @@ if [[ "${FEDORA_VERSION}" -gt 33 ]]; then
do_in_pod gsettings set org.gnome.shell welcome-dialog-last-shown-version "999" || true
fi
+# Make sure that new windows are opened in the center.
+do_in_pod gsettings set org.gnome.mutter center-new-windows true
+
echo "Starting $(do_in_pod gnome-shell --version)."
do_in_pod systemctl --user start "${SESSION}@:99"
sleep 10
@@ -161,10 +170,16 @@ sleep 3
# --------------------------------------------------------------------- capture the images
+# First we open the preferences and capture a portion of the dialog
+echo "Opening Preferences."
+do_in_pod gnome-extensions prefs "${EXTENSION}"
+sleep 3
+capture "tests/references/preferences-${SESSION}-${FEDORA_VERSION}.png"
+send_keystroke "Alt+F4"
+
# The test mode ensures that the animations are "frozen" and do not change in time.
echo "Entering test mode."
set_setting "test-mode" true
-do_in_pod gsettings set org.gnome.mutter center-new-windows true
capture_effect "energize-a"
capture_effect "energize-b"
@@ -177,6 +192,7 @@ capture_effect "wisps"
if [[ "${FEDORA_VERSION}" -gt 32 ]]; then
capture_effect "apparition"
+ capture_effect "doom"
fi
if [[ "${FEDORA_VERSION}" -gt 33 ]]; then
diff --git a/tests/references/apparition-close-gnome-wayland-nested-33.png b/tests/references/apparition-close-gnome-wayland-nested-33.png
old mode 100644
new mode 100755
index e3cc4e4..482d88e
Binary files a/tests/references/apparition-close-gnome-wayland-nested-33.png and b/tests/references/apparition-close-gnome-wayland-nested-33.png differ
diff --git a/tests/references/apparition-close-gnome-wayland-nested-34.png b/tests/references/apparition-close-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index eaa22bc..1d406ca
Binary files a/tests/references/apparition-close-gnome-wayland-nested-34.png and b/tests/references/apparition-close-gnome-wayland-nested-34.png differ
diff --git a/tests/references/apparition-close-gnome-wayland-nested-35.png b/tests/references/apparition-close-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index eaa22bc..e338448
Binary files a/tests/references/apparition-close-gnome-wayland-nested-35.png and b/tests/references/apparition-close-gnome-wayland-nested-35.png differ
diff --git a/tests/references/apparition-close-gnome-wayland-nested-36.png b/tests/references/apparition-close-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index b65e2fb..e338448
Binary files a/tests/references/apparition-close-gnome-wayland-nested-36.png and b/tests/references/apparition-close-gnome-wayland-nested-36.png differ
diff --git a/tests/references/apparition-close-gnome-xsession-33.png b/tests/references/apparition-close-gnome-xsession-33.png
old mode 100644
new mode 100755
index e3cc4e4..91c319e
Binary files a/tests/references/apparition-close-gnome-xsession-33.png and b/tests/references/apparition-close-gnome-xsession-33.png differ
diff --git a/tests/references/apparition-close-gnome-xsession-34.png b/tests/references/apparition-close-gnome-xsession-34.png
old mode 100644
new mode 100755
index ac9fd4e..d7bf222
Binary files a/tests/references/apparition-close-gnome-xsession-34.png and b/tests/references/apparition-close-gnome-xsession-34.png differ
diff --git a/tests/references/apparition-close-gnome-xsession-35.png b/tests/references/apparition-close-gnome-xsession-35.png
old mode 100644
new mode 100755
index ac9fd4e..63d0bd4
Binary files a/tests/references/apparition-close-gnome-xsession-35.png and b/tests/references/apparition-close-gnome-xsession-35.png differ
diff --git a/tests/references/apparition-close-gnome-xsession-36.png b/tests/references/apparition-close-gnome-xsession-36.png
old mode 100644
new mode 100755
index 77a8ce2..63d0bd4
Binary files a/tests/references/apparition-close-gnome-xsession-36.png and b/tests/references/apparition-close-gnome-xsession-36.png differ
diff --git a/tests/references/apparition-open-gnome-wayland-nested-33.png b/tests/references/apparition-open-gnome-wayland-nested-33.png
old mode 100644
new mode 100755
index e3cc4e4..482d88e
Binary files a/tests/references/apparition-open-gnome-wayland-nested-33.png and b/tests/references/apparition-open-gnome-wayland-nested-33.png differ
diff --git a/tests/references/apparition-open-gnome-wayland-nested-34.png b/tests/references/apparition-open-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index eaa22bc..1d406ca
Binary files a/tests/references/apparition-open-gnome-wayland-nested-34.png and b/tests/references/apparition-open-gnome-wayland-nested-34.png differ
diff --git a/tests/references/apparition-open-gnome-wayland-nested-35.png b/tests/references/apparition-open-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index eaa22bc..e338448
Binary files a/tests/references/apparition-open-gnome-wayland-nested-35.png and b/tests/references/apparition-open-gnome-wayland-nested-35.png differ
diff --git a/tests/references/apparition-open-gnome-wayland-nested-36.png b/tests/references/apparition-open-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index b65e2fb..e338448
Binary files a/tests/references/apparition-open-gnome-wayland-nested-36.png and b/tests/references/apparition-open-gnome-wayland-nested-36.png differ
diff --git a/tests/references/apparition-open-gnome-xsession-33.png b/tests/references/apparition-open-gnome-xsession-33.png
old mode 100644
new mode 100755
index e3cc4e4..91c319e
Binary files a/tests/references/apparition-open-gnome-xsession-33.png and b/tests/references/apparition-open-gnome-xsession-33.png differ
diff --git a/tests/references/apparition-open-gnome-xsession-34.png b/tests/references/apparition-open-gnome-xsession-34.png
old mode 100644
new mode 100755
index ac9fd4e..d7bf222
Binary files a/tests/references/apparition-open-gnome-xsession-34.png and b/tests/references/apparition-open-gnome-xsession-34.png differ
diff --git a/tests/references/apparition-open-gnome-xsession-35.png b/tests/references/apparition-open-gnome-xsession-35.png
old mode 100644
new mode 100755
index ac9fd4e..63d0bd4
Binary files a/tests/references/apparition-open-gnome-xsession-35.png and b/tests/references/apparition-open-gnome-xsession-35.png differ
diff --git a/tests/references/apparition-open-gnome-xsession-36.png b/tests/references/apparition-open-gnome-xsession-36.png
old mode 100644
new mode 100755
index 77a8ce2..63d0bd4
Binary files a/tests/references/apparition-open-gnome-xsession-36.png and b/tests/references/apparition-open-gnome-xsession-36.png differ
diff --git a/tests/references/broken-glass-close-gnome-wayland-nested-34.png b/tests/references/broken-glass-close-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index 7f60f45..75f3e47
Binary files a/tests/references/broken-glass-close-gnome-wayland-nested-34.png and b/tests/references/broken-glass-close-gnome-wayland-nested-34.png differ
diff --git a/tests/references/broken-glass-close-gnome-wayland-nested-35.png b/tests/references/broken-glass-close-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index 720c87b..2639ba3
Binary files a/tests/references/broken-glass-close-gnome-wayland-nested-35.png and b/tests/references/broken-glass-close-gnome-wayland-nested-35.png differ
diff --git a/tests/references/broken-glass-close-gnome-wayland-nested-36.png b/tests/references/broken-glass-close-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index 543aed5..2639ba3
Binary files a/tests/references/broken-glass-close-gnome-wayland-nested-36.png and b/tests/references/broken-glass-close-gnome-wayland-nested-36.png differ
diff --git a/tests/references/broken-glass-close-gnome-xsession-34.png b/tests/references/broken-glass-close-gnome-xsession-34.png
old mode 100644
new mode 100755
index fde4768..159064e
Binary files a/tests/references/broken-glass-close-gnome-xsession-34.png and b/tests/references/broken-glass-close-gnome-xsession-34.png differ
diff --git a/tests/references/broken-glass-close-gnome-xsession-35.png b/tests/references/broken-glass-close-gnome-xsession-35.png
old mode 100644
new mode 100755
index 19928dd..c635fbb
Binary files a/tests/references/broken-glass-close-gnome-xsession-35.png and b/tests/references/broken-glass-close-gnome-xsession-35.png differ
diff --git a/tests/references/broken-glass-close-gnome-xsession-36.png b/tests/references/broken-glass-close-gnome-xsession-36.png
old mode 100644
new mode 100755
index 180b488..c635fbb
Binary files a/tests/references/broken-glass-close-gnome-xsession-36.png and b/tests/references/broken-glass-close-gnome-xsession-36.png differ
diff --git a/tests/references/broken-glass-open-gnome-wayland-nested-34.png b/tests/references/broken-glass-open-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index 585da59..471cb84
Binary files a/tests/references/broken-glass-open-gnome-wayland-nested-34.png and b/tests/references/broken-glass-open-gnome-wayland-nested-34.png differ
diff --git a/tests/references/broken-glass-open-gnome-wayland-nested-35.png b/tests/references/broken-glass-open-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index 2a92457..d889869
Binary files a/tests/references/broken-glass-open-gnome-wayland-nested-35.png and b/tests/references/broken-glass-open-gnome-wayland-nested-35.png differ
diff --git a/tests/references/broken-glass-open-gnome-wayland-nested-36.png b/tests/references/broken-glass-open-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index 3622103..d889869
Binary files a/tests/references/broken-glass-open-gnome-wayland-nested-36.png and b/tests/references/broken-glass-open-gnome-wayland-nested-36.png differ
diff --git a/tests/references/broken-glass-open-gnome-xsession-34.png b/tests/references/broken-glass-open-gnome-xsession-34.png
old mode 100644
new mode 100755
index 4337947..adbf0da
Binary files a/tests/references/broken-glass-open-gnome-xsession-34.png and b/tests/references/broken-glass-open-gnome-xsession-34.png differ
diff --git a/tests/references/broken-glass-open-gnome-xsession-35.png b/tests/references/broken-glass-open-gnome-xsession-35.png
old mode 100644
new mode 100755
index eb6e783..6665439
Binary files a/tests/references/broken-glass-open-gnome-xsession-35.png and b/tests/references/broken-glass-open-gnome-xsession-35.png differ
diff --git a/tests/references/broken-glass-open-gnome-xsession-36.png b/tests/references/broken-glass-open-gnome-xsession-36.png
old mode 100644
new mode 100755
index 76bb6b0..6665439
Binary files a/tests/references/broken-glass-open-gnome-xsession-36.png and b/tests/references/broken-glass-open-gnome-xsession-36.png differ
diff --git a/tests/references/doom-close-gnome-wayland-nested-33.png b/tests/references/doom-close-gnome-wayland-nested-33.png
new file mode 100755
index 0000000..2dd77ca
Binary files /dev/null and b/tests/references/doom-close-gnome-wayland-nested-33.png differ
diff --git a/tests/references/doom-close-gnome-wayland-nested-34.png b/tests/references/doom-close-gnome-wayland-nested-34.png
new file mode 100755
index 0000000..8879b22
Binary files /dev/null and b/tests/references/doom-close-gnome-wayland-nested-34.png differ
diff --git a/tests/references/doom-close-gnome-wayland-nested-35.png b/tests/references/doom-close-gnome-wayland-nested-35.png
new file mode 100755
index 0000000..ac7b54b
Binary files /dev/null and b/tests/references/doom-close-gnome-wayland-nested-35.png differ
diff --git a/tests/references/doom-close-gnome-wayland-nested-36.png b/tests/references/doom-close-gnome-wayland-nested-36.png
new file mode 100755
index 0000000..84ea46d
Binary files /dev/null and b/tests/references/doom-close-gnome-wayland-nested-36.png differ
diff --git a/tests/references/doom-close-gnome-xsession-33.png b/tests/references/doom-close-gnome-xsession-33.png
new file mode 100755
index 0000000..b701718
Binary files /dev/null and b/tests/references/doom-close-gnome-xsession-33.png differ
diff --git a/tests/references/doom-close-gnome-xsession-34.png b/tests/references/doom-close-gnome-xsession-34.png
new file mode 100755
index 0000000..2966413
Binary files /dev/null and b/tests/references/doom-close-gnome-xsession-34.png differ
diff --git a/tests/references/doom-close-gnome-xsession-35.png b/tests/references/doom-close-gnome-xsession-35.png
new file mode 100755
index 0000000..8e2f7d0
Binary files /dev/null and b/tests/references/doom-close-gnome-xsession-35.png differ
diff --git a/tests/references/doom-close-gnome-xsession-36.png b/tests/references/doom-close-gnome-xsession-36.png
new file mode 100755
index 0000000..aa6aa94
Binary files /dev/null and b/tests/references/doom-close-gnome-xsession-36.png differ
diff --git a/tests/references/doom-open-gnome-wayland-nested-33.png b/tests/references/doom-open-gnome-wayland-nested-33.png
new file mode 100755
index 0000000..99f23b2
Binary files /dev/null and b/tests/references/doom-open-gnome-wayland-nested-33.png differ
diff --git a/tests/references/doom-open-gnome-wayland-nested-34.png b/tests/references/doom-open-gnome-wayland-nested-34.png
new file mode 100755
index 0000000..cce83f4
Binary files /dev/null and b/tests/references/doom-open-gnome-wayland-nested-34.png differ
diff --git a/tests/references/doom-open-gnome-wayland-nested-35.png b/tests/references/doom-open-gnome-wayland-nested-35.png
new file mode 100755
index 0000000..7d5fd80
Binary files /dev/null and b/tests/references/doom-open-gnome-wayland-nested-35.png differ
diff --git a/tests/references/doom-open-gnome-wayland-nested-36.png b/tests/references/doom-open-gnome-wayland-nested-36.png
new file mode 100755
index 0000000..7d5fd80
Binary files /dev/null and b/tests/references/doom-open-gnome-wayland-nested-36.png differ
diff --git a/tests/references/doom-open-gnome-xsession-33.png b/tests/references/doom-open-gnome-xsession-33.png
new file mode 100755
index 0000000..3eb5ded
Binary files /dev/null and b/tests/references/doom-open-gnome-xsession-33.png differ
diff --git a/tests/references/doom-open-gnome-xsession-34.png b/tests/references/doom-open-gnome-xsession-34.png
new file mode 100755
index 0000000..a70227f
Binary files /dev/null and b/tests/references/doom-open-gnome-xsession-34.png differ
diff --git a/tests/references/doom-open-gnome-xsession-35.png b/tests/references/doom-open-gnome-xsession-35.png
new file mode 100755
index 0000000..63a82cf
Binary files /dev/null and b/tests/references/doom-open-gnome-xsession-35.png differ
diff --git a/tests/references/doom-open-gnome-xsession-36.png b/tests/references/doom-open-gnome-xsession-36.png
new file mode 100755
index 0000000..63a82cf
Binary files /dev/null and b/tests/references/doom-open-gnome-xsession-36.png differ
diff --git a/tests/references/energize-a-close-gnome-wayland-nested-32.png b/tests/references/energize-a-close-gnome-wayland-nested-32.png
old mode 100644
new mode 100755
index 490c5ab..bade347
Binary files a/tests/references/energize-a-close-gnome-wayland-nested-32.png and b/tests/references/energize-a-close-gnome-wayland-nested-32.png differ
diff --git a/tests/references/energize-a-close-gnome-wayland-nested-33.png b/tests/references/energize-a-close-gnome-wayland-nested-33.png
old mode 100644
new mode 100755
index 5b07c26..e505dd1
Binary files a/tests/references/energize-a-close-gnome-wayland-nested-33.png and b/tests/references/energize-a-close-gnome-wayland-nested-33.png differ
diff --git a/tests/references/energize-a-close-gnome-wayland-nested-34.png b/tests/references/energize-a-close-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index e40b7a7..0700ce9
Binary files a/tests/references/energize-a-close-gnome-wayland-nested-34.png and b/tests/references/energize-a-close-gnome-wayland-nested-34.png differ
diff --git a/tests/references/energize-a-close-gnome-wayland-nested-35.png b/tests/references/energize-a-close-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index e40b7a7..c583ff5
Binary files a/tests/references/energize-a-close-gnome-wayland-nested-35.png and b/tests/references/energize-a-close-gnome-wayland-nested-35.png differ
diff --git a/tests/references/energize-a-close-gnome-wayland-nested-36.png b/tests/references/energize-a-close-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index 32dc974..c583ff5
Binary files a/tests/references/energize-a-close-gnome-wayland-nested-36.png and b/tests/references/energize-a-close-gnome-wayland-nested-36.png differ
diff --git a/tests/references/energize-a-close-gnome-xsession-32.png b/tests/references/energize-a-close-gnome-xsession-32.png
old mode 100644
new mode 100755
index 490c5ab..e37596f
Binary files a/tests/references/energize-a-close-gnome-xsession-32.png and b/tests/references/energize-a-close-gnome-xsession-32.png differ
diff --git a/tests/references/energize-a-close-gnome-xsession-33.png b/tests/references/energize-a-close-gnome-xsession-33.png
old mode 100644
new mode 100755
index 5b07c26..3a16e34
Binary files a/tests/references/energize-a-close-gnome-xsession-33.png and b/tests/references/energize-a-close-gnome-xsession-33.png differ
diff --git a/tests/references/energize-a-close-gnome-xsession-34.png b/tests/references/energize-a-close-gnome-xsession-34.png
old mode 100644
new mode 100755
index 9df91a4..3496f88
Binary files a/tests/references/energize-a-close-gnome-xsession-34.png and b/tests/references/energize-a-close-gnome-xsession-34.png differ
diff --git a/tests/references/energize-a-close-gnome-xsession-35.png b/tests/references/energize-a-close-gnome-xsession-35.png
old mode 100644
new mode 100755
index 9df91a4..0f2d371
Binary files a/tests/references/energize-a-close-gnome-xsession-35.png and b/tests/references/energize-a-close-gnome-xsession-35.png differ
diff --git a/tests/references/energize-a-close-gnome-xsession-36.png b/tests/references/energize-a-close-gnome-xsession-36.png
old mode 100644
new mode 100755
index 6b17f98..0f2d371
Binary files a/tests/references/energize-a-close-gnome-xsession-36.png and b/tests/references/energize-a-close-gnome-xsession-36.png differ
diff --git a/tests/references/energize-a-open-gnome-wayland-nested-32.png b/tests/references/energize-a-open-gnome-wayland-nested-32.png
old mode 100644
new mode 100755
index f9c8df6..3966031
Binary files a/tests/references/energize-a-open-gnome-wayland-nested-32.png and b/tests/references/energize-a-open-gnome-wayland-nested-32.png differ
diff --git a/tests/references/energize-a-open-gnome-wayland-nested-33.png b/tests/references/energize-a-open-gnome-wayland-nested-33.png
old mode 100644
new mode 100755
index cd6589e..b5f9df2
Binary files a/tests/references/energize-a-open-gnome-wayland-nested-33.png and b/tests/references/energize-a-open-gnome-wayland-nested-33.png differ
diff --git a/tests/references/energize-a-open-gnome-wayland-nested-34.png b/tests/references/energize-a-open-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index bf2c5b8..24b85b9
Binary files a/tests/references/energize-a-open-gnome-wayland-nested-34.png and b/tests/references/energize-a-open-gnome-wayland-nested-34.png differ
diff --git a/tests/references/energize-a-open-gnome-wayland-nested-35.png b/tests/references/energize-a-open-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index bf2c5b8..4024c33
Binary files a/tests/references/energize-a-open-gnome-wayland-nested-35.png and b/tests/references/energize-a-open-gnome-wayland-nested-35.png differ
diff --git a/tests/references/energize-a-open-gnome-wayland-nested-36.png b/tests/references/energize-a-open-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index 59ff769..4024c33
Binary files a/tests/references/energize-a-open-gnome-wayland-nested-36.png and b/tests/references/energize-a-open-gnome-wayland-nested-36.png differ
diff --git a/tests/references/energize-a-open-gnome-xsession-32.png b/tests/references/energize-a-open-gnome-xsession-32.png
old mode 100644
new mode 100755
index f9c8df6..b62ccba
Binary files a/tests/references/energize-a-open-gnome-xsession-32.png and b/tests/references/energize-a-open-gnome-xsession-32.png differ
diff --git a/tests/references/energize-a-open-gnome-xsession-33.png b/tests/references/energize-a-open-gnome-xsession-33.png
old mode 100644
new mode 100755
index cd6589e..fd25d0d
Binary files a/tests/references/energize-a-open-gnome-xsession-33.png and b/tests/references/energize-a-open-gnome-xsession-33.png differ
diff --git a/tests/references/energize-a-open-gnome-xsession-34.png b/tests/references/energize-a-open-gnome-xsession-34.png
old mode 100644
new mode 100755
index 7ac05d8..7020eff
Binary files a/tests/references/energize-a-open-gnome-xsession-34.png and b/tests/references/energize-a-open-gnome-xsession-34.png differ
diff --git a/tests/references/energize-a-open-gnome-xsession-35.png b/tests/references/energize-a-open-gnome-xsession-35.png
old mode 100644
new mode 100755
index 7ac05d8..338becf
Binary files a/tests/references/energize-a-open-gnome-xsession-35.png and b/tests/references/energize-a-open-gnome-xsession-35.png differ
diff --git a/tests/references/energize-a-open-gnome-xsession-36.png b/tests/references/energize-a-open-gnome-xsession-36.png
old mode 100644
new mode 100755
index c26f7a0..338becf
Binary files a/tests/references/energize-a-open-gnome-xsession-36.png and b/tests/references/energize-a-open-gnome-xsession-36.png differ
diff --git a/tests/references/energize-b-close-gnome-wayland-nested-32.png b/tests/references/energize-b-close-gnome-wayland-nested-32.png
old mode 100644
new mode 100755
index 6d68c1f..8fa371a
Binary files a/tests/references/energize-b-close-gnome-wayland-nested-32.png and b/tests/references/energize-b-close-gnome-wayland-nested-32.png differ
diff --git a/tests/references/energize-b-close-gnome-wayland-nested-33.png b/tests/references/energize-b-close-gnome-wayland-nested-33.png
old mode 100644
new mode 100755
index 4cc14b0..5e6974b
Binary files a/tests/references/energize-b-close-gnome-wayland-nested-33.png and b/tests/references/energize-b-close-gnome-wayland-nested-33.png differ
diff --git a/tests/references/energize-b-close-gnome-wayland-nested-34.png b/tests/references/energize-b-close-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index 0da3426..8a27f10
Binary files a/tests/references/energize-b-close-gnome-wayland-nested-34.png and b/tests/references/energize-b-close-gnome-wayland-nested-34.png differ
diff --git a/tests/references/energize-b-close-gnome-wayland-nested-35.png b/tests/references/energize-b-close-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index 0da3426..119f62b
Binary files a/tests/references/energize-b-close-gnome-wayland-nested-35.png and b/tests/references/energize-b-close-gnome-wayland-nested-35.png differ
diff --git a/tests/references/energize-b-close-gnome-wayland-nested-36.png b/tests/references/energize-b-close-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index 6919274..119f62b
Binary files a/tests/references/energize-b-close-gnome-wayland-nested-36.png and b/tests/references/energize-b-close-gnome-wayland-nested-36.png differ
diff --git a/tests/references/energize-b-close-gnome-xsession-32.png b/tests/references/energize-b-close-gnome-xsession-32.png
old mode 100644
new mode 100755
index 6d68c1f..095214e
Binary files a/tests/references/energize-b-close-gnome-xsession-32.png and b/tests/references/energize-b-close-gnome-xsession-32.png differ
diff --git a/tests/references/energize-b-close-gnome-xsession-33.png b/tests/references/energize-b-close-gnome-xsession-33.png
old mode 100644
new mode 100755
index 4cc14b0..642931e
Binary files a/tests/references/energize-b-close-gnome-xsession-33.png and b/tests/references/energize-b-close-gnome-xsession-33.png differ
diff --git a/tests/references/energize-b-close-gnome-xsession-34.png b/tests/references/energize-b-close-gnome-xsession-34.png
old mode 100644
new mode 100755
index 72d2fa8..506daac
Binary files a/tests/references/energize-b-close-gnome-xsession-34.png and b/tests/references/energize-b-close-gnome-xsession-34.png differ
diff --git a/tests/references/energize-b-close-gnome-xsession-35.png b/tests/references/energize-b-close-gnome-xsession-35.png
old mode 100644
new mode 100755
index 72d2fa8..5d0f079
Binary files a/tests/references/energize-b-close-gnome-xsession-35.png and b/tests/references/energize-b-close-gnome-xsession-35.png differ
diff --git a/tests/references/energize-b-close-gnome-xsession-36.png b/tests/references/energize-b-close-gnome-xsession-36.png
old mode 100644
new mode 100755
index 5c8ea85..5d0f079
Binary files a/tests/references/energize-b-close-gnome-xsession-36.png and b/tests/references/energize-b-close-gnome-xsession-36.png differ
diff --git a/tests/references/energize-b-open-gnome-wayland-nested-32.png b/tests/references/energize-b-open-gnome-wayland-nested-32.png
old mode 100644
new mode 100755
index fb10327..0043ea6
Binary files a/tests/references/energize-b-open-gnome-wayland-nested-32.png and b/tests/references/energize-b-open-gnome-wayland-nested-32.png differ
diff --git a/tests/references/energize-b-open-gnome-wayland-nested-33.png b/tests/references/energize-b-open-gnome-wayland-nested-33.png
old mode 100644
new mode 100755
index 23802d0..28a91e5
Binary files a/tests/references/energize-b-open-gnome-wayland-nested-33.png and b/tests/references/energize-b-open-gnome-wayland-nested-33.png differ
diff --git a/tests/references/energize-b-open-gnome-wayland-nested-34.png b/tests/references/energize-b-open-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index 461c343..f9fa7c4
Binary files a/tests/references/energize-b-open-gnome-wayland-nested-34.png and b/tests/references/energize-b-open-gnome-wayland-nested-34.png differ
diff --git a/tests/references/energize-b-open-gnome-wayland-nested-35.png b/tests/references/energize-b-open-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index 461c343..65a9f54
Binary files a/tests/references/energize-b-open-gnome-wayland-nested-35.png and b/tests/references/energize-b-open-gnome-wayland-nested-35.png differ
diff --git a/tests/references/energize-b-open-gnome-wayland-nested-36.png b/tests/references/energize-b-open-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index dc10d3b..65a9f54
Binary files a/tests/references/energize-b-open-gnome-wayland-nested-36.png and b/tests/references/energize-b-open-gnome-wayland-nested-36.png differ
diff --git a/tests/references/energize-b-open-gnome-xsession-32.png b/tests/references/energize-b-open-gnome-xsession-32.png
old mode 100644
new mode 100755
index fb10327..a581c15
Binary files a/tests/references/energize-b-open-gnome-xsession-32.png and b/tests/references/energize-b-open-gnome-xsession-32.png differ
diff --git a/tests/references/energize-b-open-gnome-xsession-33.png b/tests/references/energize-b-open-gnome-xsession-33.png
old mode 100644
new mode 100755
index 23802d0..604f62e
Binary files a/tests/references/energize-b-open-gnome-xsession-33.png and b/tests/references/energize-b-open-gnome-xsession-33.png differ
diff --git a/tests/references/energize-b-open-gnome-xsession-34.png b/tests/references/energize-b-open-gnome-xsession-34.png
old mode 100644
new mode 100755
index fe2d269..a1d5516
Binary files a/tests/references/energize-b-open-gnome-xsession-34.png and b/tests/references/energize-b-open-gnome-xsession-34.png differ
diff --git a/tests/references/energize-b-open-gnome-xsession-35.png b/tests/references/energize-b-open-gnome-xsession-35.png
old mode 100644
new mode 100755
index fe2d269..41e29ae
Binary files a/tests/references/energize-b-open-gnome-xsession-35.png and b/tests/references/energize-b-open-gnome-xsession-35.png differ
diff --git a/tests/references/energize-b-open-gnome-xsession-36.png b/tests/references/energize-b-open-gnome-xsession-36.png
old mode 100644
new mode 100755
index 991beb2..41e29ae
Binary files a/tests/references/energize-b-open-gnome-xsession-36.png and b/tests/references/energize-b-open-gnome-xsession-36.png differ
diff --git a/tests/references/fire-close-gnome-wayland-nested-32.png b/tests/references/fire-close-gnome-wayland-nested-32.png
old mode 100644
new mode 100755
index 8bbece7..6333c92
Binary files a/tests/references/fire-close-gnome-wayland-nested-32.png and b/tests/references/fire-close-gnome-wayland-nested-32.png differ
diff --git a/tests/references/fire-close-gnome-wayland-nested-33.png b/tests/references/fire-close-gnome-wayland-nested-33.png
old mode 100644
new mode 100755
index 7c816de..d18fd97
Binary files a/tests/references/fire-close-gnome-wayland-nested-33.png and b/tests/references/fire-close-gnome-wayland-nested-33.png differ
diff --git a/tests/references/fire-close-gnome-wayland-nested-34.png b/tests/references/fire-close-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index 67ac459..eac730c
Binary files a/tests/references/fire-close-gnome-wayland-nested-34.png and b/tests/references/fire-close-gnome-wayland-nested-34.png differ
diff --git a/tests/references/fire-close-gnome-wayland-nested-35.png b/tests/references/fire-close-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index 67ac459..59eaa40
Binary files a/tests/references/fire-close-gnome-wayland-nested-35.png and b/tests/references/fire-close-gnome-wayland-nested-35.png differ
diff --git a/tests/references/fire-close-gnome-wayland-nested-36.png b/tests/references/fire-close-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index b14d60e..59eaa40
Binary files a/tests/references/fire-close-gnome-wayland-nested-36.png and b/tests/references/fire-close-gnome-wayland-nested-36.png differ
diff --git a/tests/references/fire-close-gnome-xsession-32.png b/tests/references/fire-close-gnome-xsession-32.png
old mode 100644
new mode 100755
index 8bbece7..f502cc7
Binary files a/tests/references/fire-close-gnome-xsession-32.png and b/tests/references/fire-close-gnome-xsession-32.png differ
diff --git a/tests/references/fire-close-gnome-xsession-33.png b/tests/references/fire-close-gnome-xsession-33.png
old mode 100644
new mode 100755
index 7c816de..34d5179
Binary files a/tests/references/fire-close-gnome-xsession-33.png and b/tests/references/fire-close-gnome-xsession-33.png differ
diff --git a/tests/references/fire-close-gnome-xsession-34.png b/tests/references/fire-close-gnome-xsession-34.png
old mode 100644
new mode 100755
index 21279da..c6745eb
Binary files a/tests/references/fire-close-gnome-xsession-34.png and b/tests/references/fire-close-gnome-xsession-34.png differ
diff --git a/tests/references/fire-close-gnome-xsession-35.png b/tests/references/fire-close-gnome-xsession-35.png
old mode 100644
new mode 100755
index 21279da..992c9b6
Binary files a/tests/references/fire-close-gnome-xsession-35.png and b/tests/references/fire-close-gnome-xsession-35.png differ
diff --git a/tests/references/fire-close-gnome-xsession-36.png b/tests/references/fire-close-gnome-xsession-36.png
old mode 100644
new mode 100755
index d0e153f..992c9b6
Binary files a/tests/references/fire-close-gnome-xsession-36.png and b/tests/references/fire-close-gnome-xsession-36.png differ
diff --git a/tests/references/fire-open-gnome-wayland-nested-32.png b/tests/references/fire-open-gnome-wayland-nested-32.png
old mode 100644
new mode 100755
index 52b3104..839fafd
Binary files a/tests/references/fire-open-gnome-wayland-nested-32.png and b/tests/references/fire-open-gnome-wayland-nested-32.png differ
diff --git a/tests/references/fire-open-gnome-wayland-nested-33.png b/tests/references/fire-open-gnome-wayland-nested-33.png
old mode 100644
new mode 100755
index 630dd03..6a6506f
Binary files a/tests/references/fire-open-gnome-wayland-nested-33.png and b/tests/references/fire-open-gnome-wayland-nested-33.png differ
diff --git a/tests/references/fire-open-gnome-wayland-nested-34.png b/tests/references/fire-open-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index 95ef36a..c686ba1
Binary files a/tests/references/fire-open-gnome-wayland-nested-34.png and b/tests/references/fire-open-gnome-wayland-nested-34.png differ
diff --git a/tests/references/fire-open-gnome-wayland-nested-35.png b/tests/references/fire-open-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index 95ef36a..7e2048b
Binary files a/tests/references/fire-open-gnome-wayland-nested-35.png and b/tests/references/fire-open-gnome-wayland-nested-35.png differ
diff --git a/tests/references/fire-open-gnome-wayland-nested-36.png b/tests/references/fire-open-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index 432c8c0..7e2048b
Binary files a/tests/references/fire-open-gnome-wayland-nested-36.png and b/tests/references/fire-open-gnome-wayland-nested-36.png differ
diff --git a/tests/references/fire-open-gnome-xsession-32.png b/tests/references/fire-open-gnome-xsession-32.png
old mode 100644
new mode 100755
index 52b3104..abe01eb
Binary files a/tests/references/fire-open-gnome-xsession-32.png and b/tests/references/fire-open-gnome-xsession-32.png differ
diff --git a/tests/references/fire-open-gnome-xsession-33.png b/tests/references/fire-open-gnome-xsession-33.png
old mode 100644
new mode 100755
index 630dd03..0603ac3
Binary files a/tests/references/fire-open-gnome-xsession-33.png and b/tests/references/fire-open-gnome-xsession-33.png differ
diff --git a/tests/references/fire-open-gnome-xsession-34.png b/tests/references/fire-open-gnome-xsession-34.png
old mode 100644
new mode 100755
index c29e82a..fb51e2b
Binary files a/tests/references/fire-open-gnome-xsession-34.png and b/tests/references/fire-open-gnome-xsession-34.png differ
diff --git a/tests/references/fire-open-gnome-xsession-35.png b/tests/references/fire-open-gnome-xsession-35.png
old mode 100644
new mode 100755
index c29e82a..24999d2
Binary files a/tests/references/fire-open-gnome-xsession-35.png and b/tests/references/fire-open-gnome-xsession-35.png differ
diff --git a/tests/references/fire-open-gnome-xsession-36.png b/tests/references/fire-open-gnome-xsession-36.png
old mode 100644
new mode 100755
index 13f1679..24999d2
Binary files a/tests/references/fire-open-gnome-xsession-36.png and b/tests/references/fire-open-gnome-xsession-36.png differ
diff --git a/tests/references/hexagon-close-gnome-wayland-nested-32.png b/tests/references/hexagon-close-gnome-wayland-nested-32.png
old mode 100644
new mode 100755
index fae638b..ffd6fb2
Binary files a/tests/references/hexagon-close-gnome-wayland-nested-32.png and b/tests/references/hexagon-close-gnome-wayland-nested-32.png differ
diff --git a/tests/references/hexagon-close-gnome-wayland-nested-33.png b/tests/references/hexagon-close-gnome-wayland-nested-33.png
old mode 100644
new mode 100755
index ee72221..3a65623
Binary files a/tests/references/hexagon-close-gnome-wayland-nested-33.png and b/tests/references/hexagon-close-gnome-wayland-nested-33.png differ
diff --git a/tests/references/hexagon-close-gnome-wayland-nested-34.png b/tests/references/hexagon-close-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index 7f6661d..8d82404
Binary files a/tests/references/hexagon-close-gnome-wayland-nested-34.png and b/tests/references/hexagon-close-gnome-wayland-nested-34.png differ
diff --git a/tests/references/hexagon-close-gnome-wayland-nested-35.png b/tests/references/hexagon-close-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index 7f6661d..1cbb519
Binary files a/tests/references/hexagon-close-gnome-wayland-nested-35.png and b/tests/references/hexagon-close-gnome-wayland-nested-35.png differ
diff --git a/tests/references/hexagon-close-gnome-wayland-nested-36.png b/tests/references/hexagon-close-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index e4cf475..1cbb519
Binary files a/tests/references/hexagon-close-gnome-wayland-nested-36.png and b/tests/references/hexagon-close-gnome-wayland-nested-36.png differ
diff --git a/tests/references/hexagon-close-gnome-xsession-32.png b/tests/references/hexagon-close-gnome-xsession-32.png
old mode 100644
new mode 100755
index fae638b..ed84528
Binary files a/tests/references/hexagon-close-gnome-xsession-32.png and b/tests/references/hexagon-close-gnome-xsession-32.png differ
diff --git a/tests/references/hexagon-close-gnome-xsession-33.png b/tests/references/hexagon-close-gnome-xsession-33.png
old mode 100644
new mode 100755
index ee72221..0ac8061
Binary files a/tests/references/hexagon-close-gnome-xsession-33.png and b/tests/references/hexagon-close-gnome-xsession-33.png differ
diff --git a/tests/references/hexagon-close-gnome-xsession-34.png b/tests/references/hexagon-close-gnome-xsession-34.png
old mode 100644
new mode 100755
index e685569..02b1d7b
Binary files a/tests/references/hexagon-close-gnome-xsession-34.png and b/tests/references/hexagon-close-gnome-xsession-34.png differ
diff --git a/tests/references/hexagon-close-gnome-xsession-35.png b/tests/references/hexagon-close-gnome-xsession-35.png
old mode 100644
new mode 100755
index e685569..0077804
Binary files a/tests/references/hexagon-close-gnome-xsession-35.png and b/tests/references/hexagon-close-gnome-xsession-35.png differ
diff --git a/tests/references/hexagon-close-gnome-xsession-36.png b/tests/references/hexagon-close-gnome-xsession-36.png
old mode 100644
new mode 100755
index 5be0cc3..0077804
Binary files a/tests/references/hexagon-close-gnome-xsession-36.png and b/tests/references/hexagon-close-gnome-xsession-36.png differ
diff --git a/tests/references/hexagon-open-gnome-wayland-nested-32.png b/tests/references/hexagon-open-gnome-wayland-nested-32.png
old mode 100644
new mode 100755
index fae638b..ffd6fb2
Binary files a/tests/references/hexagon-open-gnome-wayland-nested-32.png and b/tests/references/hexagon-open-gnome-wayland-nested-32.png differ
diff --git a/tests/references/hexagon-open-gnome-wayland-nested-33.png b/tests/references/hexagon-open-gnome-wayland-nested-33.png
old mode 100644
new mode 100755
index ee72221..3a65623
Binary files a/tests/references/hexagon-open-gnome-wayland-nested-33.png and b/tests/references/hexagon-open-gnome-wayland-nested-33.png differ
diff --git a/tests/references/hexagon-open-gnome-wayland-nested-34.png b/tests/references/hexagon-open-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index 7f6661d..8d82404
Binary files a/tests/references/hexagon-open-gnome-wayland-nested-34.png and b/tests/references/hexagon-open-gnome-wayland-nested-34.png differ
diff --git a/tests/references/hexagon-open-gnome-wayland-nested-35.png b/tests/references/hexagon-open-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index 7f6661d..1cbb519
Binary files a/tests/references/hexagon-open-gnome-wayland-nested-35.png and b/tests/references/hexagon-open-gnome-wayland-nested-35.png differ
diff --git a/tests/references/hexagon-open-gnome-wayland-nested-36.png b/tests/references/hexagon-open-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index e4cf475..1cbb519
Binary files a/tests/references/hexagon-open-gnome-wayland-nested-36.png and b/tests/references/hexagon-open-gnome-wayland-nested-36.png differ
diff --git a/tests/references/hexagon-open-gnome-xsession-32.png b/tests/references/hexagon-open-gnome-xsession-32.png
old mode 100644
new mode 100755
index fae638b..ed84528
Binary files a/tests/references/hexagon-open-gnome-xsession-32.png and b/tests/references/hexagon-open-gnome-xsession-32.png differ
diff --git a/tests/references/hexagon-open-gnome-xsession-33.png b/tests/references/hexagon-open-gnome-xsession-33.png
old mode 100644
new mode 100755
index ee72221..0ac8061
Binary files a/tests/references/hexagon-open-gnome-xsession-33.png and b/tests/references/hexagon-open-gnome-xsession-33.png differ
diff --git a/tests/references/hexagon-open-gnome-xsession-34.png b/tests/references/hexagon-open-gnome-xsession-34.png
old mode 100644
new mode 100755
index e685569..02b1d7b
Binary files a/tests/references/hexagon-open-gnome-xsession-34.png and b/tests/references/hexagon-open-gnome-xsession-34.png differ
diff --git a/tests/references/hexagon-open-gnome-xsession-35.png b/tests/references/hexagon-open-gnome-xsession-35.png
old mode 100644
new mode 100755
index e685569..0077804
Binary files a/tests/references/hexagon-open-gnome-xsession-35.png and b/tests/references/hexagon-open-gnome-xsession-35.png differ
diff --git a/tests/references/hexagon-open-gnome-xsession-36.png b/tests/references/hexagon-open-gnome-xsession-36.png
old mode 100644
new mode 100755
index 5be0cc3..0077804
Binary files a/tests/references/hexagon-open-gnome-xsession-36.png and b/tests/references/hexagon-open-gnome-xsession-36.png differ
diff --git a/tests/references/incinerate-close-gnome-wayland-nested-32.png b/tests/references/incinerate-close-gnome-wayland-nested-32.png
old mode 100644
new mode 100755
index a64987e..7503c19
Binary files a/tests/references/incinerate-close-gnome-wayland-nested-32.png and b/tests/references/incinerate-close-gnome-wayland-nested-32.png differ
diff --git a/tests/references/incinerate-close-gnome-wayland-nested-33.png b/tests/references/incinerate-close-gnome-wayland-nested-33.png
old mode 100644
new mode 100755
index bd400af..873daeb
Binary files a/tests/references/incinerate-close-gnome-wayland-nested-33.png and b/tests/references/incinerate-close-gnome-wayland-nested-33.png differ
diff --git a/tests/references/incinerate-close-gnome-wayland-nested-34.png b/tests/references/incinerate-close-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index 03f2b53..6ac74c7
Binary files a/tests/references/incinerate-close-gnome-wayland-nested-34.png and b/tests/references/incinerate-close-gnome-wayland-nested-34.png differ
diff --git a/tests/references/incinerate-close-gnome-wayland-nested-35.png b/tests/references/incinerate-close-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index 03f2b53..e51bf15
Binary files a/tests/references/incinerate-close-gnome-wayland-nested-35.png and b/tests/references/incinerate-close-gnome-wayland-nested-35.png differ
diff --git a/tests/references/incinerate-close-gnome-wayland-nested-36.png b/tests/references/incinerate-close-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index a027162..e51bf15
Binary files a/tests/references/incinerate-close-gnome-wayland-nested-36.png and b/tests/references/incinerate-close-gnome-wayland-nested-36.png differ
diff --git a/tests/references/incinerate-close-gnome-xsession-32.png b/tests/references/incinerate-close-gnome-xsession-32.png
old mode 100644
new mode 100755
index a64987e..507b3ce
Binary files a/tests/references/incinerate-close-gnome-xsession-32.png and b/tests/references/incinerate-close-gnome-xsession-32.png differ
diff --git a/tests/references/incinerate-close-gnome-xsession-33.png b/tests/references/incinerate-close-gnome-xsession-33.png
old mode 100644
new mode 100755
index bd400af..645a151
Binary files a/tests/references/incinerate-close-gnome-xsession-33.png and b/tests/references/incinerate-close-gnome-xsession-33.png differ
diff --git a/tests/references/incinerate-close-gnome-xsession-34.png b/tests/references/incinerate-close-gnome-xsession-34.png
old mode 100644
new mode 100755
index c214b01..2b4f356
Binary files a/tests/references/incinerate-close-gnome-xsession-34.png and b/tests/references/incinerate-close-gnome-xsession-34.png differ
diff --git a/tests/references/incinerate-close-gnome-xsession-35.png b/tests/references/incinerate-close-gnome-xsession-35.png
old mode 100644
new mode 100755
index c214b01..d321ab5
Binary files a/tests/references/incinerate-close-gnome-xsession-35.png and b/tests/references/incinerate-close-gnome-xsession-35.png differ
diff --git a/tests/references/incinerate-close-gnome-xsession-36.png b/tests/references/incinerate-close-gnome-xsession-36.png
old mode 100644
new mode 100755
index a95fb9c..d321ab5
Binary files a/tests/references/incinerate-close-gnome-xsession-36.png and b/tests/references/incinerate-close-gnome-xsession-36.png differ
diff --git a/tests/references/incinerate-open-gnome-wayland-nested-32.png b/tests/references/incinerate-open-gnome-wayland-nested-32.png
old mode 100644
new mode 100755
index 93cda9e..8fa2157
Binary files a/tests/references/incinerate-open-gnome-wayland-nested-32.png and b/tests/references/incinerate-open-gnome-wayland-nested-32.png differ
diff --git a/tests/references/incinerate-open-gnome-wayland-nested-33.png b/tests/references/incinerate-open-gnome-wayland-nested-33.png
old mode 100644
new mode 100755
index f94b8a4..a4a7978
Binary files a/tests/references/incinerate-open-gnome-wayland-nested-33.png and b/tests/references/incinerate-open-gnome-wayland-nested-33.png differ
diff --git a/tests/references/incinerate-open-gnome-wayland-nested-34.png b/tests/references/incinerate-open-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index 87f5233..f9ab93f
Binary files a/tests/references/incinerate-open-gnome-wayland-nested-34.png and b/tests/references/incinerate-open-gnome-wayland-nested-34.png differ
diff --git a/tests/references/incinerate-open-gnome-wayland-nested-35.png b/tests/references/incinerate-open-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index 87f5233..ff6ecb7
Binary files a/tests/references/incinerate-open-gnome-wayland-nested-35.png and b/tests/references/incinerate-open-gnome-wayland-nested-35.png differ
diff --git a/tests/references/incinerate-open-gnome-wayland-nested-36.png b/tests/references/incinerate-open-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index ce1d46c..ff6ecb7
Binary files a/tests/references/incinerate-open-gnome-wayland-nested-36.png and b/tests/references/incinerate-open-gnome-wayland-nested-36.png differ
diff --git a/tests/references/incinerate-open-gnome-xsession-32.png b/tests/references/incinerate-open-gnome-xsession-32.png
old mode 100644
new mode 100755
index 2da2df2..e7206a4
Binary files a/tests/references/incinerate-open-gnome-xsession-32.png and b/tests/references/incinerate-open-gnome-xsession-32.png differ
diff --git a/tests/references/incinerate-open-gnome-xsession-33.png b/tests/references/incinerate-open-gnome-xsession-33.png
old mode 100644
new mode 100755
index 3cd2fad..3908b79
Binary files a/tests/references/incinerate-open-gnome-xsession-33.png and b/tests/references/incinerate-open-gnome-xsession-33.png differ
diff --git a/tests/references/incinerate-open-gnome-xsession-34.png b/tests/references/incinerate-open-gnome-xsession-34.png
old mode 100644
new mode 100755
index 7a20201..ea7534b
Binary files a/tests/references/incinerate-open-gnome-xsession-34.png and b/tests/references/incinerate-open-gnome-xsession-34.png differ
diff --git a/tests/references/incinerate-open-gnome-xsession-35.png b/tests/references/incinerate-open-gnome-xsession-35.png
old mode 100644
new mode 100755
index 7a20201..8b93c59
Binary files a/tests/references/incinerate-open-gnome-xsession-35.png and b/tests/references/incinerate-open-gnome-xsession-35.png differ
diff --git a/tests/references/incinerate-open-gnome-xsession-36.png b/tests/references/incinerate-open-gnome-xsession-36.png
old mode 100644
new mode 100755
index 9bd9e09..8b93c59
Binary files a/tests/references/incinerate-open-gnome-xsession-36.png and b/tests/references/incinerate-open-gnome-xsession-36.png differ
diff --git a/tests/references/matrix-close-gnome-wayland-nested-34.png b/tests/references/matrix-close-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index 2a994e7..4816a0e
Binary files a/tests/references/matrix-close-gnome-wayland-nested-34.png and b/tests/references/matrix-close-gnome-wayland-nested-34.png differ
diff --git a/tests/references/matrix-close-gnome-wayland-nested-35.png b/tests/references/matrix-close-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index 89f7cb9..1235b09
Binary files a/tests/references/matrix-close-gnome-wayland-nested-35.png and b/tests/references/matrix-close-gnome-wayland-nested-35.png differ
diff --git a/tests/references/matrix-close-gnome-wayland-nested-36.png b/tests/references/matrix-close-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index 81dd670..1235b09
Binary files a/tests/references/matrix-close-gnome-wayland-nested-36.png and b/tests/references/matrix-close-gnome-wayland-nested-36.png differ
diff --git a/tests/references/matrix-close-gnome-xsession-34.png b/tests/references/matrix-close-gnome-xsession-34.png
old mode 100644
new mode 100755
index c41f746..626726d
Binary files a/tests/references/matrix-close-gnome-xsession-34.png and b/tests/references/matrix-close-gnome-xsession-34.png differ
diff --git a/tests/references/matrix-close-gnome-xsession-35.png b/tests/references/matrix-close-gnome-xsession-35.png
old mode 100644
new mode 100755
index b29a8d9..d5aed0d
Binary files a/tests/references/matrix-close-gnome-xsession-35.png and b/tests/references/matrix-close-gnome-xsession-35.png differ
diff --git a/tests/references/matrix-close-gnome-xsession-36.png b/tests/references/matrix-close-gnome-xsession-36.png
old mode 100644
new mode 100755
index 1d01e7f..d5aed0d
Binary files a/tests/references/matrix-close-gnome-xsession-36.png and b/tests/references/matrix-close-gnome-xsession-36.png differ
diff --git a/tests/references/matrix-open-gnome-wayland-nested-34.png b/tests/references/matrix-open-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index 52e841c..5f06f99
Binary files a/tests/references/matrix-open-gnome-wayland-nested-34.png and b/tests/references/matrix-open-gnome-wayland-nested-34.png differ
diff --git a/tests/references/matrix-open-gnome-wayland-nested-35.png b/tests/references/matrix-open-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index 34fe217..22fe175
Binary files a/tests/references/matrix-open-gnome-wayland-nested-35.png and b/tests/references/matrix-open-gnome-wayland-nested-35.png differ
diff --git a/tests/references/matrix-open-gnome-wayland-nested-36.png b/tests/references/matrix-open-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index fce7b37..22fe175
Binary files a/tests/references/matrix-open-gnome-wayland-nested-36.png and b/tests/references/matrix-open-gnome-wayland-nested-36.png differ
diff --git a/tests/references/matrix-open-gnome-xsession-34.png b/tests/references/matrix-open-gnome-xsession-34.png
old mode 100644
new mode 100755
index fd3cd00..2c84cb1
Binary files a/tests/references/matrix-open-gnome-xsession-34.png and b/tests/references/matrix-open-gnome-xsession-34.png differ
diff --git a/tests/references/matrix-open-gnome-xsession-35.png b/tests/references/matrix-open-gnome-xsession-35.png
old mode 100644
new mode 100755
index 7e8ec5d..27e18c8
Binary files a/tests/references/matrix-open-gnome-xsession-35.png and b/tests/references/matrix-open-gnome-xsession-35.png differ
diff --git a/tests/references/matrix-open-gnome-xsession-36.png b/tests/references/matrix-open-gnome-xsession-36.png
old mode 100644
new mode 100755
index c436851..27e18c8
Binary files a/tests/references/matrix-open-gnome-xsession-36.png and b/tests/references/matrix-open-gnome-xsession-36.png differ
diff --git a/tests/references/pixelate-close-gnome-wayland-nested-32.png b/tests/references/pixelate-close-gnome-wayland-nested-32.png
old mode 100644
new mode 100755
index e545ebc..034ccf2
Binary files a/tests/references/pixelate-close-gnome-wayland-nested-32.png and b/tests/references/pixelate-close-gnome-wayland-nested-32.png differ
diff --git a/tests/references/pixelate-close-gnome-wayland-nested-33.png b/tests/references/pixelate-close-gnome-wayland-nested-33.png
old mode 100644
new mode 100755
index 1b8becc..80c3859
Binary files a/tests/references/pixelate-close-gnome-wayland-nested-33.png and b/tests/references/pixelate-close-gnome-wayland-nested-33.png differ
diff --git a/tests/references/pixelate-close-gnome-wayland-nested-34.png b/tests/references/pixelate-close-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index 114dced..d69f762
Binary files a/tests/references/pixelate-close-gnome-wayland-nested-34.png and b/tests/references/pixelate-close-gnome-wayland-nested-34.png differ
diff --git a/tests/references/pixelate-close-gnome-wayland-nested-35.png b/tests/references/pixelate-close-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index 114dced..6998a1b
Binary files a/tests/references/pixelate-close-gnome-wayland-nested-35.png and b/tests/references/pixelate-close-gnome-wayland-nested-35.png differ
diff --git a/tests/references/pixelate-close-gnome-wayland-nested-36.png b/tests/references/pixelate-close-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index 7644aa2..6998a1b
Binary files a/tests/references/pixelate-close-gnome-wayland-nested-36.png and b/tests/references/pixelate-close-gnome-wayland-nested-36.png differ
diff --git a/tests/references/pixelate-close-gnome-xsession-32.png b/tests/references/pixelate-close-gnome-xsession-32.png
old mode 100644
new mode 100755
index e545ebc..512a1e6
Binary files a/tests/references/pixelate-close-gnome-xsession-32.png and b/tests/references/pixelate-close-gnome-xsession-32.png differ
diff --git a/tests/references/pixelate-close-gnome-xsession-33.png b/tests/references/pixelate-close-gnome-xsession-33.png
old mode 100644
new mode 100755
index 1b8becc..46e22b7
Binary files a/tests/references/pixelate-close-gnome-xsession-33.png and b/tests/references/pixelate-close-gnome-xsession-33.png differ
diff --git a/tests/references/pixelate-close-gnome-xsession-34.png b/tests/references/pixelate-close-gnome-xsession-34.png
old mode 100644
new mode 100755
index 1eff756..69b2720
Binary files a/tests/references/pixelate-close-gnome-xsession-34.png and b/tests/references/pixelate-close-gnome-xsession-34.png differ
diff --git a/tests/references/pixelate-close-gnome-xsession-35.png b/tests/references/pixelate-close-gnome-xsession-35.png
old mode 100644
new mode 100755
index 1eff756..e186432
Binary files a/tests/references/pixelate-close-gnome-xsession-35.png and b/tests/references/pixelate-close-gnome-xsession-35.png differ
diff --git a/tests/references/pixelate-close-gnome-xsession-36.png b/tests/references/pixelate-close-gnome-xsession-36.png
old mode 100644
new mode 100755
index 9a8c78f..e186432
Binary files a/tests/references/pixelate-close-gnome-xsession-36.png and b/tests/references/pixelate-close-gnome-xsession-36.png differ
diff --git a/tests/references/pixelate-open-gnome-wayland-nested-32.png b/tests/references/pixelate-open-gnome-wayland-nested-32.png
old mode 100644
new mode 100755
index e545ebc..034ccf2
Binary files a/tests/references/pixelate-open-gnome-wayland-nested-32.png and b/tests/references/pixelate-open-gnome-wayland-nested-32.png differ
diff --git a/tests/references/pixelate-open-gnome-wayland-nested-33.png b/tests/references/pixelate-open-gnome-wayland-nested-33.png
old mode 100644
new mode 100755
index 1b8becc..80c3859
Binary files a/tests/references/pixelate-open-gnome-wayland-nested-33.png and b/tests/references/pixelate-open-gnome-wayland-nested-33.png differ
diff --git a/tests/references/pixelate-open-gnome-wayland-nested-34.png b/tests/references/pixelate-open-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index 114dced..d69f762
Binary files a/tests/references/pixelate-open-gnome-wayland-nested-34.png and b/tests/references/pixelate-open-gnome-wayland-nested-34.png differ
diff --git a/tests/references/pixelate-open-gnome-wayland-nested-35.png b/tests/references/pixelate-open-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index 114dced..6998a1b
Binary files a/tests/references/pixelate-open-gnome-wayland-nested-35.png and b/tests/references/pixelate-open-gnome-wayland-nested-35.png differ
diff --git a/tests/references/pixelate-open-gnome-wayland-nested-36.png b/tests/references/pixelate-open-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index 7644aa2..6998a1b
Binary files a/tests/references/pixelate-open-gnome-wayland-nested-36.png and b/tests/references/pixelate-open-gnome-wayland-nested-36.png differ
diff --git a/tests/references/pixelate-open-gnome-xsession-32.png b/tests/references/pixelate-open-gnome-xsession-32.png
old mode 100644
new mode 100755
index e545ebc..512a1e6
Binary files a/tests/references/pixelate-open-gnome-xsession-32.png and b/tests/references/pixelate-open-gnome-xsession-32.png differ
diff --git a/tests/references/pixelate-open-gnome-xsession-33.png b/tests/references/pixelate-open-gnome-xsession-33.png
old mode 100644
new mode 100755
index 1b8becc..46e22b7
Binary files a/tests/references/pixelate-open-gnome-xsession-33.png and b/tests/references/pixelate-open-gnome-xsession-33.png differ
diff --git a/tests/references/pixelate-open-gnome-xsession-34.png b/tests/references/pixelate-open-gnome-xsession-34.png
old mode 100644
new mode 100755
index 1eff756..69b2720
Binary files a/tests/references/pixelate-open-gnome-xsession-34.png and b/tests/references/pixelate-open-gnome-xsession-34.png differ
diff --git a/tests/references/pixelate-open-gnome-xsession-35.png b/tests/references/pixelate-open-gnome-xsession-35.png
old mode 100644
new mode 100755
index 1eff756..e186432
Binary files a/tests/references/pixelate-open-gnome-xsession-35.png and b/tests/references/pixelate-open-gnome-xsession-35.png differ
diff --git a/tests/references/pixelate-open-gnome-xsession-36.png b/tests/references/pixelate-open-gnome-xsession-36.png
old mode 100644
new mode 100755
index 9a8c78f..e186432
Binary files a/tests/references/pixelate-open-gnome-xsession-36.png and b/tests/references/pixelate-open-gnome-xsession-36.png differ
diff --git a/tests/references/preferences-gnome-wayland-nested-32.png b/tests/references/preferences-gnome-wayland-nested-32.png
new file mode 100755
index 0000000..2c7169d
Binary files /dev/null and b/tests/references/preferences-gnome-wayland-nested-32.png differ
diff --git a/tests/references/preferences-gnome-wayland-nested-33.png b/tests/references/preferences-gnome-wayland-nested-33.png
new file mode 100755
index 0000000..f8ea612
Binary files /dev/null and b/tests/references/preferences-gnome-wayland-nested-33.png differ
diff --git a/tests/references/preferences-gnome-wayland-nested-34.png b/tests/references/preferences-gnome-wayland-nested-34.png
new file mode 100755
index 0000000..db2b185
Binary files /dev/null and b/tests/references/preferences-gnome-wayland-nested-34.png differ
diff --git a/tests/references/preferences-gnome-wayland-nested-35.png b/tests/references/preferences-gnome-wayland-nested-35.png
new file mode 100755
index 0000000..db2b185
Binary files /dev/null and b/tests/references/preferences-gnome-wayland-nested-35.png differ
diff --git a/tests/references/preferences-gnome-wayland-nested-36.png b/tests/references/preferences-gnome-wayland-nested-36.png
new file mode 100755
index 0000000..f3e8eee
Binary files /dev/null and b/tests/references/preferences-gnome-wayland-nested-36.png differ
diff --git a/tests/references/preferences-gnome-xsession-32.png b/tests/references/preferences-gnome-xsession-32.png
new file mode 100755
index 0000000..2c7169d
Binary files /dev/null and b/tests/references/preferences-gnome-xsession-32.png differ
diff --git a/tests/references/preferences-gnome-xsession-33.png b/tests/references/preferences-gnome-xsession-33.png
new file mode 100755
index 0000000..f8ea612
Binary files /dev/null and b/tests/references/preferences-gnome-xsession-33.png differ
diff --git a/tests/references/preferences-gnome-xsession-34.png b/tests/references/preferences-gnome-xsession-34.png
new file mode 100755
index 0000000..add2dbd
Binary files /dev/null and b/tests/references/preferences-gnome-xsession-34.png differ
diff --git a/tests/references/preferences-gnome-xsession-35.png b/tests/references/preferences-gnome-xsession-35.png
new file mode 100755
index 0000000..add2dbd
Binary files /dev/null and b/tests/references/preferences-gnome-xsession-35.png differ
diff --git a/tests/references/preferences-gnome-xsession-36.png b/tests/references/preferences-gnome-xsession-36.png
new file mode 100755
index 0000000..6191d22
Binary files /dev/null and b/tests/references/preferences-gnome-xsession-36.png differ
diff --git a/tests/references/snap-close-gnome-wayland-nested-34.png b/tests/references/snap-close-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index 97887b5..a09d8c0
Binary files a/tests/references/snap-close-gnome-wayland-nested-34.png and b/tests/references/snap-close-gnome-wayland-nested-34.png differ
diff --git a/tests/references/snap-close-gnome-wayland-nested-35.png b/tests/references/snap-close-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index c037f7e..0fc91fb
Binary files a/tests/references/snap-close-gnome-wayland-nested-35.png and b/tests/references/snap-close-gnome-wayland-nested-35.png differ
diff --git a/tests/references/snap-close-gnome-wayland-nested-36.png b/tests/references/snap-close-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index 30ddd3c..0fc91fb
Binary files a/tests/references/snap-close-gnome-wayland-nested-36.png and b/tests/references/snap-close-gnome-wayland-nested-36.png differ
diff --git a/tests/references/snap-close-gnome-xsession-34.png b/tests/references/snap-close-gnome-xsession-34.png
old mode 100644
new mode 100755
index fe50435..34982be
Binary files a/tests/references/snap-close-gnome-xsession-34.png and b/tests/references/snap-close-gnome-xsession-34.png differ
diff --git a/tests/references/snap-close-gnome-xsession-35.png b/tests/references/snap-close-gnome-xsession-35.png
old mode 100644
new mode 100755
index 6d318d9..6c92eb3
Binary files a/tests/references/snap-close-gnome-xsession-35.png and b/tests/references/snap-close-gnome-xsession-35.png differ
diff --git a/tests/references/snap-close-gnome-xsession-36.png b/tests/references/snap-close-gnome-xsession-36.png
old mode 100644
new mode 100755
index aec3652..6c92eb3
Binary files a/tests/references/snap-close-gnome-xsession-36.png and b/tests/references/snap-close-gnome-xsession-36.png differ
diff --git a/tests/references/snap-open-gnome-wayland-nested-34.png b/tests/references/snap-open-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index 649660a..2c1d8c8
Binary files a/tests/references/snap-open-gnome-wayland-nested-34.png and b/tests/references/snap-open-gnome-wayland-nested-34.png differ
diff --git a/tests/references/snap-open-gnome-wayland-nested-35.png b/tests/references/snap-open-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index 2119258..a913ef0
Binary files a/tests/references/snap-open-gnome-wayland-nested-35.png and b/tests/references/snap-open-gnome-wayland-nested-35.png differ
diff --git a/tests/references/snap-open-gnome-wayland-nested-36.png b/tests/references/snap-open-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index 858d7c7..a913ef0
Binary files a/tests/references/snap-open-gnome-wayland-nested-36.png and b/tests/references/snap-open-gnome-wayland-nested-36.png differ
diff --git a/tests/references/snap-open-gnome-xsession-34.png b/tests/references/snap-open-gnome-xsession-34.png
old mode 100644
new mode 100755
index 78e0fe5..2821955
Binary files a/tests/references/snap-open-gnome-xsession-34.png and b/tests/references/snap-open-gnome-xsession-34.png differ
diff --git a/tests/references/snap-open-gnome-xsession-35.png b/tests/references/snap-open-gnome-xsession-35.png
old mode 100644
new mode 100755
index a858aed..e3bc2f3
Binary files a/tests/references/snap-open-gnome-xsession-35.png and b/tests/references/snap-open-gnome-xsession-35.png differ
diff --git a/tests/references/snap-open-gnome-xsession-36.png b/tests/references/snap-open-gnome-xsession-36.png
old mode 100644
new mode 100755
index 86b61e6..e3bc2f3
Binary files a/tests/references/snap-open-gnome-xsession-36.png and b/tests/references/snap-open-gnome-xsession-36.png differ
diff --git a/tests/references/trex-close-gnome-wayland-nested-34.png b/tests/references/trex-close-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index bf6dd24..86e4921
Binary files a/tests/references/trex-close-gnome-wayland-nested-34.png and b/tests/references/trex-close-gnome-wayland-nested-34.png differ
diff --git a/tests/references/trex-close-gnome-wayland-nested-35.png b/tests/references/trex-close-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index 93be804..e962cf6
Binary files a/tests/references/trex-close-gnome-wayland-nested-35.png and b/tests/references/trex-close-gnome-wayland-nested-35.png differ
diff --git a/tests/references/trex-close-gnome-wayland-nested-36.png b/tests/references/trex-close-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index 2949e4d..e962cf6
Binary files a/tests/references/trex-close-gnome-wayland-nested-36.png and b/tests/references/trex-close-gnome-wayland-nested-36.png differ
diff --git a/tests/references/trex-close-gnome-xsession-34.png b/tests/references/trex-close-gnome-xsession-34.png
old mode 100644
new mode 100755
index 7eace4c..bad4616
Binary files a/tests/references/trex-close-gnome-xsession-34.png and b/tests/references/trex-close-gnome-xsession-34.png differ
diff --git a/tests/references/trex-close-gnome-xsession-35.png b/tests/references/trex-close-gnome-xsession-35.png
old mode 100644
new mode 100755
index abc3996..586ace3
Binary files a/tests/references/trex-close-gnome-xsession-35.png and b/tests/references/trex-close-gnome-xsession-35.png differ
diff --git a/tests/references/trex-close-gnome-xsession-36.png b/tests/references/trex-close-gnome-xsession-36.png
old mode 100644
new mode 100755
index 60cdd1e..586ace3
Binary files a/tests/references/trex-close-gnome-xsession-36.png and b/tests/references/trex-close-gnome-xsession-36.png differ
diff --git a/tests/references/trex-open-gnome-wayland-nested-34.png b/tests/references/trex-open-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index 17d003a..b170588
Binary files a/tests/references/trex-open-gnome-wayland-nested-34.png and b/tests/references/trex-open-gnome-wayland-nested-34.png differ
diff --git a/tests/references/trex-open-gnome-wayland-nested-35.png b/tests/references/trex-open-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index 9cdfdff..dd6cf50
Binary files a/tests/references/trex-open-gnome-wayland-nested-35.png and b/tests/references/trex-open-gnome-wayland-nested-35.png differ
diff --git a/tests/references/trex-open-gnome-wayland-nested-36.png b/tests/references/trex-open-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index f4e9368..dd6cf50
Binary files a/tests/references/trex-open-gnome-wayland-nested-36.png and b/tests/references/trex-open-gnome-wayland-nested-36.png differ
diff --git a/tests/references/trex-open-gnome-xsession-34.png b/tests/references/trex-open-gnome-xsession-34.png
old mode 100644
new mode 100755
index 7370c8d..665690c
Binary files a/tests/references/trex-open-gnome-xsession-34.png and b/tests/references/trex-open-gnome-xsession-34.png differ
diff --git a/tests/references/trex-open-gnome-xsession-35.png b/tests/references/trex-open-gnome-xsession-35.png
old mode 100644
new mode 100755
index c2e1263..34172e9
Binary files a/tests/references/trex-open-gnome-xsession-35.png and b/tests/references/trex-open-gnome-xsession-35.png differ
diff --git a/tests/references/trex-open-gnome-xsession-36.png b/tests/references/trex-open-gnome-xsession-36.png
old mode 100644
new mode 100755
index a4f1b81..34172e9
Binary files a/tests/references/trex-open-gnome-xsession-36.png and b/tests/references/trex-open-gnome-xsession-36.png differ
diff --git a/tests/references/tv-close-gnome-wayland-nested-32.png b/tests/references/tv-close-gnome-wayland-nested-32.png
old mode 100644
new mode 100755
index 118a300..1259154
Binary files a/tests/references/tv-close-gnome-wayland-nested-32.png and b/tests/references/tv-close-gnome-wayland-nested-32.png differ
diff --git a/tests/references/tv-close-gnome-wayland-nested-33.png b/tests/references/tv-close-gnome-wayland-nested-33.png
old mode 100644
new mode 100755
index 59affdb..42d17b9
Binary files a/tests/references/tv-close-gnome-wayland-nested-33.png and b/tests/references/tv-close-gnome-wayland-nested-33.png differ
diff --git a/tests/references/tv-close-gnome-wayland-nested-34.png b/tests/references/tv-close-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index 658ddd4..4643947
Binary files a/tests/references/tv-close-gnome-wayland-nested-34.png and b/tests/references/tv-close-gnome-wayland-nested-34.png differ
diff --git a/tests/references/tv-close-gnome-wayland-nested-35.png b/tests/references/tv-close-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index 658ddd4..7fce269
Binary files a/tests/references/tv-close-gnome-wayland-nested-35.png and b/tests/references/tv-close-gnome-wayland-nested-35.png differ
diff --git a/tests/references/tv-close-gnome-wayland-nested-36.png b/tests/references/tv-close-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index c16c106..7fce269
Binary files a/tests/references/tv-close-gnome-wayland-nested-36.png and b/tests/references/tv-close-gnome-wayland-nested-36.png differ
diff --git a/tests/references/tv-close-gnome-xsession-32.png b/tests/references/tv-close-gnome-xsession-32.png
old mode 100644
new mode 100755
index 118a300..44b5ab3
Binary files a/tests/references/tv-close-gnome-xsession-32.png and b/tests/references/tv-close-gnome-xsession-32.png differ
diff --git a/tests/references/tv-close-gnome-xsession-33.png b/tests/references/tv-close-gnome-xsession-33.png
old mode 100644
new mode 100755
index 59affdb..c548854
Binary files a/tests/references/tv-close-gnome-xsession-33.png and b/tests/references/tv-close-gnome-xsession-33.png differ
diff --git a/tests/references/tv-close-gnome-xsession-34.png b/tests/references/tv-close-gnome-xsession-34.png
old mode 100644
new mode 100755
index 4489162..074b001
Binary files a/tests/references/tv-close-gnome-xsession-34.png and b/tests/references/tv-close-gnome-xsession-34.png differ
diff --git a/tests/references/tv-close-gnome-xsession-35.png b/tests/references/tv-close-gnome-xsession-35.png
old mode 100644
new mode 100755
index 4489162..4b7f36c
Binary files a/tests/references/tv-close-gnome-xsession-35.png and b/tests/references/tv-close-gnome-xsession-35.png differ
diff --git a/tests/references/tv-close-gnome-xsession-36.png b/tests/references/tv-close-gnome-xsession-36.png
old mode 100644
new mode 100755
index d6a3ea8..4b7f36c
Binary files a/tests/references/tv-close-gnome-xsession-36.png and b/tests/references/tv-close-gnome-xsession-36.png differ
diff --git a/tests/references/tv-open-gnome-wayland-nested-32.png b/tests/references/tv-open-gnome-wayland-nested-32.png
old mode 100644
new mode 100755
index 8c00699..5c13ba7
Binary files a/tests/references/tv-open-gnome-wayland-nested-32.png and b/tests/references/tv-open-gnome-wayland-nested-32.png differ
diff --git a/tests/references/tv-open-gnome-wayland-nested-33.png b/tests/references/tv-open-gnome-wayland-nested-33.png
old mode 100644
new mode 100755
index 3eb88ef..5c13ba7
Binary files a/tests/references/tv-open-gnome-wayland-nested-33.png and b/tests/references/tv-open-gnome-wayland-nested-33.png differ
diff --git a/tests/references/tv-open-gnome-wayland-nested-34.png b/tests/references/tv-open-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index 78c8130..5c13ba7
Binary files a/tests/references/tv-open-gnome-wayland-nested-34.png and b/tests/references/tv-open-gnome-wayland-nested-34.png differ
diff --git a/tests/references/tv-open-gnome-wayland-nested-35.png b/tests/references/tv-open-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index 78c8130..5c13ba7
Binary files a/tests/references/tv-open-gnome-wayland-nested-35.png and b/tests/references/tv-open-gnome-wayland-nested-35.png differ
diff --git a/tests/references/tv-open-gnome-wayland-nested-36.png b/tests/references/tv-open-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index 938fe28..5c13ba7
Binary files a/tests/references/tv-open-gnome-wayland-nested-36.png and b/tests/references/tv-open-gnome-wayland-nested-36.png differ
diff --git a/tests/references/tv-open-gnome-xsession-32.png b/tests/references/tv-open-gnome-xsession-32.png
old mode 100644
new mode 100755
index 8c00699..5c13ba7
Binary files a/tests/references/tv-open-gnome-xsession-32.png and b/tests/references/tv-open-gnome-xsession-32.png differ
diff --git a/tests/references/tv-open-gnome-xsession-33.png b/tests/references/tv-open-gnome-xsession-33.png
old mode 100644
new mode 100755
index 3eb88ef..5c13ba7
Binary files a/tests/references/tv-open-gnome-xsession-33.png and b/tests/references/tv-open-gnome-xsession-33.png differ
diff --git a/tests/references/tv-open-gnome-xsession-34.png b/tests/references/tv-open-gnome-xsession-34.png
old mode 100644
new mode 100755
index 5a9fcee..5c13ba7
Binary files a/tests/references/tv-open-gnome-xsession-34.png and b/tests/references/tv-open-gnome-xsession-34.png differ
diff --git a/tests/references/tv-open-gnome-xsession-35.png b/tests/references/tv-open-gnome-xsession-35.png
old mode 100644
new mode 100755
index 5a9fcee..5c13ba7
Binary files a/tests/references/tv-open-gnome-xsession-35.png and b/tests/references/tv-open-gnome-xsession-35.png differ
diff --git a/tests/references/tv-open-gnome-xsession-36.png b/tests/references/tv-open-gnome-xsession-36.png
old mode 100644
new mode 100755
index 3d39e59..5c13ba7
Binary files a/tests/references/tv-open-gnome-xsession-36.png and b/tests/references/tv-open-gnome-xsession-36.png differ
diff --git a/tests/references/wisps-close-gnome-wayland-nested-32.png b/tests/references/wisps-close-gnome-wayland-nested-32.png
old mode 100644
new mode 100755
index e6a326e..dea82c3
Binary files a/tests/references/wisps-close-gnome-wayland-nested-32.png and b/tests/references/wisps-close-gnome-wayland-nested-32.png differ
diff --git a/tests/references/wisps-close-gnome-wayland-nested-33.png b/tests/references/wisps-close-gnome-wayland-nested-33.png
old mode 100644
new mode 100755
index bd90da1..cb69e57
Binary files a/tests/references/wisps-close-gnome-wayland-nested-33.png and b/tests/references/wisps-close-gnome-wayland-nested-33.png differ
diff --git a/tests/references/wisps-close-gnome-wayland-nested-34.png b/tests/references/wisps-close-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index 8c3cec8..d2478b9
Binary files a/tests/references/wisps-close-gnome-wayland-nested-34.png and b/tests/references/wisps-close-gnome-wayland-nested-34.png differ
diff --git a/tests/references/wisps-close-gnome-wayland-nested-35.png b/tests/references/wisps-close-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index 8c3cec8..b1428e3
Binary files a/tests/references/wisps-close-gnome-wayland-nested-35.png and b/tests/references/wisps-close-gnome-wayland-nested-35.png differ
diff --git a/tests/references/wisps-close-gnome-wayland-nested-36.png b/tests/references/wisps-close-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index 4b0ca89..b1428e3
Binary files a/tests/references/wisps-close-gnome-wayland-nested-36.png and b/tests/references/wisps-close-gnome-wayland-nested-36.png differ
diff --git a/tests/references/wisps-close-gnome-xsession-32.png b/tests/references/wisps-close-gnome-xsession-32.png
old mode 100644
new mode 100755
index e6a326e..bafaabd
Binary files a/tests/references/wisps-close-gnome-xsession-32.png and b/tests/references/wisps-close-gnome-xsession-32.png differ
diff --git a/tests/references/wisps-close-gnome-xsession-33.png b/tests/references/wisps-close-gnome-xsession-33.png
old mode 100644
new mode 100755
index bd90da1..30e96c7
Binary files a/tests/references/wisps-close-gnome-xsession-33.png and b/tests/references/wisps-close-gnome-xsession-33.png differ
diff --git a/tests/references/wisps-close-gnome-xsession-34.png b/tests/references/wisps-close-gnome-xsession-34.png
old mode 100644
new mode 100755
index e1aac2f..a13dd42
Binary files a/tests/references/wisps-close-gnome-xsession-34.png and b/tests/references/wisps-close-gnome-xsession-34.png differ
diff --git a/tests/references/wisps-close-gnome-xsession-35.png b/tests/references/wisps-close-gnome-xsession-35.png
old mode 100644
new mode 100755
index e1aac2f..0751740
Binary files a/tests/references/wisps-close-gnome-xsession-35.png and b/tests/references/wisps-close-gnome-xsession-35.png differ
diff --git a/tests/references/wisps-close-gnome-xsession-36.png b/tests/references/wisps-close-gnome-xsession-36.png
old mode 100644
new mode 100755
index 023342c..0751740
Binary files a/tests/references/wisps-close-gnome-xsession-36.png and b/tests/references/wisps-close-gnome-xsession-36.png differ
diff --git a/tests/references/wisps-open-gnome-wayland-nested-32.png b/tests/references/wisps-open-gnome-wayland-nested-32.png
old mode 100644
new mode 100755
index ae913c3..3017f31
Binary files a/tests/references/wisps-open-gnome-wayland-nested-32.png and b/tests/references/wisps-open-gnome-wayland-nested-32.png differ
diff --git a/tests/references/wisps-open-gnome-wayland-nested-33.png b/tests/references/wisps-open-gnome-wayland-nested-33.png
old mode 100644
new mode 100755
index f779c77..6551fbc
Binary files a/tests/references/wisps-open-gnome-wayland-nested-33.png and b/tests/references/wisps-open-gnome-wayland-nested-33.png differ
diff --git a/tests/references/wisps-open-gnome-wayland-nested-34.png b/tests/references/wisps-open-gnome-wayland-nested-34.png
old mode 100644
new mode 100755
index ebb152e..adfdd22
Binary files a/tests/references/wisps-open-gnome-wayland-nested-34.png and b/tests/references/wisps-open-gnome-wayland-nested-34.png differ
diff --git a/tests/references/wisps-open-gnome-wayland-nested-35.png b/tests/references/wisps-open-gnome-wayland-nested-35.png
old mode 100644
new mode 100755
index ebb152e..9be7b85
Binary files a/tests/references/wisps-open-gnome-wayland-nested-35.png and b/tests/references/wisps-open-gnome-wayland-nested-35.png differ
diff --git a/tests/references/wisps-open-gnome-wayland-nested-36.png b/tests/references/wisps-open-gnome-wayland-nested-36.png
old mode 100644
new mode 100755
index be29e64..9be7b85
Binary files a/tests/references/wisps-open-gnome-wayland-nested-36.png and b/tests/references/wisps-open-gnome-wayland-nested-36.png differ
diff --git a/tests/references/wisps-open-gnome-xsession-32.png b/tests/references/wisps-open-gnome-xsession-32.png
old mode 100644
new mode 100755
index ae913c3..5064f3b
Binary files a/tests/references/wisps-open-gnome-xsession-32.png and b/tests/references/wisps-open-gnome-xsession-32.png differ
diff --git a/tests/references/wisps-open-gnome-xsession-33.png b/tests/references/wisps-open-gnome-xsession-33.png
old mode 100644
new mode 100755
index f779c77..717d537
Binary files a/tests/references/wisps-open-gnome-xsession-33.png and b/tests/references/wisps-open-gnome-xsession-33.png differ
diff --git a/tests/references/wisps-open-gnome-xsession-34.png b/tests/references/wisps-open-gnome-xsession-34.png
old mode 100644
new mode 100755
index 7e6bafd..7a23583
Binary files a/tests/references/wisps-open-gnome-xsession-34.png and b/tests/references/wisps-open-gnome-xsession-34.png differ
diff --git a/tests/references/wisps-open-gnome-xsession-35.png b/tests/references/wisps-open-gnome-xsession-35.png
old mode 100644
new mode 100755
index 7e6bafd..925ff85
Binary files a/tests/references/wisps-open-gnome-xsession-35.png and b/tests/references/wisps-open-gnome-xsession-35.png differ
diff --git a/tests/references/wisps-open-gnome-xsession-36.png b/tests/references/wisps-open-gnome-xsession-36.png
old mode 100644
new mode 100755
index 39e56ea..925ff85
Binary files a/tests/references/wisps-open-gnome-xsession-36.png and b/tests/references/wisps-open-gnome-xsession-36.png differ
diff --git a/tests/run-test.sh b/tests/run-test.sh
index 7a3e1b8..f3690f7 100755
--- a/tests/run-test.sh
+++ b/tests/run-test.sh
@@ -58,11 +58,6 @@ cd "$( cd "$( dirname "$0" )" && pwd )/.." || \
IMAGE="ghcr.io/schneegans/gnome-shell-pod-${FEDORA_VERSION}"
EXTENSION="burn-my-windows@schneegans.github.com"
-# All references images of the effects are captured at & cropped to this region
-# in the center of the screen. This is kind of arbitrary, but has been choosen so that
-# something is visible from each effect.
-CROP="100x100+910+480"
-
# Run the container. For more info, visit https://github.com/Schneegans/gnome-shell-pod.
POD=$(podman run --rm --cap-add=SYS_NICE --cap-add=IPC_LOCK -td "${IMAGE}")
@@ -89,29 +84,30 @@ do_in_pod() {
podman exec --user gnomeshell --workdir /home/gnomeshell "${POD}" set-env.sh "$@"
}
-# This is called whenever a test fails. It prints an error message (given as first
-# parameter), captures a screenshot to "fail.png" and stores a log in "fail.log".
+# This is called whenever a test fails. It prints an error message (given as second
+# parameter), saves a current screenshot, the current cropped target and a log to
+# "tests/output/".
fail() {
- echo "${1}"
- podman cp "${POD}:/opt/Xvfb_screen0" - | tar xf - --to-command 'convert xwd:- fail.png'
+ echo "${2}"
+ mkdir -p "tests/output"
+ mv "${WORK_DIR}/screen.png" "tests/output/${1}"
LOG=$(do_in_pod sudo journalctl)
- echo "${LOG}" > fail.log
+ echo "${LOG}" > tests/output/fail.log
exit 1
}
-# This captures the center of the virtual screen in the container and cmopares it to the
-# given target image (first parameter). If it is not found, an error message (second
-# paramter) is printed and the script exits via the fail() method above.
-compare_with_target() {
- echo "Looking for ${1} on the screen."
+# This searches the virtual screen of the container for a given target image (first
+# parameter). If it is not found, an error message (second paramter) is printed and the
+# script exits via the fail() method above.
+find_target() {
+ echo "Searching for ${1} on the screen."
- do_in_pod import -window root -crop $CROP out.png
- podman cp "${POD}":/home/gnomeshell/out.png "${WORK_DIR}/out.png"
+ podman cp "${POD}:/opt/Xvfb_screen0" - | tar xf - --to-command "convert xwd:- ${WORK_DIR}/screen.png"
- DIFF=$(compare "${WORK_DIR}/out.png" "${1}" -metric NCC "${WORK_DIR}/diff.png" 2>&1) || true
+ POS=$(./tests/find-target.sh "${WORK_DIR}/screen.png" "tests/references/${1}") || true
- if (( $(echo "$DIFF < 0.9" |bc -l) )); then
- fail "${2}"
+ if [[ -z "${POS}" ]]; then
+ fail "${1}" "${2}"
fi
}
@@ -141,14 +137,16 @@ test_effect() {
set_setting "open-preview-effect" "${1}"
set_setting "close-preview-effect" "${1}"
- do_in_pod gnome-extensions prefs "${EXTENSION}"
+ sleep 1
+ do_in_pod gnome-terminal
sleep 3
- compare_with_target "tests/references/${1}-open-${SESSION}-${FEDORA_VERSION}.png" "Failed to test ${1} window open effect!"
+ find_target "${1}-open-${SESSION}-${FEDORA_VERSION}.png" "Failed to test ${1} window open effect!"
send_keystroke "Alt+F4"
sleep 3
- compare_with_target "tests/references/${1}-close-${SESSION}-${FEDORA_VERSION}.png" "Failed to test ${1} window close effect!"
+ find_target "${1}-close-${SESSION}-${FEDORA_VERSION}.png" "Failed to test ${1} window close effect!"
}
+
# ----------------------------------------------------- wait for the container to start up
echo "Waiting for D-Bus."
@@ -158,10 +156,16 @@ do_in_pod wait-user-bus.sh > /dev/null 2>&1
# ----------------------------------------------------- install the to-be-tested extension
echo "Installing extension."
+podman cp "tests/references" "${POD}:/home/gnomeshell/references"
podman cp "${EXTENSION}.zip" "${POD}:/home/gnomeshell"
do_in_pod gnome-extensions install "${EXTENSION}.zip"
+# ----------------------- install gnome-terminal (this is used for testing the animations)
+
+do_in_pod sudo dnf install -y gnome-terminal
+
+
# ---------------------------------------------------------------------- start GNOME Shell
# Starting with GNOME 40, there is a "Welcome Tour" dialog popping up at first launch.
@@ -171,6 +175,9 @@ if [[ "${FEDORA_VERSION}" -gt 33 ]]; then
do_in_pod gsettings set org.gnome.shell welcome-dialog-last-shown-version "999" || true
fi
+# Make sure that new windows are opened in the center.
+do_in_pod gsettings set org.gnome.mutter center-new-windows true
+
echo "Starting $(do_in_pod gnome-shell --version)."
do_in_pod systemctl --user start "${SESSION}@:99"
sleep 10
@@ -190,10 +197,17 @@ sleep 3
# ---------------------------------------------------------------------- perform the tests
+# First we open the preferences and check whether the window is shown on screen by
+# searching for a small snippet of the preferences dialog.
+echo "Opening Preferences."
+do_in_pod gnome-extensions prefs "${EXTENSION}"
+sleep 3
+find_target "preferences-${SESSION}-${FEDORA_VERSION}.png" "Failed to open preferences!"
+send_keystroke "Alt+F4"
+
# The test mode ensures that the animations are "frozen" and do not change in time.
echo "Entering test mode."
set_setting "test-mode" true
-do_in_pod gsettings set org.gnome.mutter center-new-windows true
test_effect "energize-a"
test_effect "energize-b"
@@ -206,6 +220,7 @@ test_effect "wisps"
if [[ "${FEDORA_VERSION}" -gt 32 ]]; then
test_effect "apparition"
+ test_effect "doom"
fi
if [[ "${FEDORA_VERSION}" -gt 33 ]]; then