diff --git a/kwin/glide/config.ui b/kwin/glide/config.ui
index 71e054e..74d24b9 100755
--- a/kwin/glide/config.ui
+++ b/kwin/glide/config.ui
@@ -86,6 +86,16 @@ SPDX-License-Identifier: GPL-3.0-or-later
+ -
+
+
+ Shift
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
-
@@ -109,6 +119,19 @@ SPDX-License-Identifier: GPL-3.0-or-later
+ -
+
+
+ -1.000000000000000
+
+
+ 1.000000000000000
+
+
+ 0.1
+
+
+
diff --git a/kwin/glide/main.xml b/kwin/glide/main.xml
index b5714a6..8d520ef 100755
--- a/kwin/glide/main.xml
+++ b/kwin/glide/main.xml
@@ -12,13 +12,16 @@ SPDX-License-Identifier: GPL-3.0-or-later
250
- 0.9
+ 0.95
- 0.1
+ 0.15
-0.3
+
+ -0.05
+
\ No newline at end of file
diff --git a/kwin/glide/onSettingsChanged.js b/kwin/glide/onSettingsChanged.js
index c8ab453..b8ba059 100644
--- a/kwin/glide/onSettingsChanged.js
+++ b/kwin/glide/onSettingsChanged.js
@@ -8,3 +8,4 @@
effect.setUniform(this.shader, 'uScale', effect.readConfig('Scale', 1.0));
effect.setUniform(this.shader, 'uSquish', effect.readConfig('Squish', 1.0));
effect.setUniform(this.shader, 'uTilt', effect.readConfig('Tilt', 1.0));
+effect.setUniform(this.shader, 'uShift', effect.readConfig('Shift', 1.0));
diff --git a/resources/shaders/glide.frag b/resources/shaders/glide.frag
index 25dc09d..7b6184e 100644
--- a/resources/shaders/glide.frag
+++ b/resources/shaders/glide.frag
@@ -17,6 +17,7 @@
uniform float uScale;
uniform float uSquish;
uniform float uTilt;
+uniform float uShift;
void main() {
// We reverse the progress for window opening.
@@ -35,6 +36,9 @@ void main() {
// 'Tilt' image texture around x-axis.
coords.x /= mix(1.0, 1.0 - 0.1 * uTilt * coords.y, progress);
+ // Move image texture vertically.
+ coords.y += uShift * progress;
+
// Move texture coordinate center to corner again.
coords = coords * 0.5 + 0.5;
diff --git a/resources/ui/adw/Glide.ui b/resources/ui/adw/Glide.ui
index 08ad052..a3bd54a 100644
--- a/resources/ui/adw/Glide.ui
+++ b/resources/ui/adw/Glide.ui
@@ -141,6 +141,39 @@ SPDX-License-Identifier: GPL-3.0-or-later
+
+
+
+
\ No newline at end of file
diff --git a/resources/ui/gtk3/Glide.ui b/resources/ui/gtk3/Glide.ui
index 18959ed..7029422 100644
--- a/resources/ui/gtk3/Glide.ui
+++ b/resources/ui/gtk3/Glide.ui
@@ -35,6 +35,13 @@ SPDX-License-Identifier: GPL-3.0-or-later
0.1
+
+ 1
+ -1
+ 0.01
+ 0.1
+
+
vertical
@@ -243,6 +250,55 @@ SPDX-License-Identifier: GPL-3.0-or-later
+
+
+ 10
+ 10
+ 10
+ 10
+ 0
+
+
+ 8
+
+
+ Shift
+ 0
+ start
+ center
+ 1
+
+
+
+
+ end
+ center
+ 1
+ 2
+ left
+ 300
+ glide-shift
+
+
+
+
+
+
+ edit-clear-symbolic
+ 1
+
+
+ Reset to Default Value
+
+
+
+
+
+
+
+
diff --git a/resources/ui/gtk4/Glide.ui b/resources/ui/gtk4/Glide.ui
index d780347..e52edb0 100644
--- a/resources/ui/gtk4/Glide.ui
+++ b/resources/ui/gtk4/Glide.ui
@@ -204,6 +204,51 @@ SPDX-License-Identifier: GPL-3.0-or-later
+
+
+ 0
+
+
+
+
+ Shift
+ 0
+ start
+ center
+ 1
+
+
+
+
+ end
+ center
+ 1
+ 2
+ left
+ 300
+
+
+ 1
+ -1
+ 0.01
+ 0.1
+
+
+
+
+
+
+ edit-clear-symbolic
+ Reset to Default Value
+
+
+
+
+
+
+
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 74c00e3..6af42eb 100644
--- a/schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml
+++ b/schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml
@@ -320,13 +320,13 @@ SPDX-License-Identifier: CC0-1.0
- 0.9
+ 0.95
Glide Scale
The scale of the window.
- 0.1
+ 0.15
Glide Squish
The amount of squishing.
@@ -337,6 +337,12 @@ SPDX-License-Identifier: CC0-1.0
The amount of tilting.
+
+ -0.05
+ Glide Shift
+ The amount of shifting.
+
+
diff --git a/src/Glide.js b/src/Glide.js
index f76e5f3..846c553 100644
--- a/src/Glide.js
+++ b/src/Glide.js
@@ -42,6 +42,7 @@ var Glide = class {
shader._uScale = shader.get_uniform_location('uScale');
shader._uSquish = shader.get_uniform_location('uSquish');
shader._uTilt = shader.get_uniform_location('uTilt');
+ shader._uShift = shader.get_uniform_location('uShift');
// Write all uniform values at the start of each animation.
shader.connect('begin-animation', (shader, settings) => {
@@ -49,6 +50,7 @@ var Glide = class {
shader.set_uniform_float(shader._uScale, 1, [settings.get_double('glide-scale')]);
shader.set_uniform_float(shader._uSquish, 1, [settings.get_double('glide-squish')]);
shader.set_uniform_float(shader._uTilt, 1, [settings.get_double('glide-tilt')]);
+ shader.set_uniform_float(shader._uShift, 1, [settings.get_double('glide-shift')]);
// clang-format on
});
});
@@ -90,6 +92,7 @@ var Glide = class {
dialog.bindAdjustment('glide-scale');
dialog.bindAdjustment('glide-squish');
dialog.bindAdjustment('glide-tilt');
+ dialog.bindAdjustment('glide-shift');
// Finally, return the new settings page.
return dialog.getBuilder().get_object('glide-prefs');