diff --git a/README.md b/README.md index 6231825..e5edae1 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,7 @@ Effect | Preview **Pixelate**
Pixelate your windows and randomly hide pixels until the entire window is gone.| **Pixel Wheel**
This simple effect pixelates the window and hides the pixels in a wheel-like fashion.| **Pixel Wipe**
This effect pixelates the window and hides the pixels radially, starting from the pointer position.| +**Portal**
This ridiculous effect teleports your windows from and to alternative dimensions.| **Snap of Disintegration**
Dissolve your windows into a cloud of dust.| **T-Rex Attack**
Destroy your windows with a series of violent slashes!| **TV-Effect**
This is a very simple effect to demonstrate that this extension could also be used in a more professional environment. | @@ -72,6 +73,7 @@ Below is a table which summarizes the current availability for all effects. Pixelate ✅ ✅ ✅✅✅✅✅ Pixel Wheel ✅ ✅ ✅✅✅✅✅ Pixel Wipe ✅ ✅ ✅✅✅✅✅ +Portal ✅ ✅ ✅✅✅✅✅ Snap of Disintegration ✅✅✅✅ T-Rex Attack ✅✅✅✅ TV-Effect ✅ ✅ ✅✅✅✅✅ diff --git a/docs/changelog.md b/docs/changelog.md index f52dcbe..343686e 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -5,6 +5,14 @@ SPDX-License-Identifier: CC-BY-4.0 # Changelog of the Burn-My-Windows Extension +## [Burn My Windows 23](https://github.com/schneegans/Burn-My-Windows/releases/tag/v23) + +**Release Date:** TBD + +#### New Features + +* **New Effect: Portal.** This ridiculous effect teleports your windows from and to alternative dimensions. It may resemble the portal from a well-known cartoon series... + ## [Burn My Windows 22](https://github.com/schneegans/Burn-My-Windows/releases/tag/v22) **Release Date:** 2022-11-09 diff --git a/docs/pics/portal.gif b/docs/pics/portal.gif new file mode 100644 index 0000000..ce03957 Binary files /dev/null and b/docs/pics/portal.gif differ diff --git a/extension.js b/extension.js index 2f33920..c8c0b5d 100644 --- a/extension.js +++ b/extension.js @@ -64,6 +64,7 @@ class Extension { new Me.imports.src.Pixelate.Pixelate(), new Me.imports.src.PixelWheel.PixelWheel(), new Me.imports.src.PixelWipe.PixelWipe(), + new Me.imports.src.Portal.Portal(), new Me.imports.src.SnapOfDisintegration.SnapOfDisintegration(), new Me.imports.src.TRexAttack.TRexAttack(), new Me.imports.src.TVEffect.TVEffect(), diff --git a/kwin/build.sh b/kwin/build.sh index e6b37d5..1916e8b 100755 --- a/kwin/build.sh +++ b/kwin/build.sh @@ -138,6 +138,7 @@ generate "incinerate" "Incinerate [Burn-My-Windows]" "A less snappy but defini generate "pixelate" "Pixelate [Burn-My-Windows]" "Pixelate the window and randomly hide the pixels" generate "pixel-wheel" "Pixel Wheel [Burn-My-Windows]" "Pixelate the window and hide the pixels in a wheel-like fashion" generate "pixel-wipe" "Pixel Wipe [Burn-My-Windows]" "Pixelate the window and hide the pixels radially, starting from the pointer position" +generate "portal" "Portal [Burn-My-Windows]" "Transfer your windows to other locations in space and time" generate "tv" "TV Effect [Burn-My-Windows]" "Make windows close like turning off a TV" generate "wisps" "Wisps [Burn-My-Windows]" "Let your windows be carried away to the realm of dreams by these little fairies" diff --git a/kwin/portal/config.ui b/kwin/portal/config.ui new file mode 100755 index 0000000..2edc08c --- /dev/null +++ b/kwin/portal/config.ui @@ -0,0 +1,149 @@ + + + + + + BMWConfigForm + + + + 0 + 0 + 562 + 365 + + + + + + + Color: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + kcfg_Color + + + + + + + Duration: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Rotation Speed + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + milliseconds + + + 500 + + + 5000 + + + 100 + + + + + + + true + + + + + + + Whirling + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Details + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 1.000000000000000 + + + 100.000000000000000 + + + + + + + -2.000000000000000 + + + 2.000000000000000 + + + 0.100000000000000 + + + QAbstractSpinBox::AdaptiveDecimalStepType + + + + + + + -2.000000000000000 + + + 2.000000000000000 + + + 0.100000000000000 + + + QAbstractSpinBox::AdaptiveDecimalStepType + + + + + + + + KColorButton + QPushButton +
kcolorbutton.h
+
+
+ + +
diff --git a/kwin/portal/main.xml b/kwin/portal/main.xml new file mode 100755 index 0000000..e8e233a --- /dev/null +++ b/kwin/portal/main.xml @@ -0,0 +1,29 @@ + + + + + + + + + 1250 + + + #79E918 + + + 15.0 + + + 0.3 + + + 1.0 + + + \ No newline at end of file diff --git a/kwin/portal/onAnimationBegin.js b/kwin/portal/onAnimationBegin.js new file mode 100644 index 0000000..dd56436 --- /dev/null +++ b/kwin/portal/onAnimationBegin.js @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: Simon Schneegans +// SPDX-License-Identifier: GPL-3.0-or-later + +// This part is automatically included in the effect's source during the build process. +// The code below is called whenever a window is closed or opened. + +effect.setUniform(this.shader, 'uSeed', [Math.random(), Math.random()]); diff --git a/kwin/portal/onSettingsChanged.js b/kwin/portal/onSettingsChanged.js new file mode 100644 index 0000000..fcb2e56 --- /dev/null +++ b/kwin/portal/onSettingsChanged.js @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: Simon Schneegans +// SPDX-License-Identifier: GPL-3.0-or-later + +// 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. + +effect.setUniform(this.shader, 'uDuration', this.duration * 0.001); +effect.setUniform(this.shader, 'uColor', this.readRGBConfig('Color')); +effect.setUniform(this.shader, 'uDetails', effect.readConfig('Details', 1.0)); +effect.setUniform(this.shader, 'uRotationSpeed', effect.readConfig('RotationSpeed', 1.0)); +effect.setUniform(this.shader, 'uWhirling', effect.readConfig('Whirling', 1.0)); diff --git a/po/burn-my-windows.pot b/po/burn-my-windows.pot index f5f3ac0..7603fa6 100644 --- a/po/burn-my-windows.pot +++ b/po/burn-my-windows.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: burn-my-windows\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-08 21:14+0100\n" +"POT-Creation-Date: 2022-12-23 11:04+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -89,6 +89,10 @@ msgstr "" msgid "Pixel Wipe" msgstr "" +#: src/Portal.js:89 +msgid "Portal" +msgstr "" + #: src/SnapOfDisintegration.js:118 msgid "Snap of Disintegration" msgstr "" @@ -105,50 +109,50 @@ msgstr "" msgid "Wisps" msgstr "" -#: prefs.js:120 +#: prefs.js:121 msgid "Effects" msgstr "" -#: prefs.js:162 resources/ui/gtk4/effectPage.ui:43 +#: prefs.js:163 resources/ui/gtk4/effectPage.ui:43 #: resources/ui/gtk3/effectPage.ui:43 msgid "Preview this effect" msgstr "" -#: prefs.js:197 +#: prefs.js:198 msgid "Use this effect when opening windows" msgstr "" -#: prefs.js:198 +#: prefs.js:199 msgid "Use this effect when closing windows" msgstr "" -#: prefs.js:224 +#: prefs.js:225 msgid "General Options" msgstr "" -#: prefs.js:318 +#: prefs.js:319 msgid "Gold Sponsors" msgstr "" -#: prefs.js:321 +#: prefs.js:322 msgid "Silver Sponsors" msgstr "" -#: prefs.js:324 +#: prefs.js:325 msgid "Bronze Sponsors" msgstr "" -#: prefs.js:327 +#: prefs.js:328 msgid "Past Sponsors" msgstr "" #. Translators: %s will be replaced by the effect's name. -#: prefs.js:534 +#: prefs.js:535 #, javascript-format msgid "Preview for %s" msgstr "" -#: prefs.js:556 +#: prefs.js:557 msgid "Close this Window to Preview the Effect!" msgstr "" @@ -188,13 +192,14 @@ msgstr "" #: resources/ui/gtk4/Doom.ui:30 resources/ui/gtk4/TVEffect.ui:30 #: resources/ui/gtk4/EnergizeA.ui:30 resources/ui/gtk4/Hexagon.ui:30 #: resources/ui/gtk4/EnergizeB.ui:30 resources/ui/gtk4/Pixelate.ui:30 -#: resources/ui/gtk4/Apparition.ui:30 resources/ui/gtk3/Incinerate.ui:55 -#: resources/ui/gtk3/Wisps.ui:48 resources/ui/gtk3/Fire.ui:99 -#: resources/ui/gtk3/Glide.ui:69 resources/ui/gtk3/PixelWipe.ui:55 -#: resources/ui/gtk3/PixelWheel.ui:55 resources/ui/gtk3/Doom.ui:62 -#: resources/ui/gtk3/TVEffect.ui:41 resources/ui/gtk3/EnergizeA.ui:48 -#: resources/ui/gtk3/Hexagon.ui:55 resources/ui/gtk3/EnergizeB.ui:48 -#: resources/ui/gtk3/Pixelate.ui:55 resources/ui/gtk3/Apparition.ui:69 +#: resources/ui/gtk4/Apparition.ui:30 resources/ui/gtk4/Portal.ui:30 +#: resources/ui/gtk3/Incinerate.ui:55 resources/ui/gtk3/Wisps.ui:48 +#: resources/ui/gtk3/Fire.ui:99 resources/ui/gtk3/Glide.ui:69 +#: resources/ui/gtk3/PixelWipe.ui:55 resources/ui/gtk3/PixelWheel.ui:55 +#: resources/ui/gtk3/Doom.ui:62 resources/ui/gtk3/TVEffect.ui:41 +#: resources/ui/gtk3/EnergizeA.ui:48 resources/ui/gtk3/Hexagon.ui:55 +#: resources/ui/gtk3/EnergizeB.ui:48 resources/ui/gtk3/Pixelate.ui:55 +#: resources/ui/gtk3/Apparition.ui:69 resources/ui/gtk3/Portal.ui:62 #: resources/ui/adw/Matrix.ui:14 resources/ui/adw/BrokenGlass.ui:15 #: resources/ui/adw/Incinerate.ui:14 resources/ui/adw/Wisps.ui:14 #: resources/ui/adw/Fire.ui:30 resources/ui/adw/SnapOfDisintegration.ui:14 @@ -203,7 +208,7 @@ msgstr "" #: resources/ui/adw/Doom.ui:14 resources/ui/adw/TVEffect.ui:14 #: resources/ui/adw/EnergizeA.ui:14 resources/ui/adw/Hexagon.ui:14 #: resources/ui/adw/EnergizeB.ui:15 resources/ui/adw/Pixelate.ui:14 -#: resources/ui/adw/Apparition.ui:15 +#: resources/ui/adw/Apparition.ui:15 resources/ui/adw/Portal.ui:14 msgid "Animation Time [ms]" msgstr "" @@ -240,32 +245,37 @@ msgstr "" #: resources/ui/gtk4/prefs.ui:172 resources/ui/gtk4/prefs.ui:206 #: resources/ui/gtk4/Apparition.ui:58 resources/ui/gtk4/Apparition.ui:104 #: resources/ui/gtk4/Apparition.ui:150 resources/ui/gtk4/Apparition.ui:196 -#: resources/ui/gtk4/Apparition.ui:242 resources/ui/gtk3/Incinerate.ui:81 -#: resources/ui/gtk3/Incinerate.ui:130 resources/ui/gtk3/Incinerate.ui:179 -#: resources/ui/gtk3/Incinerate.ui:241 resources/ui/gtk3/Incinerate.ui:284 -#: resources/ui/gtk3/Wisps.ui:74 resources/ui/gtk3/Wisps.ui:123 -#: resources/ui/gtk3/Wisps.ui:166 resources/ui/gtk3/Fire.ui:125 -#: resources/ui/gtk3/Fire.ui:173 resources/ui/gtk3/Fire.ui:221 -#: resources/ui/gtk3/Fire.ui:283 resources/ui/gtk3/Fire.ui:351 -#: resources/ui/gtk3/Glide.ui:95 resources/ui/gtk3/Glide.ui:144 -#: resources/ui/gtk3/Glide.ui:193 resources/ui/gtk3/Glide.ui:242 -#: resources/ui/gtk3/Glide.ui:291 resources/ui/gtk3/PixelWipe.ui:81 -#: resources/ui/gtk3/PixelWipe.ui:130 resources/ui/gtk3/PixelWheel.ui:81 -#: resources/ui/gtk3/PixelWheel.ui:130 resources/ui/gtk3/PixelWheel.ui:179 -#: resources/ui/gtk3/Doom.ui:88 resources/ui/gtk3/Doom.ui:137 -#: resources/ui/gtk3/Doom.ui:186 resources/ui/gtk3/Doom.ui:235 -#: resources/ui/gtk3/TVEffect.ui:67 resources/ui/gtk3/TVEffect.ui:110 -#: resources/ui/gtk3/EnergizeA.ui:74 resources/ui/gtk3/EnergizeA.ui:123 -#: resources/ui/gtk3/EnergizeA.ui:166 resources/ui/gtk3/Hexagon.ui:81 -#: resources/ui/gtk3/Hexagon.ui:130 resources/ui/gtk3/Hexagon.ui:179 -#: resources/ui/gtk3/Hexagon.ui:222 resources/ui/gtk3/Hexagon.ui:265 -#: resources/ui/gtk3/Hexagon.ui:327 resources/ui/gtk3/EnergizeB.ui:74 -#: resources/ui/gtk3/EnergizeB.ui:123 resources/ui/gtk3/EnergizeB.ui:166 -#: resources/ui/gtk3/Pixelate.ui:81 resources/ui/gtk3/Pixelate.ui:130 -#: resources/ui/gtk3/Pixelate.ui:179 resources/ui/gtk3/prefs.ui:225 -#: resources/ui/gtk3/prefs.ui:269 resources/ui/gtk3/Apparition.ui:95 -#: resources/ui/gtk3/Apparition.ui:144 resources/ui/gtk3/Apparition.ui:193 -#: resources/ui/gtk3/Apparition.ui:242 resources/ui/gtk3/Apparition.ui:291 +#: resources/ui/gtk4/Apparition.ui:242 resources/ui/gtk4/Portal.ui:58 +#: resources/ui/gtk4/Portal.ui:104 resources/ui/gtk4/Portal.ui:150 +#: resources/ui/gtk4/Portal.ui:196 resources/ui/gtk4/Portal.ui:230 +#: resources/ui/gtk3/Incinerate.ui:81 resources/ui/gtk3/Incinerate.ui:130 +#: resources/ui/gtk3/Incinerate.ui:179 resources/ui/gtk3/Incinerate.ui:241 +#: resources/ui/gtk3/Incinerate.ui:284 resources/ui/gtk3/Wisps.ui:74 +#: resources/ui/gtk3/Wisps.ui:123 resources/ui/gtk3/Wisps.ui:166 +#: resources/ui/gtk3/Fire.ui:125 resources/ui/gtk3/Fire.ui:173 +#: resources/ui/gtk3/Fire.ui:221 resources/ui/gtk3/Fire.ui:283 +#: resources/ui/gtk3/Fire.ui:351 resources/ui/gtk3/Glide.ui:95 +#: resources/ui/gtk3/Glide.ui:144 resources/ui/gtk3/Glide.ui:193 +#: resources/ui/gtk3/Glide.ui:242 resources/ui/gtk3/Glide.ui:291 +#: resources/ui/gtk3/PixelWipe.ui:81 resources/ui/gtk3/PixelWipe.ui:130 +#: resources/ui/gtk3/PixelWheel.ui:81 resources/ui/gtk3/PixelWheel.ui:130 +#: resources/ui/gtk3/PixelWheel.ui:179 resources/ui/gtk3/Doom.ui:88 +#: resources/ui/gtk3/Doom.ui:137 resources/ui/gtk3/Doom.ui:186 +#: resources/ui/gtk3/Doom.ui:235 resources/ui/gtk3/TVEffect.ui:67 +#: resources/ui/gtk3/TVEffect.ui:110 resources/ui/gtk3/EnergizeA.ui:74 +#: resources/ui/gtk3/EnergizeA.ui:123 resources/ui/gtk3/EnergizeA.ui:166 +#: resources/ui/gtk3/Hexagon.ui:81 resources/ui/gtk3/Hexagon.ui:130 +#: resources/ui/gtk3/Hexagon.ui:179 resources/ui/gtk3/Hexagon.ui:222 +#: resources/ui/gtk3/Hexagon.ui:265 resources/ui/gtk3/Hexagon.ui:327 +#: resources/ui/gtk3/EnergizeB.ui:74 resources/ui/gtk3/EnergizeB.ui:123 +#: resources/ui/gtk3/EnergizeB.ui:166 resources/ui/gtk3/Pixelate.ui:81 +#: resources/ui/gtk3/Pixelate.ui:130 resources/ui/gtk3/Pixelate.ui:179 +#: resources/ui/gtk3/prefs.ui:225 resources/ui/gtk3/prefs.ui:269 +#: resources/ui/gtk3/Apparition.ui:95 resources/ui/gtk3/Apparition.ui:144 +#: resources/ui/gtk3/Apparition.ui:193 resources/ui/gtk3/Apparition.ui:242 +#: resources/ui/gtk3/Apparition.ui:291 resources/ui/gtk3/Portal.ui:89 +#: resources/ui/gtk3/Portal.ui:139 resources/ui/gtk3/Portal.ui:189 +#: resources/ui/gtk3/Portal.ui:239 resources/ui/gtk3/Portal.ui:282 #: resources/ui/adw/Matrix.ui:36 resources/ui/adw/Matrix.ui:69 #: resources/ui/adw/Matrix.ui:102 resources/ui/adw/Matrix.ui:135 #: resources/ui/adw/Matrix.ui:160 resources/ui/adw/Matrix.ui:185 @@ -299,7 +309,9 @@ msgstr "" #: resources/ui/adw/prefs.ui:63 resources/ui/adw/prefs.ui:85 #: resources/ui/adw/Apparition.ui:37 resources/ui/adw/Apparition.ui:70 #: resources/ui/adw/Apparition.ui:103 resources/ui/adw/Apparition.ui:136 -#: resources/ui/adw/Apparition.ui:169 +#: resources/ui/adw/Apparition.ui:169 resources/ui/adw/Portal.ui:36 +#: resources/ui/adw/Portal.ui:69 resources/ui/adw/Portal.ui:102 +#: resources/ui/adw/Portal.ui:135 resources/ui/adw/Portal.ui:160 msgid "Reset to Default Value" msgstr "" @@ -374,12 +386,14 @@ msgstr "" #: resources/ui/gtk4/Incinerate.ui:221 resources/ui/gtk4/Wisps.ui:122 #: resources/ui/gtk4/SnapOfDisintegration.ui:122 #: resources/ui/gtk4/TVEffect.ui:76 resources/ui/gtk4/EnergizeA.ui:122 -#: resources/ui/gtk4/EnergizeB.ui:122 resources/ui/gtk3/Incinerate.ui:263 -#: resources/ui/gtk3/Wisps.ui:145 resources/ui/gtk3/TVEffect.ui:89 -#: resources/ui/gtk3/EnergizeA.ui:145 resources/ui/gtk3/EnergizeB.ui:145 +#: resources/ui/gtk4/EnergizeB.ui:122 resources/ui/gtk4/Portal.ui:214 +#: resources/ui/gtk3/Incinerate.ui:263 resources/ui/gtk3/Wisps.ui:145 +#: resources/ui/gtk3/TVEffect.ui:89 resources/ui/gtk3/EnergizeA.ui:145 +#: resources/ui/gtk3/EnergizeB.ui:145 resources/ui/gtk3/Portal.ui:261 #: resources/ui/adw/Incinerate.ui:136 resources/ui/adw/Wisps.ui:80 #: resources/ui/adw/SnapOfDisintegration.ui:80 resources/ui/adw/TVEffect.ui:47 #: resources/ui/adw/EnergizeA.ui:80 resources/ui/adw/EnergizeB.ui:81 +#: resources/ui/adw/Portal.ui:146 msgid "Color" msgstr "" @@ -546,6 +560,21 @@ msgstr "" msgid "Suction Intensity" msgstr "" +#: resources/ui/gtk4/Portal.ui:76 resources/ui/gtk3/Portal.ui:162 +#: resources/ui/adw/Portal.ui:80 +msgid "Whirling" +msgstr "" + +#: resources/ui/gtk4/Portal.ui:122 resources/ui/gtk3/Portal.ui:112 +#: resources/ui/adw/Portal.ui:47 +msgid "Rotation Speed" +msgstr "" + +#: resources/ui/gtk4/Portal.ui:168 resources/ui/gtk3/Portal.ui:212 +#: resources/ui/adw/Portal.ui:113 +msgid "Details" +msgstr "" + #: resources/ui/gtk3/Fire.ui:69 resources/ui/adw/Fire.ui:19 msgid "Choose a Preset" msgstr "" diff --git a/prefs.js b/prefs.js index 7f8c9cf..0cf131a 100644 --- a/prefs.js +++ b/prefs.js @@ -60,6 +60,7 @@ var PreferencesDialog = class PreferencesDialog { new Me.imports.src.Pixelate.Pixelate(), new Me.imports.src.PixelWheel.PixelWheel(), new Me.imports.src.PixelWipe.PixelWipe(), + new Me.imports.src.Portal.Portal(), new Me.imports.src.SnapOfDisintegration.SnapOfDisintegration(), new Me.imports.src.TRexAttack.TRexAttack(), new Me.imports.src.TVEffect.TVEffect(), diff --git a/resources/shaders/apparition.frag b/resources/shaders/apparition.frag index 6b87d2a..f4193a1 100644 --- a/resources/shaders/apparition.frag +++ b/resources/shaders/apparition.frag @@ -23,8 +23,6 @@ uniform float uRandomness; const float ACTOR_SCALE = 2.0; const float PADDING = ACTOR_SCALE / 2.0 - 0.5; -// The math for the whirling is inspired by this post: -// http://www.geeks3d.com/20110428/shader-library-swirl-post-processing-filter-in-glsl void main() { // We simply inverse the progress for opening windows. float progress = uForOpening ? 1.0 - uProgress : uProgress; @@ -44,10 +42,7 @@ void main() { coords += progress * coords / dist * 0.5 * uSuction; // Apply some whirling. - float angle = pow(1.0 - dist, 2.0) * uTwirl * progress; - float s = sin(angle); - float c = cos(angle); - coords = vec2(dot(coords, vec2(c, -s)), dot(coords, vec2(s, c))); + coords = whirl(coords, uTwirl * progress, 0.0); // Fade out the window texture. vec4 oColor = getInputColor(coords + center); diff --git a/resources/shaders/common.glsl b/resources/shaders/common.glsl index 0201fe2..a76012b 100644 --- a/resources/shaders/common.glsl +++ b/resources/shaders/common.glsl @@ -121,8 +121,8 @@ void setOutputColor(vec4 outColor) { cogl_color_out = outColor; } // The Shell.GLSLEffect uses straight alpha blending. This helper method allows // compositing color values in the shader in the same way. vec4 alphaOver(vec4 under, vec4 over) { - float alpha = over.a + under.a * (1.0 - over.a); - return vec4((over.rgb * over.a + under.rgb * under.a * (1.0 - over.a)) / alpha, alpha); + float alpha = mix(under.a, 1.0, over.a); + return vec4(mix(under.rgb * under.a, over.rgb, over.a) / alpha, alpha); } // ------------------------------------------------------------------------- color helpers @@ -136,6 +136,14 @@ vec3 tritone(float val, vec3 shadows, vec3 midtones, vec3 highlights) { return mix(midtones, highlights, smoothstep(0.0, 1.0, val * 2.0 - 1.0)); } +// Darkens the given color. If fac is zero, the color will not change, if fac is one, the +// color will be black. +vec3 darken(vec3 color, float fac) { return color * (1.0 - fac); } + +// Lightens the given color. If fac is zero, the color will not change, if fac is one, the +// color will be white. +vec3 lighten(vec3 color, float fac) { return color + (vec3(1.0) - color) * fac; } + // ---------------------------------------------------------------------- easing functions // Here are some basic easing function. More can be added if required! @@ -143,8 +151,16 @@ vec3 tritone(float val, vec3 shadows, vec3 midtones, vec3 highlights) { // https://gitlab.gnome.org/GNOME/mutter/-/blob/main/clutter/clutter/clutter-easing.c float easeOutQuad(float x) { return -1.0 * x * (x - 2.0); } + float easeInQuad(float x) { return x * x; } +float easeInBack(float x, float e) { return x * x * ((e + 1.0) * x - e); } + +float easeOutBack(float x, float e) { + float p = x - 1.0; + return p * p * ((e + 1.0) * p + e) + 1.0; +} + // --------------------------------------------------------------------- edge mask helpers // This method returns a mask which smoothly transitions towards zero when approaching @@ -183,6 +199,15 @@ float getRelativeEdgeMask(float fadeAmount) { // ------------------------------------------------------------------------------- 2D math +// The math for the whirling is inspired by this post: +// http://www.geeks3d.com/20110428/shader-library-swirl-post-processing-filter-in-glsl +vec2 whirl(vec2 coords, float warping, float rotation) { + float angle = pow(1.0 - length(coords), 2.0) * warping + rotation; + float s = sin(angle); + float c = cos(angle); + return vec2(dot(coords, vec2(c, -s)), dot(coords, vec2(s, c))); +} + // Returns the shortest distance between the given point and the line defined by "origin" // and "direction". float distToLine(vec2 origin, vec2 direction, vec2 point) { diff --git a/resources/shaders/portal.frag b/resources/shaders/portal.frag new file mode 100644 index 0000000..ad02926 --- /dev/null +++ b/resources/shaders/portal.frag @@ -0,0 +1,206 @@ +////////////////////////////////////////////////////////////////////////////////////////// +// ) ( // +// ( /( ( ( ) ( ( ( ( )\ ) ( ( // +// )\()) ))\ )( ( ( )\ ) )\))( )\ ( (()/( ( )\))( ( // +// ((_)\ /((_|()\ )\ ) )\ '(()/( ((_)()((_) )\ ) ((_)))\((_)()\ )\ // +// | |(_|_))( ((_)_(_/( _((_)) )(_)) _(()((_|_)_(_/( _| |((_)(()((_|(_) // +// | '_ \ || | '_| ' \)) | ' \()| || | \ V V / | ' \)) _` / _ \ V V (_-< // +// |_.__/\_,_|_| |_||_| |_|_|_| \_, | \_/\_/|_|_||_|\__,_\___/\_/\_//__/ // +// |__/ // +////////////////////////////////////////////////////////////////////////////////////////// + +// SPDX-FileCopyrightText: Simon Schneegans +// SPDX-License-Identifier: GPL-3.0-or-later + +// The content from common.glsl is automatically prepended to each shader effect. + +uniform vec2 uSeed; +uniform vec3 uColor; +uniform float uRotationSpeed; +uniform float uWhirling; +uniform float uDetails; + +const float PORTAL_WOBBLE_TIME = 0.8; +const float PORTAL_WOBBLE_STRENGTH = 1.2; +const float GLOW_EDGE_WIDTH = 5.0; +const float WINDOW_SCALE = 0.3; +const float WINDOW_SQUISH = 1.0; +const float WINDOW_TILT = -1.0; + +// Make sure that the portal and window open / close animations are quick even if the +// duration is longer. +float PORTAL_OPEN_TIME = 0.4 / uDuration; +float PORTAL_CLOSE_TIME = 0.4 / uDuration; +float WINDOW_OPEN_TIME = 0.35 / uDuration; + +// This will distort the given coordinate to achieve the wobble effect of the portal when +// the window passes through. The wobble happens around the point where the window appears +// or disappears (which is controlled by WINDOW_OPEN_TIME) and takes +// PORTAL_WOBBLE_TIME. +vec2 getPortalWobble(vec2 coords) { + float progress = (uForOpening ? (1.0 - uProgress) : uProgress) / WINDOW_OPEN_TIME; + progress = clamp(1.0 - abs((progress - 1.0) / PORTAL_WOBBLE_TIME), 0.0, 1.0); + progress = easeInBack(progress, 1.7); + float dist = length(coords); + + return coords * (1.0 - dist) * exp(-dist) * progress * PORTAL_WOBBLE_STRENGTH; +} + +// This is used to compute the scale of the portal. The returned value will smoothly +// increase during uDuration*PORTAL_OPEN_TIME, stay at one until uDuration*(1.0 - +// PORTAL_CLOSE_TIME) and then decrease again. +float getPortalScale() { + float scale = 1.0; + if (uProgress < PORTAL_OPEN_TIME) { + scale = easeOutBack(uProgress / PORTAL_OPEN_TIME, 1.5); + } else if (uProgress > 1.0 - PORTAL_CLOSE_TIME) { + scale = + easeOutBack(1.0 - (uProgress - 1.0 + PORTAL_CLOSE_TIME) / PORTAL_CLOSE_TIME, 1.5); + } + + return scale; +} + +// Returns a random 2D vector in [(-0.5, -0.5) ... (0.5, 0.5)] using two time simplex +// noise. The scale of the noise can be adjusted with the scale paramter. +vec2 getRandomDisplace(vec2 seed, float scale) { + return vec2(simplex2D(seed * scale + uSeed) - 0.5, + simplex2D(seed * scale + uSeed + vec2(7.89, 123.0)) - 0.5); +} + +// Twists the given coordinates around the origin. The speedMultiplier can be used to +// control the overall rotation speed, warpMultiplier can be used to control the amount of +// twisting (higher multipliers will make coordinates which are closer to the origin be +// rotated more than coordinates farther away). +vec2 getWhirledCoords(vec2 coords, float speedMultiplier, float warpMultiplier) { + float rotation = uRotationSpeed * uProgress * uDuration * speedMultiplier; + float warping = uWhirling * (6.0 + 1.5 * uProgress) * warpMultiplier; + return whirl(coords, warping, rotation); +} + +// This returns a beautiful portal. It is composed of several layers: +// 1. In the background, there is a slightly distorted radial gradient. +// 2. Next, there is a layer of whirled bands. +// 3. Thereafter, there is another layer of whirled bands, rotating a bit faster and +// usually in a slightly brighter color. +// 4. Then the rim of the portal is drawn. +// 5. Finally, some bright sparkling dots are drawn above. +vec4 getPortalColor() { + + // Put coordinate origin to the center of the window. + vec2 coords = (iTexCoord.st - vec2(0.5)) * 2.0; + + // Add some margin for the elastic overshooting. + coords *= 1.5; + + // Add the open-close animation of the portal. + float scale = getPortalScale(); + coords /= max(scale * 0.5 + 0.5, 0.01); + + // We will use this distortion vector on all layers below in order to add the elastic + // wobbling when the window passes through the portal. + vec2 wobble = getPortalWobble(coords); + + // This is used below to scale the detail level of the layers. If the portal is small, + // we want to have less details, if the portal is huge on the screen, theres plenty of + // space for details. + float detailScale = 10000.0 / (uSize.x + uSize.y) / uDetails; + + // ---------------------------------------------------------------------------- 1. layer + // We start with the background layer. This is a radial gradient from a dark color in + // the center to a not-so-dark color in the outer regions. We distort the coordinates to + // add some variations to the colors and to the shape of the portal. + vec2 layerCoords = getWhirledCoords(coords - wobble * 1.0, 0.25, 1.0); + vec2 displace = getRandomDisplace(layerCoords, 2.1); + layerCoords += displace * 0.1; + float dist = length(layerCoords); + float alpha = dist > 1.0 ? 0.0 : 1.0; + vec4 color = vec4(mix(darken(uColor, 0.8), darken(uColor, 0.2), pow(dist, 5.0)), alpha); + float rand = dot(displace, displace); + + // ---------------------------------------------------------------------------- 2. layer + // Then we add the first layer of whirly bands. + float noise = simplex2D(layerCoords / detailScale * 1.0 + vec2(12.3, 56.4) + uSeed); + vec4 layer = vec4(darken(uColor, 0.3), noise > 0.6 ? alpha : 0.0); + color = alphaOver(color, layer); + + // ---------------------------------------------------------------------------- 3. layer + // The second layer of whirly bands uses a lighter color and a different set of + // distorted coordinates. + layerCoords = getWhirledCoords(coords - wobble * 1.5, 0.75, 0.5); + displace = getRandomDisplace(layerCoords, 12.2); + layerCoords += displace * 0.1; + noise = simplex2D(layerCoords / detailScale * 1.3 + uSeed); + layer = vec4(uColor, noise > 0.6 ? alpha : 0.0); + color = alphaOver(color, layer); + + // At this point, some of the color components can be outside the [0..1] range, so we + // have to clamp them. Else the alpha compositing will create artifacts. + color = clamp(color, 0.0, 1.0); + + // ---------------------------------------------------------------------------- 4. layer + // Then we add the edge around the portal with the effect's color. It varies in + // thickness to create some variations. + float edge = + mix(1.0, 5.0, rand) * GLOW_EDGE_WIDTH * detailScale - 150.0 * abs(dist - 1.0); + layer = vec4(uColor, clamp(edge, 0.0, 1.0)); + color = alphaOver(color, layer); + + // ---------------------------------------------------------------------------- 5. layer + // Finally, we add some sparkling lights. + layerCoords = getWhirledCoords(coords - wobble * 1.8, 1.25, 0.0); + noise = simplex2D(layerCoords / detailScale * 3.0 + uSeed); + layer.rgb = lighten(uColor, 0.8) * clamp(pow(noise * rand + 0.9, 50.0), 0.0, 1.0); + color.rgb += layer.rgb; + + // Finally, fade in / out the portal when it appears / disappears. + color.a *= pow(clamp(scale, 0.0, 1.0), 2.0); + return clamp(color, 0.0, 1.0); +} + +// This method returns the window texture. The window is scaled down / up and faded to / +// from transparency to create the illusion of travelling through the portal. The +// animation will happen in a fraction of the full animation time (at the end of the +// animation when opening a window and at the beginning of the animation when closing the +// window). The fraction of the animation time take for the window animation is defined by +// WINDOW_OPEN_TIME. +vec4 getWindowColor() { + float progress = (uForOpening ? (1.0 - uProgress) : uProgress) / WINDOW_OPEN_TIME; + + // Add some elastic easing to make the effect more dynamic. + progress = easeInBack(clamp(progress, 0.0, 1.0), 1.2); + + // Put texture coordinate origin to center of window. + vec2 coords = iTexCoord.st * 2.0 - 1.0; + + // Scale image texture with progress. + coords /= mix(1.0, WINDOW_SCALE, progress); + + // Squish image texture vertically. + coords.y /= mix(1.0, (1.0 - 0.2 * WINDOW_SQUISH), progress); + + // 'Tilt' image texture around x-axis. + coords.x /= mix(1.0, 1.0 - 0.1 * WINDOW_TILT * coords.y, progress); + + // Move texture coordinate center to corner again. + coords = coords * 0.5 + 0.5; + + // Fade the window to transparency. We multiply the progress with 3.0 in order to start + // the fade quite late. + vec4 oColor = getInputColor(coords); + oColor.a *= clamp((1.0 - progress) * 3.0, 0.0, 1.0); + + return oColor; +} + +void main() { + + // Get the window color and the portal color and simply combine them. + vec4 portal = getPortalColor(); + vec4 window = getWindowColor(); + setOutputColor(alphaOver(portal, window)); + + // These can be useful for understanding how this works. + // setOutputColor(portal); + // setOutputColor(window); +} \ No newline at end of file diff --git a/resources/ui/adw/Portal.ui b/resources/ui/adw/Portal.ui new file mode 100644 index 0000000..f48f56d --- /dev/null +++ b/resources/ui/adw/Portal.ui @@ -0,0 +1,171 @@ + + + + + + + + + + + Animation Time [ms] + + + center + 1 + 0 + left + 300 + + + 5000 + 500 + 1 + 100 + + + + + + + edit-clear-symbolic + center + Reset to Default Value + + + + + + + + + Rotation Speed + + + center + 1 + 2 + left + 300 + + + 2 + -2 + 0.1 + 1 + + + + + + + edit-clear-symbolic + center + Reset to Default Value + + + + + + + + + Whirling + + + center + 1 + 2 + left + 300 + + + 2 + -2 + 0.1 + 1 + + + + + + + edit-clear-symbolic + center + Reset to Default Value + + + + + + + + + Details + + + center + 1 + 1 + left + 300 + + + 100 + 1 + 1 + 10 + + + + + + + edit-clear-symbolic + center + Reset to Default Value + + + + + + + + + Color + portal-color + + + center + 250 + 0 + 1 + + + + + edit-clear-symbolic + center + Reset to Default Value + + + + + + + + + \ No newline at end of file diff --git a/resources/ui/gtk3/Portal.ui b/resources/ui/gtk3/Portal.ui new file mode 100644 index 0000000..2b8fd9f --- /dev/null +++ b/resources/ui/gtk3/Portal.ui @@ -0,0 +1,301 @@ + + + + + + + + 5000 + 500 + 1 + 100 + + + + 2 + -2 + 0.1 + 1 + + + + 2 + -2 + 0.1 + 1 + + + + 100 + 1 + 1 + 10 + + + + vertical + + + + + + none + + + + + 10 + 10 + 10 + 10 + 0 + + + 8 + + + Animation Time [ms] + 0 + start + center + 1 + + + + + end + center + 1 + 0 + left + 300 + portal-animation-time + + + + + + + edit-clear-symbolic + 1 + + + Reset to Default Value + + + + + + + + + + + 10 + 10 + 10 + 10 + 0 + + + 8 + + + Rotation Speed + 0 + start + center + 1 + + + + + end + center + 1 + 2 + left + 300 + portal-rotation-speed + + + + + + + edit-clear-symbolic + 1 + + + Reset to Default Value + + + + + + + + + + + 10 + 10 + 10 + 10 + 0 + + + 8 + + + Whirling + 0 + start + center + 1 + + + + + end + center + 1 + 2 + left + 300 + portal-whirling + + + + + + + edit-clear-symbolic + 1 + + + Reset to Default Value + + + + + + + + + + + 10 + 10 + 10 + 10 + 0 + + + 8 + + + Details + 0 + start + center + 1 + + + + + end + center + 1 + 1 + left + 300 + portal-details + + + + + + + edit-clear-symbolic + 1 + + + Reset to Default Value + + + + + + + + + + + 10 + 10 + 10 + 10 + 0 + + + + + Color + 0 + start + center + 1 + + + + + 0 + 1 + + + + + + + edit-clear-symbolic + 1 + + + Reset to Default Value + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/ui/gtk4/Portal.ui b/resources/ui/gtk4/Portal.ui new file mode 100644 index 0000000..66c2c6a --- /dev/null +++ b/resources/ui/gtk4/Portal.ui @@ -0,0 +1,249 @@ + + + + + + + + vertical + + + + + + none + 1 + + + + + 0 + + + + + Animation Time [ms] + 0 + start + center + 1 + + + + + end + center + 1 + 0 + left + 300 + + + 5000 + 500 + 1 + 100 + + + + + + + edit-clear-symbolic + Reset to Default Value + + + + + + + + + + + 0 + + + + + Whirling + 0 + start + center + 1 + + + + + end + center + 1 + 2 + left + 300 + + + 2 + -2 + 0.1 + 1 + + + + + + + edit-clear-symbolic + Reset to Default Value + + + + + + + + + + + 0 + + + + + Rotation Speed + 0 + start + center + 1 + + + + + end + center + 1 + 2 + left + 300 + + + 2 + -2 + 0.1 + 1 + + + + + + + edit-clear-symbolic + Reset to Default Value + + + + + + + + + + + 0 + + + + + Details + 0 + start + center + 1 + + + + + end + center + 1 + 1 + left + 300 + + + 100 + 1 + 1 + 10 + + + + + + + edit-clear-symbolic + Reset to Default Value + + + + + + + + + + + 0 + + + + + Color + 0 + start + center + 1 + + + + + 0 + 1 + + + + + edit-clear-symbolic + Reset to Default Value + + + + + + + + + + + + + + + + + \ No newline at end of file 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 6af42eb..be44e36 100644 --- a/schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml +++ b/schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml @@ -44,7 +44,7 @@ SPDX-License-Identifier: CC0-1.0 - + @@ -715,6 +715,52 @@ SPDX-License-Identifier: CC0-1.0 Use the pointer location for the broken glass effect. + + + + + + false + Portal Close Effect + Use the Portal effect for window closing. + + + + false + Portal Open Effect + Use the Portal effect for window opening. + + + + 1250 + Portal Animation Time + The time the Portal effect takes. + + + + "rgb(121, 233, 24)" + Portal Color + The color of the effect. + + + + 0.3 + Portal Rotation Speed + The angular speed of the portal. + + + + 1.0 + Portal Whirling + The amount of distortion. + + + + 15.0 + Portal Details + The amount of details in the portal. + + diff --git a/src/Portal.js b/src/Portal.js new file mode 100644 index 0000000..6b99976 --- /dev/null +++ b/src/Portal.js @@ -0,0 +1,120 @@ +////////////////////////////////////////////////////////////////////////////////////////// +// ) ( // +// ( /( ( ( ) ( ( ( ( )\ ) ( ( // +// )\()) ))\ )( ( ( )\ ) )\))( )\ ( (()/( ( )\))( ( // +// ((_)\ /((_|()\ )\ ) )\ '(()/( ((_)()((_) )\ ) ((_)))\((_)()\ )\ // +// | |(_|_))( ((_)_(_/( _((_)) )(_)) _(()((_|_)_(_/( _| |((_)(()((_|(_) // +// | '_ \ || | '_| ' \)) | ' \()| || | \ V V / | ' \)) _` / _ \ V V (_-< // +// |_.__/\_,_|_| |_||_| |_|_|_| \_, | \_/\_/|_|_||_|\__,_\___/\_/\_//__/ // +// |__/ // +////////////////////////////////////////////////////////////////////////////////////////// + +// SPDX-FileCopyrightText: Simon Schneegans +// SPDX-License-Identifier: GPL-3.0-or-later + +'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; + +////////////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////////////// + +// 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 Portal = 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) => { + // We import Clutter in this function as it is not available in the preferences + // process. This creator function of the ShaderFactory is only called within GNOME + // Shell's process. + const Clutter = imports.gi.Clutter; + + // Store uniform locations of newly created shaders. + shader._uSeed = shader.get_uniform_location('uSeed'); + shader._uColor = shader.get_uniform_location('uColor'); + shader._uDetails = shader.get_uniform_location('uDetails'); + shader._uRotationSpeed = shader.get_uniform_location('uRotationSpeed'); + shader._uWhirling = shader.get_uniform_location('uWhirling'); + + // Write all uniform values at the start of each animation. + shader.connect('begin-animation', (shader, settings) => { + const c = Clutter.Color.from_string(settings.get_string('portal-color'))[1]; + + // If we are performing an integration tests, we use a fixed seed. + const testMode = settings.get_boolean('test-mode'); + + // clang-format off + shader.set_uniform_float(shader._uSeed, 2, [testMode ? 0 : Math.random(), testMode ? 0 : Math.random()]); + shader.set_uniform_float(shader._uColor, 3, [c.red / 255, c.green / 255, c.blue / 255]); + shader.set_uniform_float(shader._uDetails, 1, [settings.get_double('portal-details')]); + shader.set_uniform_float(shader._uRotationSpeed, 1, [settings.get_double('portal-rotation-speed')]); + shader.set_uniform_float(shader._uWhirling, 1, [settings.get_double('portal-whirling')]); + // clang-format on + }); + }); + } + + + // ---------------------------------------------------------------------------- metadata + + // The effect is available on all GNOME Shell versions supported by this extension. + getMinShellVersion() { + return [3, 36]; + } + + // 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 'portal'; + } + + // 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 _('Portal'); + } + + // -------------------------------------------------------------------- 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.getUIDir()}/Portal.ui`); + + // Bind all properties. + dialog.bindAdjustment('portal-animation-time'); + dialog.bindAdjustment('portal-rotation-speed'); + dialog.bindAdjustment('portal-whirling'); + dialog.bindAdjustment('portal-details'); + dialog.bindColorButton('portal-color'); + + // Finally, return the new settings page. + return dialog.getBuilder().get_object('portal-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+. + getActorScale(settings) { + return {x: 1.0, y: 1.0}; + } +} diff --git a/tests/generate-references.sh b/tests/generate-references.sh index 053f472..7032b04 100755 --- a/tests/generate-references.sh +++ b/tests/generate-references.sh @@ -191,6 +191,7 @@ capture_effect "incinerate" capture_effect "pixelate" capture_effect "pixel-wheel" capture_effect "pixel-wipe" +capture_effect "portal" capture_effect "tv" capture_effect "wisps" diff --git a/tests/references/apparition-close-gnome-wayland-nested-33.png b/tests/references/apparition-close-gnome-wayland-nested-33.png index 482d88e..3e668a0 100755 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 index 1d406ca..3e668a0 100755 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 index e338448..3e668a0 100755 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 index e338448..3e668a0 100755 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 index 91c319e..3e668a0 100755 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 index d7bf222..3e668a0 100755 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 index 63d0bd4..3e668a0 100755 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 index 63d0bd4..3e668a0 100755 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 index 482d88e..3e668a0 100755 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 index 1d406ca..3e668a0 100755 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 index e338448..3e668a0 100755 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 index e338448..3e668a0 100755 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 index 91c319e..3e668a0 100755 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 index d7bf222..3e668a0 100755 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 index 63d0bd4..3e668a0 100755 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 index 63d0bd4..3e668a0 100755 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/doom-close-gnome-wayland-nested-33.png b/tests/references/doom-close-gnome-wayland-nested-33.png index 2dd77ca..a222e32 100755 Binary files a/tests/references/doom-close-gnome-wayland-nested-33.png 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 index 8879b22..16ab833 100755 Binary files a/tests/references/doom-close-gnome-wayland-nested-34.png 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 index ac7b54b..a840f7f 100755 Binary files a/tests/references/doom-close-gnome-wayland-nested-35.png 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 index 84ea46d..a840f7f 100755 Binary files a/tests/references/doom-close-gnome-wayland-nested-36.png 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 index b701718..3f8f3a4 100755 Binary files a/tests/references/doom-close-gnome-xsession-33.png 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 index 2966413..f88d060 100755 Binary files a/tests/references/doom-close-gnome-xsession-34.png 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 index 8e2f7d0..97cfb86 100755 Binary files a/tests/references/doom-close-gnome-xsession-35.png 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 index aa6aa94..97cfb86 100755 Binary files a/tests/references/doom-close-gnome-xsession-36.png 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 index 99f23b2..e1f7aa3 100755 Binary files a/tests/references/doom-open-gnome-wayland-nested-33.png 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 index cce83f4..99e1cd5 100755 Binary files a/tests/references/doom-open-gnome-wayland-nested-34.png 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 index 7d5fd80..9030a7c 100755 Binary files a/tests/references/doom-open-gnome-wayland-nested-35.png 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 index 7d5fd80..9030a7c 100755 Binary files a/tests/references/doom-open-gnome-wayland-nested-36.png 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 index 3eb5ded..96f5b89 100755 Binary files a/tests/references/doom-open-gnome-xsession-33.png 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 index a70227f..6bc837e 100755 Binary files a/tests/references/doom-open-gnome-xsession-34.png 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 index 63a82cf..29d6a17 100755 Binary files a/tests/references/doom-open-gnome-xsession-35.png 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 index 63a82cf..29d6a17 100755 Binary files a/tests/references/doom-open-gnome-xsession-36.png and b/tests/references/doom-open-gnome-xsession-36.png differ diff --git a/tests/references/pixel-wheel-close-gnome-wayland-nested-32.png b/tests/references/pixel-wheel-close-gnome-wayland-nested-32.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wheel-close-gnome-wayland-nested-33.png b/tests/references/pixel-wheel-close-gnome-wayland-nested-33.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wheel-close-gnome-wayland-nested-34.png b/tests/references/pixel-wheel-close-gnome-wayland-nested-34.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wheel-close-gnome-wayland-nested-35.png b/tests/references/pixel-wheel-close-gnome-wayland-nested-35.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wheel-close-gnome-wayland-nested-36.png b/tests/references/pixel-wheel-close-gnome-wayland-nested-36.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wheel-close-gnome-xsession-32.png b/tests/references/pixel-wheel-close-gnome-xsession-32.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wheel-close-gnome-xsession-33.png b/tests/references/pixel-wheel-close-gnome-xsession-33.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wheel-close-gnome-xsession-34.png b/tests/references/pixel-wheel-close-gnome-xsession-34.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wheel-close-gnome-xsession-35.png b/tests/references/pixel-wheel-close-gnome-xsession-35.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wheel-close-gnome-xsession-36.png b/tests/references/pixel-wheel-close-gnome-xsession-36.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wheel-open-gnome-wayland-nested-32.png b/tests/references/pixel-wheel-open-gnome-wayland-nested-32.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wheel-open-gnome-wayland-nested-33.png b/tests/references/pixel-wheel-open-gnome-wayland-nested-33.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wheel-open-gnome-wayland-nested-34.png b/tests/references/pixel-wheel-open-gnome-wayland-nested-34.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wheel-open-gnome-wayland-nested-35.png b/tests/references/pixel-wheel-open-gnome-wayland-nested-35.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wheel-open-gnome-wayland-nested-36.png b/tests/references/pixel-wheel-open-gnome-wayland-nested-36.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wheel-open-gnome-xsession-32.png b/tests/references/pixel-wheel-open-gnome-xsession-32.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wheel-open-gnome-xsession-33.png b/tests/references/pixel-wheel-open-gnome-xsession-33.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wheel-open-gnome-xsession-34.png b/tests/references/pixel-wheel-open-gnome-xsession-34.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wheel-open-gnome-xsession-35.png b/tests/references/pixel-wheel-open-gnome-xsession-35.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wheel-open-gnome-xsession-36.png b/tests/references/pixel-wheel-open-gnome-xsession-36.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wipe-close-gnome-wayland-nested-32.png b/tests/references/pixel-wipe-close-gnome-wayland-nested-32.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wipe-close-gnome-wayland-nested-33.png b/tests/references/pixel-wipe-close-gnome-wayland-nested-33.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wipe-close-gnome-wayland-nested-34.png b/tests/references/pixel-wipe-close-gnome-wayland-nested-34.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wipe-close-gnome-wayland-nested-35.png b/tests/references/pixel-wipe-close-gnome-wayland-nested-35.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wipe-close-gnome-wayland-nested-36.png b/tests/references/pixel-wipe-close-gnome-wayland-nested-36.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wipe-close-gnome-xsession-32.png b/tests/references/pixel-wipe-close-gnome-xsession-32.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wipe-close-gnome-xsession-33.png b/tests/references/pixel-wipe-close-gnome-xsession-33.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wipe-close-gnome-xsession-34.png b/tests/references/pixel-wipe-close-gnome-xsession-34.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wipe-close-gnome-xsession-35.png b/tests/references/pixel-wipe-close-gnome-xsession-35.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wipe-close-gnome-xsession-36.png b/tests/references/pixel-wipe-close-gnome-xsession-36.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wipe-open-gnome-wayland-nested-32.png b/tests/references/pixel-wipe-open-gnome-wayland-nested-32.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wipe-open-gnome-wayland-nested-33.png b/tests/references/pixel-wipe-open-gnome-wayland-nested-33.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wipe-open-gnome-wayland-nested-34.png b/tests/references/pixel-wipe-open-gnome-wayland-nested-34.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wipe-open-gnome-wayland-nested-35.png b/tests/references/pixel-wipe-open-gnome-wayland-nested-35.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wipe-open-gnome-wayland-nested-36.png b/tests/references/pixel-wipe-open-gnome-wayland-nested-36.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wipe-open-gnome-xsession-32.png b/tests/references/pixel-wipe-open-gnome-xsession-32.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wipe-open-gnome-xsession-33.png b/tests/references/pixel-wipe-open-gnome-xsession-33.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wipe-open-gnome-xsession-34.png b/tests/references/pixel-wipe-open-gnome-xsession-34.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wipe-open-gnome-xsession-35.png b/tests/references/pixel-wipe-open-gnome-xsession-35.png old mode 100644 new mode 100755 diff --git a/tests/references/pixel-wipe-open-gnome-xsession-36.png b/tests/references/pixel-wipe-open-gnome-xsession-36.png old mode 100644 new mode 100755 diff --git a/tests/references/pixelate-close-gnome-wayland-nested-32.png b/tests/references/pixelate-close-gnome-wayland-nested-32.png index 034ccf2..975b40a 100755 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 index 80c3859..17341d0 100755 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 index d69f762..e3eec03 100755 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 index 6998a1b..fa0217d 100755 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 index 6998a1b..fa0217d 100755 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 index 512a1e6..7248158 100755 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 index 46e22b7..5347fd8 100755 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 index 69b2720..2cb6f33 100755 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 index e186432..62f611e 100755 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 index e186432..62f611e 100755 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 index 034ccf2..975b40a 100755 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 index 80c3859..17341d0 100755 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 index d69f762..e3eec03 100755 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 index 6998a1b..fa0217d 100755 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 index 6998a1b..fa0217d 100755 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 index 512a1e6..7248158 100755 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 index 46e22b7..5347fd8 100755 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 index 69b2720..2cb6f33 100755 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 index e186432..62f611e 100755 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 index e186432..62f611e 100755 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/portal-close-gnome-wayland-nested-32.png b/tests/references/portal-close-gnome-wayland-nested-32.png new file mode 100755 index 0000000..2d238bf Binary files /dev/null and b/tests/references/portal-close-gnome-wayland-nested-32.png differ diff --git a/tests/references/portal-close-gnome-wayland-nested-33.png b/tests/references/portal-close-gnome-wayland-nested-33.png new file mode 100755 index 0000000..bb5addd Binary files /dev/null and b/tests/references/portal-close-gnome-wayland-nested-33.png differ diff --git a/tests/references/portal-close-gnome-wayland-nested-34.png b/tests/references/portal-close-gnome-wayland-nested-34.png new file mode 100755 index 0000000..ee642d5 Binary files /dev/null and b/tests/references/portal-close-gnome-wayland-nested-34.png differ diff --git a/tests/references/portal-close-gnome-wayland-nested-35.png b/tests/references/portal-close-gnome-wayland-nested-35.png new file mode 100755 index 0000000..5954531 Binary files /dev/null and b/tests/references/portal-close-gnome-wayland-nested-35.png differ diff --git a/tests/references/portal-close-gnome-wayland-nested-36.png b/tests/references/portal-close-gnome-wayland-nested-36.png new file mode 100755 index 0000000..5954531 Binary files /dev/null and b/tests/references/portal-close-gnome-wayland-nested-36.png differ diff --git a/tests/references/portal-close-gnome-xsession-32.png b/tests/references/portal-close-gnome-xsession-32.png new file mode 100755 index 0000000..714a347 Binary files /dev/null and b/tests/references/portal-close-gnome-xsession-32.png differ diff --git a/tests/references/portal-close-gnome-xsession-33.png b/tests/references/portal-close-gnome-xsession-33.png new file mode 100755 index 0000000..bc0f9f9 Binary files /dev/null and b/tests/references/portal-close-gnome-xsession-33.png differ diff --git a/tests/references/portal-close-gnome-xsession-34.png b/tests/references/portal-close-gnome-xsession-34.png new file mode 100755 index 0000000..2d05df6 Binary files /dev/null and b/tests/references/portal-close-gnome-xsession-34.png differ diff --git a/tests/references/portal-close-gnome-xsession-35.png b/tests/references/portal-close-gnome-xsession-35.png new file mode 100755 index 0000000..f6a34a5 Binary files /dev/null and b/tests/references/portal-close-gnome-xsession-35.png differ diff --git a/tests/references/portal-close-gnome-xsession-36.png b/tests/references/portal-close-gnome-xsession-36.png new file mode 100755 index 0000000..f6a34a5 Binary files /dev/null and b/tests/references/portal-close-gnome-xsession-36.png differ diff --git a/tests/references/portal-open-gnome-wayland-nested-32.png b/tests/references/portal-open-gnome-wayland-nested-32.png new file mode 100755 index 0000000..2d238bf Binary files /dev/null and b/tests/references/portal-open-gnome-wayland-nested-32.png differ diff --git a/tests/references/portal-open-gnome-wayland-nested-33.png b/tests/references/portal-open-gnome-wayland-nested-33.png new file mode 100755 index 0000000..bb5addd Binary files /dev/null and b/tests/references/portal-open-gnome-wayland-nested-33.png differ diff --git a/tests/references/portal-open-gnome-wayland-nested-34.png b/tests/references/portal-open-gnome-wayland-nested-34.png new file mode 100755 index 0000000..ee642d5 Binary files /dev/null and b/tests/references/portal-open-gnome-wayland-nested-34.png differ diff --git a/tests/references/portal-open-gnome-wayland-nested-35.png b/tests/references/portal-open-gnome-wayland-nested-35.png new file mode 100755 index 0000000..5954531 Binary files /dev/null and b/tests/references/portal-open-gnome-wayland-nested-35.png differ diff --git a/tests/references/portal-open-gnome-wayland-nested-36.png b/tests/references/portal-open-gnome-wayland-nested-36.png new file mode 100755 index 0000000..5954531 Binary files /dev/null and b/tests/references/portal-open-gnome-wayland-nested-36.png differ diff --git a/tests/references/portal-open-gnome-xsession-32.png b/tests/references/portal-open-gnome-xsession-32.png new file mode 100755 index 0000000..714a347 Binary files /dev/null and b/tests/references/portal-open-gnome-xsession-32.png differ diff --git a/tests/references/portal-open-gnome-xsession-33.png b/tests/references/portal-open-gnome-xsession-33.png new file mode 100755 index 0000000..bc0f9f9 Binary files /dev/null and b/tests/references/portal-open-gnome-xsession-33.png differ diff --git a/tests/references/portal-open-gnome-xsession-34.png b/tests/references/portal-open-gnome-xsession-34.png new file mode 100755 index 0000000..2d05df6 Binary files /dev/null and b/tests/references/portal-open-gnome-xsession-34.png differ diff --git a/tests/references/portal-open-gnome-xsession-35.png b/tests/references/portal-open-gnome-xsession-35.png new file mode 100755 index 0000000..f6a34a5 Binary files /dev/null and b/tests/references/portal-open-gnome-xsession-35.png differ diff --git a/tests/references/portal-open-gnome-xsession-36.png b/tests/references/portal-open-gnome-xsession-36.png new file mode 100755 index 0000000..f6a34a5 Binary files /dev/null and b/tests/references/portal-open-gnome-xsession-36.png differ diff --git a/tests/references/preferences-gnome-xsession-36.png b/tests/references/preferences-gnome-xsession-36.png index 6191d22..77522f3 100755 Binary files a/tests/references/preferences-gnome-xsession-36.png and b/tests/references/preferences-gnome-xsession-36.png differ diff --git a/tests/run-test.sh b/tests/run-test.sh index e379b62..adffae4 100755 --- a/tests/run-test.sh +++ b/tests/run-test.sh @@ -216,6 +216,7 @@ test_effect "incinerate" test_effect "pixelate" test_effect "pixel-wheel" test_effect "pixel-wipe" +test_effect "portal" test_effect "tv" test_effect "wisps"