🔀 Merge pull request #497 from Schneegans/feature/kde-port

This commit is contained in:
Simon Schneegans
2025-02-16 07:43:18 +01:00
committed by GitHub
26 changed files with 785 additions and 92 deletions
+3 -3
View File
@@ -70,7 +70,7 @@ Below is a table which summarizes the current availability for all effects.
</tr>
<tr><td></td> <td>3.36</td> <td>3.38</td><td>40-44</td><td>45+</td><td>5.25.0+</td></tr>
<tr><td>Apparition</td> <td> </td> <td>✅</td> <td>✅</td> <td>✅</td> <td> </td> </tr>
<tr><td>Aura Glow</td> <td> </td> <td> </td> <td> </td> <td>✅</td> <td> </td> </tr>
<tr><td>Aura Glow</td> <td> </td> <td> </td> <td> </td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Broken Glass</td> <td> </td> <td> </td> <td>✅</td> <td>✅</td> <td> </td> </tr>
<tr><td>Doom</td> <td> </td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Energize A</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
@@ -88,9 +88,9 @@ Below is a table which summarizes the current availability for all effects.
<tr><td>Pixel Wheel</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Pixel Wipe</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Portal</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>RGB Warp</td> <td> </td> <td> </td> <td> </td> <td>✅</td> <td> </td> </tr>
<tr><td>RGB Warp</td> <td> </td> <td> </td> <td> </td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Snap of Disintegration</td> <td> </td> <td> </td> <td>✅</td> <td>✅</td> <td> </td> </tr>
<tr><td>TeamRocket</td> <td> </td> <td> </td> <td> </td> <td>✅</td> <td> </td> </tr>
<tr><td>TeamRocket</td> <td> </td> <td> </td> <td> </td> <td>✅</td> <td>✅</td> </tr>
<tr><td>T-Rex Attack</td> <td> </td> <td> </td> <td>✅</td> <td>✅</td> <td> </td> </tr>
<tr><td>TV Effect</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>TV Glitch</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
+210
View File
@@ -0,0 +1,210 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
SPDX-License-Identifier: GPL-3.0-or-later
-->
<ui version="4.0">
<class>BMWConfigForm</class>
<widget class="QWidget" name="BMWConfigForm">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>562</width>
<height>353</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Animation Time [ms]</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QSpinBox" name="kcfg_Duration">
<property name="minimum">
<number>100</number>
</property>
<property name="maximum">
<number>9999</number>
</property>
<property name="singleStep">
<number>100</number>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QCheckBox" name="kcfg_RandomColor">
<property name="text">
<string>Random Color</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Start Hue</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QDoubleSpinBox" name="kcfg_StartHue">
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>0.500000000000000</double>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Speed</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QDoubleSpinBox" name="kcfg_Speed">
<property name="minimum">
<double>-5.000000000000000</double>
</property>
<property name="maximum">
<double>5.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Saturation</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QDoubleSpinBox" name="kcfg_Saturation">
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Edge Size</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QDoubleSpinBox" name="kcfg_EdgeSize">
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Edge Hardness</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QDoubleSpinBox" name="kcfg_EdgeHardness">
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Blur Amount</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QDoubleSpinBox" name="kcfg_BlurAmount">
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>30.000000000000000</double>
</property>
<property name="singleStep">
<double>1.000000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
</layout>
</widget>
<resources />
<connections />
</ui>
+36
View File
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
SPDX-License-Identifier: GPL-3.0-or-later
-->
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0 http://www.kde.org/standards/kcfg/1.0/kcfg.xsd">
<kcfgfile name="" />
<group name="">
<entry name="Duration" type="UInt">
<default>750</default>
</entry>
<entry name="RandomColor" type="Bool">
<default>false</default>
</entry>
<entry name="StartHue" type="Double">
<default>0.0</default>
</entry>
<entry name="Speed" type="Double">
<default>2.5</default>
</entry>
<entry name="Saturation" type="Double">
<default>0.75</default>
</entry>
<entry name="EdgeSize" type="Double">
<default>0.75</default>
</entry>
<entry name="EdgeHardness" type="Double">
<default>0.25</default>
</entry>
<entry name="BlurAmount" type="Double">
<default>15.0</default>
</entry>
</group>
</kcfg>
+8
View File
@@ -0,0 +1,8 @@
// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
// 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.
let seed = [Math.random(), Math.random()];
effect.setUniform(this.shader, 'uSeed', seed);
+15
View File
@@ -0,0 +1,15 @@
// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
// 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, 'uSpeed', effect.readConfig('Speed', 1.0));
effect.setUniform(this.shader, 'uRandomColor',
effect.readConfig('RandomColor', true) ? 1.0 : 0.0);
effect.setUniform(this.shader, 'uStartHue', effect.readConfig('StartHue', 1.0));
effect.setUniform(this.shader, 'uSaturation', effect.readConfig('Saturation', 1.0));
effect.setUniform(this.shader, 'uBlur', effect.readConfig('BlurAmount', 1.0));
effect.setUniform(this.shader, 'uEdgeSize', effect.readConfig('EdgeSize', 1.0));
effect.setUniform(this.shader, 'uEdgeHardness', effect.readConfig('EdgeHardness', 1.0));
+3
View File
@@ -154,6 +154,7 @@ generate_impl() {
}
# Now run the above method for all supported effects.
generate "aura-glow" "Aura Glow [Burn-My-Windows]" "A radiant edge-lit animation"
generate "doom" "Doom [Burn-My-Windows]" "Melt your windows"
generate "energize-a" "Energize A [Burn-My-Windows]" "Beam your windows away"
generate "energize-b" "Energize B [Burn-My-Windows]" "Using different transporter technology results in an alternative visual effect"
@@ -167,6 +168,8 @@ generate "pixelate" "Pixelate [Burn-My-Windows]" "Pixelate the window and
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 "rgbwarp" "RGB Warp [Burn-My-Windows]" "Red Blue and Green go bye bye"
generate "team-rocket" "Team Rocket [Burn-My-Windows]" "... is blasting off again!"
generate "tv" "TV Effect [Burn-My-Windows]" "Make windows close like turning off a TV"
generate "tv-glitch" "TV Glitch [Burn-My-Windows]" "Make your windows close like a very glitchy old-school TV"
generate "wisps" "Wisps [Burn-My-Windows]" "Let your windows be carried away to the realm of dreams by these little fairies"
+148
View File
@@ -0,0 +1,148 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
SPDX-License-Identifier: GPL-3.0-or-later
-->
<ui version="4.0">
<class>BMWConfigForm</class>
<widget class="QWidget" name="BMWConfigForm">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>562</width>
<height>365</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="2" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Speed Red</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QSpinBox" name="kcfg_Duration">
<property name="minimum">
<number>100</number>
</property>
<property name="maximum">
<number>9999</number>
</property>
<property name="singleStep">
<number>100</number>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Brightness</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Animation Time [ms]</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="kcfg_Brightness">
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Speed Green</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Speed Blue</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QDoubleSpinBox" name="kcfg_SpeedR">
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QDoubleSpinBox" name="kcfg_SpeedG">
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QDoubleSpinBox" name="kcfg_SpeedB">
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
+27
View File
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
SPDX-License-Identifier: GPL-3.0-or-later
-->
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0 http://www.kde.org/standards/kcfg/1.0/kcfg.xsd">
<kcfgfile name="" />
<group name="">
<entry name="Duration" type="UInt">
<default>750</default>
</entry>
<entry name="Brightness" type="Double">
<default>1.0</default>
</entry>
<entry name="SpeedR" type="Double">
<default>1.0</default>
</entry>
<entry name="SpeedG" type="Double">
<default>0.9</default>
</entry>
<entry name="SpeedB" type="Double">
<default>0.8</default>
</entry>
</group>
</kcfg>
+11
View File
@@ -0,0 +1,11 @@
// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
// 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, 'uBrightness', effect.readConfig('Brightness', 1.0));
effect.setUniform(this.shader, 'uSpeedR', effect.readConfig('SpeedR', 1.0));
effect.setUniform(this.shader, 'uSpeedG', effect.readConfig('SpeedG', 1.0));
effect.setUniform(this.shader, 'uSpeedB', effect.readConfig('SpeedB', 1.0));
+185
View File
@@ -0,0 +1,185 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
SPDX-License-Identifier: GPL-3.0-or-later
-->
<ui version="4.0">
<class>BMWConfigForm</class>
<widget class="QWidget" name="BMWConfigForm">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>562</width>
<height>365</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Animation Time [ms]</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QSpinBox" name="kcfg_Duration">
<property name="minimum">
<number>100</number>
</property>
<property name="maximum">
<number>9999</number>
</property>
<property name="singleStep">
<number>100</number>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Animation Split</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="kcfg_AnimationSplit">
<property name="minimum">
<double>0.200000000000000</double>
</property>
<property name="maximum">
<double>8.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>0.500000000000000</double>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QCheckBox" name="kcfg_RotateWindow">
<property name="text">
<string>Rotate Window</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Horizontal Sparkle Position</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QDoubleSpinBox" name="kcfg_HorizontalSparklePosition">
<property name="minimum">
<double>-1.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Vertical Sparkle Position</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QDoubleSpinBox" name="kcfg_VerticalSparklePosition">
<property name="minimum">
<double>-1.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Sparkle Size</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QDoubleSpinBox" name="kcfg_SparkleSize">
<property name="minimum">
<double>0.500000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Sparkle Rotation</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QDoubleSpinBox" name="kcfg_SparkleRotation">
<property name="minimum">
<double>-1.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
</layout>
</widget>
<resources />
<connections />
</ui>
+33
View File
@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
SPDX-License-Identifier: GPL-3.0-or-later
-->
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0 http://www.kde.org/standards/kcfg/1.0/kcfg.xsd">
<kcfgfile name="" />
<group name="">
<entry name="Duration" type="UInt">
<default>1500</default>
</entry>
<entry name="AnimationSplit" type="Double">
<default>0.5</default>
</entry>
<entry name="RotateWindow" type="Bool">
<default>true</default>
</entry>
<entry name="HorizontalSparklePosition" type="Double">
<default>0.0</default>
</entry>
<entry name="VerticalSparklePosition" type="Double">
<default>0.5</default>
</entry>
<entry name="SparkleSize" type="Double">
<default>0.75</default>
</entry>
<entry name="SparkleRotation" type="Double">
<default>0.33</default>
</entry>
</group>
</kcfg>
+8
View File
@@ -0,0 +1,8 @@
// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
// 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.
let seed = [Math.random(), Math.random()];
effect.setUniform(this.shader, 'uSeed', seed);
+17
View File
@@ -0,0 +1,17 @@
// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
// 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, 'uAnimationSplit',
effect.readConfig('AnimationSplit', 1.0));
effect.setUniform(this.shader, 'uWindowRotation',
effect.readConfig('RotateWindow', true) ? 1.0 : 0.0);
effect.setUniform(this.shader, 'uHorizontalSparklePosition',
effect.readConfig('HorizontalSparklePosition', 1.0));
effect.setUniform(this.shader, 'uVerticalSparklePosition',
effect.readConfig('VerticalSparklePosition', 1.0));
effect.setUniform(this.shader, 'uSparkleRot', effect.readConfig('SparkleRotation', 1.0));
effect.setUniform(this.shader, 'uSparkleSize', effect.readConfig('SparkleSize', 1.0));
+9 -9
View File
@@ -31,10 +31,10 @@
// vec4 getInputColor(vec2 coords)
// void setOutputColor(vec4 outColor)
uniform float uColorSpeed;
uniform bool uRandomColorOffset;
uniform float uColorOffset;
uniform float uColorSaturation;
uniform float uSpeed;
uniform bool uRandomColor;
uniform float uStartHue;
uniform float uSaturation;
uniform float uBlur;
uniform vec2 uSeed;
uniform float uEdgeSize;
@@ -72,8 +72,8 @@ void main() {
gradient += simplex2D((iTexCoord + uSeed)) * 0.5;
// This mask is used for the color overlay.
float glowMask = (progress - gradient) / mix(uEdgeSize, 0.5, progress);
glowMask = 1.0 - clamp(glowMask - progress, 0.0, 1.0);
float glowMask = (progress - gradient) / (uEdgeSize + 0.1);
glowMask = 1.0 - clamp(glowMask, 0.0, 1.0);
// Quickly fade out the glow mask at the end of the animation.
glowMask *= easeOutSine(min(1.0, (1.0 - progress) * 4.0));
@@ -90,10 +90,10 @@ void main() {
}
glowMask *= windowColor.a;
vec3 glowColor = cos(progress * uColorSpeed + uv.xyx + vec3(0, 2, 4)).xyz;
float colorOffset = (uRandomColorOffset) ? hash12(uSeed) : uColorOffset;
vec3 glowColor = cos(progress * uSpeed + uv.xyx + vec3(0, 2, 4)).xyz;
float colorOffset = (uRandomColor) ? hash12(uSeed) : uStartHue;
glowColor = offsetHue(glowColor, colorOffset + 0.1);
glowColor = clamp(glowColor * uColorSaturation, vec3(0.0), vec3(1.0));
glowColor = clamp(glowColor * uSaturation, vec3(0.0), vec3(1.0));
windowColor.rgb += glowColor * glowMask;
+14 -12
View File
@@ -31,13 +31,13 @@
// void setOutputColor(vec4 outColor)
// window time ... how we split the time between the window and the sparkle/star
uniform float uWT;
uniform float uXpos; // the Xposition of the star
uniform float uYpos; // the Yposition of the star
uniform float uSparkleRot; // the rotation of the star
uniform float uSparkleSize; // the size of the star
uniform bool uWinRot; // window rotation... but it's more of a warp
uniform vec2 uSeed; // and random numbers
uniform float uAnimationSplit;
uniform float uHorizontalSparklePosition; // the Xposition of the star
uniform float uVerticalSparklePosition; // the Yposition of the star
uniform float uSparkleRot; // the rotation of the star
uniform float uSparkleSize; // the size of the star
uniform bool uWindowRotation; // window rotation... but it's more of a warp
uniform vec2 uSeed; // and random numbers
// Used to scale the window.
vec2 scaleUV(vec2 uv, vec2 scale, vec2 centerOffset) {
@@ -106,16 +106,18 @@ void main() {
float progress = uForOpening ? 1.0 - uProgress : uProgress;
// Scale progress ... the first half of the animation.
float scalep = remap(progress, 0.0, uWT + 0.1, 0.0, 1.0);
float scalep = remap(progress, 0.0, uAnimationSplit + 0.1, 0.0, 1.0);
scalep = easeOutQuad(scalep);
// Sparkle progress ... the second half of the animation.
float sparkp = remap(progress, uWT - 0.1, 1.0, 0.0, 1.0);
float sparkp = remap(progress, uAnimationSplit - 0.1, 1.0, 0.0, 1.0);
sparkp = easeInOutSine(sparkp);
// This is the offset of the window... don't let them go too far each way.
vec2 offset = vec2(uXpos, uYpos * -1.0) * 0.20;
vec2 scaleOffset = mix(vec2(0.0), vec2(uXpos, uYpos * -1.0) * 0.50, scalep);
vec2 offset = vec2(uHorizontalSparklePosition, uVerticalSparklePosition * -1.0) * 0.20;
vec2 scaleOffset =
mix(vec2(0.0),
vec2(uHorizontalSparklePosition, uVerticalSparklePosition * -1.0) * 0.50, scalep);
// the UV for this function
float aspect = uSize.x / uSize.y;
@@ -129,7 +131,7 @@ void main() {
// Rotation and if we are gonna rotate or not.
vec3 rot = vec3(0.0);
if (uWinRot) {
if (uWindowRotation) {
rot = hash32(uSeed);
rot *= 2.0;
rot -= 1.0;
+10 -10
View File
@@ -66,17 +66,17 @@ SPDX-License-Identifier: GPL-3.0-or-later
<child>
<object class="AdwActionRow" id="aura-glow-action-row">
<property name="title" translatable="yes">Start Color Hue</property>
<property name="title" translatable="yes">Start Hue</property>
<child>
<object class="GtkScale" id="aura-glow-color-offset-scale">
<object class="GtkScale" id="aura-glow-start-hue-slider">
<property name="valign">center</property>
<property name="draw-value">1</property>
<property name="digits">2</property>
<property name="value-pos">left</property>
<property name="width-request">300</property>
<property name="adjustment">
<object class="GtkAdjustment" id="aura-glow-color-offset">
<object class="GtkAdjustment" id="aura-glow-start-hue">
<property name="upper">1.0</property>
<property name="lower">0.0</property>
<property name="step-increment">0.1</property>
@@ -86,7 +86,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
</object>
</child>
<child>
<object class="GtkButton" id="reset-aura-glow-color-offset">
<object class="GtkButton" id="reset-aura-glow-start-hue">
<property name="icon-name">edit-clear-symbolic</property>
<property name="valign">center</property>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
@@ -100,7 +100,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">Color Speed</property>
<property name="title" translatable="yes">Speed</property>
<child>
<object class="GtkScale">
<property name="valign">center</property>
@@ -109,7 +109,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
<property name="value-pos">left</property>
<property name="width-request">300</property>
<property name="adjustment">
<object class="GtkAdjustment" id="aura-glow-color-speed">
<object class="GtkAdjustment" id="aura-glow-speed">
<property name="upper">5.0</property>
<property name="lower">-5.0</property>
<property name="step-increment">0.25</property>
@@ -119,7 +119,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
</object>
</child>
<child>
<object class="GtkButton" id="reset-aura-glow-color-speed">
<object class="GtkButton" id="reset-aura-glow-speed">
<property name="icon-name">edit-clear-symbolic</property>
<property name="valign">center</property>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
@@ -133,7 +133,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">Color Saturation</property>
<property name="title" translatable="yes">Saturation</property>
<child>
<object class="GtkScale">
<property name="valign">center</property>
@@ -142,7 +142,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
<property name="value-pos">left</property>
<property name="width-request">300</property>
<property name="adjustment">
<object class="GtkAdjustment" id="aura-glow-color-saturation">
<object class="GtkAdjustment" id="aura-glow-saturation">
<property name="upper">1.0</property>
<property name="lower">0.0</property>
<property name="step-increment">0.10</property>
@@ -152,7 +152,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
</object>
</child>
<child>
<object class="GtkButton" id="reset-aura-glow-color-saturation">
<object class="GtkButton" id="reset-aura-glow-saturation">
<property name="icon-name">edit-clear-symbolic</property>
<property name="valign">center</property>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
+9 -11
View File
@@ -63,7 +63,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
<property name="width-request">300</property>
<property name="adjustment">
<object class="GtkAdjustment" id="team-rocket-window-time">
<object class="GtkAdjustment" id="team-rocket-animation-split">
<property name="upper">0.8</property>
<property name="lower">0.2</property>
<property name="step-increment">0.01</property>
@@ -74,7 +74,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
</child>
<child>
<object class="GtkButton" id="reset-team-rocket-window-time">
<object class="GtkButton" id="reset-team-rocket-animation-split">
<property name="icon-name">edit-clear-symbolic</property>
<property name="valign">center</property>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
@@ -89,14 +89,14 @@ SPDX-License-Identifier: GPL-3.0-or-later
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">Rotate Window</property>
<property name="activatable-widget">team-rocket-win-rot</property>
<property name="activatable-widget">team-rocket-window-rotation</property>
<child>
<object class="GtkSwitch" id="team-rocket-win-rot">
<object class="GtkSwitch" id="team-rocket-window-rotation">
<property name="valign">center</property>
</object>
</child>
<child>
<object class="GtkButton" id="reset-team-rocket-win-rot">
<object class="GtkButton" id="reset-team-rocket-window-rotation">
<property name="icon-name">edit-clear-symbolic</property>
<property name="valign">center</property>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
@@ -122,7 +122,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
<property name="width-request">300</property>
<property name="adjustment">
<object class="GtkAdjustment" id="team-rocket-x">
<object class="GtkAdjustment" id="team-rocket-horizontal-sparkle-position">
<property name="upper">1.0</property>
<property name="lower">-1.0</property>
<property name="step-increment">0.01</property>
@@ -133,7 +133,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
</child>
<child>
<object class="GtkButton" id="reset-team-rocket-x">
<object class="GtkButton" id="reset-team-rocket-horizontal-sparkle-position">
<property name="icon-name">edit-clear-symbolic</property>
<property name="valign">center</property>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
@@ -159,7 +159,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
<property name="width-request">300</property>
<property name="adjustment">
<object class="GtkAdjustment" id="team-rocket-y">
<object class="GtkAdjustment" id="team-rocket-vertical-sparkle-position">
<property name="upper">1.0</property>
<property name="lower">-1.0</property>
<property name="step-increment">0.01</property>
@@ -170,7 +170,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
</child>
<child>
<object class="GtkButton" id="reset-team-rocket-y">
<object class="GtkButton" id="reset-team-rocket-vertical-sparkle-position">
<property name="icon-name">edit-clear-symbolic</property>
<property name="valign">center</property>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
@@ -187,7 +187,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
<object class="AdwActionRow">
<property name="title" translatable="yes">Sparkle Size</property>
<!-- <property name="subtitle" translatable="yes"></property> -->
<child>
<object class="GtkScale">
@@ -225,7 +224,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
<object class="AdwActionRow">
<property name="title" translatable="yes">Sparkle Rotation</property>
<!-- <property name="subtitle" translatable="yes"></property> -->
<child>
<object class="GtkScale">
@@ -979,19 +979,19 @@ SPDX-License-Identifier: CC0-1.0
<description>Ramdomize the color offset</description>
</key>
<key name="aura-glow-color-offset" type="d">
<key name="aura-glow-start-hue" type="d">
<default>0.0</default>
<summary>Aura Glow Color Offset</summary>
<description>Changes the inital color of the glow</description>
</key>
<key name="aura-glow-color-speed" type="d">
<key name="aura-glow-speed" type="d">
<default>2.5</default>
<summary>Aura Glow Color Speed</summary>
<description>The Speed at which the color changes</description>
</key>
<key name="aura-glow-color-saturation" type="d">
<key name="aura-glow-saturation" type="d">
<default>0.75</default>
<summary>Aura Glow Color Saturation</summary>
<description>Amount of color in the effect</description>
@@ -1031,12 +1031,6 @@ SPDX-License-Identifier: CC0-1.0
<description>The time the RGBWarp effect takes.</description>
</key>
<key name="rgbwarp-wavesize" type="d">
<default>1.0</default>
<summary>RGBWarp Width</summary>
<description>Width of the effect.</description>
</key>
<key name="rgbwarp-brightness" type="d">
<default>1.0</default>
<summary>RGBWarp Brightness</summary>
@@ -1077,25 +1071,25 @@ SPDX-License-Identifier: CC0-1.0
<description>The time the Team Rocket effect takes.</description>
</key>
<key name="team-rocket-window-time" type="d">
<key name="team-rocket-animation-split" type="d">
<default>0.5</default>
<summary>Window vs Sparkle split</summary>
<description>Window vs Sparkle split</description>
</key>
<key name="team-rocket-x" type="d">
<key name="team-rocket-horizontal-sparkle-position" type="d">
<default>0.0</default>
<summary>Team Rocket X</summary>
<description>X position</description>
</key>
<key name="team-rocket-y" type="d">
<key name="team-rocket-vertical-sparkle-position" type="d">
<default>0.5</default>
<summary>Team Rocket Y</summary>
<description>Y position</description>
</key>
<key name="team-rocket-win-rot" type="b">
<key name="team-rocket-window-rotation" type="b">
<default>true</default>
<summary>Rotate the Window</summary>
<description>Rotate the Window</description>
+16 -18
View File
@@ -40,22 +40,22 @@ export default class Effect {
constructor() {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
// Store uniform locations of newly created shaders.
shader._uColorSpeed = shader.get_uniform_location('uColorSpeed');
shader._uRandomColorOffset = shader.get_uniform_location('uRandomColorOffset');
shader._uColorOffset = shader.get_uniform_location('uColorOffset');
shader._uColorSaturation = shader.get_uniform_location('uColorSaturation');
shader._uEdgeSize = shader.get_uniform_location('uEdgeSize');
shader._uEdgeHardness = shader.get_uniform_location('uEdgeHardness');
shader._uBlur = shader.get_uniform_location('uBlur');
shader._uSeed = shader.get_uniform_location('uSeed');
shader._uSpeed = shader.get_uniform_location('uSpeed');
shader._uRandomColor = shader.get_uniform_location('uRandomColor');
shader._uStartHue = shader.get_uniform_location('uStartHue');
shader._uSaturation = shader.get_uniform_location('uSaturation');
shader._uEdgeSize = shader.get_uniform_location('uEdgeSize');
shader._uEdgeHardness = shader.get_uniform_location('uEdgeHardness');
shader._uBlur = shader.get_uniform_location('uBlur');
shader._uSeed = shader.get_uniform_location('uSeed');
// Write all uniform values at the start of each animation.
shader.connect('begin-animation', (shader, settings) => {
// clang-format off
shader.set_uniform_float(shader._uColorSpeed, 1, [settings.get_double('aura-glow-color-speed')]);
shader.set_uniform_float(shader._uRandomColorOffset, 1, [settings.get_boolean('aura-glow-random-color')]);
shader.set_uniform_float(shader._uColorOffset, 1, [settings.get_double('aura-glow-color-offset')]);
shader.set_uniform_float(shader._uColorSaturation, 1, [settings.get_double('aura-glow-color-saturation')]);
shader.set_uniform_float(shader._uSpeed, 1, [settings.get_double('aura-glow-speed')]);
shader.set_uniform_float(shader._uRandomColor, 1, [settings.get_boolean('aura-glow-random-color')]);
shader.set_uniform_float(shader._uStartHue, 1, [settings.get_double('aura-glow-start-hue')]);
shader.set_uniform_float(shader._uSaturation, 1, [settings.get_double('aura-glow-saturation')]);
shader.set_uniform_float(shader._uEdgeSize, 1, [settings.get_double('aura-glow-edge-size')]);
shader.set_uniform_float(shader._uEdgeHardness, 1, [settings.get_double('aura-glow-edge-hardness')]);
shader.set_uniform_float(shader._uBlur, 1, [settings.get_double('aura-glow-blur')]);
@@ -95,19 +95,17 @@ export default class Effect {
// binds all user interface elements to the respective settings keys of the profile.
static bindPreferences(dialog) {
dialog.bindAdjustment('aura-glow-animation-time');
dialog.bindAdjustment('aura-glow-color-speed');
dialog.bindAdjustment('aura-glow-speed');
dialog.bindSwitch('aura-glow-random-color');
dialog.bindAdjustment('aura-glow-color-offset');
dialog.bindAdjustment('aura-glow-color-saturation');
dialog.bindAdjustment('aura-glow-start-hue');
dialog.bindAdjustment('aura-glow-saturation');
dialog.bindAdjustment('aura-glow-edge-size');
dialog.bindAdjustment('aura-glow-edge-hardness');
dialog.bindAdjustment('aura-glow-blur');
// enable and disable the one slider
function enableDisablePref(dialog, state) {
dialog.getBuilder()
.get_object('aura-glow-color-offset-scale')
.set_sensitive(!state);
dialog.getBuilder().get_object('aura-glow-start-hue-slider').set_sensitive(!state);
}
const switchWidget = dialog.getBuilder().get_object('aura-glow-random-color');
+16 -16
View File
@@ -39,22 +39,24 @@ export default class Effect {
constructor() {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
// Store uniform locations of newly created shaders.
shader._uWT = shader.get_uniform_location('uWT');
shader._uXpos = shader.get_uniform_location('uXpos');
shader._uYpos = shader.get_uniform_location('uYpos');
shader._uWinRot = shader.get_uniform_location('uWinRot');
shader._uSparkleRot = shader.get_uniform_location('uSparkleRot');
shader._uSparkleSize = shader.get_uniform_location('uSparkleSize');
shader._uAnimationSplit = shader.get_uniform_location('uAnimationSplit');
shader._uHorizontalSparklePosition =
shader.get_uniform_location('uHorizontalSparklePosition');
shader._uVerticalSparklePosition =
shader.get_uniform_location('uVerticalSparklePosition');
shader._uWindowRotation = shader.get_uniform_location('uWindowRotation');
shader._uSparkleRot = shader.get_uniform_location('uSparkleRot');
shader._uSparkleSize = shader.get_uniform_location('uSparkleSize');
shader._uSeed = shader.get_uniform_location('uSeed');
// Write all uniform values at the start of each animation.
shader.connect('begin-animation', (shader, settings) => {
// clang-format off
shader.set_uniform_float(shader._uWT, 1, [settings.get_double('team-rocket-window-time')]);
shader.set_uniform_float(shader._uXpos, 1, [settings.get_double('team-rocket-x')]);
shader.set_uniform_float(shader._uYpos, 1, [settings.get_double('team-rocket-y')]);
shader.set_uniform_float(shader._uWinRot, 1, [settings.get_boolean('team-rocket-win-rot')]);
shader.set_uniform_float(shader._uAnimationSplit, 1, [settings.get_double('team-rocket-animation-split')]);
shader.set_uniform_float(shader._uHorizontalSparklePosition, 1, [settings.get_double('team-rocket-horizontal-sparkle-position')]);
shader.set_uniform_float(shader._uVerticalSparklePosition, 1, [settings.get_double('team-rocket-vertical-sparkle-position')]);
shader.set_uniform_float(shader._uWindowRotation, 1, [settings.get_boolean('team-rocket-window-rotation')]);
shader.set_uniform_float(shader._uSparkleRot, 1, [settings.get_double('team-rocket-sparkle-rot')]);
shader.set_uniform_float(shader._uSparkleSize, 1, [settings.get_double('team-rocket-sparkle-size')]);
// clang-format on
@@ -93,12 +95,10 @@ export default class Effect {
// binds all user interface elements to the respective settings keys of the profile.
static bindPreferences(dialog) {
dialog.bindAdjustment('team-rocket-animation-time');
dialog.bindAdjustment('team-rocket-window-time');
dialog.bindAdjustment('team-rocket-x');
dialog.bindAdjustment('team-rocket-y');
dialog.bindSwitch('team-rocket-win-rot');
dialog.bindAdjustment('team-rocket-animation-split');
dialog.bindAdjustment('team-rocket-horizontal-sparkle-position');
dialog.bindAdjustment('team-rocket-vertical-sparkle-position');
dialog.bindSwitch('team-rocket-window-rotation');
dialog.bindAdjustment('team-rocket-sparkle-rot');
dialog.bindAdjustment('team-rocket-sparkle-size');
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB