Compare commits

...

34 Commits

Author SHA1 Message Date
Simon Schneegans 14cfa0818f 🪲 Fix effect profile loading
Deploy / Bundle GNOME Shell Extension (push) Has been cancelled
Deploy / Bundle KWin Effect (push) Has been cancelled
2023-04-06 20:32:45 +02:00
Simon Schneegans 4814730400 🎉 Bump version number 2023-04-06 20:20:59 +02:00
Simon Schneegans 91f7f8f1b5 📝 Fix type 2023-04-06 20:18:30 +02:00
Simon Schneegans fa5baa4301 Merge branch 'main' of github.com:Schneegans/Burn-My-Windows 2023-04-06 20:17:58 +02:00
Simon Schneegans c80707ee1f 📝 Set release date 2023-04-06 20:17:35 +02:00
Simon Schneegans 343eddbfcb 🔀 Merge pull request #321 from Schneegans/feature/no-hardware-acceleration 2023-04-05 09:44:25 +02:00
Simon Schneegans 04e0999d5b 📝 Add changelog entry [no-ci] 2023-04-05 08:36:12 +02:00
Simon Schneegans 48c8bcec3a 🔧 Fix overview animation on GNOME 3.38 2023-04-05 08:08:03 +02:00
Simon Schneegans 38d12453b6 🪲 Prevent a warning 2023-04-05 08:02:44 +02:00
Simon Schneegans b48e92f8c1 🔧 Do not attempt to scale overview clones on GNOME 3.36 2023-04-05 08:02:13 +02:00
Simon Schneegans 14d482e16a 🪲 Properly scale windows in the overview 2023-04-05 07:51:27 +02:00
Simon Schneegans e87340d7ad 🔧 Perform tests also on Fedora 38 and rawhide 2023-04-04 19:27:37 +02:00
Simon Schneegans ee93c06304 🔧 Add new GS versions to test suite [generate-references] 2023-04-04 13:29:37 +02:00
Simon Schneegans 1e06ed6503 🪲 Fix compatibility with GNOME 3.36 2023-04-04 11:44:15 +02:00
Simon Schneegans 0fd3f0f62f 🔧 Do not depend on Clutter.Transitions 2023-04-04 11:27:01 +02:00
Simon Schneegans 42d69afa89 🔀 Merge pull request #320 from Schneegans/feature/gles 2023-04-03 16:49:56 +02:00
Simon Schneegans 1b57d1e015 Merge branch 'main' into feature/gles 2023-04-02 20:52:26 +02:00
Simon Schneegans 658ca6415a 📝 Add changelog entry 2023-04-02 20:49:11 +02:00
Simon Schneegans 5ffee2c817 ✨ Apply clang-format 2023-04-02 20:46:33 +02:00
Simon Schneegans 5aad16c8bf 🔧 Make shaders compatible with GLES 2023-04-02 20:42:38 +02:00
Simon Schneegans b623a5923f 🔧 Revert tests on GNOME 44 for now 2023-04-01 22:00:24 +02:00
Simon Schneegans e06245bdca 🔧 Update test scripts for Fedora Rawhide 2023-04-01 22:00:02 +02:00
Simon Schneegans e5907292ed 🔧 Execute tests on more GNOME versions 2023-04-01 21:47:19 +02:00
Simon Schneegans 70bfbac890 💞 Update sponsors 2023-03-30 20:44:43 +02:00
Simon Schneegans d010c60143 🔀 Merge pull request #319 from Schneegans/feature/fix-tutorial 2023-03-29 20:47:04 +02:00
CakesTwix 649a1cce73 🌐 Translated using Weblate (Ukrainian) 2023-03-29 20:40:23 +02:00
Simon Schneegans bccdc0253d 📝 Add changelog entries 2023-03-29 20:25:53 +02:00
Simon Schneegans b7429bada3 🔧 Allow effects with no settings 2023-03-29 20:24:28 +02:00
Simon Schneegans 23a85798ca 📝 Fix tutorial 2023-03-29 20:23:40 +02:00
Philip Goto e051551747 🌐 Translated using Weblate (Dutch) 2023-03-17 13:13:42 +01:00
Simon Schneegans 6eae8d1aa3 🔧 Add Ko-fi 2023-03-10 12:59:49 +01:00
Simon Schneegans 6d34936375 📝 Add KoFi donation method 2023-03-09 13:46:59 +01:00
Jose Riha 46c8eaf417 🌐 Translated using Weblate (Slovak) 2023-03-07 13:26:33 +01:00
WaldiS 55b491bb36 🌐 Translated using Weblate (Polish) 2023-03-05 19:19:21 +01:00
189 changed files with 614 additions and 581 deletions
+1 -1
View File
@@ -6,7 +6,7 @@
github: schneegans github: schneegans
patreon: # Replace with a single Patreon username patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username ko_fi: schneegans
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Schneegans liberapay: # Schneegans
+2
View File
@@ -116,6 +116,8 @@ jobs:
- '35' - '35'
- '36' - '36'
- '37' - '37'
- '38'
- 'rawhide'
session: session:
- 'gnome-xsession' - 'gnome-xsession'
- 'gnome-wayland-nested' - 'gnome-wayland-nested'
+2 -2
View File
@@ -48,7 +48,7 @@ pot: $(JS_FILES) $(UI_FILES)
# This runs several tests in containerized versions of GNOME Shell. # This runs several tests in containerized versions of GNOME Shell.
test: test:
@ for version in 32 33 34 35 36 37 ; do \ @ for version in 32 33 34 35 36 37 38 "rawhide" ; do \
for session in "gnome-xsession" "gnome-wayland-nested" ; do \ for session in "gnome-xsession" "gnome-wayland-nested" ; do \
echo ; \ echo ; \
echo "Running Tests on Fedora $$version ($$session)." ; \ echo "Running Tests on Fedora $$version ($$session)." ; \
@@ -59,7 +59,7 @@ test:
# This re-generates all reference images required by the tests. # This re-generates all reference images required by the tests.
references: references:
@ for version in 32 33 34 35 36 37 ; do \ @ for version in 32 33 34 35 36 37 38 "rawhide" ; do \
for session in "gnome-xsession" "gnome-wayland-nested" ; do \ for session in "gnome-xsession" "gnome-wayland-nested" ; do \
echo ; \ echo ; \
echo "Generating References for Fedora $$version ($$session)." ; \ echo "Generating References for Fedora $$version ($$session)." ; \
+3 -2
View File
@@ -89,8 +89,8 @@ While [coding new features](docs/how-to-create-new-effects.md) or [translating t
<h3 align="center">🥇 Current Gold Sponsors</h3> <h3 align="center">🥇 Current Gold Sponsors</h3>
<p align="center"> <p align="center">
<a href="https://github.com/D3vil0p3r">D3vil0p3r</a><br>
Maxence Sebald<br> Maxence Sebald<br>
<a href="https://github.com/dennis1248">Dennis ten Hoove</a><br>
</p> </p>
<h3 align="center">🥈 Current Silver Sponsors</h3> <h3 align="center">🥈 Current Silver Sponsors</h3>
@@ -101,13 +101,14 @@ While [coding new features](docs/how-to-create-new-effects.md) or [translating t
<h3 align="center">🥉 Current Bronze Sponsors</h3> <h3 align="center">🥉 Current Bronze Sponsors</h3>
<p align="center"> <p align="center">
<a href='https://github.com/SubOptimal'>@SubOptimal</a><br>
<a href='https://github.com/vlazic'>@vlazic</a><br> <a href='https://github.com/vlazic'>@vlazic</a><br>
<!-- <a href="https://github.com/sponsors/Schneegans">Become the first!</a><br> --> <!-- <a href="https://github.com/sponsors/Schneegans">Become the first!</a><br> -->
</p> </p>
<h3 align="center">🏅 Previous Sponsors and One-Time Donators</h3> <h3 align="center">🏅 Previous Sponsors and One-Time Donators</h3>
<p align="center"> <p align="center">
<a href="https://github.com/D3vil0p3r">D3vil0p3r</a><br> <a href="https://github.com/dennis1248">Dennis ten Hoove</a><br>
<a href="https://github.com/MRR-dev">@MRR-dev</a><br> <a href="https://github.com/MRR-dev">@MRR-dev</a><br>
<a href='https://github.com/AngelBrielez'>Angel Brielez</a> <a href='https://github.com/AngelBrielez'>Angel Brielez</a>
<a href='https://github.com/taconomix'>@taconomix</a><br> <a href='https://github.com/taconomix'>@taconomix</a><br>
+16
View File
@@ -5,6 +5,22 @@ SPDX-License-Identifier: CC-BY-4.0
# Changelog of the Burn-My-Windows Extension # Changelog of the Burn-My-Windows Extension
## [Burn My Windows 28](https://github.com/schneegans/Burn-My-Windows/releases/tag/v28)
**Release Date:** 2023-04-06
#### Enhancements
* **New donation method: Ko-fi**. Follow me on Ko-fi to get the latest updates regarding my extensions: https://ko-fi.com/schneegans!
* All shaders are now compatible with OpenGL ES. Due to [this change in Mutter](https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2672) the number of devices using OpenGL ES has significantly increased since GNOME 44. This change makes Burn-My-Windows working on those devices.
* It is now possible to create effects which do not have any settings at all.
#### Bug Fixes
* [This change in GNOME Shell](https://gitlab.gnome.org/GNOME/gnome-shell/-/commit/7bd98f3f5fb7e0d1220646b8a4ee7073534a8e8f) prevented Burn-My-Windows from working if no hardware-acceleration was available on GNOME 44, including the Docker containers used for CI testing. Some severe refactoring was necessary to fix this issue.
* The tutorial on how to create new effects has been updated and should work again.
* Fixed an issue which caused effect-profile loading to fail whenever Burn-My-Windows was updated.
## [Burn My Windows 27](https://github.com/schneegans/Burn-My-Windows/releases/tag/v27) ## [Burn My Windows 27](https://github.com/schneegans/Burn-My-Windows/releases/tag/v27)
**Release Date:** 2023-03-01 **Release Date:** 2023-03-01
+154 -159
View File
@@ -49,7 +49,7 @@ You will have to ...
For enabling the new effect, the boolean settings keys `simple-fade-enable-effect` and `simple-fade-animation-time` are required. For enabling the new effect, the boolean settings keys `simple-fade-enable-effect` and `simple-fade-animation-time` are required.
In this example, we also add a floating point value for storing another property of the effect - we will use them later in the tutorial. In this example, we also add a floating point value for storing another property of the effect - we will use them later in the tutorial.
Just copy the XML code below to the file [`schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml`](../schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml). Just copy the XML code below to the file [`schemas/org.gnome.shell.extensions.burn-my-windows-profile.gschema.xml`](../schemas/org.gnome.shell.extensions.burn-my-windows-profile.gschema.xml).
Just remember to replace `simple-fade` with your custom name! Just remember to replace `simple-fade` with your custom name!
```xml ```xml
@@ -86,6 +86,20 @@ Please study this code carefully, all of it is explained with inline comments.
<summary>Expand this to show the GLSL code.</summary> <summary>Expand this to show the GLSL code.</summary>
```glsl ```glsl
//////////////////////////////////////////////////////////////////////////////////////////
// ) ( //
// ( /( ( ( ) ( ( ( ( )\ ) ( ( //
// )\()) ))\ )( ( ( )\ ) )\))( )\ ( (()/( ( )\))( ( //
// ((_)\ /((_|()\ )\ ) )\ '(()/( ((_)()((_) )\ ) ((_)))\((_)()\ )\ //
// | |(_|_))( ((_)_(_/( _((_)) )(_)) _(()((_|_)_(_/( _| |((_)(()((_|(_) //
// | '_ \ || | '_| ' \)) | ' \()| || | \ V V / | ' \)) _` / _ \ V V (_-< //
// |_.__/\_,_|_| |_||_| |_|_|_| \_, | \_/\_/|_|_||_|\__,_\___/\_/\_//__/ //
// |__/ //
//////////////////////////////////////////////////////////////////////////////////////////
// SPDX-FileCopyrightText: Your Name <your@email.com>
// SPDX-License-Identifier: GPL-3.0-or-later
// The content from common.glsl is automatically prepended to each shader effect. This // The content from common.glsl is automatically prepended to each shader effect. This
// provides the standard input: // provides the standard input:
@@ -214,7 +228,6 @@ var SimpleFade = class {
// binds all user interface elements to the respective settings keys of the profile. // binds all user interface elements to the respective settings keys of the profile.
bindPreferences(dialog) { bindPreferences(dialog) {
// Empty for now... Code is added here later in the tutorial! // Empty for now... Code is added here later in the tutorial!
return null;
} }
// ---------------------------------------------------------------- API for extension.js // ---------------------------------------------------------------- API for extension.js
@@ -265,7 +278,8 @@ There should be two sliders in this example: The animation duration and the widt
If your effect supports GNOME Shell 3.3x _and_ GNOME Shell 40+, you will have to provide three `*.ui` files for this. If your effect supports GNOME Shell 3.3x _and_ GNOME Shell 40+, you will have to provide three `*.ui` files for this.
This is because starting with GNOME Shell 40, the preference dialog uses GTK4, before it used to use GTK3. This is because starting with GNOME Shell 40, the preference dialog uses GTK4, before it used to use GTK3.
Starting with GNOME Shell 42, it uses `libadwaita` which requires different UI files again. Starting with GNOME Shell 42, it uses `libadwaita` which requires different UI files again.
We will load the respective file in the `bindPreferences()` method of your new effect class.
_:information_source: If you do not have the means to test your effect on different versions of GNOME, feel free to submit a pull request for one GNOME version only, I may then port your effect to other GNOME versions!_
Just save the code below to `resources/ui/gtk3/simple-fade.ui`, `resources/ui/gtk4/simple-fade.ui`, and `resources/ui/adw/simple-fade.ui` respectively. Just save the code below to `resources/ui/gtk3/simple-fade.ui`, `resources/ui/gtk4/simple-fade.ui`, and `resources/ui/adw/simple-fade.ui` respectively.
Remember to replace any occurrence of `simple-fade` with your effect's nick-name! Remember to replace any occurrence of `simple-fade` with your effect's nick-name!
@@ -281,7 +295,7 @@ SPDX-FileCopyrightText: Your Name <your@email.com>
SPDX-License-Identifier: GPL-3.0-or-later SPDX-License-Identifier: GPL-3.0-or-later
--> -->
<interface> <interface domain="burn-my-windows">
<object class="GtkAdjustment" id="simple-fade-animation-time"> <object class="GtkAdjustment" id="simple-fade-animation-time">
<property name="upper">5000</property> <property name="upper">5000</property>
@@ -297,106 +311,97 @@ SPDX-License-Identifier: GPL-3.0-or-later
<property name="page-increment">0.1</property> <property name="page-increment">0.1</property>
</object> </object>
<object class="GtkBox" id="simple-fade-prefs"> <object class="GtkRevealer" id="simple-fade-prefs">
<property name="orientation">vertical</property>
<child> <child>
<object class="GtkFrame"> <object class="GtkListBox">
<property name="selection-mode">none</property>
<child> <child>
<object class="GtkListBox"> <object class="GtkListBoxRow">
<property name="selection-mode">none</property> <property name="activatable">0</property>
<style>
<class name="rich-list" />
</style>
<child> <child>
<object class="GtkListBoxRow"> <object class="GtkBox">
<property name="activatable">0</property>
<child> <child>
<object class="GtkBox"> <object class="GtkLabel">
<property name="label" translatable="yes">Animation Time [ms]</property>
<property name="xalign">0</property>
<property name="halign">start</property>
<property name="valign">center</property>
<property name="hexpand">1</property>
</object>
</child>
<child>
<object class="GtkScale">
<property name="halign">end</property>
<property name="valign">center</property>
<property name="draw-value">1</property>
<property name="digits">0</property>
<property name="value-pos">left</property>
<property name="width-request">300</property>
<property name="adjustment">simple-fade-animation-time</property>
</object>
</child>
<child>
<object class="GtkButton" id="reset-simple-fade-animation-time">
<child> <child>
<object class="GtkLabel"> <object class="GtkImage">
<property name="label" translatable="yes">Animation Time [ms]</property> <property name="icon-name">edit-clear-symbolic</property>
<property name="xalign">0</property> <property name="icon-size">1</property>
<property name="halign">start</property>
<property name="valign">center</property>
<property name="hexpand">1</property>
</object>
</child>
<child>
<object class="GtkScale">
<property name="halign">end</property>
<property name="valign">center</property>
<property name="draw-value">1</property>
<property name="digits">0</property>
<property name="value-pos">left</property>
<property name="width-request">300</property>
<property name="adjustment">simple-fade-animation-time</property>
</object>
</child>
<child>
<object class="GtkButton" id="reset-simple-fade-animation-time">
<child>
<object class="GtkImage">
<property name="icon-name">edit-clear-symbolic</property>
<property name="icon-size">1</property>
</object>
</child>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
<style>
<class name="flat" />
</style>
</object> </object>
</child> </child>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
<style>
<class name="flat" />
</style>
</object> </object>
</child> </child>
</object> </object>
</child> </child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="activatable">0</property>
<child> <child>
<object class="GtkListBoxRow"> <object class="GtkBox">
<property name="activatable">0</property>
<child> <child>
<object class="GtkBox"> <object class="GtkLabel">
<property name="label" translatable="yes">Fade Width</property>
<property name="xalign">0</property>
<property name="halign">start</property>
<property name="valign">center</property>
<property name="hexpand">1</property>
</object>
</child>
<child>
<object class="GtkScale">
<property name="halign">end</property>
<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">simple-fade-width</property>
</object>
</child>
<child>
<object class="GtkButton" id="reset-simple-fade-width">
<child> <child>
<object class="GtkLabel"> <object class="GtkImage">
<property name="label" translatable="yes">Fade Width</property> <property name="icon-name">edit-clear-symbolic</property>
<property name="xalign">0</property> <property name="icon-size">1</property>
<property name="halign">start</property>
<property name="valign">center</property>
<property name="hexpand">1</property>
</object>
</child>
<child>
<object class="GtkScale">
<property name="halign">end</property>
<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">simple-fade-width</property>
</object>
</child>
<child>
<object class="GtkButton" id="reset-simple-fade-width">
<child>
<object class="GtkImage">
<property name="icon-name">edit-clear-symbolic</property>
<property name="icon-size">1</property>
</object>
</child>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
<style>
<class name="flat" />
</style>
</object> </object>
</child> </child>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
<style>
<class name="flat" />
</style>
</object> </object>
</child> </child>
</object> </object>
</child> </child>
</object> </object>
</child> </child>
</object> </object>
@@ -423,7 +428,7 @@ SPDX-FileCopyrightText: Your Name <your@email.com>
SPDX-License-Identifier: GPL-3.0-or-later SPDX-License-Identifier: GPL-3.0-or-later
--> -->
<interface> <interface domain="burn-my-windows">
<object class="GtkAdjustment" id="simple-fade-animation-time"> <object class="GtkAdjustment" id="simple-fade-animation-time">
<property name="upper">5000</property> <property name="upper">5000</property>
@@ -439,97 +444,87 @@ SPDX-License-Identifier: GPL-3.0-or-later
<property name="page-increment">0.1</property> <property name="page-increment">0.1</property>
</object> </object>
<object class="GtkBox" id="simple-fade-prefs"> <object class="GtkRevealer" id="simple-fade-prefs">
<property name="orientation">vertical</property>
<child> <child>
<object class="GtkFrame"> <object class="GtkListBox">
<property name="selection-mode">none</property>
<child> <child>
<object class="GtkListBox"> <object class="GtkListBoxRow">
<property name="selection-mode">none</property> <property name="activatable">0</property>
<property name="show-separators">1</property>
<style>
<class name="rich-list" />
</style>
<child> <child>
<object class="GtkListBoxRow"> <object class="GtkBox">
<property name="activatable">0</property>
<child> <child>
<object class="GtkBox"> <object class="GtkLabel">
<child> <property name="label" translatable="yes">Animation Time [ms]</property>
<object class="GtkLabel"> <property name="xalign">0</property>
<property name="label" translatable="yes">Animation Time [ms]</property> <property name="halign">start</property>
<property name="xalign">0</property> <property name="valign">center</property>
<property name="halign">start</property> <property name="hexpand">1</property>
<property name="valign">center</property> </object>
<property name="hexpand">1</property> </child>
</object> <child>
</child> <object class="GtkScale">
<child> <property name="halign">end</property>
<object class="GtkScale"> <property name="valign">center</property>
<property name="halign">end</property> <property name="draw-value">1</property>
<property name="valign">center</property> <property name="digits">0</property>
<property name="draw-value">1</property> <property name="value-pos">left</property>
<property name="digits">0</property> <property name="width-request">300</property>
<property name="value-pos">left</property> <property name="adjustment">simple-fade-animation-time</property>
<property name="width-request">300</property> </object>
<property name="adjustment">simple-fade-animation-time</property> </child>
</object> <child>
</child> <object class="GtkButton" id="reset-simple-fade-animation-time">
<child> <property name="icon-name">edit-clear-symbolic</property>
<object class="GtkButton" id="reset-simple-fade-animation-time"> <property name="tooltip-text" translatable="yes">Reset to Default Value</property>
<property name="icon-name">edit-clear-symbolic</property> <style>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property> <class name="flat" />
<style> </style>
<class name="flat" />
</style>
</object>
</child>
</object> </object>
</child> </child>
</object> </object>
</child> </child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="activatable">0</property>
<child> <child>
<object class="GtkListBoxRow"> <object class="GtkBox">
<property name="activatable">0</property>
<child> <child>
<object class="GtkBox"> <object class="GtkLabel">
<child> <property name="label" translatable="yes">Fade Width</property>
<object class="GtkLabel"> <property name="xalign">0</property>
<property name="label" translatable="yes">Fade Width</property> <property name="halign">start</property>
<property name="xalign">0</property> <property name="valign">center</property>
<property name="halign">start</property> <property name="hexpand">1</property>
<property name="valign">center</property> </object>
<property name="hexpand">1</property> </child>
</object> <child>
</child> <object class="GtkScale">
<child> <property name="halign">end</property>
<object class="GtkScale"> <property name="valign">center</property>
<property name="halign">end</property> <property name="draw-value">1</property>
<property name="valign">center</property> <property name="digits">2</property>
<property name="draw-value">1</property> <property name="value-pos">left</property>
<property name="digits">2</property> <property name="width-request">300</property>
<property name="value-pos">left</property> <property name="adjustment">simple-fade-width</property>
<property name="width-request">300</property> </object>
<property name="adjustment">simple-fade-width</property> </child>
</object> <child>
</child> <object class="GtkButton" id="reset-simple-fade-width">
<child> <property name="icon-name">edit-clear-symbolic</property>
<object class="GtkButton" id="reset-simple-fade-width"> <property name="tooltip-text" translatable="yes">Reset to Default Value</property>
<property name="icon-name">edit-clear-symbolic</property> <style>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property> <class name="flat" />
<style> </style>
<class name="flat" />
</style>
</object>
</child>
</object> </object>
</child> </child>
</object> </object>
</child> </child>
</object> </object>
</child> </child>
</object> </object>
@@ -570,7 +565,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
<property name="page-increment">0.1</property> <property name="page-increment">0.1</property>
</object> </object>
<object class="AdwActionRow" id="simple-fade-prefs"> <object class="AdwExpanderRow" id="simple-fade-prefs">
<child> <child>
<object class="AdwActionRow"> <object class="AdwActionRow">
+159 -223
View File
@@ -94,7 +94,10 @@ class Extension {
this._loadProfiles(); this._loadProfiles();
this._settings.set_int('last-extension-version', Me.metadata.version); this._settings.set_int('last-extension-version', Me.metadata.version);
}); });
} else {
this._loadProfiles();
} }
} else { } else {
this._loadProfiles(); this._loadProfiles();
} }
@@ -133,90 +136,113 @@ class Extension {
} }
// We will monkey-patch these methods. Let's store the original ones. // We will monkey-patch these methods. Let's store the original ones.
this._origShouldAnimateActor = WindowManager.prototype._shouldAnimateActor;
this._origWaitForOverviewToHide = WindowManager.prototype._waitForOverviewToHide;
this._origAddWindowClone = Workspace.prototype._addWindowClone; this._origAddWindowClone = Workspace.prototype._addWindowClone;
this._origWindowRemoved = Workspace.prototype._windowRemoved; this._origWindowRemoved = Workspace.prototype._windowRemoved;
this._origDoRemoveWindow = Workspace.prototype._doRemoveWindow; this._origDoRemoveWindow = Workspace.prototype._doRemoveWindow;
this._origShouldAnimateActor = WindowManager.prototype._shouldAnimateActor;
this._origWaitForOverviewToHide = WindowManager.prototype._waitForOverviewToHide;
this._origDestroyWindowDone = WindowManager.prototype._destroyWindowDone;
// ------------------------------------------------ patching the window-open animation // ------------------------------- patching the window animations outside the overview
// Here we add an effect to the window-open animation. This is done whenever a new // If a window is created, the transitions are set up in the async _mapWindow() of the
// window is created. Usually, there is no real window animation for opening windows
// in the overview - only the window's clone is animated - but thanks to the hacks
// below, we can show the real animations in the overview.
// If a window is created the transitions are set up in the async _mapWindow of the
// WindowManager: // WindowManager:
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/windowManager.js#L1478 // https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/windowManager.js#L1487
// AFAIK, overriding this method is not possible as it's called by a signal to // AFAIK, overriding this method is not possible as it's called by a signal to which
// which it is bound via the bind() method. To tweak the async transition // it is bound via the bind() method. To tweak the async transition anyways, we
// anyways, we override the actors ease() method once - the next time it will be // override the actors ease() method once. We do this in _shouldAnimateActor() which
// called by the _mapWindow(), we will intercept it! // is called right before the ease() in _mapWindow:
this._windowCreatedConnection = // https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/windowManager.js#L1472
global.display.connect('window-created', (d, metaWin) => {
let actor = metaWin.get_compositor_private();
const orig = actor.ease; // The same trick is done for the window-close animation. This is set up in a similar
actor.ease = function(...params) { // fashion in the WindowManager's _destroyWindow():
orig.apply(actor, params); // https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/windowManager.js#L1558.
actor.ease = orig; // Here is _shouldAnimateActor() also called right before. So we use it again to
// monkey-patch the window actor's ease() once.
// There are cases where the ease() is called prior to mapping the actor. If // We override WindowManager._shouldAnimateActor() also for another purpose: Usually,
// the actor is not yet mapped, we defer the effect creation. // it returns false when we are in the overview. This prevents the window animations
if (actor.mapped) { // there. To enable animations in the overview, we check inside the method whether it
extensionThis._setupEffect(actor, true); // was called by either _mapWindow or _destroyWindow. If so, we return true. Let's see
} else { // if this breaks stuff left and right...
const connectionID = actor.connect('notify::mapped', () => { // https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/windowManager.js#L1120
extensionThis._setupEffect(actor, true); WindowManager.prototype._shouldAnimateActor = function(actor, types) {
actor.disconnect(connectionID); const caller = (new Error()).stack.split('\n')[1];
}); const forClosing = caller.includes('_destroyWindow@');
} const forOpening = caller.includes('_mapWindow@');
};
// This is also called in other cases, for instance when minimizing windows. We are
// only interested in window opening and window closing for now.
if (forClosing || forOpening) {
// If there is an applicable effect profile, we intercept the ease() method to
// setup our own effect.
const chosenEffect = extensionThis._chooseEffect(actor, forOpening);
if (chosenEffect) {
// Store the original ease() method of the actor.
const orig = actor.ease;
// Now intercept the next call to actor.ease().
actor.ease = function(...params) {
// Quickly restore the original behavior. Nobody noticed, I guess :D
actor.ease = orig;
// And then create the effect!
extensionThis._setupEffect(actor, forOpening, chosenEffect.effect,
chosenEffect.profile);
};
return true;
}
}
return extensionThis._origShouldAnimateActor.apply(this, [actor, types]);
};
// Make sure to remove any effects if requested by the window manager.
this._killEffectsSignal =
global.window_manager.connect('kill-window-effects', (wm, actor) => {
const shader = actor.get_effect('burn-my-windows-effect');
if (shader) {
shader.endAnimation();
}
}); });
// --------------------------------------------- fix window animations in the overview
// Some of the effects require that the window's actor is enlarged to provide a bigger // Some of the effects require that the window's actor is enlarged to provide a bigger
// canvas to draw the effects. Outside the overview we can simply increase the scale // canvas to draw the effects. Outside the overview we can simply increase the scale
// of the actor. However, if we are in the overview, we have to enlarge the clone of // of the actor. However, if we are in the overview, we have to enlarge the clone of
// the window as well. // the window as well.
Workspace.prototype._addWindowClone = function(...params) { Workspace.prototype._addWindowClone = function(...params) {
const result = extensionThis._origAddWindowClone.apply(this, params); const clone = extensionThis._origAddWindowClone.apply(this, params);
// The parameters of this method changed a bit through the versions... // The parameters of this method changed a bit through the versions...
let realWindow, clone; let realWindow, container;
if (utils.shellVersionIs(3, 36)) { if (utils.shellVersionIs(3, 36)) {
clone = result[0]; container = clone[0];
realWindow = clone.realWindow; realWindow = container.realWindow;
} else if (utils.shellVersionIs(3, 38)) { } else if (utils.shellVersionIs(3, 38)) {
clone = result._windowContainer; container = clone._windowContainer;
realWindow = params[0].get_compositor_private(); realWindow = params[0].get_compositor_private();
} else { } else {
clone = result.window_container; container = clone.window_container;
realWindow = params[0].get_compositor_private(); realWindow = params[0].get_compositor_private();
} }
// Syncing the real window's scale with the scale of its clone only works on GNOME // Store the overview clone as temporary members of the real window actor. When we
// Shell 3.38+. So effects cannot scale windows in the overview of GNOME 3.36... // set up the effect, we will check for the existence of these and enlarge the clone
if (utils.shellVersionIsAtLeast(3, 38)) { // as needed.
const xID = realWindow.connect('notify::scale-x', () => { realWindow._bmwOverviewClone = clone;
if (realWindow.scale_x > 0 && clone.allocation.get_size()[0] > 0) { realWindow._bmwOverviewCloneContainer = container;
clone.scale_x = realWindow.scale_x;
}
});
const yID = realWindow.connect('notify::scale-y', () => { // Remove the temporary members again once the clone is deleted.
if (realWindow.scale_y > 0 && clone.allocation.get_size()[1] > 0) { container.connect('destroy', () => {
clone.scale_y = realWindow.scale_y; delete realWindow._bmwOverviewClone;
} delete realWindow._bmwOverviewCloneContainer;
}); });
clone.connect('destroy', () => {
realWindow.disconnect(xID);
realWindow.disconnect(yID);
});
}
// This is actually needed for the window-close animation on GNOME Shell 3.36. // This is actually needed for the window-close animation on GNOME Shell 3.36.
// On GNOME 3.36, the window clone's 'destroy' handler only calls _removeWindowClone // On GNOME 3.36, the window clone's 'destroy' handler only calls _removeWindowClone
@@ -225,10 +251,10 @@ class Extension {
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/gnome-3-36/js/ui/workspace.js#L1877 // https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/gnome-3-36/js/ui/workspace.js#L1877
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/workspace.js#L1363 // https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/workspace.js#L1363
if (utils.shellVersionIs(3, 36)) { if (utils.shellVersionIs(3, 36)) {
clone.connect('destroy', () => this._doRemoveWindow(clone.metaWindow)); container.connect('destroy', () => this._doRemoveWindow(container.metaWindow));
} }
return result; return clone;
}; };
// Usually, windows are faded in after the overview is completely hidden. We enable // Usually, windows are faded in after the overview is completely hidden. We enable
@@ -237,61 +263,11 @@ class Extension {
return Promise.resolve(); return Promise.resolve();
}; };
// Here comes the ULTRA-HACK: The method below is called (amongst others) by the
// _destroyWindow and _mapWindow methods of the WindowManager. Usually, it returns
// false when we are in the overview. This prevents the window animations. As we
// cannot monkey-patch the _destroyWindow or _mapWindow methods themselves, we check
// inside the method below whether it was called by either of those. If so, we return
// true. Let's see if this breaks stuff left and right...
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/windowManager.js#L1124
WindowManager.prototype._shouldAnimateActor = function(...params) {
const caller = (new Error()).stack.split('\n')[1];
if (caller.includes('_destroyWindow@') || caller.includes('_mapWindow@')) {
return true;
}
return extensionThis._origShouldAnimateActor.apply(this, params);
};
// ----------------------------------------------- patching the window-close animation
// The signal handler below and the following patch are all which is required outside
// of the overview. All other hacks further below are just required to defer the
// window-hiding in the overview until the effect is finished.
// The close animation is set up in WindowManager's _destroyWindow:
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/windowManager.js#L1554
// As we cannot monkey-patch the _destroyWindow itself, we connect to the 'destroy'
// signal of the window manager and tweak the animation to our needs.
this._destroyConnection = global.window_manager.connect('destroy', (wm, actor) => {
this._setupEffect(actor, false);
});
// Once the window-close animation is is finished, the window manager's
// _destroyWindowDone is called. We use this to free the effect so that it can be
// re-used in future.
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/windowManager.js#L1564
WindowManager.prototype._destroyWindowDone = function(shellwm, actor) {
if (this._destroying.has(actor)) {
const shader = actor.get_effect('burn-my-windows-effect');
if (shader) {
actor.remove_effect(shader);
shader.endAnimation();
shader.returnToFactory();
}
}
// Call the original method.
extensionThis._origDestroyWindowDone.apply(this, [shellwm, actor]);
};
// These three method overrides are mega-hacky! Usually, windows are not faded when // These three method overrides are mega-hacky! Usually, windows are not faded when
// closed from the overview (why?). With these overrides we make sure that they are // closed from the overview (why?). With these overrides we make sure that they are
// actually faded out. To do this, _windowRemoved and _doRemoveWindow now check // actually faded out. To do this, _windowRemoved and _doRemoveWindow now check
// whether there is a transition ongoing (via extensionThis._shouldDestroy). If that's // whether there is a transition ongoing (via extensionThis._shouldDestroy). If that's
// the case, these methods do nothing. Are the actors removed in the end? I hope so. // the case, these methods do nothing.
// The _destroyWindow of the WindowManager sets the transitions up and should take
// care of removing the actors at the end of the transitions.
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/workspace.js#L1258 // https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/workspace.js#L1258
Workspace.prototype._windowRemoved = function(ws, metaWin) { Workspace.prototype._windowRemoved = function(ws, metaWin) {
if (extensionThis._shouldDestroy(this, metaWin)) { if (extensionThis._shouldDestroy(this, metaWin)) {
@@ -369,16 +345,14 @@ class Extension {
// Disable the window-picking D-Bus API. // Disable the window-picking D-Bus API.
this._windowPicker.unexport(); this._windowPicker.unexport();
// Restore the original window-open and window-close animations. global.window_manager.disconnect(this._killEffectsSignal);
global.window_manager.disconnect(this._destroyConnection);
global.display.disconnect(this._windowCreatedConnection);
// Restore the original window-open and window-close animations.
Workspace.prototype._addWindowClone = this._origAddWindowClone; Workspace.prototype._addWindowClone = this._origAddWindowClone;
Workspace.prototype._windowRemoved = this._origWindowRemoved; Workspace.prototype._windowRemoved = this._origWindowRemoved;
Workspace.prototype._doRemoveWindow = this._origDoRemoveWindow; Workspace.prototype._doRemoveWindow = this._origDoRemoveWindow;
WindowManager.prototype._shouldAnimateActor = this._origShouldAnimateActor; WindowManager.prototype._shouldAnimateActor = this._origShouldAnimateActor;
WindowManager.prototype._waitForOverviewToHide = this._origWaitForOverviewToHide; WindowManager.prototype._waitForOverviewToHide = this._origWaitForOverviewToHide;
WindowManager.prototype._destroyWindowDone = this._origDestroyWindowDone;
if (WindowPreview) { if (WindowPreview) {
WindowPreview.prototype._deleteAll = this._origDeleteAll; WindowPreview.prototype._deleteAll = this._origDeleteAll;
@@ -427,11 +401,10 @@ class Extension {
this._profiles.sort((a, b) => b.priority - a.priority); this._profiles.sort((a, b) => b.priority - a.priority);
} }
// This method adds one of the configured effects to the given actor. First, a profile // This method selects an effect profile matching the current circumstances. Then a
// matching the current circumstances is chosen. Then a random effect from its enabled // random effect from its enabled effects will be selected. It returns null if no
// effects will be selected. This will also tweak the transitions of the given actor // profile is currently applicable.
// (e.g. scale it up if required). _chooseEffect(actor, forOpening) {
_setupEffect(actor, forOpening) {
// For now, we only add effects to normal windows and dialog windows. // For now, we only add effects to normal windows and dialog windows.
const isNormalWindow = actor.meta_window.window_type == Meta.WindowType.NORMAL; const isNormalWindow = actor.meta_window.window_type == Meta.WindowType.NORMAL;
@@ -440,17 +413,7 @@ class Extension {
actor.meta_window.window_type == Meta.WindowType.DIALOG; actor.meta_window.window_type == Meta.WindowType.DIALOG;
if (!isNormalWindow && !isDialogWindow) { if (!isNormalWindow && !isDialogWindow) {
return; return null;
}
// There is the weird case where an animation is already ongoing. This happens when a
// window is closed which has been created before the session was started (e.g. when
// GNOME Shell has been restarted in the meantime).
const oldShader = actor.get_effect('burn-my-windows-effect');
if (oldShader) {
actor.remove_effect(oldShader);
oldShader.endAnimation();
oldShader.returnToFactory();
} }
// ----------------------------------------------- choose a profile and then an effect // ----------------------------------------------- choose a profile and then an effect
@@ -556,11 +519,23 @@ class Extension {
// If nothing was enabled, we have to do nothing :) // If nothing was enabled, we have to do nothing :)
if (!effect || !profile) { if (!effect || !profile) {
return; return null;
} }
return {effect: effect, profile: profile};
}
// ----------------------------------------------------------- tweak actor transitions // This method adds the given effect using the settings from the given profile to the
// given actor.
_setupEffect(actor, forOpening, effect, profile) {
// There is the weird case where an animation is already ongoing. This happens when a
// window is closed which has been created before the session was started (e.g. when
// GNOME Shell has been restarted in the meantime).
const oldShader = actor.get_effect('burn-my-windows-effect');
if (oldShader) {
oldShader.endAnimation();
}
// If we are currently performing integration test, all animations are set to a fixed // If we are currently performing integration test, all animations are set to a fixed
// duration and show a fixed frame from the middle of the animation. // duration and show a fixed frame from the middle of the animation.
@@ -572,97 +547,60 @@ class Extension {
// actorScale. // actorScale.
const actorScale = effect.getActorScale(profile.settings, forOpening, actor); const actorScale = effect.getActorScale(profile.settings, forOpening, actor);
// All scaling is relative to the window's center.
actor.set_pivot_point(0.5, 0.5);
actor.opacity = 255;
actor.scale_x = actorScale.x;
actor.scale_y = actorScale.y;
// If we are in the overview, we have to enlarge the window's clone as well. We also
// disable the clone's overlay (e.g. its icon, name, and close button) during the
// animation.
if (actor._bmwOverviewClone && utils.shellVersionIsAtLeast(3, 38)) {
actor._bmwOverviewClone.overlayEnabled = false;
actor._bmwOverviewCloneContainer.set_pivot_point(0.5, 0.5);
actor._bmwOverviewCloneContainer.scale_x = actorScale.x;
actor._bmwOverviewCloneContainer.scale_y = actorScale.y;
}
// Now add a cool shader to our window actor!
const shader = effect.shaderFactory.getShader();
actor.add_effect_with_name('burn-my-windows-effect', shader);
// At the end of the animation, we restore the scale of the overview clone (if any)
// and call the methods which would have been called by the original ease() calls at
// the end of the standard fade-in animation.
const endID = shader.connect('end-animation', () => {
shader.disconnect(endID);
if (actor._bmwOverviewClone && utils.shellVersionIsAtLeast(3, 38)) {
actor._bmwOverviewClone.overlayEnabled = true;
actor._bmwOverviewCloneContainer.scale_x = 1.0;
actor._bmwOverviewCloneContainer.scale_y = 1.0;
}
// Remove the shader and mark it being re-usable for future animations.
actor.remove_effect(shader);
shader.returnToFactory();
// Finally, once the animation is done or interrupted, we call the methods which
// should have been called by the original ease() methods.
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/windowManager.js#L1487
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/windowManager.js#L1558.
if (forOpening) {
Main.wm._mapWindowDone(global.window_manager, actor);
} else {
Main.wm._destroyWindowDone(global.window_manager, actor);
}
});
// To make things deterministic during testing, we set the effect duration to 5 // To make things deterministic during testing, we set the effect duration to 5
// seconds. // seconds.
const duration = const duration =
testMode ? 5000 : profile.settings.get_int(effect.getNick() + '-animation-time'); testMode ? 5000 : profile.settings.get_int(effect.getNick() + '-animation-time');
// All animations are relative to the window's center. // Finally start the animation!
actor.set_pivot_point(0.5, 0.5); shader.beginAnimation(profile.settings, forOpening, testMode, duration, actor);
// 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);
// If there is currently no ongoing transition, we create a new one. Clutter does
// not like to create transitions with the same start and end value - however, we
// need at least one transition for our progress value in the shader. So we trick
// Clutter by creating an arbitrary transition first and then modifying the start
// and end values according to our config object.
if (!transition) {
actor.set_property(property, 0);
actor.save_easing_state();
actor.set_easing_duration(1000);
actor.set_property(property, 1);
actor.restore_easing_state();
// Now there should be a transition!
transition = actor.get_transition(property);
}
// 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) {
transition.set_duration(duration);
transition.set_to(config[property]);
transition.set_from(config[property]);
transition.set_progress_mode(Clutter.AnimationMode.LINEAR);
}
}
// Once the transitions are finished, we restore the original actor size.
if (forOpening) {
const connectionID = actor.connect('transitions-completed', () => {
actor.scale_x = 1.0;
actor.scale_y = 1.0;
actor.disconnect(connectionID);
});
}
// -------------------------------------------------------------------- add the shader
// Now add a cool shader to our window actor!
const shader = effect.shaderFactory.getShader();
// There should always be an opacity transition going on...
const transition = actor.get_transition('opacity');
if (!transition) {
utils.debug('Cannot setup shader without opacity transition.')
return;
}
// Assign the effect to the window actor!
actor.add_effect_with_name('burn-my-windows-effect', shader);
// Set one-time uniforms.
shader.beginAnimation(profile.settings, forOpening, testMode, duration * 0.001,
actor);
// Set other uniforms each frame.
transition.connect('new-frame', (t) => {
if (testMode) {
shader.updateAnimation(0.5);
} else {
shader.updateAnimation(t.get_progress());
}
});
// Remove the effect if the animation finished or was interrupted.
if (forOpening) {
transition.connect('stopped', () => {
const oldShader = actor.get_effect('burn-my-windows-effect');
if (oldShader) {
actor.remove_effect(oldShader);
oldShader.endAnimation();
oldShader.returnToFactory();
}
});
}
} }
// This is required to enable window-close animations in the overview. See the comment // This is required to enable window-close animations in the overview. See the comment
@@ -676,11 +614,9 @@ class Extension {
// This was called "realWindow" in GNOME 3.36. // This was called "realWindow" in GNOME 3.36.
const propertyName = utils.shellVersionIs(3, 36) ? 'realWindow' : '_windowActor'; const propertyName = utils.shellVersionIs(3, 36) ? 'realWindow' : '_windowActor';
const actor = workspace._windows[index][propertyName]; const actor = workspace._windows[index][propertyName];
if (!actor.get_transition('scale-y')) { const shader = actor.get_effect('burn-my-windows-effect');
return true;
}
return false; return shader == null;
} }
} }
+1 -1
View File
@@ -14,5 +14,5 @@
"44" "44"
], ],
"url": "https://github.com/Schneegans/Burn-My-Windows", "url": "https://github.com/Schneegans/Burn-My-Windows",
"version": 27 "version": 28
} }
+4 -4
View File
@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: Burn-My-Windows\n" "Project-Id-Version: Burn-My-Windows\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-02-21 16:46+0100\n" "POT-Creation-Date: 2023-02-21 16:46+0100\n"
"PO-Revision-Date: 2023-02-21 16:19+0000\n" "PO-Revision-Date: 2023-03-17 10:41+0000\n"
"Last-Translator: Heimen Stoffels <vistausss@fastmail.com>\n" "Last-Translator: Philip Goto <philip.goto@gmail.com>\n"
"Language-Team: Dutch <https://hosted.weblate.org/projects/burn-my-windows/" "Language-Team: Dutch <https://hosted.weblate.org/projects/burn-my-windows/"
"core/nl/>\n" "core/nl/>\n"
"Language: nl\n" "Language: nl\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.16-dev\n" "X-Generator: Weblate 4.16.2-dev\n"
#: src/ProfileManager.js:168 resources/ui/gtk4/prefs.ui:220 #: src/ProfileManager.js:168 resources/ui/gtk4/prefs.ui:220
#: resources/ui/gtk3/prefs.ui:265 resources/ui/adw/prefs.ui:103 #: resources/ui/gtk3/prefs.ui:265 resources/ui/adw/prefs.ui:103
@@ -687,7 +687,7 @@ msgstr ""
#: resources/ui/gtk4/prefs.ui:166 resources/ui/gtk3/prefs.ui:206 #: resources/ui/gtk4/prefs.ui:166 resources/ui/gtk3/prefs.ui:206
#: resources/ui/adw/prefs.ui:70 #: resources/ui/adw/prefs.ui:70
msgid "Application" msgid "Application"
msgstr "Toepassing" msgstr "App"
#: resources/ui/gtk4/prefs.ui:184 resources/ui/gtk4/prefs.ui:219 #: resources/ui/gtk4/prefs.ui:184 resources/ui/gtk4/prefs.ui:219
#: resources/ui/gtk4/prefs.ui:248 resources/ui/gtk4/prefs.ui:277 #: resources/ui/gtk4/prefs.ui:248 resources/ui/gtk4/prefs.ui:277
+39 -37
View File
@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: burn-my-windows\n" "Project-Id-Version: burn-my-windows\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-02-21 16:46+0100\n" "POT-Creation-Date: 2023-02-21 16:46+0100\n"
"PO-Revision-Date: 2023-01-25 20:52+0000\n" "PO-Revision-Date: 2023-03-05 17:41+0000\n"
"Last-Translator: gnu-ewm <gnu.ewm@protonmail.com>\n" "Last-Translator: WaldiS <sto@tutanota.de>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/burn-my-windows/" "Language-Team: Polish <https://hosted.weblate.org/projects/burn-my-windows/"
"core/pl/>\n" "core/pl/>\n"
"Language: pl\n" "Language: pl\n"
@@ -18,81 +18,81 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n" "|| n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.16-dev\n" "X-Generator: Weblate 4.16.2-dev\n"
#: src/ProfileManager.js:168 resources/ui/gtk4/prefs.ui:220 #: src/ProfileManager.js:168 resources/ui/gtk4/prefs.ui:220
#: resources/ui/gtk3/prefs.ui:265 resources/ui/adw/prefs.ui:103 #: resources/ui/gtk3/prefs.ui:265 resources/ui/adw/prefs.ui:103
msgid "Opening Windows" msgid "Opening Windows"
msgstr "" msgstr "Otwieranie okien"
#: src/ProfileManager.js:169 resources/ui/gtk4/prefs.ui:221 #: src/ProfileManager.js:169 resources/ui/gtk4/prefs.ui:221
#: resources/ui/gtk3/prefs.ui:266 resources/ui/adw/prefs.ui:104 #: resources/ui/gtk3/prefs.ui:266 resources/ui/adw/prefs.ui:104
msgid "Closing Windows" msgid "Closing Windows"
msgstr "" msgstr "Zamykanie okien"
#: src/ProfileManager.js:170 resources/ui/gtk4/prefs.ui:249 #: src/ProfileManager.js:170 resources/ui/gtk4/prefs.ui:249
#: resources/ui/gtk3/prefs.ui:294 resources/ui/adw/prefs.ui:118 #: resources/ui/gtk3/prefs.ui:294 resources/ui/adw/prefs.ui:118
msgid "Normal Windows" msgid "Normal Windows"
msgstr "" msgstr "Normalne okna"
#: src/ProfileManager.js:171 resources/ui/gtk4/prefs.ui:250 #: src/ProfileManager.js:171 resources/ui/gtk4/prefs.ui:250
#: resources/ui/gtk3/prefs.ui:295 resources/ui/adw/prefs.ui:119 #: resources/ui/gtk3/prefs.ui:295 resources/ui/adw/prefs.ui:119
msgid "Dialog Windows" msgid "Dialog Windows"
msgstr "" msgstr "Okna dialogowe"
#: src/ProfileManager.js:172 resources/ui/gtk4/prefs.ui:278 #: src/ProfileManager.js:172 resources/ui/gtk4/prefs.ui:278
#: resources/ui/gtk3/prefs.ui:323 resources/ui/adw/prefs.ui:133 #: resources/ui/gtk3/prefs.ui:323 resources/ui/adw/prefs.ui:133
msgid "Default Color Scheme" msgid "Default Color Scheme"
msgstr "" msgstr "Domyślny schemat kolorów"
#: src/ProfileManager.js:173 resources/ui/gtk4/prefs.ui:279 #: src/ProfileManager.js:173 resources/ui/gtk4/prefs.ui:279
#: resources/ui/gtk3/prefs.ui:324 resources/ui/adw/prefs.ui:134 #: resources/ui/gtk3/prefs.ui:324 resources/ui/adw/prefs.ui:134
msgid "Dark Color Scheme" msgid "Dark Color Scheme"
msgstr "" msgstr "Ciemny schemat kolorów"
#: src/ProfileManager.js:174 resources/ui/gtk4/prefs.ui:307 #: src/ProfileManager.js:174 resources/ui/gtk4/prefs.ui:307
#: resources/ui/gtk3/prefs.ui:352 resources/ui/adw/prefs.ui:148 #: resources/ui/gtk3/prefs.ui:352 resources/ui/adw/prefs.ui:148
msgid "On Battery" msgid "On Battery"
msgstr "" msgstr "Zasilanie bateryjne"
#: src/ProfileManager.js:175 resources/ui/gtk4/prefs.ui:308 #: src/ProfileManager.js:175 resources/ui/gtk4/prefs.ui:308
#: resources/ui/gtk3/prefs.ui:353 resources/ui/adw/prefs.ui:149 #: resources/ui/gtk3/prefs.ui:353 resources/ui/adw/prefs.ui:149
msgid "Plugged In" msgid "Plugged In"
msgstr "" msgstr "Podłączony"
#: src/ProfileManager.js:176 resources/ui/gtk4/prefs.ui:336 #: src/ProfileManager.js:176 resources/ui/gtk4/prefs.ui:336
#: resources/ui/gtk3/prefs.ui:381 resources/ui/adw/prefs.ui:163 #: resources/ui/gtk3/prefs.ui:381 resources/ui/adw/prefs.ui:163
msgid "Power-Saver Mode" msgid "Power-Saver Mode"
msgstr "" msgstr "Tryb oszczędzania energii"
#: src/ProfileManager.js:177 resources/ui/gtk4/prefs.ui:337 #: src/ProfileManager.js:177 resources/ui/gtk4/prefs.ui:337
#: resources/ui/gtk3/prefs.ui:382 resources/ui/adw/prefs.ui:164 #: resources/ui/gtk3/prefs.ui:382 resources/ui/adw/prefs.ui:164
msgid "Balanced Mode" msgid "Balanced Mode"
msgstr "" msgstr "Tryb zrównoważony"
#: src/ProfileManager.js:178 resources/ui/gtk4/prefs.ui:338 #: src/ProfileManager.js:178 resources/ui/gtk4/prefs.ui:338
#: resources/ui/gtk3/prefs.ui:383 resources/ui/adw/prefs.ui:165 #: resources/ui/gtk3/prefs.ui:383 resources/ui/adw/prefs.ui:165
msgid "Performance Mode" msgid "Performance Mode"
msgstr "" msgstr "Tryb wydajności"
#: src/ProfileManager.js:179 resources/ui/gtk4/prefs.ui:339 #: src/ProfileManager.js:179 resources/ui/gtk4/prefs.ui:339
#: resources/ui/gtk3/prefs.ui:384 resources/ui/adw/prefs.ui:166 #: resources/ui/gtk3/prefs.ui:384 resources/ui/adw/prefs.ui:166
msgid "Power Saver or Balanced" msgid "Power Saver or Balanced"
msgstr "" msgstr "Oszczędzanie energii lub zrównoważony"
#: src/ProfileManager.js:180 resources/ui/gtk4/prefs.ui:340 #: src/ProfileManager.js:180 resources/ui/gtk4/prefs.ui:340
#: resources/ui/gtk3/prefs.ui:385 resources/ui/adw/prefs.ui:167 #: resources/ui/gtk3/prefs.ui:385 resources/ui/adw/prefs.ui:167
msgid "Balanced or Performance" msgid "Balanced or Performance"
msgstr "" msgstr "Zrównoważony lub wydajny"
#: src/ProfileManager.js:185 resources/ui/gtk4/prefs.ui:387 #: src/ProfileManager.js:185 resources/ui/gtk4/prefs.ui:387
#: resources/ui/gtk3/prefs.ui:432 resources/ui/adw/prefs.ui:183 #: resources/ui/gtk3/prefs.ui:432 resources/ui/adw/prefs.ui:183
msgid "High Priority" msgid "High Priority"
msgstr "" msgstr "Wysoki priorytet"
#: src/ProfileManager.js:191 #: src/ProfileManager.js:191
msgid "Standard Profile" msgid "Standard Profile"
msgstr "" msgstr "Profil standardowy"
#: src/effects/Apparition.js:78 #: src/effects/Apparition.js:78
msgid "Apparition" msgid "Apparition"
@@ -200,7 +200,7 @@ msgstr "Podgląd efektu"
#: prefs.js:364 resources/ui/gtk4/prefs.ui:50 resources/ui/gtk3/prefs.ui:86 #: prefs.js:364 resources/ui/gtk4/prefs.ui:50 resources/ui/gtk3/prefs.ui:86
msgid "Burn-My-Windows has been updated!" msgid "Burn-My-Windows has been updated!"
msgstr "" msgstr "Burn-My-Windows został zaktualizowany!"
#: prefs.js:365 resources/ui/common/menus.ui:17 resources/ui/gtk4/prefs.ui:56 #: prefs.js:365 resources/ui/common/menus.ui:17 resources/ui/gtk4/prefs.ui:56
#: resources/ui/gtk3/prefs.ui:96 #: resources/ui/gtk3/prefs.ui:96
@@ -225,21 +225,23 @@ msgstr "Byli Sponsorzy"
#: prefs.js:585 #: prefs.js:585
msgid "Delete this Profile?" msgid "Delete this Profile?"
msgstr "" msgstr "Usunąć ten profil?"
#: prefs.js:587 #: prefs.js:587
msgid "" msgid ""
"The current effect profile with all its effect settings will be permanently " "The current effect profile with all its effect settings will be permanently "
"lost." "lost."
msgstr "" msgstr ""
"Bieżący profil efektów wraz ze wszystkimi jego ustawieniami efektów zostanie "
"trwale utracony."
#: prefs.js:592 #: prefs.js:592
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr "Anuluj"
#: prefs.js:593 #: prefs.js:593
msgid "Delete" msgid "Delete"
msgstr "" msgstr "Usuń"
#. Translators: %s will be replaced by the effect's name. #. Translators: %s will be replaced by the effect's name.
#: prefs.js:923 #: prefs.js:923
@@ -257,7 +259,7 @@ msgstr "Odwiedź Stronę Główną"
#: resources/ui/common/menus.ui:21 #: resources/ui/common/menus.ui:21
msgid "View Matching Wallpapers" msgid "View Matching Wallpapers"
msgstr "" msgstr "Zobacz pasujące tapety"
#: resources/ui/common/menus.ui:27 #: resources/ui/common/menus.ui:27
msgid "Report a Bug" msgid "Report a Bug"
@@ -281,7 +283,7 @@ msgstr "Informacje o Burn-My-Windows"
#: resources/ui/common/menus.ui:63 #: resources/ui/common/menus.ui:63
msgid "Add New Profile..." msgid "Add New Profile..."
msgstr "" msgstr "Dodaj nowy profil..."
#: resources/ui/gtk4/broken-glass.ui:22 resources/ui/gtk4/tv-glitch.ui:23 #: resources/ui/gtk4/broken-glass.ui:22 resources/ui/gtk4/tv-glitch.ui:23
#: resources/ui/gtk4/glitch.ui:23 resources/ui/gtk4/matrix.ui:23 #: resources/ui/gtk4/glitch.ui:23 resources/ui/gtk4/matrix.ui:23
@@ -665,7 +667,7 @@ msgstr "Gradient"
#: resources/ui/gtk4/prefs.ui:82 resources/ui/gtk3/prefs.ui:124 #: resources/ui/gtk4/prefs.ui:82 resources/ui/gtk3/prefs.ui:124
#: resources/ui/adw/prefs.ui:224 #: resources/ui/adw/prefs.ui:224
msgid "Effect Settings" msgid "Effect Settings"
msgstr "" msgstr "Ustawienia efektu"
#: resources/ui/gtk4/prefs.ui:92 resources/ui/gtk3/prefs.ui:134 #: resources/ui/gtk4/prefs.ui:92 resources/ui/gtk3/prefs.ui:134
#: resources/ui/adw/prefs.ui:225 #: resources/ui/adw/prefs.ui:225
@@ -675,17 +677,17 @@ msgstr "Jeśli wybrano kilka, efekt jest wybierany losowo."
#: resources/ui/gtk4/prefs.ui:132 resources/ui/gtk3/prefs.ui:172 #: resources/ui/gtk4/prefs.ui:132 resources/ui/gtk3/prefs.ui:172
#: resources/ui/adw/prefs.ui:65 #: resources/ui/adw/prefs.ui:65
msgid "Effect Profile Constraints" msgid "Effect Profile Constraints"
msgstr "" msgstr "Ograniczenia profilu efektu"
#: resources/ui/gtk4/prefs.ui:142 resources/ui/gtk3/prefs.ui:182 #: resources/ui/gtk4/prefs.ui:142 resources/ui/gtk3/prefs.ui:182
#: resources/ui/adw/prefs.ui:66 #: resources/ui/adw/prefs.ui:66
msgid "Define when the current effect settings should be used." msgid "Define when the current effect settings should be used."
msgstr "" msgstr "Określ, kiedy mają być używane bieżące ustawienia efektów."
#: resources/ui/gtk4/prefs.ui:166 resources/ui/gtk3/prefs.ui:206 #: resources/ui/gtk4/prefs.ui:166 resources/ui/gtk3/prefs.ui:206
#: resources/ui/adw/prefs.ui:70 #: resources/ui/adw/prefs.ui:70
msgid "Application" msgid "Application"
msgstr "" msgstr "Aplikacja"
#: resources/ui/gtk4/prefs.ui:184 resources/ui/gtk4/prefs.ui:219 #: resources/ui/gtk4/prefs.ui:184 resources/ui/gtk4/prefs.ui:219
#: resources/ui/gtk4/prefs.ui:248 resources/ui/gtk4/prefs.ui:277 #: resources/ui/gtk4/prefs.ui:248 resources/ui/gtk4/prefs.ui:277
@@ -697,47 +699,47 @@ msgstr ""
#: resources/ui/adw/prefs.ui:117 resources/ui/adw/prefs.ui:132 #: resources/ui/adw/prefs.ui:117 resources/ui/adw/prefs.ui:132
#: resources/ui/adw/prefs.ui:147 resources/ui/adw/prefs.ui:162 #: resources/ui/adw/prefs.ui:147 resources/ui/adw/prefs.ui:162
msgid "Any" msgid "Any"
msgstr "" msgstr "Każdy"
#: resources/ui/gtk4/prefs.ui:208 resources/ui/gtk3/prefs.ui:253 #: resources/ui/gtk4/prefs.ui:208 resources/ui/gtk3/prefs.ui:253
#: resources/ui/adw/prefs.ui:98 #: resources/ui/adw/prefs.ui:98
msgid "Animation Type" msgid "Animation Type"
msgstr "" msgstr "Typ animacji"
#: resources/ui/gtk4/prefs.ui:237 resources/ui/gtk3/prefs.ui:282 #: resources/ui/gtk4/prefs.ui:237 resources/ui/gtk3/prefs.ui:282
#: resources/ui/adw/prefs.ui:113 #: resources/ui/adw/prefs.ui:113
msgid "Window Type" msgid "Window Type"
msgstr "" msgstr "Typ okna"
#: resources/ui/gtk4/prefs.ui:266 resources/ui/gtk3/prefs.ui:311 #: resources/ui/gtk4/prefs.ui:266 resources/ui/gtk3/prefs.ui:311
#: resources/ui/adw/prefs.ui:128 #: resources/ui/adw/prefs.ui:128
msgid "Color Scheme" msgid "Color Scheme"
msgstr "" msgstr "Schemat kolorów"
#: resources/ui/gtk4/prefs.ui:295 resources/ui/gtk3/prefs.ui:340 #: resources/ui/gtk4/prefs.ui:295 resources/ui/gtk3/prefs.ui:340
#: resources/ui/adw/prefs.ui:143 #: resources/ui/adw/prefs.ui:143
msgid "Power Mode" msgid "Power Mode"
msgstr "" msgstr "Tryb zasilania"
#: resources/ui/gtk4/prefs.ui:324 resources/ui/gtk3/prefs.ui:369 #: resources/ui/gtk4/prefs.ui:324 resources/ui/gtk3/prefs.ui:369
#: resources/ui/adw/prefs.ui:158 #: resources/ui/adw/prefs.ui:158
msgid "Power Profile" msgid "Power Profile"
msgstr "" msgstr "Profil mocy"
#: resources/ui/gtk4/prefs.ui:356 resources/ui/gtk3/prefs.ui:401 #: resources/ui/gtk4/prefs.ui:356 resources/ui/gtk3/prefs.ui:401
#: resources/ui/adw/prefs.ui:179 #: resources/ui/adw/prefs.ui:179
msgid "Advanced Profile Options" msgid "Advanced Profile Options"
msgstr "" msgstr "Zaawansowane opcje profilu"
#: resources/ui/gtk4/prefs.ui:396 resources/ui/gtk3/prefs.ui:441 #: resources/ui/gtk4/prefs.ui:396 resources/ui/gtk3/prefs.ui:441
#: resources/ui/adw/prefs.ui:184 #: resources/ui/adw/prefs.ui:184
msgid "Use this profile even if there are better matching profiles." msgid "Use this profile even if there are better matching profiles."
msgstr "" msgstr "Użyj tego profilu, nawet jeśli istnieją lepiej dopasowane profile."
#: resources/ui/gtk4/prefs.ui:428 resources/ui/gtk3/prefs.ui:473 #: resources/ui/gtk4/prefs.ui:428 resources/ui/gtk3/prefs.ui:473
#: resources/ui/adw/prefs.ui:204 #: resources/ui/adw/prefs.ui:204
msgid "Delete this Profile..." msgid "Delete this Profile..."
msgstr "" msgstr "Usuń ten profil..."
#: resources/ui/gtk4/pixelate.ui:69 resources/ui/gtk3/pixelate.ui:90 #: resources/ui/gtk4/pixelate.ui:69 resources/ui/gtk3/pixelate.ui:90
#: resources/ui/adw/pixelate.ui:47 #: resources/ui/adw/pixelate.ui:47
+53 -50
View File
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: burn-my-windows\n" "Project-Id-Version: burn-my-windows\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-02-21 16:46+0100\n" "POT-Creation-Date: 2023-02-21 16:46+0100\n"
"PO-Revision-Date: 2022-09-11 10:17+0000\n" "PO-Revision-Date: 2023-03-07 08:41+0000\n"
"Last-Translator: Jose Riha <jose1711@gmail.com>\n" "Last-Translator: Jose Riha <jose1711@gmail.com>\n"
"Language-Team: Slovak <https://hosted.weblate.org/projects/burn-my-windows/" "Language-Team: Slovak <https://hosted.weblate.org/projects/burn-my-windows/"
"core/sk/>\n" "core/sk/>\n"
@@ -17,81 +17,81 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Weblate 4.14.1-dev\n" "X-Generator: Weblate 4.16.2-dev\n"
#: src/ProfileManager.js:168 resources/ui/gtk4/prefs.ui:220 #: src/ProfileManager.js:168 resources/ui/gtk4/prefs.ui:220
#: resources/ui/gtk3/prefs.ui:265 resources/ui/adw/prefs.ui:103 #: resources/ui/gtk3/prefs.ui:265 resources/ui/adw/prefs.ui:103
msgid "Opening Windows" msgid "Opening Windows"
msgstr "" msgstr "Otváranie okien"
#: src/ProfileManager.js:169 resources/ui/gtk4/prefs.ui:221 #: src/ProfileManager.js:169 resources/ui/gtk4/prefs.ui:221
#: resources/ui/gtk3/prefs.ui:266 resources/ui/adw/prefs.ui:104 #: resources/ui/gtk3/prefs.ui:266 resources/ui/adw/prefs.ui:104
msgid "Closing Windows" msgid "Closing Windows"
msgstr "" msgstr "Zatváranie okien"
#: src/ProfileManager.js:170 resources/ui/gtk4/prefs.ui:249 #: src/ProfileManager.js:170 resources/ui/gtk4/prefs.ui:249
#: resources/ui/gtk3/prefs.ui:294 resources/ui/adw/prefs.ui:118 #: resources/ui/gtk3/prefs.ui:294 resources/ui/adw/prefs.ui:118
msgid "Normal Windows" msgid "Normal Windows"
msgstr "" msgstr "Normálne okná"
#: src/ProfileManager.js:171 resources/ui/gtk4/prefs.ui:250 #: src/ProfileManager.js:171 resources/ui/gtk4/prefs.ui:250
#: resources/ui/gtk3/prefs.ui:295 resources/ui/adw/prefs.ui:119 #: resources/ui/gtk3/prefs.ui:295 resources/ui/adw/prefs.ui:119
msgid "Dialog Windows" msgid "Dialog Windows"
msgstr "" msgstr "Dialógové okná"
#: src/ProfileManager.js:172 resources/ui/gtk4/prefs.ui:278 #: src/ProfileManager.js:172 resources/ui/gtk4/prefs.ui:278
#: resources/ui/gtk3/prefs.ui:323 resources/ui/adw/prefs.ui:133 #: resources/ui/gtk3/prefs.ui:323 resources/ui/adw/prefs.ui:133
msgid "Default Color Scheme" msgid "Default Color Scheme"
msgstr "" msgstr "Predvolený motív farieb"
#: src/ProfileManager.js:173 resources/ui/gtk4/prefs.ui:279 #: src/ProfileManager.js:173 resources/ui/gtk4/prefs.ui:279
#: resources/ui/gtk3/prefs.ui:324 resources/ui/adw/prefs.ui:134 #: resources/ui/gtk3/prefs.ui:324 resources/ui/adw/prefs.ui:134
msgid "Dark Color Scheme" msgid "Dark Color Scheme"
msgstr "" msgstr "Tmavý motív farieb"
#: src/ProfileManager.js:174 resources/ui/gtk4/prefs.ui:307 #: src/ProfileManager.js:174 resources/ui/gtk4/prefs.ui:307
#: resources/ui/gtk3/prefs.ui:352 resources/ui/adw/prefs.ui:148 #: resources/ui/gtk3/prefs.ui:352 resources/ui/adw/prefs.ui:148
msgid "On Battery" msgid "On Battery"
msgstr "" msgstr "Pri behu na batériu"
#: src/ProfileManager.js:175 resources/ui/gtk4/prefs.ui:308 #: src/ProfileManager.js:175 resources/ui/gtk4/prefs.ui:308
#: resources/ui/gtk3/prefs.ui:353 resources/ui/adw/prefs.ui:149 #: resources/ui/gtk3/prefs.ui:353 resources/ui/adw/prefs.ui:149
msgid "Plugged In" msgid "Plugged In"
msgstr "" msgstr "Pri nabíjaní"
#: src/ProfileManager.js:176 resources/ui/gtk4/prefs.ui:336 #: src/ProfileManager.js:176 resources/ui/gtk4/prefs.ui:336
#: resources/ui/gtk3/prefs.ui:381 resources/ui/adw/prefs.ui:163 #: resources/ui/gtk3/prefs.ui:381 resources/ui/adw/prefs.ui:163
msgid "Power-Saver Mode" msgid "Power-Saver Mode"
msgstr "" msgstr "Režim šetrenia energie"
#: src/ProfileManager.js:177 resources/ui/gtk4/prefs.ui:337 #: src/ProfileManager.js:177 resources/ui/gtk4/prefs.ui:337
#: resources/ui/gtk3/prefs.ui:382 resources/ui/adw/prefs.ui:164 #: resources/ui/gtk3/prefs.ui:382 resources/ui/adw/prefs.ui:164
msgid "Balanced Mode" msgid "Balanced Mode"
msgstr "" msgstr "Vyvážený režim"
#: src/ProfileManager.js:178 resources/ui/gtk4/prefs.ui:338 #: src/ProfileManager.js:178 resources/ui/gtk4/prefs.ui:338
#: resources/ui/gtk3/prefs.ui:383 resources/ui/adw/prefs.ui:165 #: resources/ui/gtk3/prefs.ui:383 resources/ui/adw/prefs.ui:165
msgid "Performance Mode" msgid "Performance Mode"
msgstr "" msgstr "Vysoký výkon"
#: src/ProfileManager.js:179 resources/ui/gtk4/prefs.ui:339 #: src/ProfileManager.js:179 resources/ui/gtk4/prefs.ui:339
#: resources/ui/gtk3/prefs.ui:384 resources/ui/adw/prefs.ui:166 #: resources/ui/gtk3/prefs.ui:384 resources/ui/adw/prefs.ui:166
msgid "Power Saver or Balanced" msgid "Power Saver or Balanced"
msgstr "" msgstr "Šetrenie energie alebo vyvážený"
#: src/ProfileManager.js:180 resources/ui/gtk4/prefs.ui:340 #: src/ProfileManager.js:180 resources/ui/gtk4/prefs.ui:340
#: resources/ui/gtk3/prefs.ui:385 resources/ui/adw/prefs.ui:167 #: resources/ui/gtk3/prefs.ui:385 resources/ui/adw/prefs.ui:167
msgid "Balanced or Performance" msgid "Balanced or Performance"
msgstr "" msgstr "Vyvážený alebo vysoký výkon"
#: src/ProfileManager.js:185 resources/ui/gtk4/prefs.ui:387 #: src/ProfileManager.js:185 resources/ui/gtk4/prefs.ui:387
#: resources/ui/gtk3/prefs.ui:432 resources/ui/adw/prefs.ui:183 #: resources/ui/gtk3/prefs.ui:432 resources/ui/adw/prefs.ui:183
msgid "High Priority" msgid "High Priority"
msgstr "" msgstr "Vysoká priorita"
#: src/ProfileManager.js:191 #: src/ProfileManager.js:191
msgid "Standard Profile" msgid "Standard Profile"
msgstr "" msgstr "Štandardný profil"
#: src/effects/Apparition.js:78 #: src/effects/Apparition.js:78
msgid "Apparition" msgid "Apparition"
@@ -127,7 +127,7 @@ msgstr "Pekelný oheň"
#: src/effects/Fire.js:174 #: src/effects/Fire.js:174
msgid "Dark and Smutty" msgid "Dark and Smutty"
msgstr "Tmavý a zafúľaný" msgstr "Tmavý a špinavý"
#: src/effects/Fire.js:184 #: src/effects/Fire.js:184
msgid "Cold Breeze" msgid "Cold Breeze"
@@ -135,15 +135,15 @@ msgstr "Studený vánok"
#: src/effects/Fire.js:194 #: src/effects/Fire.js:194
msgid "Santa is Coming" msgid "Santa is Coming"
msgstr "Santa prichádza" msgstr "Santa je tu!"
#: src/effects/Glide.js:78 #: src/effects/Glide.js:78
msgid "Glide" msgid "Glide"
msgstr "" msgstr "Kĺzanie"
#: src/effects/Glitch.js:86 #: src/effects/Glitch.js:86
msgid "Glitch" msgid "Glitch"
msgstr "" msgstr "Rušenie"
#: src/effects/Hexagon.js:94 #: src/effects/Hexagon.js:94
msgid "Hexagon" msgid "Hexagon"
@@ -171,7 +171,7 @@ msgstr "Zotrenie štvorčekmi"
#: src/effects/Portal.js:88 #: src/effects/Portal.js:88
msgid "Portal" msgid "Portal"
msgstr "" msgstr "Portál"
#: src/effects/SnapOfDisintegration.js:114 #: src/effects/SnapOfDisintegration.js:114
msgid "Snap of Disintegration" msgid "Snap of Disintegration"
@@ -187,7 +187,7 @@ msgstr "Televízor"
#: src/effects/TVGlitch.js:87 #: src/effects/TVGlitch.js:87
msgid "TV Glitch" msgid "TV Glitch"
msgstr "" msgstr "Rušenie televízora"
#: src/effects/Wisps.js:82 #: src/effects/Wisps.js:82
msgid "Wisps" msgid "Wisps"
@@ -195,11 +195,11 @@ msgstr "Obláčiky"
#: prefs.js:247 #: prefs.js:247
msgid "Preview this effect" msgid "Preview this effect"
msgstr "" msgstr "Vyskúšajte tento efekt"
#: prefs.js:364 resources/ui/gtk4/prefs.ui:50 resources/ui/gtk3/prefs.ui:86 #: prefs.js:364 resources/ui/gtk4/prefs.ui:50 resources/ui/gtk3/prefs.ui:86
msgid "Burn-My-Windows has been updated!" msgid "Burn-My-Windows has been updated!"
msgstr "" msgstr "Burn-My-Windows sa aktualizoval!"
#: prefs.js:365 resources/ui/common/menus.ui:17 resources/ui/gtk4/prefs.ui:56 #: prefs.js:365 resources/ui/common/menus.ui:17 resources/ui/gtk4/prefs.ui:56
#: resources/ui/gtk3/prefs.ui:96 #: resources/ui/gtk3/prefs.ui:96
@@ -224,21 +224,23 @@ msgstr "Bývalí sponzori"
#: prefs.js:585 #: prefs.js:585
msgid "Delete this Profile?" msgid "Delete this Profile?"
msgstr "" msgstr "Odstrániť tento profil?"
#: prefs.js:587 #: prefs.js:587
msgid "" msgid ""
"The current effect profile with all its effect settings will be permanently " "The current effect profile with all its effect settings will be permanently "
"lost." "lost."
msgstr "" msgstr ""
"Aktuálny profil efektu spolu so všetkými nastaveniami efektov bude trvalo "
"odstránený."
#: prefs.js:592 #: prefs.js:592
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr "Zrušiť"
#: prefs.js:593 #: prefs.js:593
msgid "Delete" msgid "Delete"
msgstr "" msgstr "Odstrániť"
#. Translators: %s will be replaced by the effect's name. #. Translators: %s will be replaced by the effect's name.
#: prefs.js:923 #: prefs.js:923
@@ -256,7 +258,7 @@ msgstr "Navštíviť webovú stránku"
#: resources/ui/common/menus.ui:21 #: resources/ui/common/menus.ui:21
msgid "View Matching Wallpapers" msgid "View Matching Wallpapers"
msgstr "" msgstr "Zobraziť zodpovedajúce pozadia plochy"
#: resources/ui/common/menus.ui:27 #: resources/ui/common/menus.ui:27
msgid "Report a Bug" msgid "Report a Bug"
@@ -280,7 +282,7 @@ msgstr "O Burn-My-Windows"
#: resources/ui/common/menus.ui:63 #: resources/ui/common/menus.ui:63
msgid "Add New Profile..." msgid "Add New Profile..."
msgstr "" msgstr "Pridať nový profil…"
#: resources/ui/gtk4/broken-glass.ui:22 resources/ui/gtk4/tv-glitch.ui:23 #: resources/ui/gtk4/broken-glass.ui:22 resources/ui/gtk4/tv-glitch.ui:23
#: resources/ui/gtk4/glitch.ui:23 resources/ui/gtk4/matrix.ui:23 #: resources/ui/gtk4/glitch.ui:23 resources/ui/gtk4/matrix.ui:23
@@ -470,7 +472,7 @@ msgstr "Črepiny odletia z miesta, kde bol kurzor myši pri zatváraní okna."
#: resources/ui/gtk3/tv-glitch.ui:142 resources/ui/gtk3/glitch.ui:142 #: resources/ui/gtk3/tv-glitch.ui:142 resources/ui/gtk3/glitch.ui:142
#: resources/ui/adw/tv-glitch.ui:80 resources/ui/adw/glitch.ui:80 #: resources/ui/adw/tv-glitch.ui:80 resources/ui/adw/glitch.ui:80
msgid "Strength" msgid "Strength"
msgstr "" msgstr "Intenzita"
#: resources/ui/gtk4/tv-glitch.ui:161 resources/ui/gtk4/glitch.ui:161 #: resources/ui/gtk4/tv-glitch.ui:161 resources/ui/gtk4/glitch.ui:161
#: resources/ui/gtk4/fire.ui:138 resources/ui/gtk3/tv-glitch.ui:187 #: resources/ui/gtk4/fire.ui:138 resources/ui/gtk3/tv-glitch.ui:187
@@ -557,17 +559,17 @@ msgstr "Počet lúčov"
#: resources/ui/gtk4/glide.ui:115 resources/ui/gtk3/glide.ui:149 #: resources/ui/gtk4/glide.ui:115 resources/ui/gtk3/glide.ui:149
#: resources/ui/adw/glide.ui:80 #: resources/ui/adw/glide.ui:80
msgid "Squish" msgid "Squish"
msgstr "" msgstr "Stlačenie"
#: resources/ui/gtk4/glide.ui:161 resources/ui/gtk3/glide.ui:194 #: resources/ui/gtk4/glide.ui:161 resources/ui/gtk3/glide.ui:194
#: resources/ui/adw/glide.ui:113 #: resources/ui/adw/glide.ui:113
msgid "Tilt" msgid "Tilt"
msgstr "" msgstr "Naklonenie"
#: resources/ui/gtk4/glide.ui:207 resources/ui/gtk3/glide.ui:239 #: resources/ui/gtk4/glide.ui:207 resources/ui/gtk3/glide.ui:239
#: resources/ui/adw/glide.ui:146 #: resources/ui/adw/glide.ui:146
msgid "Shift" msgid "Shift"
msgstr "" msgstr "Posunutie"
#: resources/ui/gtk4/apparition.ui:114 resources/ui/gtk3/apparition.ui:149 #: resources/ui/gtk4/apparition.ui:114 resources/ui/gtk3/apparition.ui:149
#: resources/ui/adw/apparition.ui:81 #: resources/ui/adw/apparition.ui:81
@@ -587,17 +589,17 @@ msgstr "Intenzita odsatia"
#: resources/ui/gtk4/portal.ui:69 resources/ui/gtk3/portal.ui:142 #: resources/ui/gtk4/portal.ui:69 resources/ui/gtk3/portal.ui:142
#: resources/ui/adw/portal.ui:80 #: resources/ui/adw/portal.ui:80
msgid "Whirling" msgid "Whirling"
msgstr "" msgstr "Vír"
#: resources/ui/gtk4/portal.ui:115 resources/ui/gtk3/portal.ui:97 #: resources/ui/gtk4/portal.ui:115 resources/ui/gtk3/portal.ui:97
#: resources/ui/adw/portal.ui:47 #: resources/ui/adw/portal.ui:47
msgid "Rotation Speed" msgid "Rotation Speed"
msgstr "" msgstr "Rýchlosť otáčania"
#: resources/ui/gtk4/portal.ui:161 resources/ui/gtk3/portal.ui:187 #: resources/ui/gtk4/portal.ui:161 resources/ui/gtk3/portal.ui:187
#: resources/ui/adw/portal.ui:113 #: resources/ui/adw/portal.ui:113
msgid "Details" msgid "Details"
msgstr "" msgstr "Podrobnosti"
#: resources/ui/gtk4/incinerate.ui:115 resources/ui/gtk3/incinerate.ui:135 #: resources/ui/gtk4/incinerate.ui:115 resources/ui/gtk3/incinerate.ui:135
#: resources/ui/adw/incinerate.ui:80 #: resources/ui/adw/incinerate.ui:80
@@ -652,7 +654,7 @@ msgstr "3D šum"
#: resources/ui/gtk4/fire.ui:197 resources/ui/gtk3/fire.ui:229 #: resources/ui/gtk4/fire.ui:197 resources/ui/gtk3/fire.ui:229
#: resources/ui/adw/fire.ui:130 #: resources/ui/adw/fire.ui:130
msgid "Creates a more dynamic fire but requires more GPU power." msgid "Creates a more dynamic fire but requires more GPU power."
msgstr "Vytvorí dynamickejší efekt ohňa, ale vyžaduje na to viac GPU." msgstr "Vytvorí dynamickejší efekt ohňa, ale potrebuje viac GPU."
#: resources/ui/gtk4/fire.ui:239 resources/ui/gtk3/fire.ui:276 #: resources/ui/gtk4/fire.ui:239 resources/ui/gtk3/fire.ui:276
#: resources/ui/adw/fire.ui:152 #: resources/ui/adw/fire.ui:152
@@ -662,7 +664,7 @@ msgstr "Prechod"
#: resources/ui/gtk4/prefs.ui:82 resources/ui/gtk3/prefs.ui:124 #: resources/ui/gtk4/prefs.ui:82 resources/ui/gtk3/prefs.ui:124
#: resources/ui/adw/prefs.ui:224 #: resources/ui/adw/prefs.ui:224
msgid "Effect Settings" msgid "Effect Settings"
msgstr "" msgstr "Nastavenia efektov"
#: resources/ui/gtk4/prefs.ui:92 resources/ui/gtk3/prefs.ui:134 #: resources/ui/gtk4/prefs.ui:92 resources/ui/gtk3/prefs.ui:134
#: resources/ui/adw/prefs.ui:225 #: resources/ui/adw/prefs.ui:225
@@ -672,17 +674,17 @@ msgstr "Ak ich vyberiete viac, budú sa náhodne striedať."
#: resources/ui/gtk4/prefs.ui:132 resources/ui/gtk3/prefs.ui:172 #: resources/ui/gtk4/prefs.ui:132 resources/ui/gtk3/prefs.ui:172
#: resources/ui/adw/prefs.ui:65 #: resources/ui/adw/prefs.ui:65
msgid "Effect Profile Constraints" msgid "Effect Profile Constraints"
msgstr "" msgstr "Obmedzenia profilu efektov"
#: resources/ui/gtk4/prefs.ui:142 resources/ui/gtk3/prefs.ui:182 #: resources/ui/gtk4/prefs.ui:142 resources/ui/gtk3/prefs.ui:182
#: resources/ui/adw/prefs.ui:66 #: resources/ui/adw/prefs.ui:66
msgid "Define when the current effect settings should be used." msgid "Define when the current effect settings should be used."
msgstr "" msgstr "Určite, kedy sa majú použiť aktuálne nastavenia efektov."
#: resources/ui/gtk4/prefs.ui:166 resources/ui/gtk3/prefs.ui:206 #: resources/ui/gtk4/prefs.ui:166 resources/ui/gtk3/prefs.ui:206
#: resources/ui/adw/prefs.ui:70 #: resources/ui/adw/prefs.ui:70
msgid "Application" msgid "Application"
msgstr "" msgstr "Aplikácia"
#: resources/ui/gtk4/prefs.ui:184 resources/ui/gtk4/prefs.ui:219 #: resources/ui/gtk4/prefs.ui:184 resources/ui/gtk4/prefs.ui:219
#: resources/ui/gtk4/prefs.ui:248 resources/ui/gtk4/prefs.ui:277 #: resources/ui/gtk4/prefs.ui:248 resources/ui/gtk4/prefs.ui:277
@@ -694,47 +696,48 @@ msgstr ""
#: resources/ui/adw/prefs.ui:117 resources/ui/adw/prefs.ui:132 #: resources/ui/adw/prefs.ui:117 resources/ui/adw/prefs.ui:132
#: resources/ui/adw/prefs.ui:147 resources/ui/adw/prefs.ui:162 #: resources/ui/adw/prefs.ui:147 resources/ui/adw/prefs.ui:162
msgid "Any" msgid "Any"
msgstr "" msgstr "Ľubovoľné"
#: resources/ui/gtk4/prefs.ui:208 resources/ui/gtk3/prefs.ui:253 #: resources/ui/gtk4/prefs.ui:208 resources/ui/gtk3/prefs.ui:253
#: resources/ui/adw/prefs.ui:98 #: resources/ui/adw/prefs.ui:98
msgid "Animation Type" msgid "Animation Type"
msgstr "" msgstr "Typ animácie"
#: resources/ui/gtk4/prefs.ui:237 resources/ui/gtk3/prefs.ui:282 #: resources/ui/gtk4/prefs.ui:237 resources/ui/gtk3/prefs.ui:282
#: resources/ui/adw/prefs.ui:113 #: resources/ui/adw/prefs.ui:113
msgid "Window Type" msgid "Window Type"
msgstr "" msgstr "Typ okna"
#: resources/ui/gtk4/prefs.ui:266 resources/ui/gtk3/prefs.ui:311 #: resources/ui/gtk4/prefs.ui:266 resources/ui/gtk3/prefs.ui:311
#: resources/ui/adw/prefs.ui:128 #: resources/ui/adw/prefs.ui:128
msgid "Color Scheme" msgid "Color Scheme"
msgstr "" msgstr "Motív farieb"
#: resources/ui/gtk4/prefs.ui:295 resources/ui/gtk3/prefs.ui:340 #: resources/ui/gtk4/prefs.ui:295 resources/ui/gtk3/prefs.ui:340
#: resources/ui/adw/prefs.ui:143 #: resources/ui/adw/prefs.ui:143
msgid "Power Mode" msgid "Power Mode"
msgstr "" msgstr "Režim šetrenia energie"
#: resources/ui/gtk4/prefs.ui:324 resources/ui/gtk3/prefs.ui:369 #: resources/ui/gtk4/prefs.ui:324 resources/ui/gtk3/prefs.ui:369
#: resources/ui/adw/prefs.ui:158 #: resources/ui/adw/prefs.ui:158
msgid "Power Profile" msgid "Power Profile"
msgstr "" msgstr "Profil šetrenia energie"
#: resources/ui/gtk4/prefs.ui:356 resources/ui/gtk3/prefs.ui:401 #: resources/ui/gtk4/prefs.ui:356 resources/ui/gtk3/prefs.ui:401
#: resources/ui/adw/prefs.ui:179 #: resources/ui/adw/prefs.ui:179
msgid "Advanced Profile Options" msgid "Advanced Profile Options"
msgstr "" msgstr "Pokročilé voľby profilu"
#: resources/ui/gtk4/prefs.ui:396 resources/ui/gtk3/prefs.ui:441 #: resources/ui/gtk4/prefs.ui:396 resources/ui/gtk3/prefs.ui:441
#: resources/ui/adw/prefs.ui:184 #: resources/ui/adw/prefs.ui:184
msgid "Use this profile even if there are better matching profiles." msgid "Use this profile even if there are better matching profiles."
msgstr "" msgstr ""
"Použiť tento profil aj v prípade, že existujú profily, ktoré vyhovujú viac."
#: resources/ui/gtk4/prefs.ui:428 resources/ui/gtk3/prefs.ui:473 #: resources/ui/gtk4/prefs.ui:428 resources/ui/gtk3/prefs.ui:473
#: resources/ui/adw/prefs.ui:204 #: resources/ui/adw/prefs.ui:204
msgid "Delete this Profile..." msgid "Delete this Profile..."
msgstr "" msgstr "Odstrániť tento profil…"
#: resources/ui/gtk4/pixelate.ui:69 resources/ui/gtk3/pixelate.ui:90 #: resources/ui/gtk4/pixelate.ui:69 resources/ui/gtk3/pixelate.ui:90
#: resources/ui/adw/pixelate.ui:47 #: resources/ui/adw/pixelate.ui:47
+43 -41
View File
@@ -8,91 +8,91 @@ msgstr ""
"Project-Id-Version: burn-my-windows\n" "Project-Id-Version: burn-my-windows\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-02-21 16:46+0100\n" "POT-Creation-Date: 2023-02-21 16:46+0100\n"
"PO-Revision-Date: 2023-01-25 20:52+0000\n" "PO-Revision-Date: 2023-03-28 09:40+0000\n"
"Last-Translator: Petro S. <911us@duck.com>\n" "Last-Translator: CakesTwix <cakestwix1@gmail.com>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/burn-my-" "Language-Team: Ukrainian <https://hosted.weblate.org/projects/"
"windows/core/uk/>\n" "burn-my-windows/core/uk/>\n"
"Language: uk\n" "Language: uk\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.16-dev\n" "X-Generator: Weblate 4.17-dev\n"
#: src/ProfileManager.js:168 resources/ui/gtk4/prefs.ui:220 #: src/ProfileManager.js:168 resources/ui/gtk4/prefs.ui:220
#: resources/ui/gtk3/prefs.ui:265 resources/ui/adw/prefs.ui:103 #: resources/ui/gtk3/prefs.ui:265 resources/ui/adw/prefs.ui:103
msgid "Opening Windows" msgid "Opening Windows"
msgstr "" msgstr "Відкриття вікон"
#: src/ProfileManager.js:169 resources/ui/gtk4/prefs.ui:221 #: src/ProfileManager.js:169 resources/ui/gtk4/prefs.ui:221
#: resources/ui/gtk3/prefs.ui:266 resources/ui/adw/prefs.ui:104 #: resources/ui/gtk3/prefs.ui:266 resources/ui/adw/prefs.ui:104
msgid "Closing Windows" msgid "Closing Windows"
msgstr "" msgstr "Закриття вікон"
#: src/ProfileManager.js:170 resources/ui/gtk4/prefs.ui:249 #: src/ProfileManager.js:170 resources/ui/gtk4/prefs.ui:249
#: resources/ui/gtk3/prefs.ui:294 resources/ui/adw/prefs.ui:118 #: resources/ui/gtk3/prefs.ui:294 resources/ui/adw/prefs.ui:118
msgid "Normal Windows" msgid "Normal Windows"
msgstr "" msgstr "Звичайні вікна"
#: src/ProfileManager.js:171 resources/ui/gtk4/prefs.ui:250 #: src/ProfileManager.js:171 resources/ui/gtk4/prefs.ui:250
#: resources/ui/gtk3/prefs.ui:295 resources/ui/adw/prefs.ui:119 #: resources/ui/gtk3/prefs.ui:295 resources/ui/adw/prefs.ui:119
msgid "Dialog Windows" msgid "Dialog Windows"
msgstr "" msgstr "Діалогові вікна"
#: src/ProfileManager.js:172 resources/ui/gtk4/prefs.ui:278 #: src/ProfileManager.js:172 resources/ui/gtk4/prefs.ui:278
#: resources/ui/gtk3/prefs.ui:323 resources/ui/adw/prefs.ui:133 #: resources/ui/gtk3/prefs.ui:323 resources/ui/adw/prefs.ui:133
msgid "Default Color Scheme" msgid "Default Color Scheme"
msgstr "" msgstr "Кольорова схема за замовчуванням"
#: src/ProfileManager.js:173 resources/ui/gtk4/prefs.ui:279 #: src/ProfileManager.js:173 resources/ui/gtk4/prefs.ui:279
#: resources/ui/gtk3/prefs.ui:324 resources/ui/adw/prefs.ui:134 #: resources/ui/gtk3/prefs.ui:324 resources/ui/adw/prefs.ui:134
msgid "Dark Color Scheme" msgid "Dark Color Scheme"
msgstr "" msgstr "Темна кольорова схема"
#: src/ProfileManager.js:174 resources/ui/gtk4/prefs.ui:307 #: src/ProfileManager.js:174 resources/ui/gtk4/prefs.ui:307
#: resources/ui/gtk3/prefs.ui:352 resources/ui/adw/prefs.ui:148 #: resources/ui/gtk3/prefs.ui:352 resources/ui/adw/prefs.ui:148
msgid "On Battery" msgid "On Battery"
msgstr "" msgstr "На батареї"
#: src/ProfileManager.js:175 resources/ui/gtk4/prefs.ui:308 #: src/ProfileManager.js:175 resources/ui/gtk4/prefs.ui:308
#: resources/ui/gtk3/prefs.ui:353 resources/ui/adw/prefs.ui:149 #: resources/ui/gtk3/prefs.ui:353 resources/ui/adw/prefs.ui:149
msgid "Plugged In" msgid "Plugged In"
msgstr "" msgstr "Підключено до електромережі"
#: src/ProfileManager.js:176 resources/ui/gtk4/prefs.ui:336 #: src/ProfileManager.js:176 resources/ui/gtk4/prefs.ui:336
#: resources/ui/gtk3/prefs.ui:381 resources/ui/adw/prefs.ui:163 #: resources/ui/gtk3/prefs.ui:381 resources/ui/adw/prefs.ui:163
msgid "Power-Saver Mode" msgid "Power-Saver Mode"
msgstr "" msgstr "Режим енергозбереження"
#: src/ProfileManager.js:177 resources/ui/gtk4/prefs.ui:337 #: src/ProfileManager.js:177 resources/ui/gtk4/prefs.ui:337
#: resources/ui/gtk3/prefs.ui:382 resources/ui/adw/prefs.ui:164 #: resources/ui/gtk3/prefs.ui:382 resources/ui/adw/prefs.ui:164
msgid "Balanced Mode" msgid "Balanced Mode"
msgstr "" msgstr "Збалансований режим"
#: src/ProfileManager.js:178 resources/ui/gtk4/prefs.ui:338 #: src/ProfileManager.js:178 resources/ui/gtk4/prefs.ui:338
#: resources/ui/gtk3/prefs.ui:383 resources/ui/adw/prefs.ui:165 #: resources/ui/gtk3/prefs.ui:383 resources/ui/adw/prefs.ui:165
msgid "Performance Mode" msgid "Performance Mode"
msgstr "" msgstr "Продуктивний режим"
#: src/ProfileManager.js:179 resources/ui/gtk4/prefs.ui:339 #: src/ProfileManager.js:179 resources/ui/gtk4/prefs.ui:339
#: resources/ui/gtk3/prefs.ui:384 resources/ui/adw/prefs.ui:166 #: resources/ui/gtk3/prefs.ui:384 resources/ui/adw/prefs.ui:166
msgid "Power Saver or Balanced" msgid "Power Saver or Balanced"
msgstr "" msgstr "Енергозберігаючий або збалансований"
#: src/ProfileManager.js:180 resources/ui/gtk4/prefs.ui:340 #: src/ProfileManager.js:180 resources/ui/gtk4/prefs.ui:340
#: resources/ui/gtk3/prefs.ui:385 resources/ui/adw/prefs.ui:167 #: resources/ui/gtk3/prefs.ui:385 resources/ui/adw/prefs.ui:167
msgid "Balanced or Performance" msgid "Balanced or Performance"
msgstr "" msgstr "Збалансований або продуктивний"
#: src/ProfileManager.js:185 resources/ui/gtk4/prefs.ui:387 #: src/ProfileManager.js:185 resources/ui/gtk4/prefs.ui:387
#: resources/ui/gtk3/prefs.ui:432 resources/ui/adw/prefs.ui:183 #: resources/ui/gtk3/prefs.ui:432 resources/ui/adw/prefs.ui:183
msgid "High Priority" msgid "High Priority"
msgstr "" msgstr "Високий пріоритет"
#: src/ProfileManager.js:191 #: src/ProfileManager.js:191
msgid "Standard Profile" msgid "Standard Profile"
msgstr "" msgstr "Стандартний профіль"
#: src/effects/Apparition.js:78 #: src/effects/Apparition.js:78
msgid "Apparition" msgid "Apparition"
@@ -200,7 +200,7 @@ msgstr "Попередній перегляд цього ефекту"
#: prefs.js:364 resources/ui/gtk4/prefs.ui:50 resources/ui/gtk3/prefs.ui:86 #: prefs.js:364 resources/ui/gtk4/prefs.ui:50 resources/ui/gtk3/prefs.ui:86
msgid "Burn-My-Windows has been updated!" msgid "Burn-My-Windows has been updated!"
msgstr "" msgstr "Burn-My-Windows оновлено!"
#: prefs.js:365 resources/ui/common/menus.ui:17 resources/ui/gtk4/prefs.ui:56 #: prefs.js:365 resources/ui/common/menus.ui:17 resources/ui/gtk4/prefs.ui:56
#: resources/ui/gtk3/prefs.ui:96 #: resources/ui/gtk3/prefs.ui:96
@@ -225,21 +225,23 @@ msgstr "Колишні спонсори"
#: prefs.js:585 #: prefs.js:585
msgid "Delete this Profile?" msgid "Delete this Profile?"
msgstr "" msgstr "Видалити цей профіль?"
#: prefs.js:587 #: prefs.js:587
msgid "" msgid ""
"The current effect profile with all its effect settings will be permanently " "The current effect profile with all its effect settings will be permanently "
"lost." "lost."
msgstr "" msgstr ""
"Поточний профіль ефекту з усіма його налаштуваннями буде безповоротно "
"втрачено."
#: prefs.js:592 #: prefs.js:592
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr "Скасувати"
#: prefs.js:593 #: prefs.js:593
msgid "Delete" msgid "Delete"
msgstr "" msgstr "Видалити"
#. Translators: %s will be replaced by the effect's name. #. Translators: %s will be replaced by the effect's name.
#: prefs.js:923 #: prefs.js:923
@@ -257,7 +259,7 @@ msgstr "Завітайте на сайт"
#: resources/ui/common/menus.ui:21 #: resources/ui/common/menus.ui:21
msgid "View Matching Wallpapers" msgid "View Matching Wallpapers"
msgstr "" msgstr "Переглянути відповідні обої"
#: resources/ui/common/menus.ui:27 #: resources/ui/common/menus.ui:27
msgid "Report a Bug" msgid "Report a Bug"
@@ -281,7 +283,7 @@ msgstr "Про Burn-My-Windows"
#: resources/ui/common/menus.ui:63 #: resources/ui/common/menus.ui:63
msgid "Add New Profile..." msgid "Add New Profile..."
msgstr "" msgstr "Додати новий профіль..."
#: resources/ui/gtk4/broken-glass.ui:22 resources/ui/gtk4/tv-glitch.ui:23 #: resources/ui/gtk4/broken-glass.ui:22 resources/ui/gtk4/tv-glitch.ui:23
#: resources/ui/gtk4/glitch.ui:23 resources/ui/gtk4/matrix.ui:23 #: resources/ui/gtk4/glitch.ui:23 resources/ui/gtk4/matrix.ui:23
@@ -665,7 +667,7 @@ msgstr "Градієнт"
#: resources/ui/gtk4/prefs.ui:82 resources/ui/gtk3/prefs.ui:124 #: resources/ui/gtk4/prefs.ui:82 resources/ui/gtk3/prefs.ui:124
#: resources/ui/adw/prefs.ui:224 #: resources/ui/adw/prefs.ui:224
msgid "Effect Settings" msgid "Effect Settings"
msgstr "" msgstr "Налаштування ефектів"
#: resources/ui/gtk4/prefs.ui:92 resources/ui/gtk3/prefs.ui:134 #: resources/ui/gtk4/prefs.ui:92 resources/ui/gtk3/prefs.ui:134
#: resources/ui/adw/prefs.ui:225 #: resources/ui/adw/prefs.ui:225
@@ -675,17 +677,17 @@ msgstr "Якщо вибрано декілька, то один оберетьс
#: resources/ui/gtk4/prefs.ui:132 resources/ui/gtk3/prefs.ui:172 #: resources/ui/gtk4/prefs.ui:132 resources/ui/gtk3/prefs.ui:172
#: resources/ui/adw/prefs.ui:65 #: resources/ui/adw/prefs.ui:65
msgid "Effect Profile Constraints" msgid "Effect Profile Constraints"
msgstr "" msgstr "Обмеження профілю ефектів"
#: resources/ui/gtk4/prefs.ui:142 resources/ui/gtk3/prefs.ui:182 #: resources/ui/gtk4/prefs.ui:142 resources/ui/gtk3/prefs.ui:182
#: resources/ui/adw/prefs.ui:66 #: resources/ui/adw/prefs.ui:66
msgid "Define when the current effect settings should be used." msgid "Define when the current effect settings should be used."
msgstr "" msgstr "Визначте, коли слід використовувати поточні налаштування ефекту."
#: resources/ui/gtk4/prefs.ui:166 resources/ui/gtk3/prefs.ui:206 #: resources/ui/gtk4/prefs.ui:166 resources/ui/gtk3/prefs.ui:206
#: resources/ui/adw/prefs.ui:70 #: resources/ui/adw/prefs.ui:70
msgid "Application" msgid "Application"
msgstr "" msgstr "Додаток"
#: resources/ui/gtk4/prefs.ui:184 resources/ui/gtk4/prefs.ui:219 #: resources/ui/gtk4/prefs.ui:184 resources/ui/gtk4/prefs.ui:219
#: resources/ui/gtk4/prefs.ui:248 resources/ui/gtk4/prefs.ui:277 #: resources/ui/gtk4/prefs.ui:248 resources/ui/gtk4/prefs.ui:277
@@ -697,47 +699,47 @@ msgstr ""
#: resources/ui/adw/prefs.ui:117 resources/ui/adw/prefs.ui:132 #: resources/ui/adw/prefs.ui:117 resources/ui/adw/prefs.ui:132
#: resources/ui/adw/prefs.ui:147 resources/ui/adw/prefs.ui:162 #: resources/ui/adw/prefs.ui:147 resources/ui/adw/prefs.ui:162
msgid "Any" msgid "Any"
msgstr "" msgstr "Будь-який"
#: resources/ui/gtk4/prefs.ui:208 resources/ui/gtk3/prefs.ui:253 #: resources/ui/gtk4/prefs.ui:208 resources/ui/gtk3/prefs.ui:253
#: resources/ui/adw/prefs.ui:98 #: resources/ui/adw/prefs.ui:98
msgid "Animation Type" msgid "Animation Type"
msgstr "" msgstr "Тип анімації"
#: resources/ui/gtk4/prefs.ui:237 resources/ui/gtk3/prefs.ui:282 #: resources/ui/gtk4/prefs.ui:237 resources/ui/gtk3/prefs.ui:282
#: resources/ui/adw/prefs.ui:113 #: resources/ui/adw/prefs.ui:113
msgid "Window Type" msgid "Window Type"
msgstr "" msgstr "Тип вікна"
#: resources/ui/gtk4/prefs.ui:266 resources/ui/gtk3/prefs.ui:311 #: resources/ui/gtk4/prefs.ui:266 resources/ui/gtk3/prefs.ui:311
#: resources/ui/adw/prefs.ui:128 #: resources/ui/adw/prefs.ui:128
msgid "Color Scheme" msgid "Color Scheme"
msgstr "" msgstr "Кольорова схема"
#: resources/ui/gtk4/prefs.ui:295 resources/ui/gtk3/prefs.ui:340 #: resources/ui/gtk4/prefs.ui:295 resources/ui/gtk3/prefs.ui:340
#: resources/ui/adw/prefs.ui:143 #: resources/ui/adw/prefs.ui:143
msgid "Power Mode" msgid "Power Mode"
msgstr "" msgstr "Режим живлення"
#: resources/ui/gtk4/prefs.ui:324 resources/ui/gtk3/prefs.ui:369 #: resources/ui/gtk4/prefs.ui:324 resources/ui/gtk3/prefs.ui:369
#: resources/ui/adw/prefs.ui:158 #: resources/ui/adw/prefs.ui:158
msgid "Power Profile" msgid "Power Profile"
msgstr "" msgstr "Профіль живлення"
#: resources/ui/gtk4/prefs.ui:356 resources/ui/gtk3/prefs.ui:401 #: resources/ui/gtk4/prefs.ui:356 resources/ui/gtk3/prefs.ui:401
#: resources/ui/adw/prefs.ui:179 #: resources/ui/adw/prefs.ui:179
msgid "Advanced Profile Options" msgid "Advanced Profile Options"
msgstr "" msgstr "Розширені параметри профілю"
#: resources/ui/gtk4/prefs.ui:396 resources/ui/gtk3/prefs.ui:441 #: resources/ui/gtk4/prefs.ui:396 resources/ui/gtk3/prefs.ui:441
#: resources/ui/adw/prefs.ui:184 #: resources/ui/adw/prefs.ui:184
msgid "Use this profile even if there are better matching profiles." msgid "Use this profile even if there are better matching profiles."
msgstr "" msgstr "Використати цей профіль, навіть якщо є кращі підходящі профілі."
#: resources/ui/gtk4/prefs.ui:428 resources/ui/gtk3/prefs.ui:473 #: resources/ui/gtk4/prefs.ui:428 resources/ui/gtk3/prefs.ui:473
#: resources/ui/adw/prefs.ui:204 #: resources/ui/adw/prefs.ui:204
msgid "Delete this Profile..." msgid "Delete this Profile..."
msgstr "" msgstr "Видалити цей профіль..."
#: resources/ui/gtk4/pixelate.ui:69 resources/ui/gtk3/pixelate.ui:90 #: resources/ui/gtk4/pixelate.ui:69 resources/ui/gtk3/pixelate.ui:90
#: resources/ui/adw/pixelate.ui:47 #: resources/ui/adw/pixelate.ui:47
+15 -4
View File
@@ -227,8 +227,16 @@ var PreferencesDialog = class PreferencesDialog {
const [minMajor, minMinor] = effect.getMinShellVersion(); const [minMajor, minMinor] = effect.getMinShellVersion();
if (utils.shellVersionIsAtLeast(minMajor, minMinor)) { if (utils.shellVersionIsAtLeast(minMajor, minMinor)) {
const uiFile = `/ui/${utils.getUIDir()}/${effect.getNick()}.ui`; const uiFile = `/ui/${utils.getUIDir()}/${effect.getNick()}.ui`;
const [hasPrefs] = Gio.resources_get_info(uiFile, 0);
// Is there a better way to test for the existence of a resource file?
let hasPrefs = false;
try {
Gio.resources_get_info(uiFile, 0);
hasPrefs = true;
} catch (e) {
// Nothing todo, there
}
// Add the settings page to the builder. // Add the settings page to the builder.
if (hasPrefs) { if (hasPrefs) {
@@ -288,9 +296,11 @@ var PreferencesDialog = class PreferencesDialog {
} }
}); });
this._effectRows.push(row); this._effectRows.push(row);
row.add_action(previewButton);
} else {
row.add_suffix(previewButton);
} }
row.add_action(previewButton);
row.add_prefix(button); row.add_prefix(button);
group.add(row); group.add(row);
@@ -440,8 +450,9 @@ var PreferencesDialog = class PreferencesDialog {
addURIAction('bugs', 'https://github.com/Schneegans/Burn-My-Windows/issues'); addURIAction('bugs', 'https://github.com/Schneegans/Burn-My-Windows/issues');
addURIAction('new-effect', 'https://github.com/Schneegans/Burn-My-Windows/blob/main/docs/how-to-create-new-effects.md'); addURIAction('new-effect', 'https://github.com/Schneegans/Burn-My-Windows/blob/main/docs/how-to-create-new-effects.md');
addURIAction('translate', 'https://hosted.weblate.org/engage/burn-my-windows/'); addURIAction('translate', 'https://hosted.weblate.org/engage/burn-my-windows/');
addURIAction('donate-paypal', 'https://www.paypal.com/donate/?hosted_button_id=3F7UFL8KLVPXE'); addURIAction('donate-kofi', 'https://ko-fi.com/schneegans');
addURIAction('donate-github', 'https://github.com/sponsors/Schneegans'); addURIAction('donate-github', 'https://github.com/sponsors/Schneegans');
addURIAction('donate-paypal', 'https://www.paypal.com/donate/?hosted_button_id=3F7UFL8KLVPXE');
addURIAction('wallpapers', 'https://github.com/Schneegans/ai-wallpapers'); addURIAction('wallpapers', 'https://github.com/Schneegans/ai-wallpapers');
// clang-format on // clang-format on
+10 -6
View File
@@ -1,12 +1,12 @@
{ {
"gold": [ "gold": [
{ {
"name": "Maxence Sebald", "name": "D3vil0p3r",
"url": "" "url": "https://github.com/D3vil0p3r"
}, },
{ {
"name": "Dennis ten Hoove", "name": "Maxence Sebald",
"url": "https://github.com/dennis1248" "url": ""
} }
], ],
"silver": [ "silver": [
@@ -20,6 +20,10 @@
} }
], ],
"bronze": [ "bronze": [
{
"name": "@SubOptimal",
"url": "https://github.com/SubOptimal"
},
{ {
"name": "@vlazic", "name": "@vlazic",
"url": "https://github.com/vlazic" "url": "https://github.com/vlazic"
@@ -27,8 +31,8 @@
], ],
"past": [ "past": [
{ {
"name": "D3vil0p3r", "name": "Dennis ten Hoove",
"url": "https://github.com/D3vil0p3r" "url": "https://github.com/dennis1248"
}, },
{ {
"name": "@MRR-dev", "name": "@MRR-dev",
+4 -4
View File
@@ -31,7 +31,7 @@ void main() {
float progress = uForOpening ? 1.0 - uProgress : uProgress; float progress = uForOpening ? 1.0 - uProgress : uProgress;
// Draw the individual shard layers. // Draw the individual shard layers.
for (float i = 0; i < SHARD_LAYERS; ++i) { for (float i = 0.0; i < SHARD_LAYERS; ++i) {
// To enable drawing shards outside of the window bounds, the actor was scaled // To enable drawing shards outside of the window bounds, the actor was scaled
// by ACTOR_SCALE. Here we scale and move the texture coordinates so that the // by ACTOR_SCALE. Here we scale and move the texture coordinates so that the
@@ -51,8 +51,8 @@ void main() {
// Move down each layer a bit. // Move down each layer a bit.
float gravity = float gravity =
(uForOpening ? -1.0 : 1.0) * uGravity * 0.1 * (i + 1) * progress * progress; (uForOpening ? -1.0 : 1.0) * uGravity * 0.1 * (i + 1.0) * progress * progress;
coords += vec2(0, gravity); coords += vec2(0.0, gravity);
// Restore correct position. // Restore correct position.
coords += uEpicenter; coords += uEpicenter;
@@ -66,7 +66,7 @@ void main() {
// the bin of the current shard. // the bin of the current shard.
float shardGroup = floor(shardMap.g * SHARD_LAYERS * 0.999); float shardGroup = floor(shardMap.g * SHARD_LAYERS * 0.999);
if (shardGroup == i && (shardMap.x - pow(progress + 0.1, 2)) > 0.0) { if (shardGroup == i && (shardMap.x - pow(progress + 0.1, 2.0)) > 0.0) {
oColor = getInputColor(coords); oColor = getInputColor(coords);
} }
} }
+1 -1
View File
@@ -99,7 +99,7 @@ uniform vec2 uSize;
uniform float uPadding; uniform float uPadding;
// On GNOME, we set iTexCoord to be an alias for the cogl variables. // On GNOME, we set iTexCoord to be an alias for the cogl variables.
vec2 iTexCoord = cogl_tex_coord_in[0].st; #define iTexCoord vec2(cogl_tex_coord_in[0])
// Shell.GLSLEffect uses straight alpha. So we have to convert from premultiplied. // Shell.GLSLEffect uses straight alpha. So we have to convert from premultiplied.
vec4 getInputColor(vec2 coords) { vec4 getInputColor(vec2 coords) {
+3 -1
View File
@@ -107,12 +107,14 @@ void main() {
if ((!uForOpening && gradient > hideThreshold) || if ((!uForOpening && gradient > hideThreshold) ||
(uForOpening && gradient < hideThreshold)) { (uForOpening && gradient < hideThreshold)) {
// We add some distortion in the scorch zone // We add some distortion in the scorch zone. This is only possible if using GLES.
vec2 distort = vec2(0.0); vec2 distort = vec2(0.0);
#ifndef GL_ES
if (scorchRange.x < gradient && gradient < scorchRange.y) { if (scorchRange.x < gradient && gradient < scorchRange.y) {
distort = vec2(dFdx(gradient), dFdy(gradient)) * scorchMask * 5.0; distort = vec2(dFdx(gradient), dFdy(gradient)) * scorchMask * 5.0;
} }
#endif
oColor = getInputColor(iTexCoord + distort); oColor = getInputColor(iTexCoord + distort);
} }
+2 -2
View File
@@ -54,7 +54,7 @@ vec2 getRain(vec2 fragCoord) {
float delay = fract(sin(column) * 78.233) * mix(0.0, 1.0, uRandomness); float delay = fract(sin(column) * 78.233) * mix(0.0, 1.0, uRandomness);
float speed = fract(cos(column) * 12.989) * mix(0.0, 0.3, uRandomness) + 1.5; float speed = fract(cos(column) * 12.989) * mix(0.0, 0.3, uRandomness) + 1.5;
float distToDrop = (uProgress * 2 - delay) * speed - iTexCoord.y; float distToDrop = (uProgress * 2.0 - delay) * speed - iTexCoord.y;
float rainAlpha = distToDrop >= 0.0 ? exp(-distToDrop / TRAIL_LENGTH) : 0.0; float rainAlpha = distToDrop >= 0.0 ? exp(-distToDrop / TRAIL_LENGTH) : 0.0;
float windowAlpha = 1.0 - clamp(uSize.y * distToDrop, 0.0, FADE_WIDTH) / FADE_WIDTH; float windowAlpha = 1.0 - clamp(uSize.y * distToDrop, 0.0, FADE_WIDTH) / FADE_WIDTH;
@@ -91,7 +91,7 @@ void main() {
// This is used to fade out the remaining trails in the end. // This is used to fade out the remaining trails in the end.
float finalFade = float finalFade =
1 - 1.0 -
clamp((uProgress - FINAL_FADE_START_TIME) / (1.0 - FINAL_FADE_START_TIME), 0.0, 1.0); clamp((uProgress - FINAL_FADE_START_TIME) / (1.0 - FINAL_FADE_START_TIME), 0.0, 1.0);
float rainAlpha = finalFade * rainMask.x; float rainAlpha = finalFade * rainMask.x;
+17 -14
View File
@@ -29,19 +29,20 @@ const float WINDOW_TILT = -1.0;
// Make sure that the portal and window open / close animations are quick even if the // Make sure that the portal and window open / close animations are quick even if the
// duration is longer. // duration is longer.
float PORTAL_OPEN_TIME = 0.4 / uDuration; float PORTAL_OPEN_TIME = 0.4;
float PORTAL_CLOSE_TIME = 0.4 / uDuration; float PORTAL_CLOSE_TIME = 0.4;
float WINDOW_OPEN_TIME = 0.35 / uDuration; float WINDOW_OPEN_TIME = 0.35;
// This will distort the given coordinate to achieve the wobble effect of the portal when // This will distort the given coordinate to achieve the wobble effect of the portal when
// the window passes through. The wobble happens around the point where the window appears // the window passes through. The wobble happens around the point where the window appears
// or disappears (which is controlled by WINDOW_OPEN_TIME) and takes // or disappears (which is controlled by WINDOW_OPEN_TIME) and takes
// PORTAL_WOBBLE_TIME. // PORTAL_WOBBLE_TIME.
vec2 getPortalWobble(vec2 coords) { vec2 getPortalWobble(vec2 coords) {
float progress = (uForOpening ? (1.0 - uProgress) : uProgress) / WINDOW_OPEN_TIME; float progress =
progress = clamp(1.0 - abs((progress - 1.0) / PORTAL_WOBBLE_TIME), 0.0, 1.0); (uForOpening ? (1.0 - uProgress) : uProgress) / WINDOW_OPEN_TIME * uDuration;
progress = easeInBack(progress, 1.7); progress = clamp(1.0 - abs((progress - 1.0) / PORTAL_WOBBLE_TIME), 0.0, 1.0);
float dist = length(coords); progress = easeInBack(progress, 1.7);
float dist = length(coords);
return coords * (1.0 - dist) * exp(-dist) * progress * PORTAL_WOBBLE_STRENGTH; return coords * (1.0 - dist) * exp(-dist) * progress * PORTAL_WOBBLE_STRENGTH;
} }
@@ -50,12 +51,13 @@ vec2 getPortalWobble(vec2 coords) {
// increase during uDuration*PORTAL_OPEN_TIME, stay at one until uDuration*(1.0 - // increase during uDuration*PORTAL_OPEN_TIME, stay at one until uDuration*(1.0 -
// PORTAL_CLOSE_TIME) and then decrease again. // PORTAL_CLOSE_TIME) and then decrease again.
float getPortalScale() { float getPortalScale() {
float scale = 1.0; float scale = 1.0;
if (uProgress < PORTAL_OPEN_TIME) { float closeTime = PORTAL_CLOSE_TIME / uDuration;
scale = easeOutBack(uProgress / PORTAL_OPEN_TIME, 1.5); float openTime = PORTAL_OPEN_TIME / uDuration;
} else if (uProgress > 1.0 - PORTAL_CLOSE_TIME) { if (uProgress < openTime) {
scale = scale = easeOutBack(uProgress / openTime, 1.5);
easeOutBack(1.0 - (uProgress - 1.0 + PORTAL_CLOSE_TIME) / PORTAL_CLOSE_TIME, 1.5); } else if (uProgress > 1.0 - closeTime) {
scale = easeOutBack(1.0 - (uProgress - 1.0 + closeTime) / closeTime, 1.5);
} }
return scale; return scale;
@@ -165,7 +167,8 @@ vec4 getPortalColor() {
// window). The fraction of the animation time take for the window animation is defined by // window). The fraction of the animation time take for the window animation is defined by
// WINDOW_OPEN_TIME. // WINDOW_OPEN_TIME.
vec4 getWindowColor() { vec4 getWindowColor() {
float progress = (uForOpening ? (1.0 - uProgress) : uProgress) / WINDOW_OPEN_TIME; float progress =
(uForOpening ? (1.0 - uProgress) : uProgress) / WINDOW_OPEN_TIME * uDuration;
// Add some elastic easing to make the effect more dynamic. // Add some elastic easing to make the effect more dynamic.
progress = easeInBack(clamp(progress, 0.0, 1.0), 1.2); progress = easeInBack(clamp(progress, 0.0, 1.0), 1.2);
+2 -2
View File
@@ -37,7 +37,7 @@ void main() {
vec4 oColor = vec4(0.0); vec4 oColor = vec4(0.0);
for (float i = 0; i < DUST_LAYERS; ++i) { for (float i = 0.0; i < DUST_LAYERS; ++i) {
// Create a random direction. // Create a random direction.
float factor = DUST_LAYERS == 1.0 ? 0.0 : i / (DUST_LAYERS - 1.0); float factor = DUST_LAYERS == 1.0 ? 0.0 : i / (DUST_LAYERS - 1.0);
@@ -84,7 +84,7 @@ void main() {
windowColor.rgb = mix(windowColor.rgb, dustColor, progress); windowColor.rgb = mix(windowColor.rgb, dustColor, progress);
// Dissolve and blend the layers. // Dissolve and blend the layers.
if (dustMap.x - progress > 0) { if (dustMap.x - progress > 0.0) {
oColor = windowColor; oColor = windowColor;
} }
} }
+16 -7
View File
@@ -23,9 +23,12 @@ uniform float uNumClaws;
uniform float uWarpIntensity; uniform float uWarpIntensity;
const float FLASH_INTENSITY = 0.1; const float FLASH_INTENSITY = 0.1;
const float MAX_SPAWN_TIME =
0.6; // Scratches will only start in the first half of the animation. // Scratches will only start in the first half of the animation.
const float FF_TIME = 0.6; // Relative time for the final fade to transparency. const float MAX_SPAWN_TIME = 0.6;
// Relative time for the final fade to transparency.
const float FF_TIME = 0.6;
// This method generates a grid of randomly rotated, slightly shifted and scaled // This method generates a grid of randomly rotated, slightly shifted and scaled
// UV squares. It returns the texture coords of the UV square at the given actor // UV squares. It returns the texture coords of the UV square at the given actor
@@ -82,15 +85,21 @@ void main() {
// relative time when the respective part will become invisible. Therefore we can // relative time when the respective part will become invisible. Therefore we can
// add a value to make the scratch appear later. // add a value to make the scratch appear later.
float scratchMap = 1.0; float scratchMap = 1.0;
for (int i = 0; i < uNumClaws; ++i) { for (float i = 0.0; i < uNumClaws; ++i) {
vec2 uv = getClawUV(coords, 1.0 / uClawSize, uSeed * (i + 1)); vec2 uv = getClawUV(coords, 1.0 / uClawSize, uSeed * (i + 1.0));
float delay = i / uNumClaws * MAX_SPAWN_TIME; float delay = i / uNumClaws * MAX_SPAWN_TIME;
scratchMap = min(scratchMap, clamp(texture2D(uClawTexture, uv).r + delay, 0.0, 1.0)); scratchMap = min(scratchMap, clamp(texture2D(uClawTexture, uv).r + delay, 0.0, 1.0));
} }
// Get the window texture. We shift the texture lookup by the local derivative of // Get the window texture. We shift the texture lookup by the local derivative of
// the claw texture in order to mimic some folding distortion. // the claw texture in order to mimic some folding distortion. This is only possible if
vec2 offset = vec2(dFdx(scratchMap), dFdy(scratchMap)) * progress * 0.5; // not using GLES.
vec2 offset = vec2(0.0);
#ifndef GL_ES
offset = vec2(dFdx(scratchMap), dFdy(scratchMap)) * progress * 0.5;
#endif
vec4 oColor = getInputColor(coords + offset); vec4 oColor = getInputColor(coords + offset);
// Add colorful flashes. // Add colorful flashes.
+6 -2
View File
@@ -38,13 +38,17 @@ SPDX-License-Identifier: GPL-3.0-or-later
<submenu> <submenu>
<attribute name="label" translatable="yes">Donate</attribute> <attribute name="label" translatable="yes">Donate</attribute>
<item> <item>
<attribute name="label">PayPal</attribute> <attribute name="label">Ko-fi</attribute>
<attribute name="action">prefs.donate-paypal</attribute> <attribute name="action">prefs.donate-kofi</attribute>
</item> </item>
<item> <item>
<attribute name="label">GitHub</attribute> <attribute name="label">GitHub</attribute>
<attribute name="action">prefs.donate-github</attribute> <attribute name="action">prefs.donate-github</attribute>
</item> </item>
<item>
<attribute name="label">PayPal</attribute>
<attribute name="action">prefs.donate-paypal</attribute>
</item>
</submenu> </submenu>
</section> </section>
<section> <section>
+43 -4
View File
@@ -17,6 +17,7 @@
const {Gio, Shell, GObject, Clutter} = imports.gi; const {Gio, Shell, GObject, Clutter} = imports.gi;
const ByteArray = imports.byteArray; const ByteArray = imports.byteArray;
const Main = imports.ui.main;
const ExtensionUtils = imports.misc.extensionUtils; const ExtensionUtils = imports.misc.extensionUtils;
const Me = imports.misc.extensionUtils.getCurrentExtension(); const Me = imports.misc.extensionUtils.getCurrentExtension();
const utils = Me.imports.src.utils; const utils = Me.imports.src.utils;
@@ -36,12 +37,14 @@ const utils = Me.imports.src.utils;
// hard-coded use of straight alpha (as opposed to premultiplied). This makes the // // hard-coded use of straight alpha (as opposed to premultiplied). This makes the //
// shaders a bit more complicated than required. // // shaders a bit more complicated than required. //
// // // //
// The Shader fires two signals: // // The Shader fires three signals: //
// * begin-animation: This is called each time a new animation is started. It can // // * begin-animation: This is called each time a new animation is started. It can //
// be used to set uniform values which do not change during the // // be used to set uniform values which do not change during the //
// animation. // // animation. //
// * update-animation: This is called at each frame during the animation. It can be // // * update-animation: This is called at each frame during the animation. It can be //
// used to set uniforms which change during the animation. // // used to set uniforms which change during the animation. //
// * end-animation: This is called when the animation is stopped. This can be //
// used to clean up any resources.
////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////
var Shader = GObject.registerClass( var Shader = GObject.registerClass(
@@ -77,13 +80,42 @@ var Shader = GObject.registerClass(
this._uDuration = this.get_uniform_location('uDuration'); this._uDuration = this.get_uniform_location('uDuration');
this._uSize = this.get_uniform_location('uSize'); this._uSize = this.get_uniform_location('uSize');
this._uPadding = this.get_uniform_location('uPadding'); this._uPadding = this.get_uniform_location('uPadding');
// Create a timeline to drive the animation.
this._timeline = new Clutter.Timeline();
// Call updateAnimation() once a frame.
this._timeline.connect('new-frame', (t) => {
if (this._testMode) {
this.updateAnimation(0.5);
} else {
this.updateAnimation(t.get_progress());
}
});
// Clean up if the animation finished or was interrupted.
this._timeline.connect('stopped', (t, finished) => {
this.endAnimation();
});
} }
// This is called once each time the shader is used. // This is called once each time the shader is used.
beginAnimation(settings, forOpening, testMode, duration, actor) { beginAnimation(settings, forOpening, testMode, duration, actor) {
if (this._timeline.is_playing()) {
this._timeline.stop();
}
// On GNOME 3.36 this method was not yet available.
if (this._timeline.set_actor) {
this._timeline.set_actor(actor);
}
this._timeline.set_duration(duration);
this._timeline.start();
// Reset progress value. // Reset progress value.
this._progress = 0; this._progress = 0;
this._testMode = testMode;
// This is not necessarily symmetric, but I haven't figured out a way to // This is not necessarily symmetric, but I haven't figured out a way to
// get the actual values... // get the actual values...
@@ -91,7 +123,7 @@ var Shader = GObject.registerClass(
this.set_uniform_float(this._uPadding, 1, [padding]); this.set_uniform_float(this._uPadding, 1, [padding]);
this.set_uniform_float(this._uForOpening, 1, [forOpening]); this.set_uniform_float(this._uForOpening, 1, [forOpening]);
this.set_uniform_float(this._uDuration, 1, [duration]); this.set_uniform_float(this._uDuration, 1, [duration * 0.001]);
this.set_uniform_float(this._uSize, 2, [actor.width, actor.height]); this.set_uniform_float(this._uSize, 2, [actor.width, actor.height]);
this.emit('begin-animation', settings, forOpening, testMode, actor); this.emit('begin-animation', settings, forOpening, testMode, actor);
@@ -103,11 +135,18 @@ var Shader = GObject.registerClass(
// in vfunc_paint_target. We do not emit it here, as the pipeline which may be used // in vfunc_paint_target. We do not emit it here, as the pipeline which may be used
// by handlers must not have been created yet. // by handlers must not have been created yet.
this._progress = progress; this._progress = progress;
this.queue_repaint();
} }
// This will just emit the end-animation signal. It can be used to clean up any // This will stop any running animation and emit the end-animation signal.
// resources required during the animation.
endAnimation() { endAnimation() {
// This will call endAnimation() again, so we can return for now.
if (this._timeline.is_playing()) {
this._timeline.stop();
return;
}
this.emit('end-animation'); this.emit('end-animation');
} }
+6 -4
View File
@@ -29,6 +29,8 @@
# -v 35: GNOME Shell 41 # -v 35: GNOME Shell 41
# -v 36: GNOME Shell 42 # -v 36: GNOME Shell 42
# -v 37: GNOME Shell 43 # -v 37: GNOME Shell 43
# -v 38: GNOME Shell 44
# -v rawhide: The current GNOME Shell version of Fedora Rawhide
# -s session: This can either be "gnome-xsession" or "gnome-wayland-nested". # -s session: This can either be "gnome-xsession" or "gnome-wayland-nested".
# Exit on error. # Exit on error.
@@ -140,7 +142,7 @@ do_in_pod gnome-extensions install "${EXTENSION}.zip"
# Starting with GNOME 40, there is a "Welcome Tour" dialog popping up at first launch. # Starting with GNOME 40, there is a "Welcome Tour" dialog popping up at first launch.
# We disable this beforehand. # We disable this beforehand.
if [[ "${FEDORA_VERSION}" -gt 33 ]]; then if [[ "${FEDORA_VERSION}" -gt 33 ]] || [[ "${FEDORA_VERSION}" == "rawhide" ]]; then
echo "Disabling welcome tour." echo "Disabling welcome tour."
do_in_pod gsettings set org.gnome.shell welcome-dialog-last-shown-version "999" || true do_in_pod gsettings set org.gnome.shell welcome-dialog-last-shown-version "999" || true
fi fi
@@ -157,7 +159,7 @@ do_in_pod gnome-extensions enable "${EXTENSION}"
# Starting with GNOME 40, the overview is the default mode. We close this here by hitting # Starting with GNOME 40, the overview is the default mode. We close this here by hitting
# the super key. # the super key.
if [[ "${FEDORA_VERSION}" -gt 33 ]]; then if [[ "${FEDORA_VERSION}" -gt 33 ]] || [[ "${FEDORA_VERSION}" == "rawhide" ]]; then
echo "Closing Overview." echo "Closing Overview."
send_keystroke "super" send_keystroke "super"
fi fi
@@ -194,12 +196,12 @@ capture_effect "tv"
capture_effect "tv-glitch" capture_effect "tv-glitch"
capture_effect "wisps" capture_effect "wisps"
if [[ "${FEDORA_VERSION}" -gt 32 ]]; then if [[ "${FEDORA_VERSION}" -gt 32 ]] || [[ "${FEDORA_VERSION}" == "rawhide" ]]; then
capture_effect "apparition" capture_effect "apparition"
capture_effect "doom" capture_effect "doom"
fi fi
if [[ "${FEDORA_VERSION}" -gt 33 ]]; then if [[ "${FEDORA_VERSION}" -gt 33 ]] || [[ "${FEDORA_VERSION}" == "rawhide" ]]; then
capture_effect "trex" capture_effect "trex"
capture_effect "broken-glass" capture_effect "broken-glass"
capture_effect "matrix" capture_effect "matrix"
Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 664 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 664 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 424 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 424 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 443 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 443 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Some files were not shown because too many files have changed in this diff Show More