Compare commits
40 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3367b57c05 | |||
| 9905e643a5 | |||
| 0d8aed5ad0 | |||
| 79601cc8d0 | |||
| f021ea7ede | |||
| f3e9917729 | |||
| 14cfa0818f | |||
| 4814730400 | |||
| 91f7f8f1b5 | |||
| fa5baa4301 | |||
| c80707ee1f | |||
| 343eddbfcb | |||
| 04e0999d5b | |||
| 48c8bcec3a | |||
| 38d12453b6 | |||
| b48e92f8c1 | |||
| 14d482e16a | |||
| e87340d7ad | |||
| ee93c06304 | |||
| 1e06ed6503 | |||
| 0fd3f0f62f | |||
| 42d69afa89 | |||
| 1b57d1e015 | |||
| 658ca6415a | |||
| 5ffee2c817 | |||
| 5aad16c8bf | |||
| b623a5923f | |||
| e06245bdca | |||
| e5907292ed | |||
| 70bfbac890 | |||
| d010c60143 | |||
| 649a1cce73 | |||
| bccdc0253d | |||
| b7429bada3 | |||
| 23a85798ca | |||
| e051551747 | |||
| 6eae8d1aa3 | |||
| 6d34936375 | |||
| 46c8eaf417 | |||
| 55b491bb36 |
@@ -6,7 +6,7 @@
|
||||
github: schneegans
|
||||
patreon: # Replace with a single Patreon 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
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: # Schneegans
|
||||
|
||||
@@ -116,6 +116,8 @@ jobs:
|
||||
- '35'
|
||||
- '36'
|
||||
- '37'
|
||||
- '38'
|
||||
- 'rawhide'
|
||||
session:
|
||||
- 'gnome-xsession'
|
||||
- 'gnome-wayland-nested'
|
||||
|
||||
@@ -48,7 +48,7 @@ pot: $(JS_FILES) $(UI_FILES)
|
||||
|
||||
# This runs several tests in containerized versions of GNOME Shell.
|
||||
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 \
|
||||
echo ; \
|
||||
echo "Running Tests on Fedora $$version ($$session)." ; \
|
||||
@@ -59,7 +59,7 @@ test:
|
||||
|
||||
# This re-generates all reference images required by the tests.
|
||||
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 \
|
||||
echo ; \
|
||||
echo "Generating References for Fedora $$version ($$session)." ; \
|
||||
|
||||
@@ -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>
|
||||
<p align="center">
|
||||
<a href="https://github.com/D3vil0p3r">D3vil0p3r</a><br>
|
||||
Maxence Sebald<br>
|
||||
<a href="https://github.com/dennis1248">Dennis ten Hoove</a><br>
|
||||
</p>
|
||||
|
||||
<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>
|
||||
<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/sponsors/Schneegans">Become the first!</a><br> -->
|
||||
</p>
|
||||
|
||||
<h3 align="center">🏅 Previous Sponsors and One-Time Donators</h3>
|
||||
<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/AngelBrielez'>Angel Brielez</a>
|
||||
<a href='https://github.com/taconomix'>@taconomix</a><br>
|
||||
|
||||
@@ -5,6 +5,31 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
# Changelog of the Burn-My-Windows Extension
|
||||
|
||||
## [Burn My Windows 29](https://github.com/schneegans/Burn-My-Windows/releases/tag/v29)
|
||||
|
||||
**Release Date:** 2023-04-08
|
||||
|
||||
#### Bug Fixes
|
||||
|
||||
* Fixed a regression which caused window-close animations not to shown in front of full-screen windows.
|
||||
* Fixed an incompatibility with the [Compiz alike magic lamp effect](https://extensions.gnome.org/extension/3740/compiz-alike-magic-lamp-effect/).
|
||||
|
||||
## [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)
|
||||
|
||||
**Release Date:** 2023-03-01
|
||||
|
||||
@@ -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.
|
||||
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!
|
||||
|
||||
```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>
|
||||
|
||||
```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
|
||||
// provides the standard input:
|
||||
|
||||
@@ -214,7 +228,6 @@ var SimpleFade = class {
|
||||
// binds all user interface elements to the respective settings keys of the profile.
|
||||
bindPreferences(dialog) {
|
||||
// Empty for now... Code is added here later in the tutorial!
|
||||
return null;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------- 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.
|
||||
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.
|
||||
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.
|
||||
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
|
||||
-->
|
||||
|
||||
<interface>
|
||||
<interface domain="burn-my-windows">
|
||||
|
||||
<object class="GtkAdjustment" id="simple-fade-animation-time">
|
||||
<property name="upper">5000</property>
|
||||
@@ -297,106 +311,97 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
<property name="page-increment">0.1</property>
|
||||
</object>
|
||||
|
||||
<object class="GtkBox" id="simple-fade-prefs">
|
||||
<property name="orientation">vertical</property>
|
||||
<object class="GtkRevealer" id="simple-fade-prefs">
|
||||
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<object class="GtkListBox">
|
||||
<property name="selection-mode">none</property>
|
||||
|
||||
<child>
|
||||
<object class="GtkListBox">
|
||||
<property name="selection-mode">none</property>
|
||||
<style>
|
||||
<class name="rich-list" />
|
||||
</style>
|
||||
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="activatable">0</property>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="activatable">0</property>
|
||||
<object class="GtkBox">
|
||||
<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>
|
||||
<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>
|
||||
<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 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>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="activatable">0</property>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="activatable">0</property>
|
||||
<object class="GtkBox">
|
||||
<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>
|
||||
<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>
|
||||
<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 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>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
@@ -423,7 +428,7 @@ SPDX-FileCopyrightText: Your Name <your@email.com>
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
-->
|
||||
|
||||
<interface>
|
||||
<interface domain="burn-my-windows">
|
||||
|
||||
<object class="GtkAdjustment" id="simple-fade-animation-time">
|
||||
<property name="upper">5000</property>
|
||||
@@ -439,97 +444,87 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
<property name="page-increment">0.1</property>
|
||||
</object>
|
||||
|
||||
<object class="GtkBox" id="simple-fade-prefs">
|
||||
<property name="orientation">vertical</property>
|
||||
<object class="GtkRevealer" id="simple-fade-prefs">
|
||||
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<object class="GtkListBox">
|
||||
<property name="selection-mode">none</property>
|
||||
|
||||
<child>
|
||||
<object class="GtkListBox">
|
||||
<property name="selection-mode">none</property>
|
||||
<property name="show-separators">1</property>
|
||||
<style>
|
||||
<class name="rich-list" />
|
||||
</style>
|
||||
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="activatable">0</property>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="activatable">0</property>
|
||||
<object class="GtkBox">
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<child>
|
||||
<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">
|
||||
<property name="icon-name">edit-clear-symbolic</property>
|
||||
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
|
||||
<style>
|
||||
<class name="flat" />
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
<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">
|
||||
<property name="icon-name">edit-clear-symbolic</property>
|
||||
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
|
||||
<style>
|
||||
<class name="flat" />
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="activatable">0</property>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="activatable">0</property>
|
||||
<object class="GtkBox">
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<child>
|
||||
<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">
|
||||
<property name="icon-name">edit-clear-symbolic</property>
|
||||
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
|
||||
<style>
|
||||
<class name="flat" />
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
<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">
|
||||
<property name="icon-name">edit-clear-symbolic</property>
|
||||
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
|
||||
<style>
|
||||
<class name="flat" />
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
@@ -570,7 +565,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
<property name="page-increment">0.1</property>
|
||||
</object>
|
||||
|
||||
<object class="AdwActionRow" id="simple-fade-prefs">
|
||||
<object class="AdwExpanderRow" id="simple-fade-prefs">
|
||||
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
|
||||
@@ -94,7 +94,10 @@ class Extension {
|
||||
this._loadProfiles();
|
||||
this._settings.set_int('last-extension-version', Me.metadata.version);
|
||||
});
|
||||
} else {
|
||||
this._loadProfiles();
|
||||
}
|
||||
|
||||
} else {
|
||||
this._loadProfiles();
|
||||
}
|
||||
@@ -133,90 +136,113 @@ class Extension {
|
||||
}
|
||||
|
||||
// We will monkey-patch these methods. Let's store the original ones.
|
||||
this._origShouldAnimateActor = Main.wm._shouldAnimateActor;
|
||||
this._origWaitForOverviewToHide = Main.wm._waitForOverviewToHide;
|
||||
this._origAddWindowClone = Workspace.prototype._addWindowClone;
|
||||
this._origWindowRemoved = Workspace.prototype._windowRemoved;
|
||||
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
|
||||
// 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
|
||||
// If a window is created, the transitions are set up in the async _mapWindow() of the
|
||||
// WindowManager:
|
||||
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/windowManager.js#L1478
|
||||
// AFAIK, overriding this method is not possible as it's called by a signal to
|
||||
// which it is bound via the bind() method. To tweak the async transition
|
||||
// anyways, we override the actors ease() method once - the next time it will be
|
||||
// called by the _mapWindow(), we will intercept it!
|
||||
this._windowCreatedConnection =
|
||||
global.display.connect('window-created', (d, metaWin) => {
|
||||
let actor = metaWin.get_compositor_private();
|
||||
// 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 which
|
||||
// it is bound via the bind() method. To tweak the async transition anyways, we
|
||||
// override the actors ease() method once. We do this in _shouldAnimateActor() which
|
||||
// is called right before the ease() in _mapWindow:
|
||||
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/windowManager.js#L1472
|
||||
|
||||
const orig = actor.ease;
|
||||
actor.ease = function(...params) {
|
||||
orig.apply(actor, params);
|
||||
actor.ease = orig;
|
||||
// The same trick is done for the window-close animation. This is set up in a similar
|
||||
// fashion in the WindowManager's _destroyWindow():
|
||||
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/windowManager.js#L1558.
|
||||
// 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
|
||||
// the actor is not yet mapped, we defer the effect creation.
|
||||
if (actor.mapped) {
|
||||
extensionThis._setupEffect(actor, true);
|
||||
} else {
|
||||
const connectionID = actor.connect('notify::mapped', () => {
|
||||
extensionThis._setupEffect(actor, true);
|
||||
actor.disconnect(connectionID);
|
||||
});
|
||||
}
|
||||
};
|
||||
// We override WindowManager._shouldAnimateActor() also for another purpose: Usually,
|
||||
// it returns false when we are in the overview. This prevents the window animations
|
||||
// there. To enable animations in the overview, we check inside the method whether it
|
||||
// was called by either _mapWindow or _destroyWindow. 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#L1120
|
||||
Main.wm._shouldAnimateActor = function(actor, types) {
|
||||
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
|
||||
// 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
|
||||
// the window as well.
|
||||
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...
|
||||
let realWindow, clone;
|
||||
let realWindow, container;
|
||||
|
||||
if (utils.shellVersionIs(3, 36)) {
|
||||
clone = result[0];
|
||||
realWindow = clone.realWindow;
|
||||
container = clone[0];
|
||||
realWindow = container.realWindow;
|
||||
} else if (utils.shellVersionIs(3, 38)) {
|
||||
clone = result._windowContainer;
|
||||
container = clone._windowContainer;
|
||||
realWindow = params[0].get_compositor_private();
|
||||
} else {
|
||||
clone = result.window_container;
|
||||
container = clone.window_container;
|
||||
realWindow = params[0].get_compositor_private();
|
||||
}
|
||||
|
||||
// Syncing the real window's scale with the scale of its clone only works on GNOME
|
||||
// Shell 3.38+. So effects cannot scale windows in the overview of GNOME 3.36...
|
||||
if (utils.shellVersionIsAtLeast(3, 38)) {
|
||||
const xID = realWindow.connect('notify::scale-x', () => {
|
||||
if (realWindow.scale_x > 0 && clone.allocation.get_size()[0] > 0) {
|
||||
clone.scale_x = realWindow.scale_x;
|
||||
}
|
||||
});
|
||||
// Store the overview clone as temporary members of the real window actor. When we
|
||||
// set up the effect, we will check for the existence of these and enlarge the clone
|
||||
// as needed.
|
||||
realWindow._bmwOverviewClone = clone;
|
||||
realWindow._bmwOverviewCloneContainer = container;
|
||||
|
||||
const yID = realWindow.connect('notify::scale-y', () => {
|
||||
if (realWindow.scale_y > 0 && clone.allocation.get_size()[1] > 0) {
|
||||
clone.scale_y = realWindow.scale_y;
|
||||
}
|
||||
});
|
||||
|
||||
clone.connect('destroy', () => {
|
||||
realWindow.disconnect(xID);
|
||||
realWindow.disconnect(yID);
|
||||
});
|
||||
}
|
||||
// Remove the temporary members again once the clone is deleted.
|
||||
container.connect('destroy', () => {
|
||||
delete realWindow._bmwOverviewClone;
|
||||
delete realWindow._bmwOverviewCloneContainer;
|
||||
});
|
||||
|
||||
// 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
|
||||
@@ -225,73 +251,23 @@ 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/main/js/ui/workspace.js#L1363
|
||||
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
|
||||
// window-open animations by not waiting for this.
|
||||
WindowManager.prototype._waitForOverviewToHide = async function() {
|
||||
Main.wm._waitForOverviewToHide = async function() {
|
||||
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
|
||||
// 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
|
||||
// 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 _destroyWindow of the WindowManager sets the transitions up and should take
|
||||
// care of removing the actors at the end of the transitions.
|
||||
// the case, these methods do nothing.
|
||||
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/workspace.js#L1258
|
||||
Workspace.prototype._windowRemoved = function(ws, metaWin) {
|
||||
if (extensionThis._shouldDestroy(this, metaWin)) {
|
||||
@@ -369,16 +345,14 @@ class Extension {
|
||||
// Disable the window-picking D-Bus API.
|
||||
this._windowPicker.unexport();
|
||||
|
||||
// Restore the original window-open and window-close animations.
|
||||
global.window_manager.disconnect(this._destroyConnection);
|
||||
global.display.disconnect(this._windowCreatedConnection);
|
||||
global.window_manager.disconnect(this._killEffectsSignal);
|
||||
|
||||
Workspace.prototype._addWindowClone = this._origAddWindowClone;
|
||||
Workspace.prototype._windowRemoved = this._origWindowRemoved;
|
||||
Workspace.prototype._doRemoveWindow = this._origDoRemoveWindow;
|
||||
WindowManager.prototype._shouldAnimateActor = this._origShouldAnimateActor;
|
||||
WindowManager.prototype._waitForOverviewToHide = this._origWaitForOverviewToHide;
|
||||
WindowManager.prototype._destroyWindowDone = this._origDestroyWindowDone;
|
||||
// Restore the original window-open and window-close animations.
|
||||
Workspace.prototype._addWindowClone = this._origAddWindowClone;
|
||||
Workspace.prototype._windowRemoved = this._origWindowRemoved;
|
||||
Workspace.prototype._doRemoveWindow = this._origDoRemoveWindow;
|
||||
Main.wm._shouldAnimateActor = this._origShouldAnimateActor;
|
||||
Main.wm._waitForOverviewToHide = this._origWaitForOverviewToHide;
|
||||
|
||||
if (WindowPreview) {
|
||||
WindowPreview.prototype._deleteAll = this._origDeleteAll;
|
||||
@@ -427,11 +401,10 @@ class Extension {
|
||||
this._profiles.sort((a, b) => b.priority - a.priority);
|
||||
}
|
||||
|
||||
// This method adds one of the configured effects to the given actor. First, a profile
|
||||
// matching the current circumstances is chosen. Then a random effect from its enabled
|
||||
// effects will be selected. This will also tweak the transitions of the given actor
|
||||
// (e.g. scale it up if required).
|
||||
_setupEffect(actor, forOpening) {
|
||||
// This method selects an effect profile matching the current circumstances. Then a
|
||||
// random effect from its enabled effects will be selected. It returns null if no
|
||||
// profile is currently applicable.
|
||||
_chooseEffect(actor, forOpening) {
|
||||
|
||||
// For now, we only add effects to normal windows and dialog windows.
|
||||
const isNormalWindow = actor.meta_window.window_type == Meta.WindowType.NORMAL;
|
||||
@@ -440,17 +413,7 @@ class Extension {
|
||||
actor.meta_window.window_type == Meta.WindowType.DIALOG;
|
||||
|
||||
if (!isNormalWindow && !isDialogWindow) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 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();
|
||||
return null;
|
||||
}
|
||||
|
||||
// ----------------------------------------------- choose a profile and then an effect
|
||||
@@ -556,11 +519,23 @@ class Extension {
|
||||
|
||||
// If nothing was enabled, we have to do nothing :)
|
||||
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
|
||||
// duration and show a fixed frame from the middle of the animation.
|
||||
@@ -572,97 +547,60 @@ class Extension {
|
||||
// actorScale.
|
||||
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
|
||||
// seconds.
|
||||
const duration =
|
||||
testMode ? 5000 : profile.settings.get_int(effect.getNick() + '-animation-time');
|
||||
|
||||
// All animations are relative to the window's center.
|
||||
actor.set_pivot_point(0.5, 0.5);
|
||||
|
||||
// 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();
|
||||
}
|
||||
});
|
||||
}
|
||||
// Finally start the animation!
|
||||
shader.beginAnimation(profile.settings, forOpening, testMode, duration, actor);
|
||||
}
|
||||
|
||||
// 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.
|
||||
const propertyName = utils.shellVersionIs(3, 36) ? 'realWindow' : '_windowActor';
|
||||
const actor = workspace._windows[index][propertyName];
|
||||
if (!actor.get_transition('scale-y')) {
|
||||
return true;
|
||||
}
|
||||
const shader = actor.get_effect('burn-my-windows-effect');
|
||||
|
||||
return false;
|
||||
return shader == null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,5 +14,5 @@
|
||||
"44"
|
||||
],
|
||||
"url": "https://github.com/Schneegans/Burn-My-Windows",
|
||||
"version": 27
|
||||
"version": 29
|
||||
}
|
||||
@@ -8,8 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: Burn-My-Windows\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-02-21 16:46+0100\n"
|
||||
"PO-Revision-Date: 2023-02-21 16:19+0000\n"
|
||||
"Last-Translator: Heimen Stoffels <vistausss@fastmail.com>\n"
|
||||
"PO-Revision-Date: 2023-03-17 10:41+0000\n"
|
||||
"Last-Translator: Philip Goto <philip.goto@gmail.com>\n"
|
||||
"Language-Team: Dutch <https://hosted.weblate.org/projects/burn-my-windows/"
|
||||
"core/nl/>\n"
|
||||
"Language: nl\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\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
|
||||
#: 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/adw/prefs.ui:70
|
||||
msgid "Application"
|
||||
msgstr "Toepassing"
|
||||
msgstr "App"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:184 resources/ui/gtk4/prefs.ui:219
|
||||
#: resources/ui/gtk4/prefs.ui:248 resources/ui/gtk4/prefs.ui:277
|
||||
|
||||
@@ -8,8 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: burn-my-windows\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-02-21 16:46+0100\n"
|
||||
"PO-Revision-Date: 2023-01-25 20:52+0000\n"
|
||||
"Last-Translator: gnu-ewm <gnu.ewm@protonmail.com>\n"
|
||||
"PO-Revision-Date: 2023-03-05 17:41+0000\n"
|
||||
"Last-Translator: WaldiS <sto@tutanota.de>\n"
|
||||
"Language-Team: Polish <https://hosted.weblate.org/projects/burn-my-windows/"
|
||||
"core/pl/>\n"
|
||||
"Language: pl\n"
|
||||
@@ -18,81 +18,81 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
|
||||
"|| 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
|
||||
#: resources/ui/gtk3/prefs.ui:265 resources/ui/adw/prefs.ui:103
|
||||
msgid "Opening Windows"
|
||||
msgstr ""
|
||||
msgstr "Otwieranie okien"
|
||||
|
||||
#: src/ProfileManager.js:169 resources/ui/gtk4/prefs.ui:221
|
||||
#: resources/ui/gtk3/prefs.ui:266 resources/ui/adw/prefs.ui:104
|
||||
msgid "Closing Windows"
|
||||
msgstr ""
|
||||
msgstr "Zamykanie okien"
|
||||
|
||||
#: src/ProfileManager.js:170 resources/ui/gtk4/prefs.ui:249
|
||||
#: resources/ui/gtk3/prefs.ui:294 resources/ui/adw/prefs.ui:118
|
||||
msgid "Normal Windows"
|
||||
msgstr ""
|
||||
msgstr "Normalne okna"
|
||||
|
||||
#: src/ProfileManager.js:171 resources/ui/gtk4/prefs.ui:250
|
||||
#: resources/ui/gtk3/prefs.ui:295 resources/ui/adw/prefs.ui:119
|
||||
msgid "Dialog Windows"
|
||||
msgstr ""
|
||||
msgstr "Okna dialogowe"
|
||||
|
||||
#: src/ProfileManager.js:172 resources/ui/gtk4/prefs.ui:278
|
||||
#: resources/ui/gtk3/prefs.ui:323 resources/ui/adw/prefs.ui:133
|
||||
msgid "Default Color Scheme"
|
||||
msgstr ""
|
||||
msgstr "Domyślny schemat kolorów"
|
||||
|
||||
#: src/ProfileManager.js:173 resources/ui/gtk4/prefs.ui:279
|
||||
#: resources/ui/gtk3/prefs.ui:324 resources/ui/adw/prefs.ui:134
|
||||
msgid "Dark Color Scheme"
|
||||
msgstr ""
|
||||
msgstr "Ciemny schemat kolorów"
|
||||
|
||||
#: src/ProfileManager.js:174 resources/ui/gtk4/prefs.ui:307
|
||||
#: resources/ui/gtk3/prefs.ui:352 resources/ui/adw/prefs.ui:148
|
||||
msgid "On Battery"
|
||||
msgstr ""
|
||||
msgstr "Zasilanie bateryjne"
|
||||
|
||||
#: src/ProfileManager.js:175 resources/ui/gtk4/prefs.ui:308
|
||||
#: resources/ui/gtk3/prefs.ui:353 resources/ui/adw/prefs.ui:149
|
||||
msgid "Plugged In"
|
||||
msgstr ""
|
||||
msgstr "Podłączony"
|
||||
|
||||
#: src/ProfileManager.js:176 resources/ui/gtk4/prefs.ui:336
|
||||
#: resources/ui/gtk3/prefs.ui:381 resources/ui/adw/prefs.ui:163
|
||||
msgid "Power-Saver Mode"
|
||||
msgstr ""
|
||||
msgstr "Tryb oszczędzania energii"
|
||||
|
||||
#: src/ProfileManager.js:177 resources/ui/gtk4/prefs.ui:337
|
||||
#: resources/ui/gtk3/prefs.ui:382 resources/ui/adw/prefs.ui:164
|
||||
msgid "Balanced Mode"
|
||||
msgstr ""
|
||||
msgstr "Tryb zrównoważony"
|
||||
|
||||
#: src/ProfileManager.js:178 resources/ui/gtk4/prefs.ui:338
|
||||
#: resources/ui/gtk3/prefs.ui:383 resources/ui/adw/prefs.ui:165
|
||||
msgid "Performance Mode"
|
||||
msgstr ""
|
||||
msgstr "Tryb wydajności"
|
||||
|
||||
#: src/ProfileManager.js:179 resources/ui/gtk4/prefs.ui:339
|
||||
#: resources/ui/gtk3/prefs.ui:384 resources/ui/adw/prefs.ui:166
|
||||
msgid "Power Saver or Balanced"
|
||||
msgstr ""
|
||||
msgstr "Oszczędzanie energii lub zrównoważony"
|
||||
|
||||
#: src/ProfileManager.js:180 resources/ui/gtk4/prefs.ui:340
|
||||
#: resources/ui/gtk3/prefs.ui:385 resources/ui/adw/prefs.ui:167
|
||||
msgid "Balanced or Performance"
|
||||
msgstr ""
|
||||
msgstr "Zrównoważony lub wydajny"
|
||||
|
||||
#: src/ProfileManager.js:185 resources/ui/gtk4/prefs.ui:387
|
||||
#: resources/ui/gtk3/prefs.ui:432 resources/ui/adw/prefs.ui:183
|
||||
msgid "High Priority"
|
||||
msgstr ""
|
||||
msgstr "Wysoki priorytet"
|
||||
|
||||
#: src/ProfileManager.js:191
|
||||
msgid "Standard Profile"
|
||||
msgstr ""
|
||||
msgstr "Profil standardowy"
|
||||
|
||||
#: src/effects/Apparition.js:78
|
||||
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
|
||||
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
|
||||
#: resources/ui/gtk3/prefs.ui:96
|
||||
@@ -225,21 +225,23 @@ msgstr "Byli Sponsorzy"
|
||||
|
||||
#: prefs.js:585
|
||||
msgid "Delete this Profile?"
|
||||
msgstr ""
|
||||
msgstr "Usunąć ten profil?"
|
||||
|
||||
#: prefs.js:587
|
||||
msgid ""
|
||||
"The current effect profile with all its effect settings will be permanently "
|
||||
"lost."
|
||||
msgstr ""
|
||||
"Bieżący profil efektów wraz ze wszystkimi jego ustawieniami efektów zostanie "
|
||||
"trwale utracony."
|
||||
|
||||
#: prefs.js:592
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
msgstr "Anuluj"
|
||||
|
||||
#: prefs.js:593
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
msgstr "Usuń"
|
||||
|
||||
#. Translators: %s will be replaced by the effect's name.
|
||||
#: prefs.js:923
|
||||
@@ -257,7 +259,7 @@ msgstr "Odwiedź Stronę Główną"
|
||||
|
||||
#: resources/ui/common/menus.ui:21
|
||||
msgid "View Matching Wallpapers"
|
||||
msgstr ""
|
||||
msgstr "Zobacz pasujące tapety"
|
||||
|
||||
#: resources/ui/common/menus.ui:27
|
||||
msgid "Report a Bug"
|
||||
@@ -281,7 +283,7 @@ msgstr "Informacje o Burn-My-Windows"
|
||||
|
||||
#: resources/ui/common/menus.ui:63
|
||||
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/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/adw/prefs.ui:224
|
||||
msgid "Effect Settings"
|
||||
msgstr ""
|
||||
msgstr "Ustawienia efektu"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:92 resources/ui/gtk3/prefs.ui:134
|
||||
#: 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/adw/prefs.ui:65
|
||||
msgid "Effect Profile Constraints"
|
||||
msgstr ""
|
||||
msgstr "Ograniczenia profilu efektu"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:142 resources/ui/gtk3/prefs.ui:182
|
||||
#: resources/ui/adw/prefs.ui:66
|
||||
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/adw/prefs.ui:70
|
||||
msgid "Application"
|
||||
msgstr ""
|
||||
msgstr "Aplikacja"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:184 resources/ui/gtk4/prefs.ui:219
|
||||
#: 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:147 resources/ui/adw/prefs.ui:162
|
||||
msgid "Any"
|
||||
msgstr ""
|
||||
msgstr "Każdy"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:208 resources/ui/gtk3/prefs.ui:253
|
||||
#: resources/ui/adw/prefs.ui:98
|
||||
msgid "Animation Type"
|
||||
msgstr ""
|
||||
msgstr "Typ animacji"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:237 resources/ui/gtk3/prefs.ui:282
|
||||
#: resources/ui/adw/prefs.ui:113
|
||||
msgid "Window Type"
|
||||
msgstr ""
|
||||
msgstr "Typ okna"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:266 resources/ui/gtk3/prefs.ui:311
|
||||
#: resources/ui/adw/prefs.ui:128
|
||||
msgid "Color Scheme"
|
||||
msgstr ""
|
||||
msgstr "Schemat kolorów"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:295 resources/ui/gtk3/prefs.ui:340
|
||||
#: resources/ui/adw/prefs.ui:143
|
||||
msgid "Power Mode"
|
||||
msgstr ""
|
||||
msgstr "Tryb zasilania"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:324 resources/ui/gtk3/prefs.ui:369
|
||||
#: resources/ui/adw/prefs.ui:158
|
||||
msgid "Power Profile"
|
||||
msgstr ""
|
||||
msgstr "Profil mocy"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:356 resources/ui/gtk3/prefs.ui:401
|
||||
#: resources/ui/adw/prefs.ui:179
|
||||
msgid "Advanced Profile Options"
|
||||
msgstr ""
|
||||
msgstr "Zaawansowane opcje profilu"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:396 resources/ui/gtk3/prefs.ui:441
|
||||
#: resources/ui/adw/prefs.ui:184
|
||||
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/adw/prefs.ui:204
|
||||
msgid "Delete this Profile..."
|
||||
msgstr ""
|
||||
msgstr "Usuń ten profil..."
|
||||
|
||||
#: resources/ui/gtk4/pixelate.ui:69 resources/ui/gtk3/pixelate.ui:90
|
||||
#: resources/ui/adw/pixelate.ui:47
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: burn-my-windows\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-02-21 16:46+0100\n"
|
||||
"PO-Revision-Date: 2023-02-25 03:39+0000\n"
|
||||
"PO-Revision-Date: 2023-04-07 05:50+0000\n"
|
||||
"Last-Translator: SoftExpert <softexpert@gmail.com>\n"
|
||||
"Language-Team: Romanian <https://hosted.weblate.org/projects/burn-my-windows/"
|
||||
"core/ro/>\n"
|
||||
@@ -18,7 +18,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && 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
|
||||
#: resources/ui/gtk3/prefs.ui:265 resources/ui/adw/prefs.ui:103
|
||||
@@ -48,7 +48,7 @@ msgstr "Schemă de culori implicită"
|
||||
#: src/ProfileManager.js:173 resources/ui/gtk4/prefs.ui:279
|
||||
#: resources/ui/gtk3/prefs.ui:324 resources/ui/adw/prefs.ui:134
|
||||
msgid "Dark Color Scheme"
|
||||
msgstr "Schema de culori întunecate"
|
||||
msgstr "Schemă de culori întunecate"
|
||||
|
||||
#: src/ProfileManager.js:174 resources/ui/gtk4/prefs.ui:307
|
||||
#: resources/ui/gtk3/prefs.ui:352 resources/ui/adw/prefs.ui:148
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: burn-my-windows\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Language-Team: Slovak <https://hosted.weblate.org/projects/burn-my-windows/"
|
||||
"core/sk/>\n"
|
||||
@@ -17,81 +17,81 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\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
|
||||
#: resources/ui/gtk3/prefs.ui:265 resources/ui/adw/prefs.ui:103
|
||||
msgid "Opening Windows"
|
||||
msgstr ""
|
||||
msgstr "Otváranie okien"
|
||||
|
||||
#: src/ProfileManager.js:169 resources/ui/gtk4/prefs.ui:221
|
||||
#: resources/ui/gtk3/prefs.ui:266 resources/ui/adw/prefs.ui:104
|
||||
msgid "Closing Windows"
|
||||
msgstr ""
|
||||
msgstr "Zatváranie okien"
|
||||
|
||||
#: src/ProfileManager.js:170 resources/ui/gtk4/prefs.ui:249
|
||||
#: resources/ui/gtk3/prefs.ui:294 resources/ui/adw/prefs.ui:118
|
||||
msgid "Normal Windows"
|
||||
msgstr ""
|
||||
msgstr "Normálne okná"
|
||||
|
||||
#: src/ProfileManager.js:171 resources/ui/gtk4/prefs.ui:250
|
||||
#: resources/ui/gtk3/prefs.ui:295 resources/ui/adw/prefs.ui:119
|
||||
msgid "Dialog Windows"
|
||||
msgstr ""
|
||||
msgstr "Dialógové okná"
|
||||
|
||||
#: src/ProfileManager.js:172 resources/ui/gtk4/prefs.ui:278
|
||||
#: resources/ui/gtk3/prefs.ui:323 resources/ui/adw/prefs.ui:133
|
||||
msgid "Default Color Scheme"
|
||||
msgstr ""
|
||||
msgstr "Predvolený motív farieb"
|
||||
|
||||
#: src/ProfileManager.js:173 resources/ui/gtk4/prefs.ui:279
|
||||
#: resources/ui/gtk3/prefs.ui:324 resources/ui/adw/prefs.ui:134
|
||||
msgid "Dark Color Scheme"
|
||||
msgstr ""
|
||||
msgstr "Tmavý motív farieb"
|
||||
|
||||
#: src/ProfileManager.js:174 resources/ui/gtk4/prefs.ui:307
|
||||
#: resources/ui/gtk3/prefs.ui:352 resources/ui/adw/prefs.ui:148
|
||||
msgid "On Battery"
|
||||
msgstr ""
|
||||
msgstr "Pri behu na batériu"
|
||||
|
||||
#: src/ProfileManager.js:175 resources/ui/gtk4/prefs.ui:308
|
||||
#: resources/ui/gtk3/prefs.ui:353 resources/ui/adw/prefs.ui:149
|
||||
msgid "Plugged In"
|
||||
msgstr ""
|
||||
msgstr "Pri nabíjaní"
|
||||
|
||||
#: src/ProfileManager.js:176 resources/ui/gtk4/prefs.ui:336
|
||||
#: resources/ui/gtk3/prefs.ui:381 resources/ui/adw/prefs.ui:163
|
||||
msgid "Power-Saver Mode"
|
||||
msgstr ""
|
||||
msgstr "Režim šetrenia energie"
|
||||
|
||||
#: src/ProfileManager.js:177 resources/ui/gtk4/prefs.ui:337
|
||||
#: resources/ui/gtk3/prefs.ui:382 resources/ui/adw/prefs.ui:164
|
||||
msgid "Balanced Mode"
|
||||
msgstr ""
|
||||
msgstr "Vyvážený režim"
|
||||
|
||||
#: src/ProfileManager.js:178 resources/ui/gtk4/prefs.ui:338
|
||||
#: resources/ui/gtk3/prefs.ui:383 resources/ui/adw/prefs.ui:165
|
||||
msgid "Performance Mode"
|
||||
msgstr ""
|
||||
msgstr "Vysoký výkon"
|
||||
|
||||
#: src/ProfileManager.js:179 resources/ui/gtk4/prefs.ui:339
|
||||
#: resources/ui/gtk3/prefs.ui:384 resources/ui/adw/prefs.ui:166
|
||||
msgid "Power Saver or Balanced"
|
||||
msgstr ""
|
||||
msgstr "Šetrenie energie alebo vyvážený"
|
||||
|
||||
#: src/ProfileManager.js:180 resources/ui/gtk4/prefs.ui:340
|
||||
#: resources/ui/gtk3/prefs.ui:385 resources/ui/adw/prefs.ui:167
|
||||
msgid "Balanced or Performance"
|
||||
msgstr ""
|
||||
msgstr "Vyvážený alebo vysoký výkon"
|
||||
|
||||
#: src/ProfileManager.js:185 resources/ui/gtk4/prefs.ui:387
|
||||
#: resources/ui/gtk3/prefs.ui:432 resources/ui/adw/prefs.ui:183
|
||||
msgid "High Priority"
|
||||
msgstr ""
|
||||
msgstr "Vysoká priorita"
|
||||
|
||||
#: src/ProfileManager.js:191
|
||||
msgid "Standard Profile"
|
||||
msgstr ""
|
||||
msgstr "Štandardný profil"
|
||||
|
||||
#: src/effects/Apparition.js:78
|
||||
msgid "Apparition"
|
||||
@@ -127,7 +127,7 @@ msgstr "Pekelný oheň"
|
||||
|
||||
#: src/effects/Fire.js:174
|
||||
msgid "Dark and Smutty"
|
||||
msgstr "Tmavý a zafúľaný"
|
||||
msgstr "Tmavý a špinavý"
|
||||
|
||||
#: src/effects/Fire.js:184
|
||||
msgid "Cold Breeze"
|
||||
@@ -135,15 +135,15 @@ msgstr "Studený vánok"
|
||||
|
||||
#: src/effects/Fire.js:194
|
||||
msgid "Santa is Coming"
|
||||
msgstr "Santa prichádza"
|
||||
msgstr "Santa je tu!"
|
||||
|
||||
#: src/effects/Glide.js:78
|
||||
msgid "Glide"
|
||||
msgstr ""
|
||||
msgstr "Kĺzanie"
|
||||
|
||||
#: src/effects/Glitch.js:86
|
||||
msgid "Glitch"
|
||||
msgstr ""
|
||||
msgstr "Rušenie"
|
||||
|
||||
#: src/effects/Hexagon.js:94
|
||||
msgid "Hexagon"
|
||||
@@ -171,7 +171,7 @@ msgstr "Zotrenie štvorčekmi"
|
||||
|
||||
#: src/effects/Portal.js:88
|
||||
msgid "Portal"
|
||||
msgstr ""
|
||||
msgstr "Portál"
|
||||
|
||||
#: src/effects/SnapOfDisintegration.js:114
|
||||
msgid "Snap of Disintegration"
|
||||
@@ -187,7 +187,7 @@ msgstr "Televízor"
|
||||
|
||||
#: src/effects/TVGlitch.js:87
|
||||
msgid "TV Glitch"
|
||||
msgstr ""
|
||||
msgstr "Rušenie televízora"
|
||||
|
||||
#: src/effects/Wisps.js:82
|
||||
msgid "Wisps"
|
||||
@@ -195,11 +195,11 @@ msgstr "Obláčiky"
|
||||
|
||||
#: prefs.js:247
|
||||
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
|
||||
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
|
||||
#: resources/ui/gtk3/prefs.ui:96
|
||||
@@ -224,21 +224,23 @@ msgstr "Bývalí sponzori"
|
||||
|
||||
#: prefs.js:585
|
||||
msgid "Delete this Profile?"
|
||||
msgstr ""
|
||||
msgstr "Odstrániť tento profil?"
|
||||
|
||||
#: prefs.js:587
|
||||
msgid ""
|
||||
"The current effect profile with all its effect settings will be permanently "
|
||||
"lost."
|
||||
msgstr ""
|
||||
"Aktuálny profil efektu spolu so všetkými nastaveniami efektov bude trvalo "
|
||||
"odstránený."
|
||||
|
||||
#: prefs.js:592
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
msgstr "Zrušiť"
|
||||
|
||||
#: prefs.js:593
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
msgstr "Odstrániť"
|
||||
|
||||
#. Translators: %s will be replaced by the effect's name.
|
||||
#: prefs.js:923
|
||||
@@ -256,7 +258,7 @@ msgstr "Navštíviť webovú stránku"
|
||||
|
||||
#: resources/ui/common/menus.ui:21
|
||||
msgid "View Matching Wallpapers"
|
||||
msgstr ""
|
||||
msgstr "Zobraziť zodpovedajúce pozadia plochy"
|
||||
|
||||
#: resources/ui/common/menus.ui:27
|
||||
msgid "Report a Bug"
|
||||
@@ -280,7 +282,7 @@ msgstr "O Burn-My-Windows"
|
||||
|
||||
#: resources/ui/common/menus.ui:63
|
||||
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/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/adw/tv-glitch.ui:80 resources/ui/adw/glitch.ui:80
|
||||
msgid "Strength"
|
||||
msgstr ""
|
||||
msgstr "Intenzita"
|
||||
|
||||
#: 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
|
||||
@@ -557,17 +559,17 @@ msgstr "Počet lúčov"
|
||||
#: resources/ui/gtk4/glide.ui:115 resources/ui/gtk3/glide.ui:149
|
||||
#: resources/ui/adw/glide.ui:80
|
||||
msgid "Squish"
|
||||
msgstr ""
|
||||
msgstr "Stlačenie"
|
||||
|
||||
#: resources/ui/gtk4/glide.ui:161 resources/ui/gtk3/glide.ui:194
|
||||
#: resources/ui/adw/glide.ui:113
|
||||
msgid "Tilt"
|
||||
msgstr ""
|
||||
msgstr "Naklonenie"
|
||||
|
||||
#: resources/ui/gtk4/glide.ui:207 resources/ui/gtk3/glide.ui:239
|
||||
#: resources/ui/adw/glide.ui:146
|
||||
msgid "Shift"
|
||||
msgstr ""
|
||||
msgstr "Posunutie"
|
||||
|
||||
#: resources/ui/gtk4/apparition.ui:114 resources/ui/gtk3/apparition.ui:149
|
||||
#: 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/adw/portal.ui:80
|
||||
msgid "Whirling"
|
||||
msgstr ""
|
||||
msgstr "Vír"
|
||||
|
||||
#: resources/ui/gtk4/portal.ui:115 resources/ui/gtk3/portal.ui:97
|
||||
#: resources/ui/adw/portal.ui:47
|
||||
msgid "Rotation Speed"
|
||||
msgstr ""
|
||||
msgstr "Rýchlosť otáčania"
|
||||
|
||||
#: resources/ui/gtk4/portal.ui:161 resources/ui/gtk3/portal.ui:187
|
||||
#: resources/ui/adw/portal.ui:113
|
||||
msgid "Details"
|
||||
msgstr ""
|
||||
msgstr "Podrobnosti"
|
||||
|
||||
#: resources/ui/gtk4/incinerate.ui:115 resources/ui/gtk3/incinerate.ui:135
|
||||
#: 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/adw/fire.ui:130
|
||||
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/adw/fire.ui:152
|
||||
@@ -662,7 +664,7 @@ msgstr "Prechod"
|
||||
#: resources/ui/gtk4/prefs.ui:82 resources/ui/gtk3/prefs.ui:124
|
||||
#: resources/ui/adw/prefs.ui:224
|
||||
msgid "Effect Settings"
|
||||
msgstr ""
|
||||
msgstr "Nastavenia efektov"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:92 resources/ui/gtk3/prefs.ui:134
|
||||
#: 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/adw/prefs.ui:65
|
||||
msgid "Effect Profile Constraints"
|
||||
msgstr ""
|
||||
msgstr "Obmedzenia profilu efektov"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:142 resources/ui/gtk3/prefs.ui:182
|
||||
#: resources/ui/adw/prefs.ui:66
|
||||
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/adw/prefs.ui:70
|
||||
msgid "Application"
|
||||
msgstr ""
|
||||
msgstr "Aplikácia"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:184 resources/ui/gtk4/prefs.ui:219
|
||||
#: 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:147 resources/ui/adw/prefs.ui:162
|
||||
msgid "Any"
|
||||
msgstr ""
|
||||
msgstr "Ľubovoľné"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:208 resources/ui/gtk3/prefs.ui:253
|
||||
#: resources/ui/adw/prefs.ui:98
|
||||
msgid "Animation Type"
|
||||
msgstr ""
|
||||
msgstr "Typ animácie"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:237 resources/ui/gtk3/prefs.ui:282
|
||||
#: resources/ui/adw/prefs.ui:113
|
||||
msgid "Window Type"
|
||||
msgstr ""
|
||||
msgstr "Typ okna"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:266 resources/ui/gtk3/prefs.ui:311
|
||||
#: resources/ui/adw/prefs.ui:128
|
||||
msgid "Color Scheme"
|
||||
msgstr ""
|
||||
msgstr "Motív farieb"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:295 resources/ui/gtk3/prefs.ui:340
|
||||
#: resources/ui/adw/prefs.ui:143
|
||||
msgid "Power Mode"
|
||||
msgstr ""
|
||||
msgstr "Režim šetrenia energie"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:324 resources/ui/gtk3/prefs.ui:369
|
||||
#: resources/ui/adw/prefs.ui:158
|
||||
msgid "Power Profile"
|
||||
msgstr ""
|
||||
msgstr "Profil šetrenia energie"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:356 resources/ui/gtk3/prefs.ui:401
|
||||
#: resources/ui/adw/prefs.ui:179
|
||||
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/adw/prefs.ui:184
|
||||
msgid "Use this profile even if there are better matching profiles."
|
||||
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/adw/prefs.ui:204
|
||||
msgid "Delete this Profile..."
|
||||
msgstr ""
|
||||
msgstr "Odstrániť tento profil…"
|
||||
|
||||
#: resources/ui/gtk4/pixelate.ui:69 resources/ui/gtk3/pixelate.ui:90
|
||||
#: resources/ui/adw/pixelate.ui:47
|
||||
|
||||
@@ -8,91 +8,91 @@ msgstr ""
|
||||
"Project-Id-Version: burn-my-windows\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-02-21 16:46+0100\n"
|
||||
"PO-Revision-Date: 2023-01-25 20:52+0000\n"
|
||||
"Last-Translator: Petro S. <911us@duck.com>\n"
|
||||
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/burn-my-"
|
||||
"windows/core/uk/>\n"
|
||||
"PO-Revision-Date: 2023-03-28 09:40+0000\n"
|
||||
"Last-Translator: CakesTwix <cakestwix1@gmail.com>\n"
|
||||
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/"
|
||||
"burn-my-windows/core/uk/>\n"
|
||||
"Language: uk\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 4.16-dev\n"
|
||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 4.17-dev\n"
|
||||
|
||||
#: src/ProfileManager.js:168 resources/ui/gtk4/prefs.ui:220
|
||||
#: resources/ui/gtk3/prefs.ui:265 resources/ui/adw/prefs.ui:103
|
||||
msgid "Opening Windows"
|
||||
msgstr ""
|
||||
msgstr "Відкриття вікон"
|
||||
|
||||
#: src/ProfileManager.js:169 resources/ui/gtk4/prefs.ui:221
|
||||
#: resources/ui/gtk3/prefs.ui:266 resources/ui/adw/prefs.ui:104
|
||||
msgid "Closing Windows"
|
||||
msgstr ""
|
||||
msgstr "Закриття вікон"
|
||||
|
||||
#: src/ProfileManager.js:170 resources/ui/gtk4/prefs.ui:249
|
||||
#: resources/ui/gtk3/prefs.ui:294 resources/ui/adw/prefs.ui:118
|
||||
msgid "Normal Windows"
|
||||
msgstr ""
|
||||
msgstr "Звичайні вікна"
|
||||
|
||||
#: src/ProfileManager.js:171 resources/ui/gtk4/prefs.ui:250
|
||||
#: resources/ui/gtk3/prefs.ui:295 resources/ui/adw/prefs.ui:119
|
||||
msgid "Dialog Windows"
|
||||
msgstr ""
|
||||
msgstr "Діалогові вікна"
|
||||
|
||||
#: src/ProfileManager.js:172 resources/ui/gtk4/prefs.ui:278
|
||||
#: resources/ui/gtk3/prefs.ui:323 resources/ui/adw/prefs.ui:133
|
||||
msgid "Default Color Scheme"
|
||||
msgstr ""
|
||||
msgstr "Кольорова схема за замовчуванням"
|
||||
|
||||
#: src/ProfileManager.js:173 resources/ui/gtk4/prefs.ui:279
|
||||
#: resources/ui/gtk3/prefs.ui:324 resources/ui/adw/prefs.ui:134
|
||||
msgid "Dark Color Scheme"
|
||||
msgstr ""
|
||||
msgstr "Темна кольорова схема"
|
||||
|
||||
#: src/ProfileManager.js:174 resources/ui/gtk4/prefs.ui:307
|
||||
#: resources/ui/gtk3/prefs.ui:352 resources/ui/adw/prefs.ui:148
|
||||
msgid "On Battery"
|
||||
msgstr ""
|
||||
msgstr "На батареї"
|
||||
|
||||
#: src/ProfileManager.js:175 resources/ui/gtk4/prefs.ui:308
|
||||
#: resources/ui/gtk3/prefs.ui:353 resources/ui/adw/prefs.ui:149
|
||||
msgid "Plugged In"
|
||||
msgstr ""
|
||||
msgstr "Підключено до електромережі"
|
||||
|
||||
#: src/ProfileManager.js:176 resources/ui/gtk4/prefs.ui:336
|
||||
#: resources/ui/gtk3/prefs.ui:381 resources/ui/adw/prefs.ui:163
|
||||
msgid "Power-Saver Mode"
|
||||
msgstr ""
|
||||
msgstr "Режим енергозбереження"
|
||||
|
||||
#: src/ProfileManager.js:177 resources/ui/gtk4/prefs.ui:337
|
||||
#: resources/ui/gtk3/prefs.ui:382 resources/ui/adw/prefs.ui:164
|
||||
msgid "Balanced Mode"
|
||||
msgstr ""
|
||||
msgstr "Збалансований режим"
|
||||
|
||||
#: src/ProfileManager.js:178 resources/ui/gtk4/prefs.ui:338
|
||||
#: resources/ui/gtk3/prefs.ui:383 resources/ui/adw/prefs.ui:165
|
||||
msgid "Performance Mode"
|
||||
msgstr ""
|
||||
msgstr "Продуктивний режим"
|
||||
|
||||
#: src/ProfileManager.js:179 resources/ui/gtk4/prefs.ui:339
|
||||
#: resources/ui/gtk3/prefs.ui:384 resources/ui/adw/prefs.ui:166
|
||||
msgid "Power Saver or Balanced"
|
||||
msgstr ""
|
||||
msgstr "Енергозберігаючий або збалансований"
|
||||
|
||||
#: src/ProfileManager.js:180 resources/ui/gtk4/prefs.ui:340
|
||||
#: resources/ui/gtk3/prefs.ui:385 resources/ui/adw/prefs.ui:167
|
||||
msgid "Balanced or Performance"
|
||||
msgstr ""
|
||||
msgstr "Збалансований або продуктивний"
|
||||
|
||||
#: src/ProfileManager.js:185 resources/ui/gtk4/prefs.ui:387
|
||||
#: resources/ui/gtk3/prefs.ui:432 resources/ui/adw/prefs.ui:183
|
||||
msgid "High Priority"
|
||||
msgstr ""
|
||||
msgstr "Високий пріоритет"
|
||||
|
||||
#: src/ProfileManager.js:191
|
||||
msgid "Standard Profile"
|
||||
msgstr ""
|
||||
msgstr "Стандартний профіль"
|
||||
|
||||
#: src/effects/Apparition.js:78
|
||||
msgid "Apparition"
|
||||
@@ -200,7 +200,7 @@ msgstr "Попередній перегляд цього ефекту"
|
||||
|
||||
#: prefs.js:364 resources/ui/gtk4/prefs.ui:50 resources/ui/gtk3/prefs.ui:86
|
||||
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
|
||||
#: resources/ui/gtk3/prefs.ui:96
|
||||
@@ -225,21 +225,23 @@ msgstr "Колишні спонсори"
|
||||
|
||||
#: prefs.js:585
|
||||
msgid "Delete this Profile?"
|
||||
msgstr ""
|
||||
msgstr "Видалити цей профіль?"
|
||||
|
||||
#: prefs.js:587
|
||||
msgid ""
|
||||
"The current effect profile with all its effect settings will be permanently "
|
||||
"lost."
|
||||
msgstr ""
|
||||
"Поточний профіль ефекту з усіма його налаштуваннями буде безповоротно "
|
||||
"втрачено."
|
||||
|
||||
#: prefs.js:592
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
msgstr "Скасувати"
|
||||
|
||||
#: prefs.js:593
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
msgstr "Видалити"
|
||||
|
||||
#. Translators: %s will be replaced by the effect's name.
|
||||
#: prefs.js:923
|
||||
@@ -257,7 +259,7 @@ msgstr "Завітайте на сайт"
|
||||
|
||||
#: resources/ui/common/menus.ui:21
|
||||
msgid "View Matching Wallpapers"
|
||||
msgstr ""
|
||||
msgstr "Переглянути відповідні обої"
|
||||
|
||||
#: resources/ui/common/menus.ui:27
|
||||
msgid "Report a Bug"
|
||||
@@ -281,7 +283,7 @@ msgstr "Про Burn-My-Windows"
|
||||
|
||||
#: resources/ui/common/menus.ui:63
|
||||
msgid "Add New Profile..."
|
||||
msgstr ""
|
||||
msgstr "Додати новий профіль..."
|
||||
|
||||
#: 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
|
||||
@@ -665,7 +667,7 @@ msgstr "Градієнт"
|
||||
#: resources/ui/gtk4/prefs.ui:82 resources/ui/gtk3/prefs.ui:124
|
||||
#: resources/ui/adw/prefs.ui:224
|
||||
msgid "Effect Settings"
|
||||
msgstr ""
|
||||
msgstr "Налаштування ефектів"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:92 resources/ui/gtk3/prefs.ui:134
|
||||
#: 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/adw/prefs.ui:65
|
||||
msgid "Effect Profile Constraints"
|
||||
msgstr ""
|
||||
msgstr "Обмеження профілю ефектів"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:142 resources/ui/gtk3/prefs.ui:182
|
||||
#: resources/ui/adw/prefs.ui:66
|
||||
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/adw/prefs.ui:70
|
||||
msgid "Application"
|
||||
msgstr ""
|
||||
msgstr "Додаток"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:184 resources/ui/gtk4/prefs.ui:219
|
||||
#: 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:147 resources/ui/adw/prefs.ui:162
|
||||
msgid "Any"
|
||||
msgstr ""
|
||||
msgstr "Будь-який"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:208 resources/ui/gtk3/prefs.ui:253
|
||||
#: resources/ui/adw/prefs.ui:98
|
||||
msgid "Animation Type"
|
||||
msgstr ""
|
||||
msgstr "Тип анімації"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:237 resources/ui/gtk3/prefs.ui:282
|
||||
#: resources/ui/adw/prefs.ui:113
|
||||
msgid "Window Type"
|
||||
msgstr ""
|
||||
msgstr "Тип вікна"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:266 resources/ui/gtk3/prefs.ui:311
|
||||
#: resources/ui/adw/prefs.ui:128
|
||||
msgid "Color Scheme"
|
||||
msgstr ""
|
||||
msgstr "Кольорова схема"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:295 resources/ui/gtk3/prefs.ui:340
|
||||
#: resources/ui/adw/prefs.ui:143
|
||||
msgid "Power Mode"
|
||||
msgstr ""
|
||||
msgstr "Режим живлення"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:324 resources/ui/gtk3/prefs.ui:369
|
||||
#: resources/ui/adw/prefs.ui:158
|
||||
msgid "Power Profile"
|
||||
msgstr ""
|
||||
msgstr "Профіль живлення"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:356 resources/ui/gtk3/prefs.ui:401
|
||||
#: resources/ui/adw/prefs.ui:179
|
||||
msgid "Advanced Profile Options"
|
||||
msgstr ""
|
||||
msgstr "Розширені параметри профілю"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:396 resources/ui/gtk3/prefs.ui:441
|
||||
#: resources/ui/adw/prefs.ui:184
|
||||
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/adw/prefs.ui:204
|
||||
msgid "Delete this Profile..."
|
||||
msgstr ""
|
||||
msgstr "Видалити цей профіль..."
|
||||
|
||||
#: resources/ui/gtk4/pixelate.ui:69 resources/ui/gtk3/pixelate.ui:90
|
||||
#: resources/ui/adw/pixelate.ui:47
|
||||
|
||||
@@ -227,8 +227,16 @@ var PreferencesDialog = class PreferencesDialog {
|
||||
const [minMajor, minMinor] = effect.getMinShellVersion();
|
||||
if (utils.shellVersionIsAtLeast(minMajor, minMinor)) {
|
||||
|
||||
const uiFile = `/ui/${utils.getUIDir()}/${effect.getNick()}.ui`;
|
||||
const [hasPrefs] = Gio.resources_get_info(uiFile, 0);
|
||||
const uiFile = `/ui/${utils.getUIDir()}/${effect.getNick()}.ui`;
|
||||
|
||||
// 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.
|
||||
if (hasPrefs) {
|
||||
@@ -288,9 +296,11 @@ var PreferencesDialog = class PreferencesDialog {
|
||||
}
|
||||
});
|
||||
this._effectRows.push(row);
|
||||
row.add_action(previewButton);
|
||||
} else {
|
||||
row.add_suffix(previewButton);
|
||||
}
|
||||
|
||||
row.add_action(previewButton);
|
||||
row.add_prefix(button);
|
||||
|
||||
group.add(row);
|
||||
@@ -440,8 +450,9 @@ var PreferencesDialog = class PreferencesDialog {
|
||||
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('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-paypal', 'https://www.paypal.com/donate/?hosted_button_id=3F7UFL8KLVPXE');
|
||||
addURIAction('wallpapers', 'https://github.com/Schneegans/ai-wallpapers');
|
||||
// clang-format on
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"gold": [
|
||||
{
|
||||
"name": "Maxence Sebald",
|
||||
"url": ""
|
||||
"name": "D3vil0p3r",
|
||||
"url": "https://github.com/D3vil0p3r"
|
||||
},
|
||||
{
|
||||
"name": "Dennis ten Hoove",
|
||||
"url": "https://github.com/dennis1248"
|
||||
"name": "Maxence Sebald",
|
||||
"url": ""
|
||||
}
|
||||
],
|
||||
"silver": [
|
||||
@@ -20,6 +20,10 @@
|
||||
}
|
||||
],
|
||||
"bronze": [
|
||||
{
|
||||
"name": "@SubOptimal",
|
||||
"url": "https://github.com/SubOptimal"
|
||||
},
|
||||
{
|
||||
"name": "@vlazic",
|
||||
"url": "https://github.com/vlazic"
|
||||
@@ -27,8 +31,8 @@
|
||||
],
|
||||
"past": [
|
||||
{
|
||||
"name": "D3vil0p3r",
|
||||
"url": "https://github.com/D3vil0p3r"
|
||||
"name": "Dennis ten Hoove",
|
||||
"url": "https://github.com/dennis1248"
|
||||
},
|
||||
{
|
||||
"name": "@MRR-dev",
|
||||
|
||||
@@ -31,7 +31,7 @@ void main() {
|
||||
float progress = uForOpening ? 1.0 - uProgress : uProgress;
|
||||
|
||||
// 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
|
||||
// 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.
|
||||
float gravity =
|
||||
(uForOpening ? -1.0 : 1.0) * uGravity * 0.1 * (i + 1) * progress * progress;
|
||||
coords += vec2(0, gravity);
|
||||
(uForOpening ? -1.0 : 1.0) * uGravity * 0.1 * (i + 1.0) * progress * progress;
|
||||
coords += vec2(0.0, gravity);
|
||||
|
||||
// Restore correct position.
|
||||
coords += uEpicenter;
|
||||
@@ -66,10 +66,10 @@ void main() {
|
||||
// the bin of the current shard.
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
setOutputColor(oColor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,7 +99,7 @@ uniform vec2 uSize;
|
||||
uniform float uPadding;
|
||||
|
||||
// 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.
|
||||
vec4 getInputColor(vec2 coords) {
|
||||
|
||||
@@ -107,12 +107,14 @@ void main() {
|
||||
if ((!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);
|
||||
|
||||
#ifndef GL_ES
|
||||
if (scorchRange.x < gradient && gradient < scorchRange.y) {
|
||||
distort = vec2(dFdx(gradient), dFdy(gradient)) * scorchMask * 5.0;
|
||||
}
|
||||
#endif
|
||||
|
||||
oColor = getInputColor(iTexCoord + distort);
|
||||
}
|
||||
@@ -154,4 +156,4 @@ void main() {
|
||||
}
|
||||
|
||||
setOutputColor(oColor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ vec2 getRain(vec2 fragCoord) {
|
||||
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 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 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.
|
||||
float finalFade =
|
||||
1 -
|
||||
1.0 -
|
||||
clamp((uProgress - FINAL_FADE_START_TIME) / (1.0 - FINAL_FADE_START_TIME), 0.0, 1.0);
|
||||
float rainAlpha = finalFade * rainMask.x;
|
||||
|
||||
@@ -106,4 +106,4 @@ void main() {
|
||||
// oColor = vec4(vec3(rainMask.y), 1);
|
||||
|
||||
setOutputColor(oColor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
// duration is longer.
|
||||
float PORTAL_OPEN_TIME = 0.4 / uDuration;
|
||||
float PORTAL_CLOSE_TIME = 0.4 / uDuration;
|
||||
float WINDOW_OPEN_TIME = 0.35 / uDuration;
|
||||
float PORTAL_OPEN_TIME = 0.4;
|
||||
float PORTAL_CLOSE_TIME = 0.4;
|
||||
float WINDOW_OPEN_TIME = 0.35;
|
||||
|
||||
// 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
|
||||
// or disappears (which is controlled by WINDOW_OPEN_TIME) and takes
|
||||
// PORTAL_WOBBLE_TIME.
|
||||
vec2 getPortalWobble(vec2 coords) {
|
||||
float progress = (uForOpening ? (1.0 - uProgress) : uProgress) / WINDOW_OPEN_TIME;
|
||||
progress = clamp(1.0 - abs((progress - 1.0) / PORTAL_WOBBLE_TIME), 0.0, 1.0);
|
||||
progress = easeInBack(progress, 1.7);
|
||||
float dist = length(coords);
|
||||
float progress =
|
||||
(uForOpening ? (1.0 - uProgress) : uProgress) / WINDOW_OPEN_TIME * uDuration;
|
||||
progress = clamp(1.0 - abs((progress - 1.0) / PORTAL_WOBBLE_TIME), 0.0, 1.0);
|
||||
progress = easeInBack(progress, 1.7);
|
||||
float dist = length(coords);
|
||||
|
||||
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 -
|
||||
// PORTAL_CLOSE_TIME) and then decrease again.
|
||||
float getPortalScale() {
|
||||
float scale = 1.0;
|
||||
if (uProgress < PORTAL_OPEN_TIME) {
|
||||
scale = easeOutBack(uProgress / PORTAL_OPEN_TIME, 1.5);
|
||||
} else if (uProgress > 1.0 - PORTAL_CLOSE_TIME) {
|
||||
scale =
|
||||
easeOutBack(1.0 - (uProgress - 1.0 + PORTAL_CLOSE_TIME) / PORTAL_CLOSE_TIME, 1.5);
|
||||
float scale = 1.0;
|
||||
float closeTime = PORTAL_CLOSE_TIME / uDuration;
|
||||
float openTime = PORTAL_OPEN_TIME / uDuration;
|
||||
if (uProgress < openTime) {
|
||||
scale = easeOutBack(uProgress / openTime, 1.5);
|
||||
} else if (uProgress > 1.0 - closeTime) {
|
||||
scale = easeOutBack(1.0 - (uProgress - 1.0 + closeTime) / closeTime, 1.5);
|
||||
}
|
||||
|
||||
return scale;
|
||||
@@ -165,7 +167,8 @@ vec4 getPortalColor() {
|
||||
// window). The fraction of the animation time take for the window animation is defined by
|
||||
// WINDOW_OPEN_TIME.
|
||||
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.
|
||||
progress = easeInBack(clamp(progress, 0.0, 1.0), 1.2);
|
||||
@@ -203,4 +206,4 @@ void main() {
|
||||
// These can be useful for understanding how this works.
|
||||
// setOutputColor(portal);
|
||||
// setOutputColor(window);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ void main() {
|
||||
|
||||
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.
|
||||
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);
|
||||
|
||||
// Dissolve and blend the layers.
|
||||
if (dustMap.x - progress > 0) {
|
||||
if (dustMap.x - progress > 0.0) {
|
||||
oColor = windowColor;
|
||||
}
|
||||
}
|
||||
@@ -94,4 +94,4 @@ void main() {
|
||||
// oColor = vec4(progress, 0, 0, 0);
|
||||
|
||||
setOutputColor(oColor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,9 +23,12 @@ uniform float uNumClaws;
|
||||
uniform float uWarpIntensity;
|
||||
|
||||
const float FLASH_INTENSITY = 0.1;
|
||||
const float MAX_SPAWN_TIME =
|
||||
0.6; // 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.
|
||||
|
||||
// Scratches will only start in the first half of the animation.
|
||||
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
|
||||
// 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
|
||||
// add a value to make the scratch appear later.
|
||||
float scratchMap = 1.0;
|
||||
for (int i = 0; i < uNumClaws; ++i) {
|
||||
vec2 uv = getClawUV(coords, 1.0 / uClawSize, uSeed * (i + 1));
|
||||
for (float i = 0.0; i < uNumClaws; ++i) {
|
||||
vec2 uv = getClawUV(coords, 1.0 / uClawSize, uSeed * (i + 1.0));
|
||||
float delay = i / uNumClaws * MAX_SPAWN_TIME;
|
||||
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
|
||||
// the claw texture in order to mimic some folding distortion.
|
||||
vec2 offset = vec2(dFdx(scratchMap), dFdy(scratchMap)) * progress * 0.5;
|
||||
// the claw texture in order to mimic some folding distortion. This is only possible if
|
||||
// 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);
|
||||
|
||||
// Add colorful flashes.
|
||||
@@ -118,4 +127,4 @@ void main() {
|
||||
// oColor = vec4(vec3(scratchMap), 1);
|
||||
|
||||
setOutputColor(oColor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,13 +38,17 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
<submenu>
|
||||
<attribute name="label" translatable="yes">Donate</attribute>
|
||||
<item>
|
||||
<attribute name="label">PayPal</attribute>
|
||||
<attribute name="action">prefs.donate-paypal</attribute>
|
||||
<attribute name="label">Ko-fi</attribute>
|
||||
<attribute name="action">prefs.donate-kofi</attribute>
|
||||
</item>
|
||||
<item>
|
||||
<attribute name="label">GitHub</attribute>
|
||||
<attribute name="action">prefs.donate-github</attribute>
|
||||
</item>
|
||||
<item>
|
||||
<attribute name="label">PayPal</attribute>
|
||||
<attribute name="action">prefs.donate-paypal</attribute>
|
||||
</item>
|
||||
</submenu>
|
||||
</section>
|
||||
<section>
|
||||
|
||||
@@ -14,9 +14,10 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
const {Gio, Shell, GObject, Clutter} = imports.gi;
|
||||
const ByteArray = imports.byteArray;
|
||||
const {Gio, Shell, GObject, Clutter, Meta} = imports.gi;
|
||||
const ByteArray = imports.byteArray;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
const Me = imports.misc.extensionUtils.getCurrentExtension();
|
||||
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 //
|
||||
// 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 //
|
||||
// be used to set uniform values which do not change during the //
|
||||
// animation. //
|
||||
// * update-animation: This is called at each frame during the animation. It can be //
|
||||
// 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(
|
||||
@@ -77,13 +80,46 @@ var Shader = GObject.registerClass(
|
||||
this._uDuration = this.get_uniform_location('uDuration');
|
||||
this._uSize = this.get_uniform_location('uSize');
|
||||
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.
|
||||
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();
|
||||
|
||||
// Make sure that no fullscreen window is drawn over our animations.
|
||||
Meta.disable_unredirect_for_display(global.display);
|
||||
global.begin_work();
|
||||
|
||||
// Reset progress value.
|
||||
this._progress = 0;
|
||||
this._testMode = testMode;
|
||||
|
||||
// This is not necessarily symmetric, but I haven't figured out a way to
|
||||
// get the actual values...
|
||||
@@ -91,7 +127,7 @@ var Shader = GObject.registerClass(
|
||||
|
||||
this.set_uniform_float(this._uPadding, 1, [padding]);
|
||||
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.emit('begin-animation', settings, forOpening, testMode, actor);
|
||||
@@ -103,11 +139,22 @@ var Shader = GObject.registerClass(
|
||||
// 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.
|
||||
this._progress = progress;
|
||||
|
||||
this.queue_repaint();
|
||||
}
|
||||
|
||||
// This will just emit the end-animation signal. It can be used to clean up any
|
||||
// resources required during the animation.
|
||||
// This will stop any running animation and emit the end-animation signal.
|
||||
endAnimation() {
|
||||
// This will call endAnimation() again, so we can return for now.
|
||||
if (this._timeline.is_playing()) {
|
||||
this._timeline.stop();
|
||||
return;
|
||||
}
|
||||
|
||||
// Restore unredirecting behavior for fullscreen windows.
|
||||
Meta.enable_unredirect_for_display(global.display);
|
||||
global.end_work();
|
||||
|
||||
this.emit('end-animation');
|
||||
}
|
||||
|
||||
|
||||
@@ -29,6 +29,8 @@
|
||||
# -v 35: GNOME Shell 41
|
||||
# -v 36: GNOME Shell 42
|
||||
# -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".
|
||||
|
||||
# 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.
|
||||
# We disable this beforehand.
|
||||
if [[ "${FEDORA_VERSION}" -gt 33 ]]; then
|
||||
if [[ "${FEDORA_VERSION}" -gt 33 ]] || [[ "${FEDORA_VERSION}" == "rawhide" ]]; then
|
||||
echo "Disabling welcome tour."
|
||||
do_in_pod gsettings set org.gnome.shell welcome-dialog-last-shown-version "999" || true
|
||||
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
|
||||
# the super key.
|
||||
if [[ "${FEDORA_VERSION}" -gt 33 ]]; then
|
||||
if [[ "${FEDORA_VERSION}" -gt 33 ]] || [[ "${FEDORA_VERSION}" == "rawhide" ]]; then
|
||||
echo "Closing Overview."
|
||||
send_keystroke "super"
|
||||
fi
|
||||
@@ -194,12 +196,12 @@ capture_effect "tv"
|
||||
capture_effect "tv-glitch"
|
||||
capture_effect "wisps"
|
||||
|
||||
if [[ "${FEDORA_VERSION}" -gt 32 ]]; then
|
||||
if [[ "${FEDORA_VERSION}" -gt 32 ]] || [[ "${FEDORA_VERSION}" == "rawhide" ]]; then
|
||||
capture_effect "apparition"
|
||||
capture_effect "doom"
|
||||
fi
|
||||
|
||||
if [[ "${FEDORA_VERSION}" -gt 33 ]]; then
|
||||
if [[ "${FEDORA_VERSION}" -gt 33 ]] || [[ "${FEDORA_VERSION}" == "rawhide" ]]; then
|
||||
capture_effect "trex"
|
||||
capture_effect "broken-glass"
|
||||
capture_effect "matrix"
|
||||
|
||||
|
After Width: | Height: | Size: 355 B |
|
After Width: | Height: | Size: 355 B |
|
After Width: | Height: | Size: 355 B |
|
After Width: | Height: | Size: 355 B |
|
After Width: | Height: | Size: 355 B |
|
After Width: | Height: | Size: 355 B |
|
After Width: | Height: | Size: 355 B |
|
After Width: | Height: | Size: 355 B |
|
After Width: | Height: | Size: 664 B |
|
After Width: | Height: | Size: 664 B |
|
After Width: | Height: | Size: 637 B |
|
After Width: | Height: | Size: 637 B |
|
After Width: | Height: | Size: 627 B |
|
After Width: | Height: | Size: 627 B |
|
After Width: | Height: | Size: 643 B |
|
After Width: | Height: | Size: 643 B |
|
After Width: | Height: | Size: 424 B |
|
After Width: | Height: | Size: 424 B |
|
After Width: | Height: | Size: 443 B |
|
After Width: | Height: | Size: 443 B |
|
After Width: | Height: | Size: 432 B |
|
After Width: | Height: | Size: 432 B |
|
After Width: | Height: | Size: 416 B |
|
After Width: | Height: | Size: 416 B |
|
After Width: | Height: | Size: 7.7 KiB |
|
After Width: | Height: | Size: 7.7 KiB |
|
After Width: | Height: | Size: 7.7 KiB |
|
After Width: | Height: | Size: 7.7 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 8.1 KiB |
|
After Width: | Height: | Size: 8.1 KiB |
|
After Width: | Height: | Size: 8.1 KiB |
|
After Width: | Height: | Size: 8.1 KiB |
|
After Width: | Height: | Size: 5.9 KiB |
|
After Width: | Height: | Size: 5.9 KiB |
|
After Width: | Height: | Size: 5.8 KiB |
|
After Width: | Height: | Size: 5.8 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 355 B |
|
After Width: | Height: | Size: 355 B |
|
After Width: | Height: | Size: 355 B |
|
After Width: | Height: | Size: 355 B |
|
After Width: | Height: | Size: 355 B |
|
After Width: | Height: | Size: 355 B |
|
After Width: | Height: | Size: 355 B |
|
After Width: | Height: | Size: 355 B |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 7.5 KiB |