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