diff --git a/kwin/apparition/config.ui b/kwin/apparition/config.ui
new file mode 100755
index 0000000..3fa647c
--- /dev/null
+++ b/kwin/apparition/config.ui
@@ -0,0 +1,132 @@
+
+
+ BMWConfigForm
+
+
+
+ 0
+ 0
+ 562
+ 365
+
+
+
+ -
+
+
+ Line Color:
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+ 1.000000000000000
+
+
+ 5.000000000000000
+
+
+
+ -
+
+
+ 0.100000000000000
+
+
+ 10.000000000000000
+
+
+
+ -
+
+
+ milliseconds
+
+
+ 100
+
+
+ 9999
+
+
+ 100
+
+
+
+ -
+
+
+ Glow Color:
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+ Line Width:
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+ Duration:
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+ Scale:
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+ Additive Blending
+
+
+
+ -
+
+
+ true
+
+
+
+ -
+
+
+ true
+
+
+
+
+
+
+
+ KColorButton
+ QPushButton
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kwin/apparition/main.xml b/kwin/apparition/main.xml
new file mode 100755
index 0000000..5687138
--- /dev/null
+++ b/kwin/apparition/main.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+ 300
+
+
+ 3
+
+
+ 5
+
+
+ 0.75
+
+
+ 0.5
+
+
+
\ No newline at end of file
diff --git a/kwin/apparition/onAnimationBegin.js b/kwin/apparition/onAnimationBegin.js
new file mode 100644
index 0000000..12be257
--- /dev/null
+++ b/kwin/apparition/onAnimationBegin.js
@@ -0,0 +1,4 @@
+// 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/apparition/onSettingsChanged.js b/kwin/apparition/onSettingsChanged.js
new file mode 100644
index 0000000..d690581
--- /dev/null
+++ b/kwin/apparition/onSettingsChanged.js
@@ -0,0 +1,8 @@
+// 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, 'uShake', effect.readConfig('Shake', 1.0));
+effect.setUniform(this.shader, 'uTwirl', effect.readConfig('Twirl', 1.0));
+effect.setUniform(this.shader, 'uSuction', effect.readConfig('Suction', 1.0));
+effect.setUniform(this.shader, 'uRandomness', effect.readConfig('Randomness', 1.0));
diff --git a/kwin/build.sh b/kwin/build.sh
index 805394b..cf15643 100755
--- a/kwin/build.sh
+++ b/kwin/build.sh
@@ -105,6 +105,7 @@ generate() {
tar -C "$BUILD_DIR" -czf "$DIR_NAME.tar.gz" "$DIR_NAME"
}
+generate "apparition" "Apparition" "This effect hides your windows by violently sucking them into the void of magic"
generate "energize-a" "Energize A" "Beam your windows away"
generate "energize-b" "Energize B" "Using different transporter technology results in an alternative visual effect"
generate "hexagon" "Hexagon" "With glowing lines and hexagon-shaped tiles, this effect looks very sci-fi"