diff --git a/docs/changelog.md b/docs/changelog.md index c97f699..791654e 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -7,6 +7,7 @@ #### Enhancements * The standard uniforms of all shaders have been updated: The window size is now passed as a `vec2` and there is a new `bool uForOpening` which is set to `true` if a window-open animation is ongoing, to `false` otherwise. +* Refactored how the size and opacity transitions of the window actors are set up. Effects can now only specify a desired actor scale which will not change during the animation. All dynamic scaling and fading must be implemented in the shaders now. #### Bug Fixes diff --git a/docs/how-to-create-new-effects.md b/docs/how-to-create-new-effects.md index c70a883..8bce434 100644 --- a/docs/how-to-create-new-effects.md +++ b/docs/how-to-create-new-effects.md @@ -175,22 +175,11 @@ var SimpleFade = class SimpleFade { return shader; } - // The tweakTransition() is called from extension.js to tweak a window's open / close - // transitions - usually windows are faded in / out and scaled up / down by GNOME Shell. - // The parameter 'forOpening' is set to true if this is called for a window-open - // transition, for a window-close transition it is set to false. The modes can be set to - // any value from here: https://gjs-docs.gnome.org/clutter8~8_api/clutter.animationmode. - // The only required property is 'opacity', even if it transitions from 1.0 to 1.0. The - // current value of the opacity transition is passed as uProgress to the shader. - // Tweaking the actor's scale during the transition only works properly for GNOME 3.38+. - - // For this effect, windows should neither be scaled nor faded. - static tweakTransition(actor, settings, forOpening) { - return { - 'opacity': {from: 255, to: 255, mode: 4}, - 'scale-x': {from: 1.0, to: 1.0, mode: 4}, - 'scale-y': {from: 1.0, to: 1.0, mode: 4} - }; + // 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+. + static getActorScale(settings) { + return {x: 1.0, y: 1.0}; } } diff --git a/extension.js b/extension.js index 19dbac7..c375799 100644 --- a/extension.js +++ b/extension.js @@ -416,18 +416,24 @@ class Extension { const testMode = this._settings.get_boolean('test-mode'); // The following is used to tweak the ongoing transitions of a window actor. Usually - // windows are faded in / out scaled up / down slightly by GNOME Shell. Here, we allow - // modifications to this behavior by the effects. - const config = effect.tweakTransition(actor, this._settings, forOpening); + // 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); + + // To make things deterministic during testing, we set the effect duration to 5 + // seconds. const duration = testMode ? 5000 : this._settings.get_int(effect.getNick() + '-animation-time'); // All animations are relative to the window's center. actor.set_pivot_point(0.5, 0.5); - // This goes through all properties given in the config object and tweaks any ongoing - // transitions accordingly. If there is no ongoing transition for a given property, a - // new one is set up. + + // We tweak the opacity and scale of the actor. If there is no ongoing transition for + // a property, a new one is set up. + const config = {'opacity': 255, 'scale-x': actorScale.x, 'scale-y': actorScale.y}; + for (const property in config) { let transition = actor.get_transition(property); @@ -450,11 +456,10 @@ class Extension { // Tweak the transition according to the config object. For some reason, there are // rare cases, where no transition is set up. This happens from time to time... if (transition) { - const middle = (config[property].to + config[property].from) / 2; transition.set_duration(duration); - transition.set_to(testMode ? middle : config[property].to); - transition.set_from(testMode ? middle : config[property].from); - transition.set_progress_mode(config[property].mode); + transition.set_to(config[property]); + transition.set_from(config[property]); + transition.set_progress_mode(Clutter.AnimationMode.LINEAR); } } diff --git a/resources/shaders/common/easing.glsl b/resources/shaders/common/easing.glsl new file mode 100644 index 0000000..87c7a17 --- /dev/null +++ b/resources/shaders/common/easing.glsl @@ -0,0 +1,5 @@ +// This provides some basic easing function. More can be added if required! +// Taken from here: +// https://gitlab.gnome.org/GNOME/mutter/-/blob/main/clutter/clutter/clutter-easing.c + +float easeOutQuad(float x) { return -1.0 * x * (x - 2); } \ No newline at end of file diff --git a/resources/shaders/energize-a-declarations.glsl b/resources/shaders/energize-a-declarations.glsl index 121d88f..376fbd1 100644 --- a/resources/shaders/energize-a-declarations.glsl +++ b/resources/shaders/energize-a-declarations.glsl @@ -4,6 +4,7 @@ #include "common/uniforms.glsl" #include "common/noise.glsl" #include "common/edgeMask.glsl" +#include "common/easing.glsl" uniform vec3 uColor; uniform float uScale; @@ -16,11 +17,11 @@ const float EDGE_FADE_WIDTH = 50; // This method returns two values: // result.x: A mask for the particles. // result.y: The opacity of the fading window. -vec2 getMasks() { - float fadeInProgress = clamp(uProgress / FADE_IN_TIME, 0, 1); - float fadeOutProgress = clamp((uProgress - FADE_IN_TIME) / FADE_OUT_TIME, 0, 1); +vec2 getMasks(float progress) { + float fadeInProgress = clamp(progress / FADE_IN_TIME, 0, 1); + float fadeOutProgress = clamp((progress - FADE_IN_TIME) / FADE_OUT_TIME, 0, 1); float heartProgress = - clamp((uProgress - (1.0 - HEART_FADE_TIME)) / HEART_FADE_TIME, 0, 1); + clamp((progress - (1.0 - HEART_FADE_TIME)) / HEART_FADE_TIME, 0, 1); // Compute mask for the "atom" particles. float dist = length(cogl_tex_coord_in[0].st - 0.5) * 4.0; diff --git a/resources/shaders/energize-a.glsl b/resources/shaders/energize-a.glsl index 842b41d..f72f2d4 100644 --- a/resources/shaders/energize-a.glsl +++ b/resources/shaders/energize-a.glsl @@ -1,4 +1,6 @@ -vec2 masks = getMasks(); +float progress = easeOutQuad(uProgress); + +vec2 masks = getMasks(progress); vec4 windowColor = texture2D(uTexture, cogl_tex_coord_in[0].st); // Shell.GLSLEffect uses straight alpha. So we have to convert from premultiplied. @@ -10,7 +12,7 @@ if (windowColor.a > 0) { cogl_color_out.rgb = mix(uColor, windowColor.rgb, 0.2 * masks.y + 0.8); cogl_color_out.a = windowColor.a * masks.y; -vec2 scaledUV = (cogl_tex_coord_in[0].st - 0.5) * (1.0 + 0.1 * uProgress); +vec2 scaledUV = (cogl_tex_coord_in[0].st - 0.5) * (1.0 + 0.1 * progress); scaledUV /= uScale; // Add molecule particles. diff --git a/resources/shaders/energize-b-declarations.glsl b/resources/shaders/energize-b-declarations.glsl index 8079be0..bf10daa 100644 --- a/resources/shaders/energize-b-declarations.glsl +++ b/resources/shaders/energize-b-declarations.glsl @@ -4,6 +4,7 @@ #include "common/uniforms.glsl" #include "common/noise.glsl" #include "common/edgeMask.glsl" +#include "common/easing.glsl" uniform vec3 uColor; uniform float uScale; @@ -18,10 +19,10 @@ const float EDGE_FADE = 50; // result.y: A mask for the streaks which follow the shower particles. // result.z: A mask for the final "atom" particles. // result.w: The opacity of the fading window. -vec4 getMasks() { - float showerProgress = uProgress / SHOWER_TIME; - float streakProgress = clamp((uProgress - SHOWER_TIME) / STREAK_TIME, 0, 1); - float fadeProgress = clamp((uProgress - SHOWER_TIME) / (1.0 - SHOWER_TIME), 0, 1); +vec4 getMasks(float progress) { + float showerProgress = progress / SHOWER_TIME; + float streakProgress = clamp((progress - SHOWER_TIME) / STREAK_TIME, 0, 1); + float fadeProgress = clamp((progress - SHOWER_TIME) / (1.0 - SHOWER_TIME), 0, 1); // Gradient from top to bottom. float t = cogl_tex_coord_in[0].t; diff --git a/resources/shaders/energize-b.glsl b/resources/shaders/energize-b.glsl index f6549b3..e7ecd83 100644 --- a/resources/shaders/energize-b.glsl +++ b/resources/shaders/energize-b.glsl @@ -1,4 +1,6 @@ -vec4 masks = getMasks(); +float progress = easeOutQuad(uProgress); + +vec4 masks = getMasks(progress); vec4 windowColor = texture2D(uTexture, cogl_tex_coord_in[0].st); // Shell.GLSLEffect uses straight alpha. So we have to convert from premultiplied. @@ -11,21 +13,21 @@ cogl_color_out.rgb = mix(uColor, windowColor.rgb, 0.5 * masks.w + 0.5); cogl_color_out.a = windowColor.a * masks.w; // Add leading shower particles. -vec2 showerUV = cogl_tex_coord_in[0].st + vec2(0, -0.7 * uProgress / SHOWER_TIME); +vec2 showerUV = cogl_tex_coord_in[0].st + vec2(0, -0.7 * progress / SHOWER_TIME); showerUV *= 0.02 * uSize / uScale; float shower = pow(simplex2D(showerUV), 10.0); cogl_color_out.rgb += uColor * shower * masks.x; cogl_color_out.a += shower * masks.x; // Add trailing streak lines. -vec2 streakUV = cogl_tex_coord_in[0].st + vec2(0, -uProgress / SHOWER_TIME); +vec2 streakUV = cogl_tex_coord_in[0].st + vec2(0, -progress / SHOWER_TIME); streakUV *= vec2(0.05 * uSize.x, 0.001 * uSize.y) / uScale; float streaks = simplex2DFractal(streakUV) * 0.5; cogl_color_out.rgb += uColor * streaks * masks.y; cogl_color_out.a += streaks * masks.y; // Add glimmering atoms. -vec2 atomUV = cogl_tex_coord_in[0].st + vec2(0, -0.025 * uProgress / SHOWER_TIME); +vec2 atomUV = cogl_tex_coord_in[0].st + vec2(0, -0.025 * progress / SHOWER_TIME); atomUV *= 0.2 * uSize / uScale; float atoms = pow((simplex3D(vec3(atomUV, uTime))), 5.0); cogl_color_out.rgb += uColor * atoms * masks.z; diff --git a/resources/shaders/fire-declarations.glsl b/resources/shaders/fire-declarations.glsl index 0f137be..8bdd326 100644 --- a/resources/shaders/fire-declarations.glsl +++ b/resources/shaders/fire-declarations.glsl @@ -5,6 +5,7 @@ #include "common/compositing.glsl" #include "common/edgeMask.glsl" #include "common/noise.glsl" +#include "common/easing.glsl" uniform bool u3DNoise; uniform float uScale; @@ -50,8 +51,10 @@ vec4 getFireColor(float v) { // fadeWidth: The relative size of the window-hiding gradient in [0..1]. // edgeFadeWidth: The pixel width of the effect fading range at the edges of the window. vec2 effectMask(float hideTime, float fadeWidth, float edgeFadeWidth) { - float burnProgress = clamp(uProgress / hideTime, 0, 1); - float afterBurnProgress = clamp((uProgress - hideTime) / (1 - hideTime), 0, 1); + float progress = easeOutQuad(uProgress); + + float burnProgress = clamp(progress / hideTime, 0, 1); + float afterBurnProgress = clamp((progress - hideTime) / (1 - hideTime), 0, 1); // Gradient from top to bottom. float t = cogl_tex_coord_in[0].t * (1 - fadeWidth); @@ -63,7 +66,7 @@ vec2 effectMask(float hideTime, float fadeWidth, float edgeFadeWidth) { float effectMask = clamp(t * (1 - windowMask) / burnProgress, 0, 1); // Fade-out when the window burned down. - if (uProgress > hideTime) { + if (progress > hideTime) { float fade = sqrt(1 - afterBurnProgress * afterBurnProgress); effectMask *= mix(1, 1 - t, afterBurnProgress) * fade; } diff --git a/resources/shaders/trex-declarations.glsl b/resources/shaders/trex-declarations.glsl index df4bcfa..58f046f 100644 --- a/resources/shaders/trex-declarations.glsl +++ b/resources/shaders/trex-declarations.glsl @@ -4,6 +4,7 @@ #include "common/uniforms.glsl" #include "common/noise.glsl" #include "common/compositing.glsl" +#include "common/easing.glsl" // See assets/README.md for how this texture was created. uniform sampler2D uClawTexture; diff --git a/resources/shaders/trex.glsl b/resources/shaders/trex.glsl index 0f7426d..52b79dd 100644 --- a/resources/shaders/trex.glsl +++ b/resources/shaders/trex.glsl @@ -1,4 +1,4 @@ -float progress = uForOpening ? 1.0 - uProgress : uProgress; +float progress = uForOpening ? 1.0 - easeOutQuad(uProgress) : easeOutQuad(uProgress); // Warp the texture coordinates to create a blow-up effect. vec2 coords = cogl_tex_coord_in[0].st * 2.0 - 1.0; @@ -6,6 +6,10 @@ float dist = length(coords); coords = (coords / dist * pow(dist, 1.0 + uWarpIntensity)) * 0.5 + 0.5; coords = mix(cogl_tex_coord_in[0].st, coords, progress); +// Scale down the window according to the warp. +float scale = 0.5 * uWarpIntensity * (1.0 - progress); +coords = coords * (scale + 1.0) - scale * 0.5; + // Accumulate several random scratches. The color in the scratch map refers to the // relative time when the respective part will become invisible. Therefore we can // add a value to make the scratch appear later. diff --git a/resources/shaders/tv-declarations.glsl b/resources/shaders/tv-declarations.glsl index 5f5dec8..828c2ed 100644 --- a/resources/shaders/tv-declarations.glsl +++ b/resources/shaders/tv-declarations.glsl @@ -2,6 +2,7 @@ // "common" directory. Also, the files in the "common" directory are not allowed to // include any further files. #include "common/uniforms.glsl" +#include "common/easing.glsl" uniform vec3 uColor; @@ -9,4 +10,5 @@ const float BLUR_WIDTH = 0.01; // Width of the gradients. const float TB_TIME = 0.7; // Relative time for the top/bottom animation. const float LR_TIME = 0.4; // Relative time for the left/right animation. const float LR_DELAY = 0.6; // Delay after which the left/right animation starts. -const float FF_TIME = 0.1; // Relative time for the final fade to transparency. \ No newline at end of file +const float FF_TIME = 0.1; // Relative time for the final fade to transparency. +const float SCALING = 0.5; // Additional vertical scaling of the window. \ No newline at end of file diff --git a/resources/shaders/tv.glsl b/resources/shaders/tv.glsl index b73f731..387c2dd 100644 --- a/resources/shaders/tv.glsl +++ b/resources/shaders/tv.glsl @@ -1,4 +1,9 @@ -float progress = uForOpening ? 1.0 - uProgress : uProgress; +float progress = uForOpening ? 1.0 - easeOutQuad(uProgress) : easeOutQuad(uProgress); + +// Scale down the window vertically. +float scale = 1.0 / mix(1.0, SCALING, progress) - 1.0; +vec2 coords = cogl_tex_coord_in[0].st; +coords.y = coords.y * (scale + 1.0) - scale * 0.5; // All of these are in [0..1] during the different stages of the animation. // tb refers to the top-bottom animation. @@ -9,11 +14,11 @@ float lrProgress = smoothstep(0, 1, clamp((progress - LR_DELAY) / LR_TIME, 0, 1) float ffProgress = smoothstep(0, 1, clamp((progress - 1.0 + FF_TIME) / FF_TIME, 0, 1)); // This is a top-center-bottom gradient in [0..1..0] -float tb = cogl_tex_coord_in[0].t * 2; +float tb = coords.y * 2; tb = tb < 1 ? tb : 2 - tb; // This is a left-center-right gradient in [0..1..0] -float lr = cogl_tex_coord_in[0].s * 2; +float lr = coords.x * 2; lr = lr < 1 ? lr : 2 - lr; // Combine the progress values with the gradients to create the alpha masks. @@ -24,7 +29,7 @@ float ffMask = 1 - smoothstep(0, 1, ffProgress); // Assemble the final alpha value. float mask = tbMask * lrMask * ffMask; -cogl_color_out = texture2D(uTexture, cogl_tex_coord_in[0].st); +cogl_color_out = texture2D(uTexture, coords); // Shell.GLSLEffect uses straight alpha. So we have to convert from premultiplied. if (cogl_color_out.a > 0) { diff --git a/resources/shaders/wisps-declarations.glsl b/resources/shaders/wisps-declarations.glsl index 8630a72..739fb4e 100644 --- a/resources/shaders/wisps-declarations.glsl +++ b/resources/shaders/wisps-declarations.glsl @@ -5,6 +5,7 @@ #include "common/noise.glsl" #include "common/edgeMask.glsl" #include "common/compositing.glsl" +#include "common/easing.glsl" uniform vec2 uSeed; uniform vec3 uColor; @@ -16,6 +17,7 @@ const float WISPS_SPACING = 40 + WISPS_RADIUS; const int WISPS_LAYERS = 8; const float WISPS_IN_TIME = 0.5; const float WINDOW_OUT_TIME = 1.0; +const float SCALING = 0.9; // Returns a grid of randomly moving points. Each grid cell contains one point which // moves on an ellipse. diff --git a/resources/shaders/wisps.glsl b/resources/shaders/wisps.glsl index 038ff67..39092eb 100644 --- a/resources/shaders/wisps.glsl +++ b/resources/shaders/wisps.glsl @@ -1,7 +1,11 @@ -float progress = uForOpening ? 1.0 - uProgress : uProgress; +float progress = uForOpening ? 1.0 - easeOutQuad(uProgress) : easeOutQuad(uProgress); + +// Scale down the window slightly. +float scale = 1.0 / mix(1.0, SCALING, progress) - 1.0; +vec2 coords = cogl_tex_coord_in[0].st * (scale + 1.0) - scale * 0.5; // Get the color of the window. -cogl_color_out = texture2D(uTexture, cogl_tex_coord_in[0].st); +cogl_color_out = texture2D(uTexture, coords); // Shell.GLSLEffect uses straight alpha. So we have to convert from premultiplied. if (cogl_color_out.a > 0) { diff --git a/src/Apparition.js b/src/Apparition.js index bbd1938..f2f3ad5 100644 --- a/src/Apparition.js +++ b/src/Apparition.js @@ -102,23 +102,11 @@ var Apparition = class Apparition { return shader; } - // The tweakTransition() is called from extension.js to tweak a window's open / close - // transitions - usually windows are faded in / out and scaled up / down by GNOME Shell. - // The parameter 'forOpening' is set to true if this is called for a window-open - // transition, for a window-close transition it is set to false. The modes can be set to - // any value from here: https://gjs-docs.gnome.org/clutter8~8_api/clutter.animationmode. - // The only required property is 'opacity', even if it transitions from 1.0 to 1.0. The - // current value of the opacity transition is passed as uProgress to the shader. - // Tweaking the actor's scale during the transition only works properly for GNOME 3.38+. - - // For this effect, windows are set to twice their original size, so that we have - // some space to draw the animation. We also set the animation mode to "Linear". - static tweakTransition(actor, settings, forOpening) { - return { - 'opacity': {from: 255, to: 255, mode: 1}, - 'scale-x': {from: 2.0, to: 2.0, mode: 1}, - 'scale-y': {from: 2.0, to: 2.0, mode: 1} - }; + // 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+. + static getActorScale(settings) { + return {x: 2.0, y: 2.0}; } // This is called from extension.js if the extension is disabled. This should free all diff --git a/src/BrokenGlass.js b/src/BrokenGlass.js index 1cd42fb..eb27248 100644 --- a/src/BrokenGlass.js +++ b/src/BrokenGlass.js @@ -105,23 +105,11 @@ var BrokenGlass = class BrokenGlass { return shader; } - // The tweakTransition() is called from extension.js to tweak a window's open / close - // transitions - usually windows are faded in / out and scaled up / down by GNOME Shell. - // The parameter 'forOpening' is set to true if this is called for a window-open - // transition, for a window-close transition it is set to false. The modes can be set to - // any value from here: https://gjs-docs.gnome.org/clutter8~8_api/clutter.animationmode. - // The only required property is 'opacity', even if it transitions from 1.0 to 1.0. The - // current value of the opacity transition is passed as uProgress to the shader. - // Tweaking the actor's scale during the transition only works properly for GNOME 3.38+. - - // For this effect, windows are set to twice their original size, so that - // we have some space to draw the shards. We also set the animation mode to "Linear". - static tweakTransition(actor, settings, forOpening) { - return { - 'opacity': {from: 255, to: 255, mode: 1}, - 'scale-x': {from: 2.0, to: 2.0, mode: 1}, - 'scale-y': {from: 2.0, to: 2.0, mode: 1} - }; + // 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+. + static getActorScale(settings) { + return {x: 2.0, y: 2.0}; } // This is called from extension.js if the extension is disabled. This should free all diff --git a/src/EnergizeA.js b/src/EnergizeA.js index fdd9547..2eb52b4 100644 --- a/src/EnergizeA.js +++ b/src/EnergizeA.js @@ -97,22 +97,11 @@ var EnergizeA = class EnergizeA { return shader; } - // The tweakTransition() is called from extension.js to tweak a window's open / close - // transitions - usually windows are faded in / out and scaled up / down by GNOME Shell. - // The parameter 'forOpening' is set to true if this is called for a window-open - // transition, for a window-close transition it is set to false. The modes can be set to - // any value from here: https://gjs-docs.gnome.org/clutter8~8_api/clutter.animationmode. - // The only required property is 'opacity', even if it transitions from 1.0 to 1.0. The - // current value of the opacity transition is passed as uProgress to the shader. - // Tweaking the actor's scale during the transition only works properly for GNOME 3.38+. - - // For this effect, windows should neither be scaled nor faded. - static tweakTransition(actor, settings, forOpening) { - return { - 'opacity': {from: 255, to: 255, mode: 3}, - 'scale-x': {from: 1.0, to: 1.0, mode: 3}, - 'scale-y': {from: 1.0, to: 1.0, mode: 3} - }; + // 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+. + static getActorScale(settings) { + return {x: 1.0, y: 1.0}; } // This is called from extension.js if the extension is disabled. This should free all diff --git a/src/EnergizeB.js b/src/EnergizeB.js index 4319a54..00dadff 100644 --- a/src/EnergizeB.js +++ b/src/EnergizeB.js @@ -97,22 +97,11 @@ var EnergizeB = class EnergizeB { return shader; } - // The tweakTransition() is called from extension.js to tweak a window's open / close - // transitions - usually windows are faded in / out and scaled up / down by GNOME Shell. - // The parameter 'forOpening' is set to true if this is called for a window-open - // transition, for a window-close transition it is set to false. The modes can be set to - // any value from here: https://gjs-docs.gnome.org/clutter8~8_api/clutter.animationmode. - // The only required property is 'opacity', even if it transitions from 1.0 to 1.0. The - // current value of the opacity transition is passed as uProgress to the shader. - // Tweaking the actor's scale during the transition only works properly for GNOME 3.38+. - - // For this effect, windows should neither be scaled nor faded. - static tweakTransition(actor, settings, forOpening) { - return { - 'opacity': {from: 255, to: 255, mode: 3}, - 'scale-x': {from: 1.0, to: 1.0, mode: 3}, - 'scale-y': {from: 1.0, to: 1.0, mode: 3} - }; + // 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+. + static getActorScale(settings) { + return {x: 1.0, y: 1.0}; } // This is called from extension.js if the extension is disabled. This should free all diff --git a/src/Fire.js b/src/Fire.js index 2b951f8..e97821f 100644 --- a/src/Fire.js +++ b/src/Fire.js @@ -119,22 +119,11 @@ var Fire = class Fire { return shader; } - // The tweakTransition() is called from extension.js to tweak a window's open / close - // transitions - usually windows are faded in / out and scaled up / down by GNOME Shell. - // The parameter 'forOpening' is set to true if this is called for a window-open - // transition, for a window-close transition it is set to false. The modes can be set to - // any value from here: https://gjs-docs.gnome.org/clutter8~8_api/clutter.animationmode. - // The only required property is 'opacity', even if it transitions from 1.0 to 1.0. The - // current value of the opacity transition is passed as uProgress to the shader. - // Tweaking the actor's scale during the transition only works properly for GNOME 3.38+. - - // For this effect, windows should neither be scaled nor faded. - static tweakTransition(actor, settings, forOpening) { - return { - 'opacity': {from: 255, to: 255, mode: 3}, - 'scale-x': {from: 1.0, to: 1.0, mode: 3}, - 'scale-y': {from: 1.0, to: 1.0, mode: 3} - }; + // 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+. + static getActorScale(settings) { + return {x: 1.0, y: 1.0}; } // This is called from extension.js if the extension is disabled. This should free all diff --git a/src/Hexagon.js b/src/Hexagon.js index 8971219..5814d9c 100644 --- a/src/Hexagon.js +++ b/src/Hexagon.js @@ -101,22 +101,11 @@ var Hexagon = class Hexagon { return shader; } - // The tweakTransition() is called from extension.js to tweak a window's open / close - // transitions - usually windows are faded in / out and scaled up / down by GNOME Shell. - // The parameter 'forOpening' is set to true if this is called for a window-open - // transition, for a window-close transition it is set to false. The modes can be set to - // any value from here: https://gjs-docs.gnome.org/clutter8~8_api/clutter.animationmode. - // The only required property is 'opacity', even if it transitions from 1.0 to 1.0. The - // current value of the opacity transition is passed as uProgress to the shader. - // Tweaking the actor's scale during the transition only works properly for GNOME 3.38+. - - // For this effect, windows should neither be scaled nor faded. - static tweakTransition(actor, settings, forOpening) { - return { - 'opacity': {from: 255, to: 255, mode: 1}, - 'scale-x': {from: 1.0, to: 1.0, mode: 1}, - 'scale-y': {from: 1.0, to: 1.0, mode: 1} - }; + // 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+. + static getActorScale(settings) { + return {x: 1.0, y: 1.0}; } // This is called from extension.js if the extension is disabled. This should free all diff --git a/src/Matrix.js b/src/Matrix.js index f0b0c04..d281873 100644 --- a/src/Matrix.js +++ b/src/Matrix.js @@ -107,24 +107,11 @@ var Matrix = class Matrix { return shader; } - // The tweakTransition() is called from extension.js to tweak a window's open / close - // transitions - usually windows are faded in / out and scaled up / down by GNOME Shell. - // The parameter 'forOpening' is set to true if this is called for a window-open - // transition, for a window-close transition it is set to false. The modes can be set to - // any value from here: https://gjs-docs.gnome.org/clutter8~8_api/clutter.animationmode. - // The only required property is 'opacity', even if it transitions from 1.0 to 1.0. The - // current value of the opacity transition is passed as uProgress to the shader. - // Tweaking the actor's scale during the transition only works properly for GNOME 3.38+. - - // For this effect, windows should not be faded but scaled vertically to allow for some - // overshooting. - static tweakTransition(actor, settings, forOpening) { - const yScale = 1.0 + settings.get_double('matrix-overshoot'); - return { - 'opacity': {from: 255, to: 255, mode: 1}, - 'scale-x': {from: 1.0, to: 1.0, mode: 1}, - 'scale-y': {from: yScale, to: yScale, mode: 1} - }; + // 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+. + static getActorScale(settings) { + return {x: 1.0, y: 1.0 + settings.get_double('matrix-overshoot')}; } // This is called from extension.js if the extension is disabled. This should free all diff --git a/src/SnapOfDisintegration.js b/src/SnapOfDisintegration.js index 1dcdf54..e604512 100644 --- a/src/SnapOfDisintegration.js +++ b/src/SnapOfDisintegration.js @@ -106,23 +106,11 @@ var SnapOfDisintegration = class SnapOfDisintegration { return shader; } - // The tweakTransition() is called from extension.js to tweak a window's open / close - // transitions - usually windows are faded in / out and scaled up / down by GNOME Shell. - // The parameter 'forOpening' is set to true if this is called for a window-open - // transition, for a window-close transition it is set to false. The modes can be set to - // any value from here: https://gjs-docs.gnome.org/clutter8~8_api/clutter.animationmode. - // The only required property is 'opacity', even if it transitions from 1.0 to 1.0. The - // current value of the opacity transition is passed as uProgress to the shader. - // Tweaking the actor's scale during the transition only works properly for GNOME 3.38+. - - // For this effect, windows are set to 1.2 times their original size, so that we have - // some space to draw the dust particles. We also set the animation mode to "Linear". - static tweakTransition(actor, settings, forOpening) { - return { - 'opacity': {from: 255, to: 255, mode: 1}, - 'scale-x': {from: 1.2, to: 1.2, mode: 1}, - 'scale-y': {from: 1.2, to: 1.2, mode: 1} - }; + // 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+. + static getActorScale(settings) { + return {x: 1.2, y: 1.2}; } // This is called from extension.js if the extension is disabled. This should free all diff --git a/src/TRexAttack.js b/src/TRexAttack.js index e2caa63..4880395 100644 --- a/src/TRexAttack.js +++ b/src/TRexAttack.js @@ -103,23 +103,13 @@ var TRexAttack = class TRexAttack { return shader; } - // The tweakTransition() is called from extension.js to tweak a window's open / close - // transitions - usually windows are faded in / out and scaled up / down by GNOME Shell. - // The parameter 'forOpening' is set to true if this is called for a window-open - // transition, for a window-close transition it is set to false. The modes can be set to - // any value from here: https://gjs-docs.gnome.org/clutter8~8_api/clutter.animationmode. - // The only required property is 'opacity', even if it transitions from 1.0 to 1.0. The - // current value of the opacity transition is passed as uProgress to the shader. - // Tweaking the actor's scale during the transition only works properly for GNOME 3.38+. - // For this effect, we slightly increase the window's scale as part of the warp effect. - static tweakTransition(actor, settings, forOpening) { - const warp = 1.0 + 0.5 * settings.get_double('claw-scratch-warp'); - return { - 'opacity': {from: 255, to: 255, mode: 3}, - 'scale-x': {from: forOpening ? warp : 1.0, to: forOpening ? 1.0 : warp, mode: 3}, - 'scale-y': {from: forOpening ? warp : 1.0, to: forOpening ? 1.0 : warp, mode: 3} - }; + // 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+. + static getActorScale(settings) { + const scale = 1.0 + 0.5 * settings.get_double('claw-scratch-warp'); + return {x: scale, y: scale}; } // This is called from extension.js if the extension is disabled. This should free all diff --git a/src/TVEffect.js b/src/TVEffect.js index 4e3ada6..014ffe7 100644 --- a/src/TVEffect.js +++ b/src/TVEffect.js @@ -98,22 +98,11 @@ var TVEffect = class TVEffect { return shader; } - // The tweakTransition() is called from extension.js to tweak a window's open / close - // transitions - usually windows are faded in / out and scaled up / down by GNOME Shell. - // The parameter 'forOpening' is set to true if this is called for a window-open - // transition, for a window-close transition it is set to false. The modes can be set to - // any value from here: https://gjs-docs.gnome.org/clutter8~8_api/clutter.animationmode. - // The only required property is 'opacity', even if it transitions from 1.0 to 1.0. The - // current value of the opacity transition is passed as uProgress to the shader. - // Tweaking the actor's scale during the transition only works properly for GNOME 3.38+. - - // For this effect, windows are scaled down vertically. - static tweakTransition(actor, settings, forOpening) { - return { - 'opacity': {from: 255, to: 255, mode: 3}, - 'scale-x': {from: 1.0, to: 1.0, mode: 3}, - 'scale-y': {from: forOpening ? 0.5 : 1.0, to: forOpening ? 1.0 : 0.5, mode: 3} - }; + // 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+. + static getActorScale(settings) { + return {x: 1.0, y: 1.0}; } // This is called from extension.js if the extension is disabled. This should free all diff --git a/src/Wisps.js b/src/Wisps.js index a13987e..46dffca 100644 --- a/src/Wisps.js +++ b/src/Wisps.js @@ -98,22 +98,11 @@ var Wisps = class Wisps { return shader; } - // The tweakTransition() is called from extension.js to tweak a window's open / close - // transitions - usually windows are faded in / out and scaled up / down by GNOME Shell. - // The parameter 'forOpening' is set to true if this is called for a window-open - // transition, for a window-close transition it is set to false. The modes can be set to - // any value from here: https://gjs-docs.gnome.org/clutter8~8_api/clutter.animationmode. - // The only required property is 'opacity', even if it transitions from 1.0 to 1.0. The - // current value of the opacity transition is passed as uProgress to the shader. - // Tweaking the actor's scale during the transition only works properly for GNOME 3.38+. - - // For this effect, windows should be scaled down slightly but not faded. - static tweakTransition(actor, settings, forOpening) { - return { - 'opacity': {from: 255, to: 255, mode: 3}, - 'scale-x': {from: forOpening ? 0.9 : 1.0, to: forOpening ? 1.0 : 0.9, mode: 3}, - 'scale-y': {from: forOpening ? 0.9 : 1.0, to: forOpening ? 1.0 : 0.9, mode: 3} - }; + // 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+. + static getActorScale(settings) { + return {x: 1.0, y: 1.0}; } // This is called from extension.js if the extension is disabled. This should free all diff --git a/tests/references/energize-a-close-gnome-wayland-nested-32.png b/tests/references/energize-a-close-gnome-wayland-nested-32.png index 3470e88..fa22732 100644 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 index b330ce3..903f978 100644 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 index 18f8d50..33eed45 100644 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 index 18f8d50..33eed45 100644 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 index 8051eb2..f9e12d3 100644 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 index 3470e88..fa22732 100644 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 index b330ce3..903f978 100644 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 index b3af470..38fed08 100644 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 index b3af470..38fed08 100644 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 index 30b580f..a1d607d 100644 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 index 93b2f59..0f285fc 100644 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 index b174c38..ed7e414 100644 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 index c0cc6a7..4abac88 100644 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 index c0cc6a7..4abac88 100644 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 index c428dc1..44cdd32 100644 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 index 93b2f59..0f285fc 100644 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 index b174c38..ed7e414 100644 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 index 4e732d9..8d7fe30 100644 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 index 4e732d9..8d7fe30 100644 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 index 2761603..f221edc 100644 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 index bfb438e..689ba0d 100644 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 index 6d2f1c6..50a813f 100644 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 index 18af939..b968178 100644 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 index 18af939..b968178 100644 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 index 7b64968..acdce33 100644 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 index bfb438e..689ba0d 100644 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 index 6d2f1c6..50a813f 100644 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 index 1e2f9a3..f48f0ce 100644 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 index 1e2f9a3..f48f0ce 100644 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 index 815951c..3cbd8ad 100644 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 index 8fa6820..60403f3 100644 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 index 88dcefd..03ab7f9 100644 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 index 7b4bc2f..fb9579b 100644 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 index 7b4bc2f..fb9579b 100644 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 index e9657a6..b293a47 100644 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 index 8fa6820..60403f3 100644 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 index 88dcefd..03ab7f9 100644 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 index 0b3a680..5521568 100644 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 index 0b3a680..5521568 100644 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 index 68b93a2..ae6caab 100644 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 index 640d273..4cafe63 100644 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 index b61c12f..efc787c 100644 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 index 4a3e444..902bfbc 100644 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 index 4a3e444..902bfbc 100644 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 index 239a57d..486ddb1 100644 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 index 640d273..4cafe63 100644 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 index b61c12f..efc787c 100644 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 index 0300844..e7feaef 100644 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 index 0300844..e7feaef 100644 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 index 2caed93..86a3f38 100644 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 index d43f304..9f082a5 100644 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 index 181c6ec..f0e1556 100644 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 index 74b7c2b..08a2f2b 100644 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 index 74b7c2b..08a2f2b 100644 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 index 09ab105..c9bbfaf 100644 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 index d43f304..9f082a5 100644 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 index 181c6ec..f0e1556 100644 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 index 9b4a85b..5cbdd22 100644 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 index 9b4a85b..5cbdd22 100644 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 index b430bf2..a4dd48d 100644 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/trex-close-gnome-wayland-nested-34.png b/tests/references/trex-close-gnome-wayland-nested-34.png index 8bcbb52..076e2f4 100644 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 index 9af1525..cdd3ab0 100644 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 index 773589c..1d20ca8 100644 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 index 0cef0d9..29ac6fd 100644 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 index 5b1ac32..00bdb8f 100644 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 index b73026c..dc393d5 100644 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 index 8bcbb52..2cafaef 100644 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 index 9af1525..b2fa139 100644 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 index 773589c..b7c62b4 100644 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 index 0cef0d9..52f4212 100644 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 index 5b1ac32..7190dd2 100644 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 index b73026c..d32b9f8 100644 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 index 3b8cd35..118a300 100644 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 index 9c896d5..59affdb 100644 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 index 456c6f6..1cfabf9 100644 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 index 456c6f6..1cfabf9 100644 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 index 1c38561..c16c106 100644 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 index 3b8cd35..118a300 100644 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 index 9c896d5..59affdb 100644 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 index 6f38e39..3aadedf 100644 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 index 6f38e39..3aadedf 100644 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 index 438e8cb..d6a3ea8 100644 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 index 3b8cd35..8c00699 100644 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 index 9c896d5..3eb88ef 100644 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 index 456c6f6..2f8a2d6 100644 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 index 456c6f6..2f8a2d6 100644 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 index 1c38561..938fe28 100644 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 index 3b8cd35..8c00699 100644 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 index 9c896d5..3eb88ef 100644 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 index 6f38e39..1d8ea38 100644 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 index 6f38e39..1d8ea38 100644 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 index 438e8cb..3d39e59 100644 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 index 36d52d0..b752f62 100644 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 index 4233911..64377df 100644 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 index 5c31ab3..e608427 100644 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 index 5c31ab3..e608427 100644 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 index 593c170..66d39bb 100644 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 index 36d52d0..b752f62 100644 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 index 4233911..64377df 100644 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 index 3f67aeb..787aa72 100644 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 index 3f67aeb..787aa72 100644 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 index 1dc020f..5972449 100644 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 index 36d52d0..ff231bd 100644 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 index 4233911..3ed4888 100644 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 index 5c31ab3..39b55f1 100644 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 index 5c31ab3..39b55f1 100644 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 index 593c170..25c36a5 100644 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 index 36d52d0..ff231bd 100644 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 index 4233911..3ed4888 100644 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 index 3f67aeb..8a79bd0 100644 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 index 3f67aeb..8a79bd0 100644 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 index 1dc020f..d253dae 100644 Binary files a/tests/references/wisps-open-gnome-xsession-36.png and b/tests/references/wisps-open-gnome-xsession-36.png differ