Compare commits
311 Commits
v26
...
gnome-3.36-44
| Author | SHA1 | Date | |
|---|---|---|---|
| cf8fca916e | |||
| 7ed27f89a9 | |||
| 03586796e2 | |||
| efdf4ca9f7 | |||
| de0ed55cf7 | |||
| cd7d000e21 | |||
| 92694d4e3e | |||
| e318b5ad6c | |||
| 4b67453be5 | |||
| 3b9433395c | |||
| 736b90927a | |||
| 91342170d0 | |||
| 40e160311e | |||
| c18e022cc5 | |||
| 85d3d96f24 | |||
| 69b0f94062 | |||
| 93e5836fd6 | |||
| 71297faec1 | |||
| 8fd5c75dac | |||
| 19cae610a5 | |||
| 902aa65946 | |||
| 0e543414ad | |||
| 265ebb8a4c | |||
| 06b2c941f2 | |||
| e81eb2097b | |||
| 22d4d38b08 | |||
| c85156ed61 | |||
| 7c766a5aea | |||
| ecd2282ca7 | |||
| 37a90cee1f | |||
| 012c1f5d33 | |||
| 9bb54ab71a | |||
| 6f708cf1fb | |||
| 3147ae5db6 | |||
| f8ea184a0f | |||
| 41f02c2901 | |||
| 2a3f9305fe | |||
| a7dfd593bd | |||
| 01c6e5caee | |||
| 75080a9595 | |||
| c11ffb5e00 | |||
| 150761721a | |||
| 6a41fe23b3 | |||
| 508508c8d2 | |||
| e4d986e2eb | |||
| 834f143846 | |||
| 8ed1d26524 | |||
| e8db78a8b0 | |||
| 2d4a6635eb | |||
| a6b47be34f | |||
| 351878f136 | |||
| 32d78ceced | |||
| 063826354f | |||
| 297acee240 | |||
| e226b65915 | |||
| 8f3118ab91 | |||
| c2d6385f6e | |||
| 2444c19656 | |||
| 5b820120fc | |||
| 5ad18b258b | |||
| c30f26f3ec | |||
| e3de58323d | |||
| 5a60ab443e | |||
| 2fc4528057 | |||
| 4af9692cd5 | |||
| 44291ef9f3 | |||
| 2593de09b0 | |||
| 17017d7306 | |||
| ca3db8deae | |||
| dcae2e986e | |||
| 68eb93f54f | |||
| fe6d7ecd6a | |||
| 58a2ddb41f | |||
| dcd0a2f41c | |||
| 14171b1ded | |||
| 65cecc5259 | |||
| 5d105a99c1 | |||
| 2447d40885 | |||
| baa7b678e8 | |||
| b21144c45f | |||
| 170e8cd8af | |||
| f2cbc2af23 | |||
| fd0d10bdef | |||
| 14fbc70578 | |||
| 3a03c86fbc | |||
| 067e663854 | |||
| f59af77941 | |||
| a98345e5f3 | |||
| f9a25bb4aa | |||
| a107a0b9fa | |||
| 8b0e8fa9b3 | |||
| ccc4adebd7 | |||
| 08b8e75118 | |||
| a6e2d61c37 | |||
| 344ec78cac | |||
| b1014b61e5 | |||
| be38af32af | |||
| c27c644977 | |||
| fb964aca8d | |||
| 79d9f2801f | |||
| ada0472028 | |||
| 1be2e0bf77 | |||
| feebedbdd8 | |||
| 834c602f5d | |||
| 8afad3a02e | |||
| 8829aa039e | |||
| e04b2769b1 | |||
| 9293a5ab4d | |||
| 0c58b507d8 | |||
| a585da93a8 | |||
| e450e619e6 | |||
| 4a747602d9 | |||
| d936717ac0 | |||
| 154b5bec32 | |||
| 2e20bc8753 | |||
| 6cc26d0dbc | |||
| 78d4e79925 | |||
| b8759174f8 | |||
| d89be65fe3 | |||
| 106ed964d5 | |||
| f4babe7575 | |||
| fff39f66a8 | |||
| 708b4ca1ad | |||
| b2158eb2e2 | |||
| bb46352c37 | |||
| 6b63222cbe | |||
| a2daa2e1b8 | |||
| d37c505bef | |||
| cb368a6207 | |||
| b0e6b66380 | |||
| 8ef5a8882f | |||
| 729de9b0ff | |||
| 59011dfe69 | |||
| 64701bef1b | |||
| 70dfbf71f5 | |||
| 4d63512e47 | |||
| d0dc1b427c | |||
| c358c59eb4 | |||
| 078f2fb853 | |||
| edbd3a7ac8 | |||
| 679f9902c1 | |||
| 7a30881c0d | |||
| 993c72ac2c | |||
| 40193aca03 | |||
| 4f91e0668a | |||
| bffd784221 | |||
| 2b1e5cb877 | |||
| d316203b6f | |||
| 965130e363 | |||
| 8e6d65d3eb | |||
| aca3c34142 | |||
| 84bd93bd2c | |||
| 3367b57c05 | |||
| 9905e643a5 | |||
| 0d8aed5ad0 | |||
| 79601cc8d0 | |||
| f021ea7ede | |||
| f3e9917729 | |||
| 14cfa0818f | |||
| 4814730400 | |||
| 91f7f8f1b5 | |||
| fa5baa4301 | |||
| c80707ee1f | |||
| 343eddbfcb | |||
| 04e0999d5b | |||
| 48c8bcec3a | |||
| 38d12453b6 | |||
| b48e92f8c1 | |||
| 14d482e16a | |||
| e87340d7ad | |||
| ee93c06304 | |||
| 1e06ed6503 | |||
| 0fd3f0f62f | |||
| 42d69afa89 | |||
| 1b57d1e015 | |||
| 658ca6415a | |||
| 5ffee2c817 | |||
| 5aad16c8bf | |||
| b623a5923f | |||
| e06245bdca | |||
| e5907292ed | |||
| 70bfbac890 | |||
| d010c60143 | |||
| 649a1cce73 | |||
| bccdc0253d | |||
| b7429bada3 | |||
| 23a85798ca | |||
| e051551747 | |||
| 6eae8d1aa3 | |||
| 6d34936375 | |||
| 46c8eaf417 | |||
| 55b491bb36 | |||
| c78bc4c094 | |||
| 024b39d627 | |||
| 349170f68f | |||
| 6ba32dff81 | |||
| 8fac2692f5 | |||
| 448b9a513d | |||
| 94339dbc19 | |||
| 4aa5b3fc27 | |||
| 84f11659f1 | |||
| 5aacdbea5f | |||
| c7b0e92eb2 | |||
| 612a27fbf5 | |||
| 0b71317791 | |||
| 465e587714 | |||
| 591c8d38db | |||
| 3fde2f8602 | |||
| 3b8bcd02aa | |||
| 9872531544 | |||
| a4ee545b9a | |||
| caa29fb9d6 | |||
| ce6e6389e4 | |||
| edd6d76a58 | |||
| b93d28e66c | |||
| e8703e3484 | |||
| fae67f89b5 | |||
| 97e18cb727 | |||
| 1bd646bc92 | |||
| f4866471e4 | |||
| b3237b6e4e | |||
| ba9226d4e2 | |||
| 9bd813777e | |||
| 56f87c4851 | |||
| 0ef412ebf1 | |||
| eb3adfd251 | |||
| 931a4aab01 | |||
| 40866b97fb | |||
| 0bcd3cd731 | |||
| 5b89864f7f | |||
| dc7d26e4d7 | |||
| 4280c21575 | |||
| 3179686e28 | |||
| 08450b6358 | |||
| 2604055fb0 | |||
| bcfe85ce34 | |||
| 4b6b6f359d | |||
| 543cf7de09 | |||
| f2cf78971d | |||
| 43130b4680 | |||
| 86f24c0a50 | |||
| 7fb6db28c2 | |||
| d37789ce7a | |||
| b47c548deb | |||
| cb60747e5a | |||
| 7f7fd8686f | |||
| 8d7144b6e4 | |||
| 8c163f3a38 | |||
| dd5801c0f7 | |||
| 3020fec2bc | |||
| 2dd771aac4 | |||
| 3c7849cc1a | |||
| 26e7f6bb00 | |||
| 58dec719c7 | |||
| 33f4410a5b | |||
| 1c8ed8df92 | |||
| 142f6e9e3c | |||
| 89e056084a | |||
| ab851d8113 | |||
| fa7b118dc3 | |||
| fbaa04082c | |||
| a5f7a7a215 | |||
| 07d9633609 | |||
| 44ccb41f90 | |||
| e62a0454c6 | |||
| f149ee4cf3 | |||
| 9539a9fa13 | |||
| bfd52dd98a | |||
| d95e2eccdc | |||
| e7145eb9fb | |||
| 656007bf1e | |||
| 4792f8fcbb | |||
| cc6a4d8331 | |||
| 33e9627801 | |||
| 956cef56b4 | |||
| d6c89cd79b | |||
| 88168553f8 | |||
| 99b90377c5 | |||
| 35860c7b2d | |||
| 792be167a4 | |||
| 269c5a1355 | |||
| ddf54c215e | |||
| 1bc146164e | |||
| 72f9c8eefc | |||
| 96d098daba | |||
| 776cfa9736 | |||
| b9a8071dd1 | |||
| da9bd8818d | |||
| 8bb0ee26db | |||
| 374b8c98b6 | |||
| 6904762590 | |||
| 764b8b9ffa | |||
| 53e738b87b | |||
| 524345606c | |||
| 3f6d55994a | |||
| 6bdb1b07ff | |||
| b2f5a930d0 | |||
| 6f83004123 | |||
| 86bd765125 | |||
| 3651237248 | |||
| 6da3e209b2 | |||
| 5a0688cffc | |||
| 7b5ef70b4d | |||
| b45480991a | |||
| ae0c1309a2 | |||
| a0d134f629 | |||
| 3a7e076067 | |||
| a4b9f70cc3 | |||
| 532aad1341 | |||
| 6def4e4a4a | |||
| 8fdc958cb9 |
@@ -6,10 +6,10 @@
|
||||
github: schneegans
|
||||
patreon: # Replace with a single Patreon username
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
ko_fi: schneegans
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: # Schneegans
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
otechie: # Replace with a single Otechie username
|
||||
custom: ['https://www.paypal.com/donate/?hosted_button_id=3F7UFL8KLVPXE']
|
||||
custom: ["https://www.paypal.me/simonschneegans"]
|
||||
|
||||
@@ -6,10 +6,10 @@ name: Checks
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- '**'
|
||||
- "**"
|
||||
pull_request:
|
||||
branches:
|
||||
- '**'
|
||||
- "**"
|
||||
|
||||
jobs:
|
||||
clang_format:
|
||||
@@ -33,9 +33,9 @@ jobs:
|
||||
name: Check Compliance with REUSE Specification
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: REUSE Compliance Check
|
||||
uses: fsfe/reuse-action@v1
|
||||
- uses: actions/checkout@v3
|
||||
- name: REUSE Compliance Check
|
||||
uses: fsfe/reuse-action@v1
|
||||
|
||||
comment_percentage:
|
||||
name: Check Comment Percentage
|
||||
@@ -85,19 +85,19 @@ jobs:
|
||||
if: >
|
||||
github.event_name == 'push' && contains(github.event.head_commit.message, '[generate-references]')
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Download Dependencies
|
||||
run: |
|
||||
sudo apt update -qq
|
||||
sudo apt install gettext imagemagick -qq
|
||||
- name: Build Burn-My-Windows
|
||||
run: make
|
||||
- name: Generate References
|
||||
run: sudo make references
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: references
|
||||
path: tests/references/
|
||||
- uses: actions/checkout@v3
|
||||
- name: Download Dependencies
|
||||
run: |
|
||||
sudo apt update -qq
|
||||
sudo apt install gettext imagemagick -qq
|
||||
- name: Build Burn-My-Windows
|
||||
run: make
|
||||
- name: Generate References
|
||||
run: sudo make references
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: references
|
||||
path: tests/references/
|
||||
|
||||
build:
|
||||
name: Run Tests
|
||||
@@ -110,27 +110,28 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
version:
|
||||
- '32'
|
||||
- '33'
|
||||
- '34'
|
||||
- '35'
|
||||
- '36'
|
||||
- '37'
|
||||
- "32"
|
||||
- "33"
|
||||
- "34"
|
||||
- "35"
|
||||
- "36"
|
||||
- "37"
|
||||
- "38"
|
||||
session:
|
||||
- 'gnome-xsession'
|
||||
- 'gnome-wayland-nested'
|
||||
- "gnome-xsession"
|
||||
- "gnome-wayland-nested"
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Download Dependencies
|
||||
run: |
|
||||
sudo apt update -qq
|
||||
sudo apt install gettext imagemagick -qq
|
||||
- name: Build Burn-My-Windows
|
||||
run: make
|
||||
- name: Test Burn-My-Windows
|
||||
run: sudo $GITHUB_WORKSPACE/tests/run-test.sh -v ${{ matrix.version }} -s ${{ matrix.session }}
|
||||
- uses: actions/upload-artifact@v3
|
||||
if: failure()
|
||||
with:
|
||||
name: result_${{ matrix.version }}_${{ matrix.session }}
|
||||
path: tests/output/
|
||||
- uses: actions/checkout@v3
|
||||
- name: Download Dependencies
|
||||
run: |
|
||||
sudo apt update -qq
|
||||
sudo apt install gettext imagemagick -qq
|
||||
- name: Build Burn-My-Windows
|
||||
run: make
|
||||
- name: Test Burn-My-Windows
|
||||
run: sudo $GITHUB_WORKSPACE/tests/run-test.sh -v ${{ matrix.version }} -s ${{ matrix.session }}
|
||||
- uses: actions/upload-artifact@v3
|
||||
if: failure()
|
||||
with:
|
||||
name: result_${{ matrix.version }}_${{ matrix.session }}
|
||||
path: tests/output/
|
||||
|
||||
@@ -9,7 +9,7 @@ DOMAIN := schneegans.github.com
|
||||
ZIP_NAME := $(NAME)@$(DOMAIN).zip
|
||||
|
||||
# Some of the recipes below depend on some of these files.
|
||||
JS_FILES = $(wildcard src/*.js extension.js prefs.js)
|
||||
JS_FILES = $(wildcard src/*.js src/*/*.js extension.js prefs.js)
|
||||
UI_FILES = $(shell find resources -type f -and \( -name "*.ui" \))
|
||||
RESOURCE_FILES = $(shell find resources -mindepth 2 -type f)
|
||||
LOCALES_PO = $(wildcard po/*.po)
|
||||
@@ -17,6 +17,8 @@ LOCALES_MO = $(patsubst po/%.po,locale/%/LC_MESSAGES/$(NAME).mo,$(LOCALES_PO
|
||||
|
||||
# These files will be included in the extension zip file.
|
||||
ZIP_CONTENT = $(JS_FILES) $(LOCALES_MO) resources/$(NAME).gresource \
|
||||
schemas/org.gnome.shell.extensions.$(NAME).gschema.xml \
|
||||
schemas/org.gnome.shell.extensions.$(NAME)-profile.gschema.xml \
|
||||
schemas/gschemas.compiled metadata.json LICENSE
|
||||
|
||||
# These seven recipes can be invoked by the user.
|
||||
@@ -46,7 +48,7 @@ pot: $(JS_FILES) $(UI_FILES)
|
||||
|
||||
# This runs several tests in containerized versions of GNOME Shell.
|
||||
test:
|
||||
@ for version in 32 33 34 35 36 37 ; do \
|
||||
@ for version in 32 33 34 35 36 37 38 ; do \
|
||||
for session in "gnome-xsession" "gnome-wayland-nested" ; do \
|
||||
echo ; \
|
||||
echo "Running Tests on Fedora $$version ($$session)." ; \
|
||||
@@ -57,7 +59,7 @@ test:
|
||||
|
||||
# This re-generates all reference images required by the tests.
|
||||
references:
|
||||
@ for version in 32 33 34 35 36 37 ; do \
|
||||
@ for version in 32 33 34 35 36 37 38 ; do \
|
||||
for session in "gnome-xsession" "gnome-wayland-nested" ; do \
|
||||
echo ; \
|
||||
echo "Generating References for Fedora $$version ($$session)." ; \
|
||||
@@ -91,7 +93,7 @@ $(ZIP_NAME): $(ZIP_CONTENT)
|
||||
fi
|
||||
|
||||
# Compiles the gschemas.compiled file from the gschema.xml file.
|
||||
schemas/gschemas.compiled: schemas/org.gnome.shell.extensions.$(NAME).gschema.xml
|
||||
schemas/gschemas.compiled: schemas/org.gnome.shell.extensions.$(NAME).gschema.xml schemas/org.gnome.shell.extensions.$(NAME)-profile.gschema.xml
|
||||
@echo "Compiling schemas..."
|
||||
@glib-compile-schemas schemas
|
||||
|
||||
|
||||
@@ -4,11 +4,10 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
-->
|
||||
|
||||
<p align="center">
|
||||
<a href="https://www.youtube.com/watch?v=L2aaNF_rPHo"><img src ="docs/pics/teaser.jpg" /></a>
|
||||
<a href="https://www.youtube.com/watch?v=ZHMboQq8Z5c"><img src ="docs/pics/teaser.jpg" /></a>
|
||||
</p>
|
||||
|
||||
<h1 align="center">🔥 Set GNOME Shell on Fire!</h1>
|
||||
<p align="center">(and KWin as well)</p>
|
||||
<h1 align="center">🔥 Set GNOME Shell and KWin on Fire!</h1>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://extensions.gnome.org/extension/4679/burn-my-windows/"><img src="https://img.shields.io/badge/Download-extensions.gnome.org-e67f4d.svg?logo=gnome&logoColor=lightgrey&labelColor=303030" /></a><br/>
|
||||
@@ -23,22 +22,22 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
When I released the [Desktop Cube Extension](https://github.com/Schneegans/Desktop-Cube/) for GNOME, many people requested to revive one of the most useless features of Linux desktop history: Setting windows on fire!
|
||||
This extension is not only more useless than the cube, but it is also much more hacky. So I expect some bug! [Let's incinerate them all](https://github.com/Schneegans/Burn-My-Windows/issues)!
|
||||
|
||||
Burn-My-Windows is not only available for **GNOME** but also includes some basic support for **KDE Plasma's KWin**.
|
||||
Further down in this file you'll find installation instructions for both.
|
||||
**🖼️ The wallpapers used in the previews below were all generated using AI and are available in [this GitHub repository](https://github.com/Schneegans/ai-wallpapers).**
|
||||
|
||||
Effect | Preview
|
||||
-----|--------
|
||||
**Apparition** <br> This effect hides your windows by violently sucking them into the void of magic! | <img src ="docs/pics/apparition.gif" />
|
||||
**Broken Glass** <br> Shatter your windows into a shower sharp shards! This effect can be configured so that the shards fly away from your mouse pointer position!| <img src ="docs/pics/glass.gif" />
|
||||
**Broken Glass** <br> Shatter your windows into a shower sharp shards! This effect can be configured so that the shards fly away from your mouse pointer position!| <img src ="docs/pics/broken-glass.gif" />
|
||||
**Doom** <br> Melt your windows. Inspired by the legendary screen transitions of the original Doom. | <img src ="docs/pics/doom.gif" />
|
||||
**Energize A** <br> Beam your windows away! | <img src ="docs/pics/energizeA.gif" />
|
||||
**Energize B** <br> Using different transporter technology results in an alternative visual effect. | <img src ="docs/pics/energizeB.gif" />
|
||||
**Energize A** <br> Beam your windows away! | <img src ="docs/pics/energize-a.gif" />
|
||||
**Energize B** <br> Using different transporter technology results in an alternative visual effect. | <img src ="docs/pics/energize-b.gif" />
|
||||
**Fire** <br> The classic effect inspired by Compiz. However, this is implemented using a GLSL shader and not with a particle system like in the old days. | <img src ="docs/pics/fire.gif" />
|
||||
**Glide** <br> This very simple effect fades the window to transparency with subtle 3D effects. | <img src ="docs/pics/glide.gif" />
|
||||
**Glitch** <br> This effect applies some intentional graphics issues to your windows. | <img src ="docs/pics/glitch.gif" />
|
||||
**Hexagon** <br> With glowing lines and hexagon-shaped tiles, this effect looks very sci-fi. | <img src ="docs/pics/hexagon.gif" />
|
||||
**Incinerate** <br> A less snappy but definitely more fancy take on the fire effect. | <img src ="docs/pics/incinerate.gif" />
|
||||
**Matrix** <br> Turn your windows into a shower of green letters! The color is actually configurable.| <img src ="docs/pics/matrix.gif" />
|
||||
**Paint Brush** <br> Paint or erase your windows with a thick paint brush. | <img src ="docs/pics/paint-brush.gif" />
|
||||
**Pixelate** <br> Pixelate your windows and randomly hide pixels until the entire window is gone.| <img src ="docs/pics/pixelate.gif" />
|
||||
**Pixel Wheel** <br> This simple effect pixelates the window and hides the pixels in a wheel-like fashion.| <img src ="docs/pics/pixel-wheel.gif" />
|
||||
**Pixel Wipe** <br> This effect pixelates the window and hides the pixels radially, starting from the pointer position.| <img src ="docs/pics/pixel-wipe.gif" />
|
||||
@@ -73,6 +72,7 @@ Below is a table which summarizes the current availability for all effects.
|
||||
<tr><td>Hexagon</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
|
||||
<tr><td>Incinerate</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
|
||||
<tr><td>Matrix</td> <td> </td> <td> </td> <td>✅</td> <td> </td> </tr>
|
||||
<tr><td>Paint Brush</td> <td> </td> <td> </td> <td>✅</td> <td> </td> </tr>
|
||||
<tr><td>Pixelate</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
|
||||
<tr><td>Pixel Wheel</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
|
||||
<tr><td>Pixel Wipe</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
|
||||
@@ -93,25 +93,26 @@ While [coding new features](docs/how-to-create-new-effects.md) or [translating t
|
||||
<p align="center">
|
||||
<a href="https://github.com/D3vil0p3r">D3vil0p3r</a><br>
|
||||
Maxence Sebald<br>
|
||||
<a href="https://github.com/dennis1248">Dennis ten Hoove</a><br>
|
||||
</p>
|
||||
|
||||
<h3 align="center">🥈 Current Silver Sponsors</h3>
|
||||
<p align="center">
|
||||
<a href="https://github.com/danielheadbang">@danielheadbang</a><br>
|
||||
<a href="https://github.com/MRR-dev">@MRR-dev</a><br>
|
||||
<a href="https://github.com/castrojo">Jorge Castro</a><br>
|
||||
</p>
|
||||
|
||||
<h3 align="center">🥉 Current Bronze Sponsors</h3>
|
||||
<p align="center">
|
||||
<a href='https://github.com/SubOptimal'>@SubOptimal</a><br>
|
||||
<a href='https://github.com/vlazic'>@vlazic</a><br>
|
||||
<a href='https://github.com/AngelBrielez'>Angel Brielez</a>
|
||||
<!-- <a href="https://github.com/sponsors/Schneegans">Become the first!</a><br> -->
|
||||
</p>
|
||||
|
||||
<h3 align="center">🏅 Previous Sponsors and One-Time Donators</h3>
|
||||
<p align="center">
|
||||
<a href="https://github.com/dennis1248">Dennis ten Hoove</a><br>
|
||||
<a href="https://github.com/MRR-dev">@MRR-dev</a><br>
|
||||
<a href='https://github.com/AngelBrielez'>Angel Brielez</a>
|
||||
<a href='https://github.com/taconomix'>@taconomix</a><br>
|
||||
<a href='https://github.com/enolive'>@enolive</a><br>
|
||||
<a href="https://github.com/Aggraxis">@Aggraxis</a><br>
|
||||
@@ -200,11 +201,12 @@ You can either download the effects from the KDE store (a), download a stable ve
|
||||
|
||||
Here are links to all effects which are currently available in the KDE store;
|
||||
|
||||
* [Doom](https://store.kde.org/p/1898739)
|
||||
* [Energize A](https://store.kde.org/p/1884310)
|
||||
* [Energize B](https://store.kde.org/p/1884311)
|
||||
* [Doom](https://store.kde.org/p/1898739)
|
||||
* [Fire](https://store.kde.org/p/1884307)
|
||||
* [Glide](https://store.kde.org/p/1935778)
|
||||
* [Glitch](https://store.kde.org/p/1972813)
|
||||
* [Hexagon](https://store.kde.org/p/1884309)
|
||||
* [Incinerate](https://store.kde.org/p/1861183)
|
||||
* [Pixelate](https://store.kde.org/p/1898742)
|
||||
@@ -212,10 +214,11 @@ Here are links to all effects which are currently available in the KDE store;
|
||||
* [Pixel Wipe](https://store.kde.org/p/1898748)
|
||||
* [Portal](https://store.kde.org/p/1959879)
|
||||
* [TV-Effect](https://store.kde.org/p/1884312)
|
||||
* [TV-Glitch](https://store.kde.org/p/1982142)
|
||||
* [Wisps](https://store.kde.org/p/1884313)
|
||||
|
||||
You can also directly get the effects from within your system settings.
|
||||
Just go to your System Settings, then "Workspace Behavior", and "Desktop Effects". Then click on "Get new Desktop Effetcs...".
|
||||
Just go to your System Settings, then "Workspace Behavior", and "Desktop Effects". Then click on "Get new Desktop Effects...".
|
||||
|
||||
### b) Downloading a Stable Release
|
||||
|
||||
|
||||
@@ -1,7 +1,20 @@
|
||||
# Notes for `claws.blend`
|
||||
# `claws.blend`
|
||||
|
||||
This is the source file for `resources/img/claws.png`. To generate the image, the animation in `claws.blend` is rendered to 256 PNG files and then combined using this command:
|
||||
|
||||
```bash
|
||||
convert *.png -average claws.png
|
||||
```
|
||||
```
|
||||
|
||||
# `brush.blend`
|
||||
|
||||
This is the source file for `resources/img/brush.png`. To generate the image, the four dynamic paint image sequences in `brush.blend` are baked to 256 PNG files each. They are then combined using these commands:
|
||||
|
||||
```bash
|
||||
convert brush1/*.png -average brush1.png
|
||||
convert brush2/*.png -average brush2.png
|
||||
convert brush3/*.png -average brush3.png
|
||||
convert brush4/*.png -average brush4.png
|
||||
|
||||
convert brush1.png brush2.png brush3.png brush4.png -channel RGBA -combine brush.png
|
||||
```
|
||||
|
||||
|
Before Width: | Height: | Size: 4.1 MiB After Width: | Height: | Size: 2.1 MiB |
@@ -5,20 +5,226 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
# Changelog of the Burn-My-Windows Extension
|
||||
|
||||
## [Burn My Windows 42 [backport release]](https://github.com/schneegans/Burn-My-Windows/releases/tag/v42)
|
||||
|
||||
**Release Date:** 2024-02-27
|
||||
|
||||
- Ported the changes from Burn-My-Windows 41 to GNOME 3.36 - 44.
|
||||
|
||||
## [Burn My Windows 41](https://github.com/schneegans/Burn-My-Windows/releases/tag/v41)
|
||||
|
||||
**Release Date:** 2024-02-27
|
||||
|
||||
#### Enhancements
|
||||
|
||||
- The extension has been updated to work with GNOME 46.
|
||||
- Several translations have been updated. Thanks to all the translators!
|
||||
- All CI jobs are now executed for GNOME 45 and GNOME 46 as well.
|
||||
|
||||
#### Bug Fixes
|
||||
|
||||
- Fixed a compatibility issue with Plasma 6. Thanks to [@CoelacanthusHex](https://github.com/CoelacanthusHex) for the fix!
|
||||
- Fixed an issue which caused the origin of the Incinerate and Pixel Wipe effects to be reset to the current mouse position whenever another effect was started while an effect was still running.
|
||||
|
||||
## [Burn My Windows 40 [backport release]](https://github.com/schneegans/Burn-My-Windows/releases/tag/v40)
|
||||
|
||||
**Release Date:** 2023-10-26
|
||||
|
||||
#### Enhancements
|
||||
|
||||
- Ported the changes from Burn-My-Windows 39 to GNOME 3.36 - 44.
|
||||
|
||||
## [Burn My Windows 39](https://github.com/schneegans/Burn-My-Windows/releases/tag/v39)
|
||||
|
||||
**Release Date:** 2023-10-26
|
||||
|
||||
#### Enhancements
|
||||
|
||||
- On KDE, the effects are no longer applied to windows which are on all desktops and have no decoration. This is primarily meant to avoid applying the effects to the Alt+Tab switcher.
|
||||
- Several translations have been updated. Thanks to all the translators!
|
||||
- Instead of an always out-of-date list of sponsors, the main menu of the preferences dialog now contains a link to the new [list of all donors](https://schneegans.github.io/sponsors/). This list is semi-automatically updated whenever a new donation is received. Thanks to all the donors!
|
||||
- The possibility to [donate cryptocurrencies](https://schneegans.cb.id) has been added.
|
||||
|
||||
#### Bug Fixes
|
||||
|
||||
- Fixed an issue which caused overly large windows on GNOME for certain applications (e.g. KPatience) if they were re-opened after being closed in maximized state.
|
||||
- Fixed an issue with the archive format which caused a failure when installing the effects via KDE Discover.
|
||||
|
||||
## [Burn My Windows 38](https://github.com/schneegans/Burn-My-Windows/releases/tag/v38)
|
||||
|
||||
**Release Date:** 2023-09-09
|
||||
|
||||
#### Major Changes
|
||||
|
||||
- This is the first release of Burn-My-Windows supporting GNOME 45. This required a [major refactoring](https://github.com/Schneegans/Burn-My-Windows/pull/373/files) of the code base as GJS now uses ESM modules. As a consequence, this version is not compatible with older versions of GNOME Shell anymore. The old code base is still available on the `gnome-3.36-44` branch and if new features are added (especially translations), they can be backported to this branch.
|
||||
|
||||
## [Burn My Windows 37](https://github.com/schneegans/Burn-My-Windows/releases/tag/v37)
|
||||
|
||||
**Release Date:** 2023-08-26
|
||||
|
||||
#### Bug Fixes
|
||||
|
||||
- Fixed an issue which caused the effects to crash on KDE in some cases.
|
||||
|
||||
#### Enhancements
|
||||
|
||||
- Several translations have been updated. Thanks to all the translators!
|
||||
|
||||
## [Burn My Windows 36](https://github.com/schneegans/Burn-My-Windows/releases/tag/v36)
|
||||
|
||||
**Release Date:** 2023-08-18
|
||||
|
||||
#### New Features
|
||||
|
||||
- Two convenience buttons have been added to the preferences dialog. One allows you to select all effects, the other one allows you to deselect all effects.
|
||||
- A new main menu entry has been added which allows you to open the effect-profile directory. This is useful if you want to back up or share your profiles with others.
|
||||
- The Wisps effect now supports colorful wisps. You can now specify three colors for the effect. These colors make up a gradient which is used to color the wisps.
|
||||
|
||||
#### Enhancements
|
||||
|
||||
- Several translations have been updated. Thanks to all the translators!
|
||||
|
||||
#### Bug Fixes
|
||||
|
||||
- Some effects (Fire, Incinerate, Energize A, Energize B) are faded towards the edges of the window. This used to look weird when the window is maximized. This has been fixed.
|
||||
- On KDE, the animations are not applied to IntelliJ IDEs anymore. These IDEs use windows for their tooltips which do not set the WM class correctly. This caused the animations to be applied to the tooltips as well making them unusable. This is rather a workaround than a fix, but makes the effect usable again in conjunction with IntelliJ IDEs.
|
||||
|
||||
## [Burn My Windows 35](https://github.com/schneegans/Burn-My-Windows/releases/tag/v35)
|
||||
|
||||
**Release Date:** 2023-07-03
|
||||
|
||||
#### New Features
|
||||
|
||||
- **New Effect: Paint-Brush.** This effect paints or erases your windows with a thick paint brush.
|
||||
|
||||
## [Burn My Windows 34](https://github.com/schneegans/Burn-My-Windows/releases/tag/v34)
|
||||
|
||||
**Release Date:** 2023-09-06
|
||||
|
||||
#### Enhancements
|
||||
|
||||
- Added support for the new donation button on extensions.gnome.org.
|
||||
- https://www.paypal.me/simonschneegans is now the default donation link for PayPal.
|
||||
|
||||
## [Burn My Windows 33](https://github.com/schneegans/Burn-My-Windows/releases/tag/v33)
|
||||
|
||||
**Release Date:** 2023-06-06
|
||||
|
||||
#### Enhancements
|
||||
|
||||
- When opening the preferences, a dialog is now shown occasionally to kindly ask for a donation. The dialog can be disabled once it has been shown for the first time.
|
||||
- Several translations have been updated. Thanks to all the translators!
|
||||
|
||||
#### Bug Fixes
|
||||
|
||||
- Fixed an issue on GNOME 44.2 which caused the effects to look broken. It was caused by [this change](https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2650).
|
||||
- Fixed an issue which prevented the settings of the Snap of Disintegration effect from being translatable.
|
||||
|
||||
## [Burn My Windows 32](https://github.com/schneegans/Burn-My-Windows/releases/tag/v32)
|
||||
|
||||
**Release Date:** 2023-05-22
|
||||
|
||||
#### Enhancements
|
||||
|
||||
- Several translations have been updated. Thanks to all the translators!
|
||||
|
||||
#### Bug Fixes
|
||||
|
||||
- Fixed an issue which caused corrupted windows on X11 GNOME 44 under very specific circumstances. This happened only on X11 and only when the window was resized before it was actually shown.
|
||||
|
||||
## [Burn My Windows 31](https://github.com/schneegans/Burn-My-Windows/releases/tag/v31)
|
||||
|
||||
**Release Date:** 2023-05-04
|
||||
|
||||
#### Enhancements
|
||||
|
||||
- Several translations have been updated. Thanks to all the translators!
|
||||
|
||||
#### Bug Fixes
|
||||
|
||||
- Fixed an issue which made windows invisible which did not set the `WM_CLASS` X11 property correctly.
|
||||
- Fixed an issue which made window-picking of Wayland windows impossible on GNOME 44.
|
||||
|
||||
## [Burn My Windows 30](https://github.com/schneegans/Burn-My-Windows/releases/tag/v30)
|
||||
|
||||
**Release Date:** 2023-04-08
|
||||
|
||||
#### Bug Fixes
|
||||
|
||||
- Fixed yet another incompatibility with the [Compiz alike magic lamp effect](https://extensions.gnome.org/extension/3740/compiz-alike-magic-lamp-effect/).
|
||||
|
||||
## [Burn My Windows 29](https://github.com/schneegans/Burn-My-Windows/releases/tag/v29)
|
||||
|
||||
**Release Date:** 2023-04-08
|
||||
|
||||
#### Bug Fixes
|
||||
|
||||
- Fixed a regression which caused window-close animations not to shown in front of full-screen windows.
|
||||
- Fixed an incompatibility with the [Compiz alike magic lamp effect](https://extensions.gnome.org/extension/3740/compiz-alike-magic-lamp-effect/).
|
||||
|
||||
## [Burn My Windows 28](https://github.com/schneegans/Burn-My-Windows/releases/tag/v28)
|
||||
|
||||
**Release Date:** 2023-04-06
|
||||
|
||||
#### Enhancements
|
||||
|
||||
- **New donation method: Ko-fi**. Follow me on Ko-fi to get the latest updates regarding my extensions: https://ko-fi.com/schneegans!
|
||||
- All shaders are now compatible with OpenGL ES. Due to [this change in Mutter](https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2672) the number of devices using OpenGL ES has significantly increased since GNOME 44. This change makes Burn-My-Windows working on those devices.
|
||||
- It is now possible to create effects which do not have any settings at all.
|
||||
|
||||
#### Bug Fixes
|
||||
|
||||
- [This change in GNOME Shell](https://gitlab.gnome.org/GNOME/gnome-shell/-/commit/7bd98f3f5fb7e0d1220646b8a4ee7073534a8e8f) prevented Burn-My-Windows from working if no hardware-acceleration was available on GNOME 44, including the Docker containers used for CI testing. Some severe refactoring was necessary to fix this issue.
|
||||
- The tutorial on how to create new effects has been updated and should work again.
|
||||
- Fixed an issue which caused effect-profile loading to fail whenever Burn-My-Windows was updated.
|
||||
|
||||
## [Burn My Windows 27](https://github.com/schneegans/Burn-My-Windows/releases/tag/v27)
|
||||
|
||||
**Release Date:** 2023-03-01
|
||||
|
||||
#### New Features
|
||||
|
||||
- **Effect Profiles:** It is now possible to create _effect profiles_. Each profile contains a different set of effect settings. You can choose for each profile under which circumstances it will be used. Currently, these constraints are supported:
|
||||
|
||||
- Application name
|
||||
- Animation type (open close)
|
||||
- Window type (normal, dialog)
|
||||
- Desktop style (light, dark)
|
||||
- Power mode (plugged-in, on battery)
|
||||
- Power profile (power saver, balanced, performance)
|
||||
|
||||
This allows for a very detailed configuration of the extension. For instance, you can now...
|
||||
|
||||
- ... exclude specific applications from BMW effects
|
||||
- ... select effects per-application
|
||||
- ... use different configurations of the same effect for opening or closing windows
|
||||
|
||||
The extension will attempt to migrate your previous settings to the new effect profile system. Depending on your previous configuration, you may have now one or two profiles to start with, but you can add an arbitrary amount of profiles.
|
||||
|
||||
The effect profiles are available for all supported GNOME versions (that is GNOME 3.36, 3.38, 40, 41, 42, 43, and 44).
|
||||
|
||||
- **Wallpapers:** A set of AI-generated [wallpapers has released](https://github.com/Schneegans/ai-wallpapers). For each effect of Burn-My-Windows, there is one dedicated wallpaper. As a central theme, each wallpaper shows a window. In some cases, the window is actually burning!
|
||||
- Initial support for GNOME 44.
|
||||
|
||||
#### Other Enhancements
|
||||
|
||||
- As part of the effect profile implementation, the libadwaita-inspired preferences dialog layout got back-ported to all other supported GNOME versions.
|
||||
- A notification is now shown in the settings dialog whenever the extension got updated. It contains a link to this changelog.
|
||||
- Many translation updates. Thanks to all the translators!
|
||||
|
||||
## [Burn My Windows 26](https://github.com/schneegans/Burn-My-Windows/releases/tag/v26)
|
||||
|
||||
**Release Date:** 2023-02-04
|
||||
|
||||
#### New Features
|
||||
|
||||
* **New Effect: TV-Glitch.** This effect combines the Glitch and the TV Effect into one. Credits go to [Kurt Wilson](https://github.com/Kurtoid) for this idea!
|
||||
- **New Effect: TV-Glitch.** This effect combines the Glitch and the TV Effect into one. Credits go to [Kurt Wilson](https://github.com/Kurtoid) for this idea!
|
||||
|
||||
#### Other Enhancements
|
||||
|
||||
* On KDE, the effect configuration dialogs can now be translated. The translations for GNOME are re-used, so we already have many translations! This requires at least KWin 5.27 to be working.
|
||||
* Many translation updates, including a completely new Japanese translation. Thanks to all the translators!
|
||||
* The effect colors for the Glitch and TV Effect now support an alpha channel. With this you can control how much color gets mixed into the window color.
|
||||
|
||||
- On KDE, the effect configuration dialogs can now be translated. The translations for GNOME are re-used, so we already have many translations! This requires at least KWin 5.27 to be working.
|
||||
- Many translation updates, including a completely new Japanese translation. Thanks to all the translators!
|
||||
- The effect colors for the Glitch and TV Effect now support an alpha channel. With this you can control how much color gets mixed into the window color.
|
||||
|
||||
## [Burn My Windows 25](https://github.com/schneegans/Burn-My-Windows/releases/tag/v25)
|
||||
|
||||
@@ -26,7 +232,7 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
#### Bug Fixes
|
||||
|
||||
* Fixed an issue which prevented the extension from loading if `power-profiles-daemon` was masked.
|
||||
- Fixed an issue which prevented the extension from loading if `power-profiles-daemon` was masked.
|
||||
|
||||
## [Burn My Windows 24](https://github.com/schneegans/Burn-My-Windows/releases/tag/v24)
|
||||
|
||||
@@ -34,18 +240,18 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
#### New Features
|
||||
|
||||
* **New Effect: Glitch.** This effect applies some intentional graphics issues to your windows.
|
||||
* There is a new option to disable the effects when power-save mode is active. This may not only help to reduce power consumption, but also help in situation where the window animation do not run fluently in power-save mode. This option requires the power-profiles daemon, so it should be available for GNOME Shell 41 and beyond.
|
||||
- **New Effect: Glitch.** This effect applies some intentional graphics issues to your windows.
|
||||
- There is a new option to disable the effects when power-save mode is active. This may not only help to reduce power consumption, but also help in situation where the window animation do not run fluently in power-save mode. This option requires the power-profiles daemon, so it should be available for GNOME Shell 41 and beyond.
|
||||
|
||||
#### Other Enhancements
|
||||
|
||||
* Many translation updates, including a completely new Indonesian translation. Thanks to all the translators!
|
||||
* The menu button of the settings dialog has been moved to the left and now shows a heart instead of three dots.
|
||||
* The about dialog now uses the `Adw.AboutWindow` if available.
|
||||
- Many translation updates, including a completely new Indonesian translation. Thanks to all the translators!
|
||||
- The menu button of the settings dialog has been moved to the left and now shows a heart instead of three dots.
|
||||
- The about dialog now uses the `Adw.AboutWindow` if available.
|
||||
|
||||
#### Bug Fixes
|
||||
|
||||
* Fixed an issue which could lead to black artifacts for some effects (Fire, Incinerate, Matrix, Portal, T-Rex Attack, and Wisps).
|
||||
- Fixed an issue which could lead to black artifacts for some effects (Fire, Incinerate, Matrix, Portal, T-Rex Attack, and Wisps).
|
||||
|
||||
## [Burn My Windows 23](https://github.com/schneegans/Burn-My-Windows/releases/tag/v23)
|
||||
|
||||
@@ -53,11 +259,11 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
#### New Features
|
||||
|
||||
* **New Effect: Portal.** This ridiculous effect teleports your windows from and to alternative dimensions. It may resemble the portal from a well-known cartoon series...
|
||||
- **New Effect: Portal.** This ridiculous effect teleports your windows from and to alternative dimensions. It may resemble the portal from a well-known cartoon series...
|
||||
|
||||
#### Other Enhancements
|
||||
|
||||
* Many translation updates. Thanks to all the translators!
|
||||
- Many translation updates. Thanks to all the translators!
|
||||
|
||||
## [Burn My Windows 22](https://github.com/schneegans/Burn-My-Windows/releases/tag/v22)
|
||||
|
||||
@@ -65,14 +271,14 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
#### New Features
|
||||
|
||||
* **New Effect: Glide.** A very subtle effect which simply fades the window and applies some 3D-like tilting and scaling. This effect is available on all support GNOME versions and on KDE.
|
||||
- **New Effect: Glide.** A very subtle effect which simply fades the window and applies some 3D-like tilting and scaling. This effect is available on all support GNOME versions and on KDE.
|
||||
|
||||
#### Other Enhancements
|
||||
|
||||
* The settings dialog has been redesigned specifically for libadwaita. These changes are only available on GNOME 42 and GNOME 43.
|
||||
* Many translation updates, including a completely new Romanian translation. Thanks to all the translators!
|
||||
* The KWin port of Burn-My-Windows now uses `metadata.json` files instead of the deprecated `metadata.desktop` format.
|
||||
* Burn-My-Windows now follows the [REUSE Specification](https://reuse.software/spec).
|
||||
- The settings dialog has been redesigned specifically for libadwaita. These changes are only available on GNOME 42 and GNOME 43.
|
||||
- Many translation updates, including a completely new Romanian translation. Thanks to all the translators!
|
||||
- The KWin port of Burn-My-Windows now uses `metadata.json` files instead of the deprecated `metadata.desktop` format.
|
||||
- Burn-My-Windows now follows the [REUSE Specification](https://reuse.software/spec).
|
||||
|
||||
## [Burn My Windows 21](https://github.com/schneegans/Burn-My-Windows/releases/tag/v21)
|
||||
|
||||
@@ -80,11 +286,11 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
#### New Features
|
||||
|
||||
* Added support for GNOME 43.
|
||||
- Added support for GNOME 43.
|
||||
|
||||
#### Other Enhancements
|
||||
|
||||
* Several new translations have been added, including a Lithuanian, Ukrainian, Esperanto, Portuguese, Azerbaijani, and Hebrew translation. Also, many other translations received updates. Thanks to all the translators!
|
||||
- Several new translations have been added, including a Lithuanian, Ukrainian, Esperanto, Portuguese, Azerbaijani, and Hebrew translation. Also, many other translations received updates. Thanks to all the translators!
|
||||
|
||||
## [Burn My Windows 20](https://github.com/schneegans/Burn-My-Windows/releases/tag/v20)
|
||||
|
||||
@@ -92,21 +298,20 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
#### New Features
|
||||
|
||||
* **New Effect: Doom.** Melt your windows. Inspired by the legendary screen transitions of the original Doom.
|
||||
* **New Effect: Pixelate.** Pixelate your windows and randomly hide pixels until the entire window is gone.
|
||||
* **New Effect: Pixel Wheel.** This simple effect pixelates the window and hides the pixels in a wheel-like fashion.
|
||||
* **New Effect: Pixel Wipe.** This effect pixelates the window and hides the pixels radially, starting from the pointer position.
|
||||
- **New Effect: Doom.** Melt your windows. Inspired by the legendary screen transitions of the original Doom.
|
||||
- **New Effect: Pixelate.** Pixelate your windows and randomly hide pixels until the entire window is gone.
|
||||
- **New Effect: Pixel Wheel.** This simple effect pixelates the window and hides the pixels in a wheel-like fashion.
|
||||
- **New Effect: Pixel Wipe.** This effect pixelates the window and hides the pixels radially, starting from the pointer position.
|
||||
|
||||
#### Enhancements
|
||||
|
||||
* Under KWin, the effects now use the same names as in the KDE store.
|
||||
* The continuous integration tests now use a fuzzy search for the images targets. This way, the test work again on X11 and Wayland.
|
||||
* A new GitHub Actions workflow has been added which is executed whenever a commit message includes the `[generate-references]` tag. This workflow re-creates all reference images for the continuous integration test.
|
||||
- Under KWin, the effects now use the same names as in the KDE store.
|
||||
- The continuous integration tests now use a fuzzy search for the images targets. This way, the test work again on X11 and Wayland.
|
||||
- A new GitHub Actions workflow has been added which is executed whenever a commit message includes the `[generate-references]` tag. This workflow re-creates all reference images for the continuous integration test.
|
||||
|
||||
#### Bug Fixes
|
||||
|
||||
* Fixed a bug which caused the Incinerate Effect to sometimes not show up properly on KWin if the "Start at pointer position" option was enabled.
|
||||
|
||||
- Fixed a bug which caused the Incinerate Effect to sometimes not show up properly on KWin if the "Start at pointer position" option was enabled.
|
||||
|
||||
## [Burn My Windows 19](https://github.com/schneegans/Burn-My-Windows/releases/tag/v19)
|
||||
|
||||
@@ -114,17 +319,17 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
#### New Features
|
||||
|
||||
* The incinerate effect now uses the current mouse pointer position as starting position of the burn effect. The old random behaviour can be enabled in the settings. This works both on GNOME and KDE.
|
||||
- The incinerate effect now uses the current mouse pointer position as starting position of the burn effect. The old random behaviour can be enabled in the settings. This works both on GNOME and KDE.
|
||||
|
||||
#### Enhancements
|
||||
|
||||
* Many translation updates, including a completely new Portuguese, Esperanto, and Hebrew translation. A BIG THANKS to all translators!
|
||||
* On GNOME, effects can now execute code whenever an animation ended. This is useful for cleaning up resources.
|
||||
* The KWin build script now generates a separate archive for each effect as well as a combined archive for all effects.
|
||||
- Many translation updates, including a completely new Portuguese, Esperanto, and Hebrew translation. A BIG THANKS to all translators!
|
||||
- On GNOME, effects can now execute code whenever an animation ended. This is useful for cleaning up resources.
|
||||
- The KWin build script now generates a separate archive for each effect as well as a combined archive for all effects.
|
||||
|
||||
#### Fixes
|
||||
|
||||
* Fixed the effect configuration dialog of the Fire effect on KDE.
|
||||
- Fixed the effect configuration dialog of the Fire effect on KDE.
|
||||
|
||||
## [Burn My Windows 18](https://github.com/schneegans/Burn-My-Windows/releases/tag/v18)
|
||||
|
||||
@@ -132,7 +337,7 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
#### Fixes
|
||||
|
||||
* The GNOME extension package now does not include the KWin JavaScript files anymore.
|
||||
- The GNOME extension package now does not include the KWin JavaScript files anymore.
|
||||
|
||||
## [Burn My Windows 17](https://github.com/schneegans/Burn-My-Windows/releases/tag/v17)
|
||||
|
||||
@@ -140,14 +345,14 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
#### New Features
|
||||
|
||||
* **New Effect: Incinerate.** This is a completely new take on the fire effect. It is a bit more demanding in terms of GPU power, but at the same time it looks much more awesome!
|
||||
* **Initial KDE Support.** Thanks to the [awesome work](https://invent.kde.org/plasma/kwin/-/merge_requests/2227) of Martin Flöser, it has become possible to port some of its effects to KDE Plasma! For now, only the most simple effects can be ported, but hopefully this list can be improved in the future.
|
||||
* An option has been added which allows to automatically disable all effects if running on battery power.
|
||||
- **New Effect: Incinerate.** This is a completely new take on the fire effect. It is a bit more demanding in terms of GPU power, but at the same time it looks much more awesome!
|
||||
- **Initial KDE Support.** Thanks to the [awesome work](https://invent.kde.org/plasma/kwin/-/merge_requests/2227) of Martin Flöser, it has become possible to port some of its effects to KDE Plasma! For now, only the most simple effects can be ported, but hopefully this list can be improved in the future.
|
||||
- An option has been added which allows to automatically disable all effects if running on battery power.
|
||||
|
||||
#### Enhancements
|
||||
|
||||
* Many translation updates, including a completely new Persian, Polish, and Slovak translation. A BIG THANKS to all translators!
|
||||
* The shader include system has been simplified. There's now just one "common.glsl" which is automatically loaded into each shader.
|
||||
- Many translation updates, including a completely new Persian, Polish, and Slovak translation. A BIG THANKS to all translators!
|
||||
- The shader include system has been simplified. There's now just one "common.glsl" which is automatically loaded into each shader.
|
||||
|
||||
## [Burn My Windows 16](https://github.com/schneegans/Burn-My-Windows/releases/tag/v16)
|
||||
|
||||
@@ -155,16 +360,16 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
#### Enhancements
|
||||
|
||||
* Many translation updates, including a completely new Arabic, Finnish, Korean, and Swedish translation. A BIG THANKS to all translators!
|
||||
* The shaders are now aware of the actual window size (e.g. excluding the area where the shadow is drawn). For instance, this **fixes the drawing of the effects outside the window bounds** for `libadwaita` apps.
|
||||
* Refactored how the size and opacity transitions of the window actors are set up. Effects can now only specify a desired actor scale which will not change during the animation. All dynamic scaling and fading must be implemented in the shaders now.
|
||||
* The standard uniforms of all shaders have been updated: The window size is now passed as a `vec2` and there is a new `bool uForOpening` which is set to `true` if a window-open animation is ongoing, to `false` otherwise.
|
||||
- Many translation updates, including a completely new Arabic, Finnish, Korean, and Swedish translation. A BIG THANKS to all translators!
|
||||
- The shaders are now aware of the actual window size (e.g. excluding the area where the shadow is drawn). For instance, this **fixes the drawing of the effects outside the window bounds** for `libadwaita` apps.
|
||||
- Refactored how the size and opacity transitions of the window actors are set up. Effects can now only specify a desired actor scale which will not change during the animation. All dynamic scaling and fading must be implemented in the shaders now.
|
||||
- The standard uniforms of all shaders have been updated: The window size is now passed as a `vec2` and there is a new `bool uForOpening` which is set to `true` if a window-open animation is ongoing, to `false` otherwise.
|
||||
|
||||
#### Bug Fixes
|
||||
|
||||
* **Fixed a major memory leak**. Now, shaders are not re-created anymore whenever a window is opened or closed. Instead, previously created shaders are re-used as often as possible. This requires that all settings are set as uniform values (previously they were injected into the shader source) which in turn requires that `Shell.GLSLEffect` is used instead of `Clutter.ShaderEffect`. This change also requires that all shaders now work with straight instead of premultiplied alpha. Anyways, a lot needed to be refactored for this fix and I hope that it did not bring too many visual changes.
|
||||
* Fixed the window-close animation of windows which were opened before the session was started (e.g. before GNOME Shell has been restarted).
|
||||
* There seem to be cases were `libadwaita` is not available on GNOME 42 (e.g. Pop!_OS 22.04 beta). The preferences dialog now tries to fallback to the GTK4-only variant if `libadwaita` is not available.
|
||||
- **Fixed a major memory leak**. Now, shaders are not re-created anymore whenever a window is opened or closed. Instead, previously created shaders are re-used as often as possible. This requires that all settings are set as uniform values (previously they were injected into the shader source) which in turn requires that `Shell.GLSLEffect` is used instead of `Clutter.ShaderEffect`. This change also requires that all shaders now work with straight instead of premultiplied alpha. Anyways, a lot needed to be refactored for this fix and I hope that it did not bring too many visual changes.
|
||||
- Fixed the window-close animation of windows which were opened before the session was started (e.g. before GNOME Shell has been restarted).
|
||||
- There seem to be cases were `libadwaita` is not available on GNOME 42 (e.g. Pop!\_OS 22.04 beta). The preferences dialog now tries to fallback to the GTK4-only variant if `libadwaita` is not available.
|
||||
|
||||
## [Burn My Windows 15](https://github.com/schneegans/Burn-My-Windows/releases/tag/v15)
|
||||
|
||||
@@ -172,13 +377,13 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
#### New Features
|
||||
|
||||
* **New Effect: Apparition.** This effect hides the window by violently sucking it into the void of magic. This is available only for GNOME Shell 3.38 and newer.
|
||||
* **New Effect: Hexagon.** With glowing lines and hexagon-shaped tiles, this effect looks very sci-fi. This is available for GNOME Shell 3.36 and newer.
|
||||
* **New Effect: Snap of Disintegration.** This was requested quite frequently! Dissolve your windows into a cloud of dust. This is available only for GNOME Shell 40 and newer.
|
||||
- **New Effect: Apparition.** This effect hides the window by violently sucking it into the void of magic. This is available only for GNOME Shell 3.38 and newer.
|
||||
- **New Effect: Hexagon.** With glowing lines and hexagon-shaped tiles, this effect looks very sci-fi. This is available for GNOME Shell 3.36 and newer.
|
||||
- **New Effect: Snap of Disintegration.** This was requested quite frequently! Dissolve your windows into a cloud of dust. This is available only for GNOME Shell 40 and newer.
|
||||
|
||||
#### Bug Fixes
|
||||
|
||||
* Disabled the buggy "Shatter from pointer" option of the Broken Glass effect when opening windows (it only makes sense for closing windows).
|
||||
- Disabled the buggy "Shatter from pointer" option of the Broken Glass effect when opening windows (it only makes sense for closing windows).
|
||||
|
||||
## [Burn My Windows 14](https://github.com/schneegans/Burn-My-Windows/releases/tag/v14)
|
||||
|
||||
@@ -186,13 +391,12 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
#### Enhancements
|
||||
|
||||
* Reduced the lower animation time limits for all effects to 100 ms. This should now allow for very snappy animations!
|
||||
* A completely new Russian translation. Thank you, ANIGO R.!
|
||||
- Reduced the lower animation time limits for all effects to 100 ms. This should now allow for very snappy animations!
|
||||
- A completely new Russian translation. Thank you, ANIGO R.!
|
||||
|
||||
#### Bug Fixes
|
||||
|
||||
* Fixed the version check for GNOME Shell `42.rc` (before it only worked on `42.alpha` and `42.beta`)
|
||||
|
||||
- Fixed the version check for GNOME Shell `42.rc` (before it only worked on `42.alpha` and `42.beta`)
|
||||
|
||||
## [Burn My Windows 13](https://github.com/schneegans/Burn-My-Windows/releases/tag/v13)
|
||||
|
||||
@@ -200,16 +404,16 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
#### Enhancements
|
||||
|
||||
* The continuous integration tests have been significantly enhanced. Now, all window-open and window-close animations are visually tested on all supported GNOME versions and on X11 / Wayland (summing up to a total of 136 test cases).
|
||||
* Many translation updates, including a completely new Turkish and Chinese translation. A BIG THANKS to all translators!
|
||||
- The continuous integration tests have been significantly enhanced. Now, all window-open and window-close animations are visually tested on all supported GNOME versions and on X11 / Wayland (summing up to a total of 136 test cases).
|
||||
- Many translation updates, including a completely new Turkish and Chinese translation. A BIG THANKS to all translators!
|
||||
|
||||
#### Other Changes
|
||||
|
||||
* Removed the Liberapay donation option as it does not work properly.
|
||||
- Removed the Liberapay donation option as it does not work properly.
|
||||
|
||||
#### Bug Fixes
|
||||
|
||||
* Fixed the version check for GNOME Shell 42.
|
||||
- Fixed the version check for GNOME Shell 42.
|
||||
|
||||
## [Burn My Windows 12](https://github.com/schneegans/Burn-My-Windows/releases/tag/v12)
|
||||
|
||||
@@ -217,12 +421,12 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
#### New Features
|
||||
|
||||
* Added initial support for GNOME Shell 42.
|
||||
* The preferences dialog now uses libadwaita on GNOME Shell 42.
|
||||
- Added initial support for GNOME Shell 42.
|
||||
- The preferences dialog now uses libadwaita on GNOME Shell 42.
|
||||
|
||||
#### Enhancements
|
||||
|
||||
* Added [Liberapay](https://liberapay.com/Schneegans) to the sponsorship options.
|
||||
- Added [Liberapay](https://liberapay.com/Schneegans) to the sponsorship options.
|
||||
|
||||
## [Burn My Windows 11](https://github.com/schneegans/Burn-My-Windows/releases/tag/v11)
|
||||
|
||||
@@ -230,24 +434,24 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
#### New Features
|
||||
|
||||
* Added an about-dialog which shows all translators and sponsors.
|
||||
- Added an about-dialog which shows all translators and sponsors.
|
||||
|
||||
#### Enhancements
|
||||
|
||||
* There are several new translations! Thanks a lot to all the translators! We now have translations for:
|
||||
* German
|
||||
* English
|
||||
* Czech
|
||||
* Dutch
|
||||
* French
|
||||
* Italian
|
||||
* Norwegian Bokmål
|
||||
* Spanish
|
||||
* A new issue template for suggesting new effects has been added.
|
||||
- There are several new translations! Thanks a lot to all the translators! We now have translations for:
|
||||
- German
|
||||
- English
|
||||
- Czech
|
||||
- Dutch
|
||||
- French
|
||||
- Italian
|
||||
- Norwegian Bokmål
|
||||
- Spanish
|
||||
- A new issue template for suggesting new effects has been added.
|
||||
|
||||
#### Fixes
|
||||
|
||||
* Fixed an issue which caused corrupted windows when trying to maximize windows while the window-open animation was still running (#82, #86, #91).
|
||||
- Fixed an issue which caused corrupted windows when trying to maximize windows while the window-open animation was still running (#82, #86, #91).
|
||||
|
||||
## [Burn My Windows 10](https://github.com/schneegans/Burn-My-Windows/releases/tag/v10)
|
||||
|
||||
@@ -257,18 +461,18 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
<a href="https://youtu.be/L2aaNF_rPHo"><img align="right" src ="pics/bmw10.jpg" /></a>
|
||||
|
||||
* **Effects for Window Opening.** You can now select effects which are applied on newly opened windows! I expect that there are some bugs left, so please [report any issue you find](https://github.com/Schneegans/Burn-My-Windows/issues)!
|
||||
* **New Effect: Broken Glass.** Shatter your windows into a shower sharp shards! This effect can be configured so that the shards fly away from your mouse pointer position!
|
||||
* **Preview Buttons** have been added to the effect-configuration pages of the preferences dialog. These can be used to, well, preview the current settings (without having to enable the effect first).
|
||||
* **Translations!** It is now possible to [translate the preferences dialog](https://hosted.weblate.org/engage/burn-my-windows/). There is already a finished German translation, and in-progress translations to Italian and Norwegian Bokmål.
|
||||
* **A "Vertical Overshooting" option** was added to the Matrix Effect: This can add some vertical variation to the start and end position of the letter drops.
|
||||
- **Effects for Window Opening.** You can now select effects which are applied on newly opened windows! I expect that there are some bugs left, so please [report any issue you find](https://github.com/Schneegans/Burn-My-Windows/issues)!
|
||||
- **New Effect: Broken Glass.** Shatter your windows into a shower sharp shards! This effect can be configured so that the shards fly away from your mouse pointer position!
|
||||
- **Preview Buttons** have been added to the effect-configuration pages of the preferences dialog. These can be used to, well, preview the current settings (without having to enable the effect first).
|
||||
- **Translations!** It is now possible to [translate the preferences dialog](https://hosted.weblate.org/engage/burn-my-windows/). There is already a finished German translation, and in-progress translations to Italian and Norwegian Bokmål.
|
||||
- **A "Vertical Overshooting" option** was added to the Matrix Effect: This can add some vertical variation to the start and end position of the letter drops.
|
||||
|
||||
#### Other Enhancements
|
||||
|
||||
* Added a menu entry with a link to the guide for creating new effect types.
|
||||
* Thanks to improved timing, the default animation time of several effects could be reduced.
|
||||
* The README now shows the current lines of code and the current comment percentage using my [dynamic-badges-action](https://github.com/Schneegans/dynamic-badges-action).
|
||||
* **Add advanced CI tests:** For each commit to `main`, it is now tested whether the extension can be installed and if the preferences dialog can be shown on GNOME Shell 3.36, 3.38, 40, and 41. Both, X11 and Wayland are checked.
|
||||
- Added a menu entry with a link to the guide for creating new effect types.
|
||||
- Thanks to improved timing, the default animation time of several effects could be reduced.
|
||||
- The README now shows the current lines of code and the current comment percentage using my [dynamic-badges-action](https://github.com/Schneegans/dynamic-badges-action).
|
||||
- **Add advanced CI tests:** For each commit to `main`, it is now tested whether the extension can be installed and if the preferences dialog can be shown on GNOME Shell 3.36, 3.38, 40, and 41. Both, X11 and Wayland are checked.
|
||||
|
||||
## [Burn My Windows 9](https://github.com/schneegans/Burn-My-Windows/releases/tag/v9)
|
||||
|
||||
@@ -276,8 +480,8 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
#### Fixes
|
||||
|
||||
* Improved compatibility with [Show Application View When Workspace Empty ](https://extensions.gnome.org/extension/2036/show-application-view-when-workspace-empty/) (#54).
|
||||
* Fixed a crash which happened when the window-close icon in the overview was clicked twice (#49).
|
||||
- Improved compatibility with [Show Application View When Workspace Empty ](https://extensions.gnome.org/extension/2036/show-application-view-when-workspace-empty/) (#54).
|
||||
- Fixed a crash which happened when the window-close icon in the overview was clicked twice (#49).
|
||||
|
||||
## [Burn My Windows 8](https://github.com/schneegans/Burn-My-Windows/releases/tag/v8)
|
||||
|
||||
@@ -285,25 +489,24 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
#### New Features
|
||||
|
||||
* **Random effects!** You can now select a set of effects of which one will be chosen randomly whenever you close a window. **This changes how effects are selected, so you will have to re-select your desired effect(s)**.
|
||||
* **New Effect: Energize A.** Beam your windows away!
|
||||
* **New Effect: Energize B.** Using different transporter technology results in an alternative visual effect.
|
||||
* **New Effect: Wisps.** These little fairies carry your windows to the realm of dreams!
|
||||
* Each effect has its own "Animation Time" setting now. The global animation time has been replaced by those, so **you may have to adjust the sliders to match your previous settings**.
|
||||
- **Random effects!** You can now select a set of effects of which one will be chosen randomly whenever you close a window. **This changes how effects are selected, so you will have to re-select your desired effect(s)**.
|
||||
- **New Effect: Energize A.** Beam your windows away!
|
||||
- **New Effect: Energize B.** Using different transporter technology results in an alternative visual effect.
|
||||
- **New Effect: Wisps.** These little fairies carry your windows to the realm of dreams!
|
||||
- Each effect has its own "Animation Time" setting now. The global animation time has been replaced by those, so **you may have to adjust the sliders to match your previous settings**.
|
||||
|
||||
#### Other Enhancements
|
||||
|
||||
* A [guide for creating new effects](how-to-create-new-effects.md) has been added.
|
||||
* The source code has received a **major refactoring**. This will make the addition of new effects much easier in the future.
|
||||
* The **layout of the settings dialog** has been reworked to make it easier to expand it in the future.
|
||||
* The lower limit of the **animation time of the TV Effect** has been reduced.
|
||||
* The T-Rex-Attack effect is not shown in fully transparent regions of a window any more.
|
||||
* The shaders now use a different noise implementation which produces better 3D noise.
|
||||
- A [guide for creating new effects](how-to-create-new-effects.md) has been added.
|
||||
- The source code has received a **major refactoring**. This will make the addition of new effects much easier in the future.
|
||||
- The **layout of the settings dialog** has been reworked to make it easier to expand it in the future.
|
||||
- The lower limit of the **animation time of the TV Effect** has been reduced.
|
||||
- The T-Rex-Attack effect is not shown in fully transparent regions of a window any more.
|
||||
- The shaders now use a different noise implementation which produces better 3D noise.
|
||||
|
||||
#### Fixes
|
||||
|
||||
* The extension now works even if GNOME Shell's animations are disabled globally.
|
||||
|
||||
- The extension now works even if GNOME Shell's animations are disabled globally.
|
||||
|
||||
## [Burn My Windows 7](https://github.com/schneegans/Burn-My-Windows/releases/tag/v7)
|
||||
|
||||
@@ -311,13 +514,12 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
#### New Features
|
||||
|
||||
* An option to use a 3D noise for the fire shader has been added. This will add some more temporal variation to the flames at the cost of slightly decreased rendering performance.
|
||||
* A changelog entry has been added to the menu of the preferences dialog.
|
||||
- An option to use a 3D noise for the fire shader has been added. This will add some more temporal variation to the flames at the cost of slightly decreased rendering performance.
|
||||
- A changelog entry has been added to the menu of the preferences dialog.
|
||||
|
||||
#### Fixes
|
||||
|
||||
* Resolve copyright issues by using a MIT-licensed noise implementation.
|
||||
|
||||
- Resolve copyright issues by using a MIT-licensed noise implementation.
|
||||
|
||||
## [Burn My Windows 6](https://github.com/schneegans/Burn-My-Windows/releases/tag/v6)
|
||||
|
||||
@@ -325,7 +527,7 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
#### Fixes
|
||||
|
||||
* Removed a debug log message.
|
||||
- Removed a debug log message.
|
||||
|
||||
## [Burn My Windows 5](https://github.com/schneegans/Burn-My-Windows/releases/tag/v5)
|
||||
|
||||
@@ -333,17 +535,17 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
#### New Features
|
||||
|
||||
* Added a new ridiculous close-animation: the T-Rex-Attack!
|
||||
* Added a new simple close-animation: the TV-Effect!
|
||||
* Added a menu to the preferences dialog with links for bug reporting and donations.
|
||||
- Added a new ridiculous close-animation: the T-Rex-Attack!
|
||||
- Added a new simple close-animation: the TV-Effect!
|
||||
- Added a menu to the preferences dialog with links for bug reporting and donations.
|
||||
|
||||
#### Other Enhancements
|
||||
|
||||
* The fire shader now uses a `smoothstep` to make it less blocky.
|
||||
- The fire shader now uses a `smoothstep` to make it less blocky.
|
||||
|
||||
#### Bug Fixes
|
||||
|
||||
* Fixed a bug which messed up the overview of GNOME Shell 3.36.
|
||||
- Fixed a bug which messed up the overview of GNOME Shell 3.36.
|
||||
|
||||
## [Burn My Windows 4](https://github.com/schneegans/Burn-My-Windows/releases/tag/v4)
|
||||
|
||||
@@ -351,13 +553,13 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
#### New Features
|
||||
|
||||
* Added a new Matrix shader which dissolves your windows in a shower of green letters. You can switch between the fire and the matrix shader in the settings. Sadly, this effect cannot be available under GNOME 3.3x as it was apparently impossible to set textures for a `Clutter.ShaderEffect` in GJS back then.
|
||||
* Added a setting to apply the animation also for closing dialog windows.
|
||||
- Added a new Matrix shader which dissolves your windows in a shower of green letters. You can switch between the fire and the matrix shader in the settings. Sadly, this effect cannot be available under GNOME 3.3x as it was apparently impossible to set textures for a `Clutter.ShaderEffect` in GJS back then.
|
||||
- Added a setting to apply the animation also for closing dialog windows.
|
||||
|
||||
#### Other Enhancements
|
||||
|
||||
* Refactored the code a lot to make it easier to add new shader effects in the future.
|
||||
* Tweaked timing of the fire shader. Previously, the fire became invisible quite quickly. Due to this new animation timing, the default animation time has been reduced to 1500 ms.
|
||||
- Refactored the code a lot to make it easier to add new shader effects in the future.
|
||||
- Tweaked timing of the fire shader. Previously, the fire became invisible quite quickly. Due to this new animation timing, the default animation time has been reduced to 1500 ms.
|
||||
|
||||
## [Burn My Windows 3](https://github.com/schneegans/Burn-My-Windows/releases/tag/v3)
|
||||
|
||||
@@ -365,7 +567,7 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
#### New Features
|
||||
|
||||
* Add support for GNOME 3.36 and GNOME 3.38.
|
||||
- Add support for GNOME 3.36 and GNOME 3.38.
|
||||
|
||||
## [Burn My Windows 2](https://github.com/schneegans/Burn-My-Windows/releases/tag/v2)
|
||||
|
||||
@@ -373,12 +575,12 @@ SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
#### New Features
|
||||
|
||||
* Added the possibility to adjust fire colors.
|
||||
* Added the possibility to adjust flame speed and scale.
|
||||
* Added some fire presets.
|
||||
- Added the possibility to adjust fire colors.
|
||||
- Added the possibility to adjust flame speed and scale.
|
||||
- Added some fire presets.
|
||||
|
||||
## [Burn My Windows 1](https://github.com/schneegans/Burn-My-Windows/releases/tag/v1)
|
||||
|
||||
**Release Date:** 2021-12-14
|
||||
|
||||
* Initial publication on GitHub supporting GNOME 40 and GNOME 41.
|
||||
- Initial publication on GitHub supporting GNOME 40 and GNOME 41.
|
||||
|
||||
@@ -47,9 +47,9 @@ You will have to ...
|
||||
|
||||
### 1. Expanding the Schema
|
||||
|
||||
For enabling the new effect, the boolean settings keys `simple-fade-open-effect`, `simple-fade-close-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.
|
||||
Just copy the XML code below to the file [`schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml`](../schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml).
|
||||
Just copy the XML code below to the file [`schemas/org.gnome.shell.extensions.burn-my-windows-profile.gschema.xml`](../schemas/org.gnome.shell.extensions.burn-my-windows-profile.gschema.xml).
|
||||
Just remember to replace `simple-fade` with your custom name!
|
||||
|
||||
```xml
|
||||
@@ -57,16 +57,10 @@ Just remember to replace `simple-fade` with your custom name!
|
||||
<!-- Simple Fade Effect Options -->
|
||||
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||
|
||||
<key name="simple-fade-close-effect" type="b">
|
||||
<key name="simple-fade-enable-effect" type="b">
|
||||
<default>false</default>
|
||||
<summary>Simple Fade Close Effect</summary>
|
||||
<description>Use the Simple Fade effect for window closing.</description>
|
||||
</key>
|
||||
|
||||
<key name="simple-fade-open-effect" type="b">
|
||||
<default>false</default>
|
||||
<summary>Simple Fade Open Effect</summary>
|
||||
<description>Use the Simple Fade effect for window opening.</description>
|
||||
<summary>Simple Fade Enable Effect</summary>
|
||||
<description>Use the Simple Fade effect.</description>
|
||||
</key>
|
||||
|
||||
<key name="simple-fade-animation-time" type="i">
|
||||
@@ -84,7 +78,7 @@ Just remember to replace `simple-fade` with your custom name!
|
||||
|
||||
### 2. Creating the Effect Class
|
||||
|
||||
You will have to create a new GLSL file called `resources/shaders/simple-fade.frag` and a new JavaScript source file called `src/SimpleFade.js`.
|
||||
You will have to create a new GLSL file called `resources/shaders/simple-fade.frag` and a new JavaScript source file called `src/effects/SimpleFade.js`.
|
||||
Simply paste the following source code to the respective file.
|
||||
Please study this code carefully, all of it is explained with inline comments.
|
||||
|
||||
@@ -92,6 +86,20 @@ Please study this code carefully, all of it is explained with inline comments.
|
||||
<summary>Expand this to show the GLSL code.</summary>
|
||||
|
||||
```glsl
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
// ) ( //
|
||||
// ( /( ( ( ) ( ( ( ( )\ ) ( ( //
|
||||
// )\()) ))\ )( ( ( )\ ) )\))( )\ ( (()/( ( )\))( ( //
|
||||
// ((_)\ /((_|()\ )\ ) )\ '(()/( ((_)()((_) )\ ) ((_)))\((_)()\ )\ //
|
||||
// | |(_|_))( ((_)_(_/( _((_)) )(_)) _(()((_|_)_(_/( _| |((_)(()((_|(_) //
|
||||
// | '_ \ || | '_| ' \)) | ' \()| || | \ V V / | ' \)) _` / _ \ V V (_-< //
|
||||
// |_.__/\_,_|_| |_||_| |_|_|_| \_, | \_/\_/|_|_||_|\__,_\___/\_/\_//__/ //
|
||||
// |__/ //
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// SPDX-FileCopyrightText: Your Name <your@email.com>
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// The content from common.glsl is automatically prepended to each shader effect. This
|
||||
// provides the standard input:
|
||||
|
||||
@@ -201,8 +209,9 @@ var SimpleFade = class {
|
||||
|
||||
// This will be called in various places where a unique identifier for this effect is
|
||||
// required. It should match the prefix of the settings keys which store whether the
|
||||
// effect is enabled currently (e.g. '*-close-effect'), and its animation time
|
||||
// (e.g. '*-animation-time').
|
||||
// effect is enabled currently (e.g. '*-enable-effect'), and its animation time
|
||||
// (e.g. '*-animation-time'). Also, the shader file and the settings UI files should be
|
||||
// named likes this.
|
||||
getNick() {
|
||||
return 'simple-fade';
|
||||
}
|
||||
@@ -215,12 +224,10 @@ var SimpleFade = class {
|
||||
|
||||
// -------------------------------------------------------------------- API for prefs.js
|
||||
|
||||
// This is called by the preferences dialog. It loads the settings page for this effect,
|
||||
// binds all properties to the settings and appends the page to the main stack of the
|
||||
// preferences dialog.
|
||||
getPreferences(dialog) {
|
||||
// This is called by the preferences dialog whenever a new effect profile is loaded. It
|
||||
// binds all user interface elements to the respective settings keys of the profile.
|
||||
bindPreferences(dialog) {
|
||||
// Empty for now... Code is added here later in the tutorial!
|
||||
return null;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------- API for extension.js
|
||||
@@ -245,7 +252,7 @@ Like this:
|
||||
```javascript
|
||||
const ALL_EFFECTS = [
|
||||
...
|
||||
new Me.imports.src.SimpleFade.SimpleFade(),
|
||||
new Me.imports.src.effects.SimpleFade.SimpleFade(),
|
||||
...
|
||||
];
|
||||
```
|
||||
@@ -271,9 +278,10 @@ There should be two sliders in this example: The animation duration and the widt
|
||||
If your effect supports GNOME Shell 3.3x _and_ GNOME Shell 40+, you will have to provide three `*.ui` files for this.
|
||||
This is because starting with GNOME Shell 40, the preference dialog uses GTK4, before it used to use GTK3.
|
||||
Starting with GNOME Shell 42, it uses `libadwaita` which requires different UI files again.
|
||||
We will load the respective file in the `getPreferences()` method of your new effect class.
|
||||
|
||||
Just save the code below to `resources/ui/gtk3/SimpleFade.ui`, `resources/ui/gtk4/SimpleFade.ui`, and `resources/ui/adw/SimpleFade.ui` respectively.
|
||||
_:information_source: If you do not have the means to test your effect on different versions of GNOME, feel free to submit a pull request for one GNOME version only, I may then port your effect to other GNOME versions!_
|
||||
|
||||
Just save the code below to `resources/ui/gtk3/simple-fade.ui`, `resources/ui/gtk4/simple-fade.ui`, and `resources/ui/adw/simple-fade.ui` respectively.
|
||||
Remember to replace any occurrence of `simple-fade` with your effect's nick-name!
|
||||
|
||||
<details>
|
||||
@@ -287,7 +295,7 @@ SPDX-FileCopyrightText: Your Name <your@email.com>
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
-->
|
||||
|
||||
<interface>
|
||||
<interface domain="burn-my-windows">
|
||||
|
||||
<object class="GtkAdjustment" id="simple-fade-animation-time">
|
||||
<property name="upper">5000</property>
|
||||
@@ -303,114 +311,97 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
<property name="page-increment">0.1</property>
|
||||
</object>
|
||||
|
||||
<object class="GtkBox" id="simple-fade-prefs">
|
||||
<property name="orientation">vertical</property>
|
||||
<object class="GtkRevealer" id="simple-fade-prefs">
|
||||
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<object class="GtkListBox">
|
||||
<property name="selection-mode">none</property>
|
||||
|
||||
<child>
|
||||
<object class="GtkListBox">
|
||||
<property name="selection-mode">none</property>
|
||||
<style>
|
||||
<class name="rich-list" />
|
||||
</style>
|
||||
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="activatable">0</property>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="margin-start">10</property>
|
||||
<property name="margin-end">10</property>
|
||||
<property name="margin-top">10</property>
|
||||
<property name="margin-bottom">10</property>
|
||||
<property name="activatable">0</property>
|
||||
<object class="GtkBox">
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">Animation Time [ms]</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="hexpand">1</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScale">
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="draw-value">1</property>
|
||||
<property name="digits">0</property>
|
||||
<property name="value-pos">left</property>
|
||||
<property name="width-request">300</property>
|
||||
<property name="adjustment">simple-fade-animation-time</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="reset-simple-fade-animation-time">
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">Animation Time [ms]</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="hexpand">1</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScale">
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="draw-value">1</property>
|
||||
<property name="digits">0</property>
|
||||
<property name="value-pos">left</property>
|
||||
<property name="width-request">300</property>
|
||||
<property name="adjustment">simple-fade-animation-time</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="reset-simple-fade-animation-time">
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="icon-name">edit-clear-symbolic</property>
|
||||
<property name="icon-size">1</property>
|
||||
</object>
|
||||
</child>
|
||||
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
|
||||
<style>
|
||||
<class name="flat" />
|
||||
</style>
|
||||
<object class="GtkImage">
|
||||
<property name="icon-name">edit-clear-symbolic</property>
|
||||
<property name="icon-size">1</property>
|
||||
</object>
|
||||
</child>
|
||||
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
|
||||
<style>
|
||||
<class name="flat" />
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="activatable">0</property>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="margin-start">10</property>
|
||||
<property name="margin-end">10</property>
|
||||
<property name="margin-top">10</property>
|
||||
<property name="margin-bottom">10</property>
|
||||
<property name="activatable">0</property>
|
||||
<object class="GtkBox">
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">Fade Width</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="hexpand">1</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScale">
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="draw-value">1</property>
|
||||
<property name="digits">2</property>
|
||||
<property name="value-pos">left</property>
|
||||
<property name="width-request">300</property>
|
||||
<property name="adjustment">simple-fade-width</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="reset-simple-fade-width">
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">Fade Width</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="hexpand">1</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScale">
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="draw-value">1</property>
|
||||
<property name="digits">2</property>
|
||||
<property name="value-pos">left</property>
|
||||
<property name="width-request">300</property>
|
||||
<property name="adjustment">simple-fade-width</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="reset-simple-fade-width">
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="icon-name">edit-clear-symbolic</property>
|
||||
<property name="icon-size">1</property>
|
||||
</object>
|
||||
</child>
|
||||
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
|
||||
<style>
|
||||
<class name="flat" />
|
||||
</style>
|
||||
<object class="GtkImage">
|
||||
<property name="icon-name">edit-clear-symbolic</property>
|
||||
<property name="icon-size">1</property>
|
||||
</object>
|
||||
</child>
|
||||
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
|
||||
<style>
|
||||
<class name="flat" />
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
@@ -437,7 +428,7 @@ SPDX-FileCopyrightText: Your Name <your@email.com>
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
-->
|
||||
|
||||
<interface>
|
||||
<interface domain="burn-my-windows">
|
||||
|
||||
<object class="GtkAdjustment" id="simple-fade-animation-time">
|
||||
<property name="upper">5000</property>
|
||||
@@ -453,97 +444,87 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
<property name="page-increment">0.1</property>
|
||||
</object>
|
||||
|
||||
<object class="GtkBox" id="simple-fade-prefs">
|
||||
<property name="orientation">vertical</property>
|
||||
<object class="GtkRevealer" id="simple-fade-prefs">
|
||||
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<object class="GtkListBox">
|
||||
<property name="selection-mode">none</property>
|
||||
|
||||
<child>
|
||||
<object class="GtkListBox">
|
||||
<property name="selection-mode">none</property>
|
||||
<property name="show-separators">1</property>
|
||||
<style>
|
||||
<class name="rich-list" />
|
||||
</style>
|
||||
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="activatable">0</property>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="activatable">0</property>
|
||||
<object class="GtkBox">
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">Animation Time [ms]</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="hexpand">1</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScale">
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="draw-value">1</property>
|
||||
<property name="digits">0</property>
|
||||
<property name="value-pos">left</property>
|
||||
<property name="width-request">300</property>
|
||||
<property name="adjustment">simple-fade-animation-time</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="reset-simple-fade-animation-time">
|
||||
<property name="icon-name">edit-clear-symbolic</property>
|
||||
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
|
||||
<style>
|
||||
<class name="flat" />
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">Animation Time [ms]</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="hexpand">1</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScale">
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="draw-value">1</property>
|
||||
<property name="digits">0</property>
|
||||
<property name="value-pos">left</property>
|
||||
<property name="width-request">300</property>
|
||||
<property name="adjustment">simple-fade-animation-time</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="reset-simple-fade-animation-time">
|
||||
<property name="icon-name">edit-clear-symbolic</property>
|
||||
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
|
||||
<style>
|
||||
<class name="flat" />
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="activatable">0</property>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="activatable">0</property>
|
||||
<object class="GtkBox">
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">Fade Width</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="hexpand">1</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScale">
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="draw-value">1</property>
|
||||
<property name="digits">2</property>
|
||||
<property name="value-pos">left</property>
|
||||
<property name="width-request">300</property>
|
||||
<property name="adjustment">simple-fade-width</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="reset-simple-fade-width">
|
||||
<property name="icon-name">edit-clear-symbolic</property>
|
||||
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
|
||||
<style>
|
||||
<class name="flat" />
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">Fade Width</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="hexpand">1</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScale">
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="draw-value">1</property>
|
||||
<property name="digits">2</property>
|
||||
<property name="value-pos">left</property>
|
||||
<property name="width-request">300</property>
|
||||
<property name="adjustment">simple-fade-width</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="reset-simple-fade-width">
|
||||
<property name="icon-name">edit-clear-symbolic</property>
|
||||
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
|
||||
<style>
|
||||
<class name="flat" />
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
@@ -568,7 +549,7 @@ SPDX-FileCopyrightText: Your Name <your@email.com>
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
-->
|
||||
|
||||
<interface>
|
||||
<interface domain="burn-my-windows">
|
||||
|
||||
<object class="GtkAdjustment" id="simple-fade-animation-time">
|
||||
<property name="upper">5000</property>
|
||||
@@ -584,7 +565,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
<property name="page-increment">0.1</property>
|
||||
</object>
|
||||
|
||||
<object class="AdwActionRow" id="simple-fade-prefs">
|
||||
<object class="AdwExpanderRow" id="simple-fade-prefs">
|
||||
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
@@ -647,21 +628,14 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
### Loading the Preferences Page
|
||||
|
||||
In order to load the above `*.ui` files, add the following code to your effect's `getPreferences()` method.
|
||||
In order to load the above `*.ui` files, add the following code to your effect's `bindPreferences()` method.
|
||||
|
||||
```javascript
|
||||
static getPreferences(dialog) {
|
||||
|
||||
// Add the settings page to the builder.
|
||||
dialog.getBuilder().add_from_resource(`/ui/${utils.getUIDir()}/SimpleFade.ui`);
|
||||
|
||||
bindPreferences(dialog) {
|
||||
// These connect the settings to the UI elements. Have a look at prefs.js
|
||||
// on how to bind other types of UI elements.
|
||||
dialog.bindAdjustment('simple-fade-animation-time');
|
||||
dialog.bindAdjustment('simple-fade-width');
|
||||
|
||||
// Finally, return the new settings page.
|
||||
return dialog.getBuilder().get_object('simple-fade-prefs');
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -3,5 +3,5 @@
|
||||
The preview GIFs are recorded with OBS Studio at 1920x1080, cut to a length of exactly two seconds and converted to a GIF with the following command:
|
||||
|
||||
```bash
|
||||
gifski --fps 30 -W 400 -H 225 -o effect.gif effect.mp4
|
||||
gifski --fps 30 -W 320 -H 180 -o effect.gif effect.mp4
|
||||
```
|
||||
|
Before Width: | Height: | Size: 415 KiB After Width: | Height: | Size: 256 KiB |
|
After Width: | Height: | Size: 927 KiB |
|
Before Width: | Height: | Size: 623 KiB After Width: | Height: | Size: 433 KiB |
|
After Width: | Height: | Size: 862 KiB |
|
After Width: | Height: | Size: 646 KiB |
|
Before Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 958 KiB |
|
Before Width: | Height: | Size: 949 KiB After Width: | Height: | Size: 758 KiB |
|
Before Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 544 KiB After Width: | Height: | Size: 357 KiB |
|
Before Width: | Height: | Size: 387 KiB After Width: | Height: | Size: 366 KiB |
|
Before Width: | Height: | Size: 615 KiB After Width: | Height: | Size: 504 KiB |
|
Before Width: | Height: | Size: 975 KiB After Width: | Height: | Size: 536 KiB |
|
Before Width: | Height: | Size: 625 KiB After Width: | Height: | Size: 593 KiB |
|
After Width: | Height: | Size: 383 KiB |
|
Before Width: | Height: | Size: 414 KiB After Width: | Height: | Size: 261 KiB |
|
Before Width: | Height: | Size: 792 KiB After Width: | Height: | Size: 348 KiB |
|
Before Width: | Height: | Size: 491 KiB After Width: | Height: | Size: 391 KiB |
|
Before Width: | Height: | Size: 840 KiB After Width: | Height: | Size: 676 KiB |
|
Before Width: | Height: | Size: 928 KiB After Width: | Height: | Size: 739 KiB |
|
Before Width: | Height: | Size: 136 KiB After Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 936 KiB After Width: | Height: | Size: 603 KiB |
|
Before Width: | Height: | Size: 442 KiB After Width: | Height: | Size: 294 KiB |
|
Before Width: | Height: | Size: 203 KiB After Width: | Height: | Size: 215 KiB |
|
Before Width: | Height: | Size: 821 KiB After Width: | Height: | Size: 660 KiB |
@@ -30,7 +30,10 @@ try {
|
||||
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
const Me = imports.misc.extensionUtils.getCurrentExtension();
|
||||
const migrate = Me.imports.src.migrate;
|
||||
const utils = Me.imports.src.utils;
|
||||
const ProfileManager = Me.imports.src.ProfileManager.ProfileManager;
|
||||
const WindowPicker = Me.imports.src.WindowPicker.WindowPicker;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
// This extensions modifies the window-close and window-open animations with all kinds //
|
||||
@@ -51,26 +54,27 @@ class Extension {
|
||||
|
||||
// New effects must be registered here and in prefs.js.
|
||||
this._ALL_EFFECTS = [
|
||||
new Me.imports.src.Apparition.Apparition(),
|
||||
new Me.imports.src.BrokenGlass.BrokenGlass(),
|
||||
new Me.imports.src.Doom.Doom(),
|
||||
new Me.imports.src.EnergizeA.EnergizeA(),
|
||||
new Me.imports.src.EnergizeB.EnergizeB(),
|
||||
new Me.imports.src.Fire.Fire(),
|
||||
new Me.imports.src.Glide.Glide(),
|
||||
new Me.imports.src.Glitch.Glitch(),
|
||||
new Me.imports.src.Hexagon.Hexagon(),
|
||||
new Me.imports.src.Incinerate.Incinerate(),
|
||||
new Me.imports.src.Matrix.Matrix(),
|
||||
new Me.imports.src.Pixelate.Pixelate(),
|
||||
new Me.imports.src.PixelWheel.PixelWheel(),
|
||||
new Me.imports.src.PixelWipe.PixelWipe(),
|
||||
new Me.imports.src.Portal.Portal(),
|
||||
new Me.imports.src.SnapOfDisintegration.SnapOfDisintegration(),
|
||||
new Me.imports.src.TRexAttack.TRexAttack(),
|
||||
new Me.imports.src.TVEffect.TVEffect(),
|
||||
new Me.imports.src.TVGlitch.TVGlitch(),
|
||||
new Me.imports.src.Wisps.Wisps(),
|
||||
new Me.imports.src.effects.Apparition.Apparition(),
|
||||
new Me.imports.src.effects.BrokenGlass.BrokenGlass(),
|
||||
new Me.imports.src.effects.Doom.Doom(),
|
||||
new Me.imports.src.effects.EnergizeA.EnergizeA(),
|
||||
new Me.imports.src.effects.EnergizeB.EnergizeB(),
|
||||
new Me.imports.src.effects.Fire.Fire(),
|
||||
new Me.imports.src.effects.Glide.Glide(),
|
||||
new Me.imports.src.effects.Glitch.Glitch(),
|
||||
new Me.imports.src.effects.Hexagon.Hexagon(),
|
||||
new Me.imports.src.effects.Incinerate.Incinerate(),
|
||||
new Me.imports.src.effects.Matrix.Matrix(),
|
||||
new Me.imports.src.effects.PaintBrush.PaintBrush(),
|
||||
new Me.imports.src.effects.Pixelate.Pixelate(),
|
||||
new Me.imports.src.effects.PixelWheel.PixelWheel(),
|
||||
new Me.imports.src.effects.PixelWipe.PixelWipe(),
|
||||
new Me.imports.src.effects.Portal.Portal(),
|
||||
new Me.imports.src.effects.SnapOfDisintegration.SnapOfDisintegration(),
|
||||
new Me.imports.src.effects.TRexAttack.TRexAttack(),
|
||||
new Me.imports.src.effects.TVEffect.TVEffect(),
|
||||
new Me.imports.src.effects.TVGlitch.TVGlitch(),
|
||||
new Me.imports.src.effects.Wisps.Wisps(),
|
||||
];
|
||||
|
||||
// Load all of our resources.
|
||||
@@ -80,6 +84,39 @@ class Extension {
|
||||
// Store a reference to the settings object.
|
||||
this._settings = ExtensionUtils.getSettings();
|
||||
|
||||
// Now we check whether the extension settings need to be migrated from a previous
|
||||
// version. If this is the case, we defer the profile loading until this is finished.
|
||||
const lastVersion = this._settings.get_int('last-extension-version');
|
||||
if (lastVersion < Me.metadata.version) {
|
||||
if (lastVersion <= 26) {
|
||||
// If the profile migration fails for some reason, the callback will create a
|
||||
// default profile instead.
|
||||
migrate.fromVersion26().finally(() => {
|
||||
this._loadProfiles();
|
||||
this._settings.set_int('last-extension-version', Me.metadata.version);
|
||||
});
|
||||
} else {
|
||||
this._loadProfiles();
|
||||
}
|
||||
|
||||
} else {
|
||||
this._loadProfiles();
|
||||
}
|
||||
|
||||
// We reload all effect profiles whenever the currently edited profile in the
|
||||
// preferences dialog changes. This is most likely a bit too often, but it will also
|
||||
// happen whenever a new profile is created and whenever an old profile is deleted.
|
||||
this._settings.connect('changed::active-profile', () => {
|
||||
this._loadProfiles();
|
||||
});
|
||||
|
||||
// This is used to get the desktop's color scheme.
|
||||
this._shellSettings = new Gio.Settings({schema: 'org.gnome.desktop.interface'});
|
||||
|
||||
// Enable the window-picking D-Bus API for the preferences dialog.
|
||||
this._windowPicker = new WindowPicker();
|
||||
this._windowPicker.export();
|
||||
|
||||
// We will use extensionThis to refer to the extension inside the patched methods.
|
||||
const extensionThis = this;
|
||||
|
||||
@@ -100,178 +137,163 @@ class Extension {
|
||||
}
|
||||
|
||||
// We will monkey-patch these methods. Let's store the original ones.
|
||||
this._origShouldAnimateActor = Main.wm._shouldAnimateActor;
|
||||
this._origWaitForOverviewToHide = Main.wm._waitForOverviewToHide;
|
||||
this._origAddWindowClone = Workspace.prototype._addWindowClone;
|
||||
this._origWindowRemoved = Workspace.prototype._windowRemoved;
|
||||
this._origDoRemoveWindow = Workspace.prototype._doRemoveWindow;
|
||||
this._origShouldAnimateActor = WindowManager.prototype._shouldAnimateActor;
|
||||
this._origWaitForOverviewToHide = WindowManager.prototype._waitForOverviewToHide;
|
||||
this._origDestroyWindowDone = WindowManager.prototype._destroyWindowDone;
|
||||
|
||||
// We will also override these animation times.
|
||||
this._origWindowTime = imports.ui.windowManager.DESTROY_WINDOW_ANIMATION_TIME;
|
||||
this._origDialogTime = imports.ui.windowManager.DIALOG_DESTROY_WINDOW_ANIMATION_TIME;
|
||||
// ------------------------------- patching the window animations outside the overview
|
||||
|
||||
|
||||
// ------------------------------------------------ patching the window-open animation
|
||||
|
||||
// Here we add an effect to the window-open animation. This is done whenever a new
|
||||
// window is created. Usually, there is no real window animation for opening windows
|
||||
// in the overview - only the window's clone is animated - but thanks to the hacks
|
||||
// below, we can show the real animations in the overview.
|
||||
|
||||
// If a window is created the transitions are set up in the async _mapWindow of the
|
||||
// If a window is created, the transitions are set up in the async _mapWindow() of the
|
||||
// WindowManager:
|
||||
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/windowManager.js#L1452
|
||||
// AFAIK, overriding this method is not possible as it's called by a signal to
|
||||
// which it is bound via the bind() method. To tweak the async transition
|
||||
// anyways, we override the actors ease() method once - the next time it will be
|
||||
// called by the _mapWindow(), we will intercept it!
|
||||
this._windowCreatedConnection =
|
||||
global.display.connect('window-created', (d, metaWin) => {
|
||||
let actor = metaWin.get_compositor_private();
|
||||
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/windowManager.js#L1436
|
||||
// AFAIK, overriding this method is not possible as it's called by a signal to which
|
||||
// it is bound via the bind() method. To tweak the async transition anyways, we
|
||||
// override the actors ease() method once. We do this in _shouldAnimateActor() which
|
||||
// is called right before the ease() in _mapWindow:
|
||||
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/windowManager.js#L1465
|
||||
|
||||
const orig = actor.ease;
|
||||
actor.ease = function(...params) {
|
||||
orig.apply(actor, params);
|
||||
actor.ease = orig;
|
||||
// The same trick is done for the window-close animation. This is set up in a similar
|
||||
// fashion in the WindowManager's _destroyWindow():
|
||||
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/windowManager.js#L1525
|
||||
// Here is _shouldAnimateActor() also called right before. So we use it again to
|
||||
// monkey-patch the window actor's ease() once.
|
||||
|
||||
// There are cases where the ease() is called prior to mapping the actor. If
|
||||
// the actor is not yet mapped, we defer the effect creation.
|
||||
if (actor.mapped) {
|
||||
extensionThis._setupEffect(actor, true);
|
||||
} else {
|
||||
const connectionID = actor.connect('notify::mapped', () => {
|
||||
extensionThis._setupEffect(actor, true);
|
||||
actor.disconnect(connectionID);
|
||||
});
|
||||
}
|
||||
};
|
||||
// We override WindowManager._shouldAnimateActor() also for another purpose: Usually,
|
||||
// it returns false when we are in the overview. This prevents the window animations
|
||||
// there. To enable animations in the overview, we check inside the method whether it
|
||||
// was called by either _mapWindow or _destroyWindow. If so, we return true. Let's see
|
||||
// if this breaks stuff left and right...
|
||||
Main.wm._shouldAnimateActor = function(actor, types) {
|
||||
const stack = (new Error()).stack;
|
||||
const forClosing = stack.includes('_destroyWindow@');
|
||||
const forOpening = stack.includes('_mapWindow@');
|
||||
|
||||
// This is also called in other cases, for instance when minimizing windows. We are
|
||||
// only interested in window opening and window closing for now.
|
||||
if (forClosing || forOpening) {
|
||||
|
||||
// If there is an applicable effect profile, we intercept the ease() method to
|
||||
// setup our own effect.
|
||||
const chosenEffect = extensionThis._chooseEffect(actor, forOpening);
|
||||
|
||||
if (chosenEffect) {
|
||||
// Store the original ease() method of the actor.
|
||||
const orig = actor.ease;
|
||||
|
||||
// Now intercept the next call to actor.ease().
|
||||
actor.ease = function(...params) {
|
||||
// There is a really weird issue in GNOME Shell 44: A few non-GTK windows are
|
||||
// resized directly after they are mapped on X11. This happens for instance
|
||||
// for keepassxc after it was closed in the maximized state. As the
|
||||
// _mapWindow() method is called asynchronously, the window is not yet visible
|
||||
// when the resize happens. Hence, our ease-override is called for the resize
|
||||
// animation instead of the window-open or window-close animation. This is not
|
||||
// what we want. So we check again whether the ease() call is for the
|
||||
// window-open or window-close animation. If not, we just call the original
|
||||
// ease() method. See also:
|
||||
// https://github.com/Schneegans/Burn-My-Windows/issues/335
|
||||
const stack = (new Error()).stack;
|
||||
const forClosing = stack.includes('_destroyWindow@');
|
||||
const forOpening = stack.includes('_mapWindow@');
|
||||
|
||||
if (forClosing || forOpening) {
|
||||
// Quickly restore the original behavior. Nobody noticed, I guess :D
|
||||
actor.ease = orig;
|
||||
|
||||
// And then create the effect!
|
||||
extensionThis._setupEffect(actor, forOpening, chosenEffect.effect,
|
||||
chosenEffect.profile);
|
||||
} else {
|
||||
orig.apply(this, params);
|
||||
}
|
||||
};
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return extensionThis._origShouldAnimateActor.apply(this, [actor, types]);
|
||||
};
|
||||
|
||||
// Make sure to remove any effects if requested by the window manager.
|
||||
this._killEffectsSignal =
|
||||
global.window_manager.connect('kill-window-effects', (wm, actor) => {
|
||||
const shader = actor.get_effect('burn-my-windows-effect');
|
||||
if (shader) {
|
||||
shader.endAnimation();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// --------------------------------------------- fix window animations in the overview
|
||||
|
||||
// Some of the effects require that the window's actor is enlarged to provide a bigger
|
||||
// canvas to draw the effects. Outside the overview we can simply increase the scale
|
||||
// of the actor. However, if we are in the overview, we have to enlarge the clone of
|
||||
// the window as well.
|
||||
Workspace.prototype._addWindowClone = function(...params) {
|
||||
const result = extensionThis._origAddWindowClone.apply(this, params);
|
||||
const clone = extensionThis._origAddWindowClone.apply(this, params);
|
||||
|
||||
// The parameters of this method changed a bit through the versions...
|
||||
let realWindow, clone;
|
||||
let realWindow, container;
|
||||
|
||||
if (utils.shellVersionIs(3, 36)) {
|
||||
clone = result[0];
|
||||
realWindow = clone.realWindow;
|
||||
container = clone[0];
|
||||
realWindow = container.realWindow;
|
||||
} else if (utils.shellVersionIs(3, 38)) {
|
||||
clone = result._windowContainer;
|
||||
container = clone._windowContainer;
|
||||
realWindow = params[0].get_compositor_private();
|
||||
} else {
|
||||
clone = result.window_container;
|
||||
container = clone.window_container;
|
||||
realWindow = params[0].get_compositor_private();
|
||||
}
|
||||
|
||||
// Syncing the real window's scale with the scale of its clone only works on GNOME
|
||||
// Shell 3.38+. So effects cannot scale windows in the overview of GNOME 3.36...
|
||||
if (utils.shellVersionIsAtLeast(3, 38)) {
|
||||
const xID = realWindow.connect('notify::scale-x', () => {
|
||||
if (realWindow.scale_x > 0 && clone.allocation.get_size()[0] > 0) {
|
||||
clone.scale_x = realWindow.scale_x;
|
||||
}
|
||||
});
|
||||
// Store the overview clone as temporary members of the real window actor. When we
|
||||
// set up the effect, we will check for the existence of these and enlarge the clone
|
||||
// as needed.
|
||||
realWindow._bmwOverviewClone = clone;
|
||||
realWindow._bmwOverviewCloneContainer = container;
|
||||
|
||||
const yID = realWindow.connect('notify::scale-y', () => {
|
||||
if (realWindow.scale_y > 0 && clone.allocation.get_size()[1] > 0) {
|
||||
clone.scale_y = realWindow.scale_y;
|
||||
}
|
||||
});
|
||||
|
||||
clone.connect('destroy', () => {
|
||||
realWindow.disconnect(xID);
|
||||
realWindow.disconnect(yID);
|
||||
});
|
||||
}
|
||||
// Remove the temporary members again once the clone is deleted.
|
||||
container.connect('destroy', () => {
|
||||
delete realWindow._bmwOverviewClone;
|
||||
delete realWindow._bmwOverviewCloneContainer;
|
||||
});
|
||||
|
||||
// This is actually needed for the window-close animation on GNOME Shell 3.36.
|
||||
// On GNOME 3.36, the window clone's 'destroy' handler only calls _removeWindowClone
|
||||
// but not _doRemoveWindow. The latter is required to trigger the repositioning of
|
||||
// the overview window layout. Therefore we call this method in addition.
|
||||
// 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#L1405
|
||||
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/workspace.js#L1363
|
||||
if (utils.shellVersionIs(3, 36)) {
|
||||
clone.connect('destroy', () => this._doRemoveWindow(clone.metaWindow));
|
||||
container.connect('destroy', () => this._doRemoveWindow(container.metaWindow));
|
||||
}
|
||||
|
||||
return result;
|
||||
return clone;
|
||||
};
|
||||
|
||||
// Usually, windows are faded in after the overview is completely hidden. We enable
|
||||
// window-open animations by not waiting for this.
|
||||
WindowManager.prototype._waitForOverviewToHide = async function() {
|
||||
Main.wm._waitForOverviewToHide = async function() {
|
||||
return Promise.resolve();
|
||||
};
|
||||
|
||||
// Here comes the ULTRA-HACK: The method below is called (amongst others) by the
|
||||
// _destroyWindow and _mapWindow methods of the WindowManager. Usually, it returns
|
||||
// false when we are in the overview. This prevents the window animations. As we
|
||||
// cannot monkey-patch the _destroyWindow or _mapWindow methods themselves, we check
|
||||
// inside the method below whether it was called by either of those. If so, we return
|
||||
// true. Let's see if this breaks stuff left and right...
|
||||
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/windowManager.js#L1124
|
||||
WindowManager.prototype._shouldAnimateActor = function(...params) {
|
||||
const caller = (new Error()).stack.split('\n')[1];
|
||||
if (caller.includes('_destroyWindow@') || caller.includes('_mapWindow@')) {
|
||||
return true;
|
||||
}
|
||||
return extensionThis._origShouldAnimateActor.apply(this, params);
|
||||
};
|
||||
|
||||
|
||||
// ----------------------------------------------- patching the window-close animation
|
||||
|
||||
// The signal handler below and the following patch are all which is required outside
|
||||
// of the overview. All other hacks further below are just required to defer the
|
||||
// window-hiding in the overview until the effect is finished.
|
||||
|
||||
// The close animation is set up in WindowManager's _destroyWindow:
|
||||
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/windowManager.js#L1541
|
||||
// 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#L1541
|
||||
WindowManager.prototype._destroyWindowDone = function(shellwm, actor) {
|
||||
if (this._destroying.has(actor)) {
|
||||
const shader = actor.get_effect('burn-my-windows-effect');
|
||||
if (shader) {
|
||||
actor.remove_effect(shader);
|
||||
shader.endAnimation();
|
||||
shader.returnToFactory();
|
||||
}
|
||||
}
|
||||
|
||||
// Call the original method.
|
||||
extensionThis._origDestroyWindowDone.apply(this, [shellwm, actor]);
|
||||
};
|
||||
|
||||
// These three method overrides are mega-hacky! Usually, windows are not faded when
|
||||
// closed from the overview (why?). With these overrides we make sure that they are
|
||||
// actually faded out. To do this, _windowRemoved and _doRemoveWindow now check
|
||||
// whether there is a transition ongoing (via extensionThis._shouldDestroy). If that's
|
||||
// the case, these methods do nothing. Are the actors removed in the end? I hope so.
|
||||
// The _destroyWindow of the WindowManager sets the transitions up and should take
|
||||
// care of removing the actors at the end of the transitions.
|
||||
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/workspace.js#L1301
|
||||
// the case, these methods do nothing.
|
||||
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/workspace.js#L1258
|
||||
Workspace.prototype._windowRemoved = function(ws, metaWin) {
|
||||
if (extensionThis._shouldDestroy(this, metaWin)) {
|
||||
extensionThis._origWindowRemoved.apply(this, [ws, metaWin]);
|
||||
}
|
||||
};
|
||||
|
||||
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/workspace.js#L1180
|
||||
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/workspace.js#L1137
|
||||
Workspace.prototype._doRemoveWindow = function(metaWin) {
|
||||
if (extensionThis._shouldDestroy(this, metaWin)) {
|
||||
extensionThis._origDoRemoveWindow.apply(this, [metaWin]);
|
||||
@@ -338,19 +360,17 @@ class Extension {
|
||||
// Unregister our resources.
|
||||
Gio.resources_unregister(this._resources);
|
||||
|
||||
// Disable the window-picking D-Bus API.
|
||||
this._windowPicker.unexport();
|
||||
|
||||
global.window_manager.disconnect(this._killEffectsSignal);
|
||||
|
||||
// Restore the original window-open and window-close animations.
|
||||
global.window_manager.disconnect(this._destroyConnection);
|
||||
global.display.disconnect(this._windowCreatedConnection);
|
||||
|
||||
Workspace.prototype._addWindowClone = this._origAddWindowClone;
|
||||
Workspace.prototype._windowRemoved = this._origWindowRemoved;
|
||||
Workspace.prototype._doRemoveWindow = this._origDoRemoveWindow;
|
||||
WindowManager.prototype._shouldAnimateActor = this._origShouldAnimateActor;
|
||||
WindowManager.prototype._waitForOverviewToHide = this._origWaitForOverviewToHide;
|
||||
WindowManager.prototype._destroyWindowDone = this._origDestroyWindowDone;
|
||||
|
||||
imports.ui.windowManager.DESTROY_WINDOW_ANIMATION_TIME = this._origWindowTime;
|
||||
imports.ui.windowManager.DIALOG_DESTROY_WINDOW_ANIMATION_TIME = this._origDialogTime;
|
||||
Workspace.prototype._addWindowClone = this._origAddWindowClone;
|
||||
Workspace.prototype._windowRemoved = this._origWindowRemoved;
|
||||
Workspace.prototype._doRemoveWindow = this._origDoRemoveWindow;
|
||||
Main.wm._shouldAnimateActor = this._origShouldAnimateActor;
|
||||
Main.wm._waitForOverviewToHide = this._origWaitForOverviewToHide;
|
||||
|
||||
if (WindowPreview) {
|
||||
WindowPreview.prototype._deleteAll = this._origDeleteAll;
|
||||
@@ -363,91 +383,184 @@ class Extension {
|
||||
|
||||
// ----------------------------------------------------------------------- private stuff
|
||||
|
||||
// This method adds one of the configured effects to the given actor. If forOpening is
|
||||
// set to true, a effect from the enabled window-open animations is chosen, else an
|
||||
// enabled window-close animation is used. This will also tweak the transitions of the
|
||||
// given actor (e.g. scale it up if required).
|
||||
_setupEffect(actor, forOpening) {
|
||||
// This loads all effect profiles and assigns a priority to each profile. Whenever a
|
||||
// window is opened or closed, the matching effect profile with the highest priority
|
||||
// will be chosen.
|
||||
// This method is called whenever the currently edited profile in the/ preferences
|
||||
// dialog changes. This is most likely a bit too often, but it will also happen whenever
|
||||
// a new profile is created and whenever an old profile is deleted.
|
||||
_loadProfiles() {
|
||||
|
||||
// Only add effects to normal windows and dialog windows.
|
||||
// Get all currently available profiles.
|
||||
const profileManager = new ProfileManager();
|
||||
this._profiles = profileManager.getProfiles();
|
||||
|
||||
// Whenever the properties of a profile is changed in the settings, we may have to
|
||||
// resort all profiles according to their priority.
|
||||
const updatePriority = (p) => {
|
||||
p.priority = profileManager.getProfilePriority(p.settings);
|
||||
this._profiles.sort((a, b) => b.priority - a.priority);
|
||||
};
|
||||
|
||||
// For each profile, assign an initial priority and update the priority whenever a
|
||||
// related setting changes.
|
||||
this._profiles.forEach(p => {
|
||||
p.priority = profileManager.getProfilePriority(p.settings);
|
||||
p.settings.connect('changed::profile-app', () => updatePriority(p));
|
||||
p.settings.connect('changed::profile-animation-type', () => updatePriority(p));
|
||||
p.settings.connect('changed::profile-window-type', () => updatePriority(p));
|
||||
p.settings.connect('changed::profile-color-scheme', () => updatePriority(p));
|
||||
p.settings.connect('changed::profile-power-mode', () => updatePriority(p));
|
||||
p.settings.connect('changed::profile-power-profile', () => updatePriority(p));
|
||||
p.settings.connect('changed::profile-high-priority', () => updatePriority(p));
|
||||
});
|
||||
|
||||
// Sort all profiles initially according to their initial priority.
|
||||
this._profiles.sort((a, b) => b.priority - a.priority);
|
||||
}
|
||||
|
||||
// This method selects an effect profile matching the current circumstances. Then a
|
||||
// random effect from its enabled effects will be selected. It returns null if no
|
||||
// profile is currently applicable.
|
||||
_chooseEffect(actor, forOpening) {
|
||||
|
||||
// For now, we only add effects to normal windows and dialog windows.
|
||||
const isNormalWindow = actor.meta_window.window_type == Meta.WindowType.NORMAL;
|
||||
const isDialogWindow =
|
||||
actor.meta_window.window_type == Meta.WindowType.MODAL_DIALOG ||
|
||||
actor.meta_window.window_type == Meta.WindowType.DIALOG;
|
||||
|
||||
if (!isNormalWindow && !isDialogWindow) {
|
||||
return;
|
||||
return null;
|
||||
}
|
||||
|
||||
// We do nothing if a dialog got closed and we should not burn them.
|
||||
const shouldDestroyDialogs = this._settings.get_boolean('destroy-dialogs');
|
||||
// ----------------------------------------------- choose a profile and then an effect
|
||||
|
||||
// If an effect is to be previewed, we have to affect dialogs es well. This is
|
||||
// because the preview window is a dialog window...
|
||||
const action = forOpening ? 'open' : 'close';
|
||||
const previewNick = this._settings.get_string(action + '-preview-effect');
|
||||
// Usually, we use the effect profile with the highest priority which matches the
|
||||
// current circumstances. From this profile, we choose a random effect. However, if an
|
||||
// effect is to be previewed, we choose the currently edited profile regardless of the
|
||||
// circumstances.
|
||||
let profile = null;
|
||||
let effect = null;
|
||||
|
||||
if (isDialogWindow && !shouldDestroyDialogs && previewNick == '') {
|
||||
this._fixAnimationTimes(isDialogWindow, forOpening, null);
|
||||
return;
|
||||
// Hence, we first check if an effect is to be previewed.
|
||||
const previewNick = this._settings.get_string('preview-effect');
|
||||
|
||||
if (previewNick != '') {
|
||||
const activeProfile = this._settings.get_string('active-profile');
|
||||
effect = this._ALL_EFFECTS.find(effect => effect.getNick() == previewNick);
|
||||
profile = this._profiles.find(p => p.path == activeProfile);
|
||||
|
||||
// Only preview the effect until the preview window is closed.
|
||||
if (!profile || !forOpening) {
|
||||
this._settings.set_string('preview-effect', '');
|
||||
}
|
||||
}
|
||||
// If no effect is previewed, we use the effect profile with the highest priority
|
||||
// which matches the current circumstances. From this profile, we choose a random
|
||||
// effect.
|
||||
else {
|
||||
|
||||
// These numbers match the indices in the Gtk.StringLists defined in the UI files
|
||||
// (e.g. resources/ui/adw/prefs.ui).
|
||||
const animationType = forOpening ? 1 : 2;
|
||||
const windowType = isNormalWindow ? 1 : 2;
|
||||
const powerMode = this._upowerProxy.OnBattery ? 1 : 2;
|
||||
|
||||
// Get the first profile whose constraints match the circumstances. The list is
|
||||
// sorted by priority, so we are good to take the first match.
|
||||
profile = this._profiles.find(p => {
|
||||
const profileApp = p.settings.get_string('profile-app');
|
||||
const profileAnimationType = p.settings.get_int('profile-animation-type');
|
||||
const profileWindowType = p.settings.get_int('profile-window-type');
|
||||
const profilePowerMode = p.settings.get_int('profile-power-mode');
|
||||
const profileColorScheme = p.settings.get_int('profile-color-scheme');
|
||||
const profilePowerProfile = p.settings.get_int('profile-power-profile');
|
||||
|
||||
// First we check whether the animation type, window type, and power mode are
|
||||
// matching.
|
||||
let matches =
|
||||
(profileAnimationType == 0 || profileAnimationType == animationType) &&
|
||||
(profileWindowType == 0 || profileWindowType == windowType) &&
|
||||
(profilePowerMode == 0 || profilePowerMode == powerMode);
|
||||
|
||||
// If that was the case, we also check the application name.
|
||||
if (matches && profileApp != '') {
|
||||
const wmClass = actor.meta_window.get_wm_class();
|
||||
|
||||
if (wmClass) {
|
||||
const app = wmClass.toLowerCase();
|
||||
|
||||
// Split app names at |, remove any whitespace, and transform to lower case.
|
||||
const profileApps =
|
||||
profileApp.split('|').map(item => item.trim().toLowerCase());
|
||||
matches = profileApps.includes(app);
|
||||
} else {
|
||||
matches = false;
|
||||
}
|
||||
}
|
||||
|
||||
// If the profile is still matching, we also check the color scheme.
|
||||
if (matches && profileColorScheme != 0 && utils.shellVersionIsAtLeast(42, 0)) {
|
||||
const colorScheme = this._shellSettings.get_string('color-scheme');
|
||||
matches &= (profileColorScheme == 1 && colorScheme == 'default') ||
|
||||
(profileColorScheme == 2 && colorScheme == 'prefer-dark');
|
||||
}
|
||||
|
||||
// Finally, we may also have to check the power profile.
|
||||
if (matches && profilePowerProfile != 0 && this._powerProfilesProxy) {
|
||||
const powerProfile = this._powerProfilesProxy.ActiveProfile;
|
||||
|
||||
// To understand the numbers, please refer to the indices in the Gtk.StringList
|
||||
// of the profile-power-profile Adw.ComboRow in resources/ui/adw/prefs.ui.
|
||||
if (powerProfile == 'power-saver') {
|
||||
matches &= profilePowerProfile == 1 || profilePowerProfile == 4;
|
||||
} else if (powerProfile == 'balanced') {
|
||||
matches &= profilePowerProfile == 2 || profilePowerProfile == 4 ||
|
||||
profilePowerProfile == 5;
|
||||
} else {
|
||||
matches &= profilePowerProfile == 3 || profilePowerProfile == 5;
|
||||
}
|
||||
}
|
||||
|
||||
return matches;
|
||||
});
|
||||
|
||||
// If we found a matching profile, choose a random effect from it.
|
||||
if (profile) {
|
||||
|
||||
// Create a list of all enabled effects of this profile.
|
||||
const enabled = this._ALL_EFFECTS.filter(effect => {
|
||||
return profile.settings.get_boolean(`${effect.getNick()}-enable-effect`);
|
||||
});
|
||||
|
||||
// And then choose a random effect.
|
||||
if (enabled.length > 0) {
|
||||
effect = enabled[Math.floor(Math.random() * enabled.length)];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// We may have to do nothing if running on battery power or if in power-save mode.
|
||||
let disableOnBattery =
|
||||
this._settings.get_boolean('disable-on-battery') && this._upowerProxy.OnBattery;
|
||||
let disableOnPowerSave = this._settings.get_boolean('disable-on-power-save') &&
|
||||
this._powerProfilesProxy && this._powerProfilesProxy.ActiveProfile == 'power-saver';
|
||||
|
||||
if ((disableOnBattery || disableOnPowerSave) && previewNick == '') {
|
||||
this._fixAnimationTimes(isDialogWindow, forOpening, null);
|
||||
return;
|
||||
// If nothing was enabled, we have to do nothing :)
|
||||
if (!effect || !profile) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return {effect: effect, profile: profile};
|
||||
}
|
||||
|
||||
// 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) {
|
||||
actor.remove_effect(oldShader);
|
||||
oldShader.endAnimation();
|
||||
oldShader.returnToFactory();
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------ choose an effect
|
||||
|
||||
// Now we chose a random effect from all enabled effects.
|
||||
let effect = null;
|
||||
|
||||
// First we check if an effect is to be previewed.
|
||||
if (previewNick != '') {
|
||||
effect = this._ALL_EFFECTS.find(effect => effect.getNick() == previewNick);
|
||||
|
||||
// Only preview the effect once.
|
||||
this._settings.set_string(action + '-preview-effect', '');
|
||||
|
||||
}
|
||||
// Else we choose a random effect from all enabled effects.
|
||||
else {
|
||||
|
||||
// Therefore, we first create a list of all currently enabled effects.
|
||||
const enabled = this._ALL_EFFECTS.filter(effect => {
|
||||
return this._settings.get_boolean(`${effect.getNick()}-${action}-effect`);
|
||||
});
|
||||
|
||||
// And then choose a random effect.
|
||||
if (enabled.length > 0) {
|
||||
effect = enabled[Math.floor(Math.random() * enabled.length)];
|
||||
}
|
||||
}
|
||||
|
||||
// If nothing was enabled, we have to do nothing :)
|
||||
if (effect == null) {
|
||||
this._fixAnimationTimes(isDialogWindow, forOpening, null);
|
||||
return;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------- tweak actor transitions
|
||||
|
||||
// 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.
|
||||
const testMode = this._settings.get_boolean('test-mode');
|
||||
@@ -456,123 +569,66 @@ class Extension {
|
||||
// windows are faded in / out scaled up / down slightly by GNOME Shell. Here, we tweak
|
||||
// the transitions so that nothing changes. The window stays opaque and is scaled to
|
||||
// actorScale.
|
||||
const actorScale = effect.getActorScale(this._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;
|
||||
}
|
||||
|
||||
// Restore the original scale of the window actor.
|
||||
actor.scale_x = 1.0;
|
||||
actor.scale_y = 1.0;
|
||||
|
||||
// Remove the shader and mark it being re-usable for future animations.
|
||||
actor.remove_effect(shader);
|
||||
shader.returnToFactory();
|
||||
|
||||
// Finally, once the animation is done or interrupted, we call the methods which
|
||||
// should have been called by the original ease() methods.
|
||||
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/windowManager.js#L1487
|
||||
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/windowManager.js#L1558.
|
||||
if (forOpening) {
|
||||
Main.wm._mapWindowDone(global.window_manager, actor);
|
||||
} else {
|
||||
Main.wm._destroyWindowDone(global.window_manager, actor);
|
||||
}
|
||||
});
|
||||
|
||||
// To make things deterministic during testing, we set the effect duration to 5
|
||||
// seconds.
|
||||
const duration =
|
||||
testMode ? 5000 : this._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.
|
||||
actor.set_pivot_point(0.5, 0.5);
|
||||
|
||||
|
||||
// We tweak the opacity and scale of the actor. If there is no ongoing transition for
|
||||
// a property, a new one is set up.
|
||||
const config = {'opacity': 255, 'scale-x': actorScale.x, 'scale-y': actorScale.y};
|
||||
|
||||
for (const property in config) {
|
||||
let transition = actor.get_transition(property);
|
||||
|
||||
// If there is currently no ongoing transition, we create a new one. Clutter does
|
||||
// not like to create transitions with the same start and end value - however, we
|
||||
// need at least one transition for our progress value in the shader. So we trick
|
||||
// Clutter by creating an arbitrary transition first and then modifying the start
|
||||
// and end values according to our config object.
|
||||
if (!transition) {
|
||||
actor.set_property(property, 0);
|
||||
actor.save_easing_state();
|
||||
actor.set_easing_duration(1000);
|
||||
actor.set_property(property, 1);
|
||||
actor.restore_easing_state();
|
||||
|
||||
// Now there should be a transition!
|
||||
transition = actor.get_transition(property);
|
||||
}
|
||||
|
||||
// Tweak the transition according to the config object. For some reason, there are
|
||||
// rare cases, where no transition is set up. This happens from time to time...
|
||||
if (transition) {
|
||||
transition.set_duration(duration);
|
||||
transition.set_to(config[property]);
|
||||
transition.set_from(config[property]);
|
||||
transition.set_progress_mode(Clutter.AnimationMode.LINEAR);
|
||||
}
|
||||
}
|
||||
|
||||
// Once the transitions are finished, we restore the original actor size.
|
||||
if (forOpening) {
|
||||
const connectionID = actor.connect('transitions-completed', () => {
|
||||
actor.scale_x = 1.0;
|
||||
actor.scale_y = 1.0;
|
||||
actor.disconnect(connectionID);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// -------------------------------------------------------------------- add the shader
|
||||
|
||||
// Now add a cool shader to our window actor!
|
||||
const shader = effect.shaderFactory.getShader();
|
||||
|
||||
// There should always be an opacity transition going on...
|
||||
const transition = actor.get_transition('opacity');
|
||||
|
||||
if (!transition) {
|
||||
this._fixAnimationTimes(isDialogWindow, forOpening, null);
|
||||
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(this._settings, forOpening, duration * 0.001, actor);
|
||||
|
||||
// Set other uniforms each frame.
|
||||
transition.connect('new-frame', (t) => {
|
||||
if (testMode) {
|
||||
shader.updateAnimation(0.5);
|
||||
} else {
|
||||
shader.updateAnimation(t.get_progress());
|
||||
}
|
||||
});
|
||||
|
||||
// Remove the effect if the animation finished or was interrupted.
|
||||
if (forOpening) {
|
||||
transition.connect('stopped', () => {
|
||||
const oldShader = actor.get_effect('burn-my-windows-effect');
|
||||
if (oldShader) {
|
||||
actor.remove_effect(oldShader);
|
||||
oldShader.endAnimation();
|
||||
oldShader.returnToFactory();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Finally, ensure that all animation times are set properly so that other extensions
|
||||
// may guess how long it will take until windows are gone :)
|
||||
this._fixAnimationTimes(isDialogWindow, forOpening, duration);
|
||||
}
|
||||
|
||||
// The code below is not necessary for Burn-My-Windows to function. However, there
|
||||
// are some extensions such as "Show Application View When Workspace Empty"
|
||||
// https://extensions.gnome.org/extension/2036/show-application-view-when-workspace-empty/
|
||||
// which do something *after* a window was closed. As the window-close animation
|
||||
// duration depends on the used effect, this may vary each time a window is
|
||||
// closed. We set the currently used time here, so that others can get an idea how
|
||||
// long this will take...
|
||||
_fixAnimationTimes(isDialogWindow, forOpening, duration) {
|
||||
if (!forOpening) {
|
||||
if (isDialogWindow) {
|
||||
imports.ui.windowManager.DIALOG_DESTROY_WINDOW_ANIMATION_TIME =
|
||||
duration != null ? duration : this._origDialogTime;
|
||||
} else {
|
||||
imports.ui.windowManager.DESTROY_WINDOW_ANIMATION_TIME =
|
||||
duration != null ? duration : this._origWindowTime;
|
||||
}
|
||||
}
|
||||
// Finally start the animation!
|
||||
shader.beginAnimation(profile.settings, forOpening, testMode, duration, actor);
|
||||
}
|
||||
|
||||
// This is required to enable window-close animations in the overview. See the comment
|
||||
@@ -586,11 +642,9 @@ class Extension {
|
||||
// This was called "realWindow" in GNOME 3.36.
|
||||
const propertyName = utils.shellVersionIs(3, 36) ? 'realWindow' : '_windowActor';
|
||||
const actor = workspace._windows[index][propertyName];
|
||||
if (!actor.get_transition('scale-y')) {
|
||||
return true;
|
||||
}
|
||||
const shader = actor.get_effect('burn-my-windows-effect');
|
||||
|
||||
return false;
|
||||
return shader == null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -130,7 +130,7 @@ generate() {
|
||||
|
||||
# Create an archive which can be uploaded to https://store.kde.org.
|
||||
# shellcheck disable=SC2046
|
||||
tar -cjf "$DIR_NAME.tar.gz" -C "$BUILD_DIR/$DIR_NAME" $(ls "$BUILD_DIR/$DIR_NAME")
|
||||
tar -czf "$DIR_NAME.tar.gz" -C "$BUILD_DIR/$DIR_NAME" $(ls "$BUILD_DIR/$DIR_NAME")
|
||||
}
|
||||
|
||||
# Now run the above method for all supported effects.
|
||||
@@ -152,4 +152,4 @@ generate "wisps" "Wisps [Burn-My-Windows]" "Let your windows be carr
|
||||
|
||||
# Finally, create an archive for the effects.
|
||||
# shellcheck disable=SC2046
|
||||
tar -cjf "burn_my_windows_kwin4.tar.gz" -C "$BUILD_DIR" $(ls "$BUILD_DIR")
|
||||
tar -czf "burn_my_windows_kwin4.tar.gz" -C "$BUILD_DIR" $(ls "$BUILD_DIR")
|
||||
|
||||
@@ -9,7 +9,18 @@ const blacklist = [
|
||||
"ksmserver-logout-greeter ksmserver-logout-greeter",
|
||||
|
||||
// KDE Plasma splash screen has to be animated only by the login effect.
|
||||
"ksplashqml ksplashqml"
|
||||
"ksplashqml ksplashqml",
|
||||
|
||||
// All the tooltips of IntelliJ IDEs use the same window class as their main window.
|
||||
// This results in many awkward animations, so we have to blacklist them all.
|
||||
// See https://github.com/Schneegans/Burn-My-Windows/issues/284 for details.
|
||||
"jetbrains-studio jetbrains-studio", "jetbrains-aqua jetbrains-aqua",
|
||||
"jetbrains-clion jetbrains-clion", "jetbrains-datagrip jetbrains-datagrip",
|
||||
"jetbrains-dataspell jetbrains-dataspell", "jetbrains-goland jetbrains-goland",
|
||||
"jetbrains-idea jetbrains-idea", "jetbrains-idea-ce jetbrains-idea-ce",
|
||||
"jetbrains-phpstorm jetbrains-phpstorm", "jetbrains-pycharm jetbrains-pycharm",
|
||||
"jetbrains-pycharm-ce jetbrains-pycharm-ce", "jetbrains-rider jetbrains-rider",
|
||||
"jetbrains-rubymine jetbrains-rubymine", "jetbrains-webstorm jetbrains-webstorm"
|
||||
];
|
||||
|
||||
class %EFFECT_CLASS% {
|
||||
@@ -69,6 +80,12 @@ class %EFFECT_CLASS% {
|
||||
return window.hasDecoration;
|
||||
}
|
||||
|
||||
// This is primarily to avoid animating the AltTab popup.
|
||||
// See https://github.com/Schneegans/Burn-My-Windows/issues/384 for details.
|
||||
if (!window.hasDecoration && window.onAllDesktops) {
|
||||
return false
|
||||
}
|
||||
|
||||
if (blacklist.indexOf(window.windowClass) != -1) {
|
||||
return false;
|
||||
}
|
||||
@@ -122,6 +139,7 @@ class %EFFECT_CLASS% {
|
||||
this.setupForcedRoles(window);
|
||||
|
||||
effect.setUniform(this.shader, 'uForOpening', 1.0);
|
||||
effect.setUniform(this.shader, 'uIsFullscreen', window.fullScreen ? 1.0 : 0.0);
|
||||
|
||||
%ON_ANIMATION_BEGIN%
|
||||
|
||||
@@ -161,6 +179,7 @@ class %EFFECT_CLASS% {
|
||||
this.setupForcedRoles(window);
|
||||
|
||||
effect.setUniform(this.shader, 'uForOpening', 0.0);
|
||||
effect.setUniform(this.shader, 'uIsFullscreen', window.fullScreen ? 1.0 : 0.0);
|
||||
|
||||
%ON_ANIMATION_BEGIN%
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"KPackageStructure": "KWin/Effect",
|
||||
"KPlugin": {
|
||||
"Name": "%NAME%",
|
||||
"Description": "%DESCRIPTION%",
|
||||
@@ -19,6 +20,7 @@
|
||||
"KWin/Effect"
|
||||
]
|
||||
},
|
||||
"X-KDE-ConfigModule": "kcm_kwin4_genericscripted",
|
||||
"X-KDE-Ordering": "60",
|
||||
"X-KDE-PluginKeyword": "%DIR_NAME%",
|
||||
"X-KWin-Config-TranslationDomain": "burn-my-windows",
|
||||
|
||||
@@ -71,7 +71,17 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="KColorButton" name="kcfg_Color"></widget>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="KColorButton" name="kcfg_Color1"></widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="KColorButton" name="kcfg_Color2"></widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="KColorButton" name="kcfg_Color3"></widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
|
||||
@@ -5,8 +5,7 @@ SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
-->
|
||||
|
||||
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
|
||||
http://www.kde.org/standards/kcfg/1.0/kcfg.xsd">
|
||||
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0 http://www.kde.org/standards/kcfg/1.0/kcfg.xsd">
|
||||
<kcfgfile name="" />
|
||||
<group name="">
|
||||
<entry name="Duration" type="UInt">
|
||||
@@ -15,8 +14,14 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
<entry name="Scale" type="Double">
|
||||
<default>1</default>
|
||||
</entry>
|
||||
<entry name="Color" type="Color">
|
||||
<entry name="Color1" type="Color">
|
||||
<default>#ff64c8</default>
|
||||
</entry>
|
||||
<entry name="Color2" type="Color">
|
||||
<default>#6464ff</default>
|
||||
</entry>
|
||||
<entry name="Color3" type="Color">
|
||||
<default>#64c8ff</default>
|
||||
</entry>
|
||||
</group>
|
||||
</kcfg>
|
||||
@@ -7,4 +7,6 @@
|
||||
|
||||
effect.setUniform(this.shader, 'uDuration', this.duration * 0.001);
|
||||
effect.setUniform(this.shader, 'uScale', effect.readConfig('Scale', 1.0));
|
||||
effect.setUniform(this.shader, 'uColor', this.readRGBConfig('Color'));
|
||||
effect.setUniform(this.shader, 'uColor1', this.readRGBConfig('Color1'));
|
||||
effect.setUniform(this.shader, 'uColor2', this.readRGBConfig('Color2'));
|
||||
effect.setUniform(this.shader, 'uColor3', this.readRGBConfig('Color3'));
|
||||
|
||||
@@ -2,6 +2,11 @@
|
||||
"uuid": "burn-my-windows@schneegans.github.com",
|
||||
"description": "Disintegrate your windows with style.",
|
||||
"name": "Burn My Windows",
|
||||
"donations": {
|
||||
"kofi": "schneegans",
|
||||
"github": "schneegans",
|
||||
"paypal": "simonschneegans"
|
||||
},
|
||||
"gettext-domain": "burn-my-windows",
|
||||
"settings-schema": "org.gnome.shell.extensions.burn-my-windows",
|
||||
"shell-version": [
|
||||
@@ -10,8 +15,9 @@
|
||||
"40",
|
||||
"41",
|
||||
"42",
|
||||
"43"
|
||||
"43",
|
||||
"44"
|
||||
],
|
||||
"url": "https://github.com/Schneegans/Burn-My-Windows",
|
||||
"version": 26
|
||||
"version": 42
|
||||
}
|
||||
@@ -0,0 +1,772 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR Simon Schneegans
|
||||
# This file is distributed under the same license as the burn-my-windows package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: burn-my-windows\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-08-31 07:30+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: hi\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: src/ProfileManager.js:175 resources/ui/gtk4/prefs.ui:256
|
||||
#: resources/ui/gtk3/prefs.ui:301 resources/ui/adw/prefs.ui:103
|
||||
msgid "Opening Windows"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:176 resources/ui/gtk4/prefs.ui:257
|
||||
#: resources/ui/gtk3/prefs.ui:302 resources/ui/adw/prefs.ui:104
|
||||
msgid "Closing Windows"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:177 resources/ui/gtk4/prefs.ui:285
|
||||
#: resources/ui/gtk3/prefs.ui:330 resources/ui/adw/prefs.ui:118
|
||||
msgid "Normal Windows"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:178 resources/ui/gtk4/prefs.ui:286
|
||||
#: resources/ui/gtk3/prefs.ui:331 resources/ui/adw/prefs.ui:119
|
||||
msgid "Dialog Windows"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:179 resources/ui/gtk4/prefs.ui:314
|
||||
#: resources/ui/gtk3/prefs.ui:359 resources/ui/adw/prefs.ui:133
|
||||
msgid "Default Color Scheme"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:180 resources/ui/gtk4/prefs.ui:315
|
||||
#: resources/ui/gtk3/prefs.ui:360 resources/ui/adw/prefs.ui:134
|
||||
msgid "Dark Color Scheme"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:181 resources/ui/gtk4/prefs.ui:343
|
||||
#: resources/ui/gtk3/prefs.ui:388 resources/ui/adw/prefs.ui:148
|
||||
msgid "On Battery"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:182 resources/ui/gtk4/prefs.ui:344
|
||||
#: resources/ui/gtk3/prefs.ui:389 resources/ui/adw/prefs.ui:149
|
||||
msgid "Plugged In"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:183 resources/ui/gtk4/prefs.ui:372
|
||||
#: resources/ui/gtk3/prefs.ui:417 resources/ui/adw/prefs.ui:163
|
||||
msgid "Power-Saver Mode"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:184 resources/ui/gtk4/prefs.ui:373
|
||||
#: resources/ui/gtk3/prefs.ui:418 resources/ui/adw/prefs.ui:164
|
||||
msgid "Balanced Mode"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:185 resources/ui/gtk4/prefs.ui:374
|
||||
#: resources/ui/gtk3/prefs.ui:419 resources/ui/adw/prefs.ui:165
|
||||
msgid "Performance Mode"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:186 resources/ui/gtk4/prefs.ui:375
|
||||
#: resources/ui/gtk3/prefs.ui:420 resources/ui/adw/prefs.ui:166
|
||||
msgid "Power Saver or Balanced"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:187 resources/ui/gtk4/prefs.ui:376
|
||||
#: resources/ui/gtk3/prefs.ui:421 resources/ui/adw/prefs.ui:167
|
||||
msgid "Balanced or Performance"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:192 resources/ui/gtk4/prefs.ui:423
|
||||
#: resources/ui/gtk3/prefs.ui:468 resources/ui/adw/prefs.ui:183
|
||||
msgid "High Priority"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:198
|
||||
msgid "Standard Profile"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/Apparition.js:78
|
||||
msgid "Apparition"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/BrokenGlass.js:137
|
||||
msgid "Broken Glass"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/Doom.js:88
|
||||
msgid "Doom"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/EnergizeA.js:80
|
||||
msgid "Energize A"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/EnergizeB.js:81
|
||||
msgid "Energize B"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/Fire.js:100
|
||||
msgid "Fire"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/Fire.js:154
|
||||
msgid "Default Fire"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/Fire.js:164
|
||||
msgid "Hell Fire"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/Fire.js:174
|
||||
msgid "Dark and Smutty"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/Fire.js:184
|
||||
msgid "Cold Breeze"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/Fire.js:194
|
||||
msgid "Santa is Coming"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/Glide.js:78
|
||||
msgid "Glide"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/Glitch.js:86
|
||||
msgid "Glitch"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/Hexagon.js:94
|
||||
msgid "Hexagon"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/Incinerate.js:131
|
||||
msgid "Incinerate"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/Matrix.js:114
|
||||
msgid "Matrix"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/PaintBrush.js:102
|
||||
msgid "Paint Brush"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/Pixelate.js:74
|
||||
msgid "Pixelate"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/PixelWheel.js:74
|
||||
msgid "Pixel Wheel"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/PixelWipe.js:101
|
||||
msgid "Pixel Wipe"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/Portal.js:88
|
||||
msgid "Portal"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/SnapOfDisintegration.js:114
|
||||
msgid "Snap of Disintegration"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/TRexAttack.js:112
|
||||
msgid "T-Rex Attack"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/TVEffect.js:78
|
||||
msgid "TV Effect"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/TVGlitch.js:87
|
||||
msgid "TV Glitch"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/Wisps.js:89
|
||||
msgid "Wisps"
|
||||
msgstr ""
|
||||
|
||||
#: prefs.js:269
|
||||
msgid "Preview this effect"
|
||||
msgstr ""
|
||||
|
||||
#: prefs.js:388 resources/ui/gtk4/prefs.ui:50 resources/ui/gtk3/prefs.ui:86
|
||||
msgid "Burn-My-Windows has been updated!"
|
||||
msgstr ""
|
||||
|
||||
#: prefs.js:389 resources/ui/common/menus.ui:17 resources/ui/gtk4/prefs.ui:56
|
||||
#: resources/ui/gtk3/prefs.ui:96
|
||||
msgid "View Changelog"
|
||||
msgstr ""
|
||||
|
||||
#: prefs.js:571 prefs.js:603
|
||||
msgid "Gold Sponsors"
|
||||
msgstr ""
|
||||
|
||||
#: prefs.js:575 prefs.js:607
|
||||
msgid "Silver Sponsors"
|
||||
msgstr ""
|
||||
|
||||
#: prefs.js:579 prefs.js:611
|
||||
msgid "Bronze Sponsors"
|
||||
msgstr ""
|
||||
|
||||
#: prefs.js:583 prefs.js:615
|
||||
msgid "Past Sponsors"
|
||||
msgstr ""
|
||||
|
||||
#: prefs.js:660
|
||||
msgid "Delete this Profile?"
|
||||
msgstr ""
|
||||
|
||||
#: prefs.js:661
|
||||
msgid ""
|
||||
"The current effect profile with all its effect settings will be permanently "
|
||||
"lost."
|
||||
msgstr ""
|
||||
|
||||
#: prefs.js:664
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: prefs.js:669
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: %s will be replaced by the effect's name.
|
||||
#: prefs.js:980
|
||||
#, javascript-format
|
||||
msgid "Preview for %s"
|
||||
msgstr ""
|
||||
|
||||
#: prefs.js:1002
|
||||
msgid "Close this Window to Preview the Effect!"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/common/menus.ui:13
|
||||
msgid "Visit Homepage"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/common/menus.ui:21
|
||||
msgid "View Matching Wallpapers"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/common/menus.ui:27
|
||||
msgid "Report a Bug"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/common/menus.ui:31
|
||||
msgid "Create an Effect"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/common/menus.ui:35
|
||||
msgid "Translate"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/common/menus.ui:39
|
||||
msgid "Donate"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/common/menus.ui:56
|
||||
msgid "Open Effect-Profile Directory"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/common/menus.ui:62
|
||||
msgid "About Burn-My-Windows"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/common/menus.ui:73
|
||||
msgid "Add New Profile..."
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/broken-glass.ui:22 resources/ui/gtk4/tv-glitch.ui:23
|
||||
#: resources/ui/gtk4/glitch.ui:23 resources/ui/gtk4/matrix.ui:23
|
||||
#: resources/ui/gtk4/doom.ui:22 resources/ui/gtk4/paint-brush.ui:23
|
||||
#: resources/ui/gtk4/trex.ui:23 resources/ui/gtk4/wisps.ui:23
|
||||
#: resources/ui/gtk4/energize-b.ui:23 resources/ui/gtk4/pixel-wheel.ui:23
|
||||
#: resources/ui/gtk4/glide.ui:23 resources/ui/gtk4/apparition.ui:22
|
||||
#: resources/ui/gtk4/portal.ui:23 resources/ui/gtk4/incinerate.ui:23
|
||||
#: resources/ui/gtk4/hexagon.ui:23 resources/ui/gtk4/fire.ui:46
|
||||
#: resources/ui/gtk4/pixel-wipe.ui:23 resources/ui/gtk4/snap.ui:23
|
||||
#: resources/ui/gtk4/energize-a.ui:23 resources/ui/gtk4/pixelate.ui:23
|
||||
#: resources/ui/gtk4/tv.ui:23 resources/ui/gtk3/tv-glitch.ui:52
|
||||
#: resources/ui/gtk3/glitch.ui:52 resources/ui/gtk3/doom.ui:52
|
||||
#: resources/ui/gtk3/wisps.ui:38 resources/ui/gtk3/energize-b.ui:38
|
||||
#: resources/ui/gtk3/pixel-wheel.ui:45 resources/ui/gtk3/glide.ui:59
|
||||
#: resources/ui/gtk3/apparition.ui:59 resources/ui/gtk3/portal.ui:52
|
||||
#: resources/ui/gtk3/incinerate.ui:45 resources/ui/gtk3/hexagon.ui:45
|
||||
#: resources/ui/gtk3/fire.ui:84 resources/ui/gtk3/pixel-wipe.ui:45
|
||||
#: resources/ui/gtk3/energize-a.ui:38 resources/ui/gtk3/pixelate.ui:45
|
||||
#: resources/ui/gtk3/tv.ui:31 resources/ui/adw/broken-glass.ui:15
|
||||
#: resources/ui/adw/tv-glitch.ui:14 resources/ui/adw/glitch.ui:14
|
||||
#: resources/ui/adw/matrix.ui:14 resources/ui/adw/doom.ui:14
|
||||
#: resources/ui/adw/paint-brush.ui:14 resources/ui/adw/trex.ui:14
|
||||
#: resources/ui/adw/wisps.ui:14 resources/ui/adw/energize-b.ui:15
|
||||
#: resources/ui/adw/pixel-wheel.ui:14 resources/ui/adw/glide.ui:14
|
||||
#: resources/ui/adw/apparition.ui:15 resources/ui/adw/portal.ui:14
|
||||
#: resources/ui/adw/incinerate.ui:14 resources/ui/adw/hexagon.ui:14
|
||||
#: resources/ui/adw/fire.ui:30 resources/ui/adw/pixel-wipe.ui:14
|
||||
#: resources/ui/adw/snap.ui:14 resources/ui/adw/energize-a.ui:14
|
||||
#: resources/ui/adw/pixelate.ui:14 resources/ui/adw/tv.ui:14
|
||||
msgid "Animation Time [ms]"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/broken-glass.ui:50 resources/ui/gtk4/broken-glass.ui:96
|
||||
#: resources/ui/gtk4/broken-glass.ui:142 resources/ui/gtk4/broken-glass.ui:188
|
||||
#: resources/ui/gtk4/broken-glass.ui:244 resources/ui/gtk4/tv-glitch.ui:51
|
||||
#: resources/ui/gtk4/tv-glitch.ui:97 resources/ui/gtk4/tv-glitch.ui:143
|
||||
#: resources/ui/gtk4/tv-glitch.ui:189 resources/ui/gtk4/tv-glitch.ui:226
|
||||
#: resources/ui/gtk4/glitch.ui:51 resources/ui/gtk4/glitch.ui:97
|
||||
#: resources/ui/gtk4/glitch.ui:143 resources/ui/gtk4/glitch.ui:189
|
||||
#: resources/ui/gtk4/glitch.ui:226 resources/ui/gtk4/matrix.ui:51
|
||||
#: resources/ui/gtk4/matrix.ui:97 resources/ui/gtk4/matrix.ui:143
|
||||
#: resources/ui/gtk4/matrix.ui:189 resources/ui/gtk4/matrix.ui:226
|
||||
#: resources/ui/gtk4/matrix.ui:263 resources/ui/gtk4/doom.ui:50
|
||||
#: resources/ui/gtk4/doom.ui:96 resources/ui/gtk4/doom.ui:142
|
||||
#: resources/ui/gtk4/doom.ui:188 resources/ui/gtk4/paint-brush.ui:51
|
||||
#: resources/ui/gtk4/paint-brush.ui:97 resources/ui/gtk4/trex.ui:51
|
||||
#: resources/ui/gtk4/trex.ui:97 resources/ui/gtk4/trex.ui:143
|
||||
#: resources/ui/gtk4/trex.ui:189 resources/ui/gtk4/trex.ui:226
|
||||
#: resources/ui/gtk4/wisps.ui:51 resources/ui/gtk4/wisps.ui:97
|
||||
#: resources/ui/gtk4/wisps.ui:140 resources/ui/gtk4/energize-b.ui:51
|
||||
#: resources/ui/gtk4/energize-b.ui:97 resources/ui/gtk4/energize-b.ui:134
|
||||
#: resources/ui/gtk4/pixel-wheel.ui:51 resources/ui/gtk4/pixel-wheel.ui:97
|
||||
#: resources/ui/gtk4/pixel-wheel.ui:143 resources/ui/gtk4/glide.ui:51
|
||||
#: resources/ui/gtk4/glide.ui:97 resources/ui/gtk4/glide.ui:143
|
||||
#: resources/ui/gtk4/glide.ui:189 resources/ui/gtk4/glide.ui:235
|
||||
#: resources/ui/gtk4/apparition.ui:50 resources/ui/gtk4/apparition.ui:96
|
||||
#: resources/ui/gtk4/apparition.ui:142 resources/ui/gtk4/apparition.ui:188
|
||||
#: resources/ui/gtk4/apparition.ui:234 resources/ui/gtk4/portal.ui:51
|
||||
#: resources/ui/gtk4/portal.ui:97 resources/ui/gtk4/portal.ui:143
|
||||
#: resources/ui/gtk4/portal.ui:189 resources/ui/gtk4/portal.ui:226
|
||||
#: resources/ui/gtk4/incinerate.ui:51 resources/ui/gtk4/incinerate.ui:97
|
||||
#: resources/ui/gtk4/incinerate.ui:143 resources/ui/gtk4/incinerate.ui:198
|
||||
#: resources/ui/gtk4/incinerate.ui:235 resources/ui/gtk4/hexagon.ui:51
|
||||
#: resources/ui/gtk4/hexagon.ui:97 resources/ui/gtk4/hexagon.ui:143
|
||||
#: resources/ui/gtk4/hexagon.ui:180 resources/ui/gtk4/hexagon.ui:217
|
||||
#: resources/ui/gtk4/hexagon.ui:272 resources/ui/gtk4/fire.ui:74
|
||||
#: resources/ui/gtk4/fire.ui:120 resources/ui/gtk4/fire.ui:166
|
||||
#: resources/ui/gtk4/fire.ui:221 resources/ui/gtk4/fire.ui:280
|
||||
#: resources/ui/gtk4/pixel-wipe.ui:51 resources/ui/gtk4/pixel-wipe.ui:97
|
||||
#: resources/ui/gtk4/snap.ui:51 resources/ui/gtk4/snap.ui:97
|
||||
#: resources/ui/gtk4/snap.ui:134 resources/ui/gtk4/energize-a.ui:51
|
||||
#: resources/ui/gtk4/energize-a.ui:97 resources/ui/gtk4/energize-a.ui:134
|
||||
#: resources/ui/gtk4/pixelate.ui:51 resources/ui/gtk4/pixelate.ui:97
|
||||
#: resources/ui/gtk4/pixelate.ui:143 resources/ui/gtk4/tv.ui:51
|
||||
#: resources/ui/gtk4/tv.ui:88 resources/ui/gtk3/tv-glitch.ui:78
|
||||
#: resources/ui/gtk3/tv-glitch.ui:123 resources/ui/gtk3/tv-glitch.ui:168
|
||||
#: resources/ui/gtk3/tv-glitch.ui:213 resources/ui/gtk3/tv-glitch.ui:255
|
||||
#: resources/ui/gtk3/glitch.ui:78 resources/ui/gtk3/glitch.ui:123
|
||||
#: resources/ui/gtk3/glitch.ui:168 resources/ui/gtk3/glitch.ui:213
|
||||
#: resources/ui/gtk3/glitch.ui:255 resources/ui/gtk3/doom.ui:78
|
||||
#: resources/ui/gtk3/doom.ui:123 resources/ui/gtk3/doom.ui:168
|
||||
#: resources/ui/gtk3/doom.ui:213 resources/ui/gtk3/wisps.ui:64
|
||||
#: resources/ui/gtk3/wisps.ui:109 resources/ui/gtk3/wisps.ui:159
|
||||
#: resources/ui/gtk3/energize-b.ui:64 resources/ui/gtk3/energize-b.ui:109
|
||||
#: resources/ui/gtk3/energize-b.ui:151 resources/ui/gtk3/pixel-wheel.ui:71
|
||||
#: resources/ui/gtk3/pixel-wheel.ui:116 resources/ui/gtk3/pixel-wheel.ui:161
|
||||
#: resources/ui/gtk3/glide.ui:85 resources/ui/gtk3/glide.ui:130
|
||||
#: resources/ui/gtk3/glide.ui:175 resources/ui/gtk3/glide.ui:220
|
||||
#: resources/ui/gtk3/glide.ui:265 resources/ui/gtk3/apparition.ui:85
|
||||
#: resources/ui/gtk3/apparition.ui:130 resources/ui/gtk3/apparition.ui:175
|
||||
#: resources/ui/gtk3/apparition.ui:220 resources/ui/gtk3/apparition.ui:265
|
||||
#: resources/ui/gtk3/portal.ui:78 resources/ui/gtk3/portal.ui:123
|
||||
#: resources/ui/gtk3/portal.ui:168 resources/ui/gtk3/portal.ui:213
|
||||
#: resources/ui/gtk3/portal.ui:255 resources/ui/gtk3/incinerate.ui:71
|
||||
#: resources/ui/gtk3/incinerate.ui:116 resources/ui/gtk3/incinerate.ui:161
|
||||
#: resources/ui/gtk3/incinerate.ui:220 resources/ui/gtk3/incinerate.ui:262
|
||||
#: resources/ui/gtk3/hexagon.ui:71 resources/ui/gtk3/hexagon.ui:116
|
||||
#: resources/ui/gtk3/hexagon.ui:161 resources/ui/gtk3/hexagon.ui:203
|
||||
#: resources/ui/gtk3/hexagon.ui:245 resources/ui/gtk3/hexagon.ui:304
|
||||
#: resources/ui/gtk3/fire.ui:110 resources/ui/gtk3/fire.ui:154
|
||||
#: resources/ui/gtk3/fire.ui:198 resources/ui/gtk3/fire.ui:257
|
||||
#: resources/ui/gtk3/fire.ui:321 resources/ui/gtk3/pixel-wipe.ui:71
|
||||
#: resources/ui/gtk3/pixel-wipe.ui:116 resources/ui/gtk3/energize-a.ui:64
|
||||
#: resources/ui/gtk3/energize-a.ui:109 resources/ui/gtk3/energize-a.ui:151
|
||||
#: resources/ui/gtk3/pixelate.ui:71 resources/ui/gtk3/pixelate.ui:116
|
||||
#: resources/ui/gtk3/pixelate.ui:161 resources/ui/gtk3/tv.ui:57
|
||||
#: resources/ui/gtk3/tv.ui:99 resources/ui/adw/broken-glass.ui:37
|
||||
#: resources/ui/adw/broken-glass.ui:70 resources/ui/adw/broken-glass.ui:103
|
||||
#: resources/ui/adw/broken-glass.ui:136 resources/ui/adw/broken-glass.ui:159
|
||||
#: resources/ui/adw/tv-glitch.ui:36 resources/ui/adw/tv-glitch.ui:69
|
||||
#: resources/ui/adw/tv-glitch.ui:102 resources/ui/adw/tv-glitch.ui:135
|
||||
#: resources/ui/adw/tv-glitch.ui:160 resources/ui/adw/glitch.ui:36
|
||||
#: resources/ui/adw/glitch.ui:69 resources/ui/adw/glitch.ui:102
|
||||
#: resources/ui/adw/glitch.ui:135 resources/ui/adw/glitch.ui:160
|
||||
#: resources/ui/adw/matrix.ui:36 resources/ui/adw/matrix.ui:69
|
||||
#: resources/ui/adw/matrix.ui:102 resources/ui/adw/matrix.ui:135
|
||||
#: resources/ui/adw/matrix.ui:160 resources/ui/adw/matrix.ui:185
|
||||
#: resources/ui/adw/doom.ui:36 resources/ui/adw/doom.ui:69
|
||||
#: resources/ui/adw/doom.ui:102 resources/ui/adw/doom.ui:135
|
||||
#: resources/ui/adw/paint-brush.ui:36 resources/ui/adw/paint-brush.ui:69
|
||||
#: resources/ui/adw/trex.ui:36 resources/ui/adw/trex.ui:69
|
||||
#: resources/ui/adw/trex.ui:102 resources/ui/adw/trex.ui:135
|
||||
#: resources/ui/adw/trex.ui:160 resources/ui/adw/wisps.ui:36
|
||||
#: resources/ui/adw/wisps.ui:69 resources/ui/adw/wisps.ui:110
|
||||
#: resources/ui/adw/energize-b.ui:37 resources/ui/adw/energize-b.ui:70
|
||||
#: resources/ui/adw/energize-b.ui:95 resources/ui/adw/pixel-wheel.ui:36
|
||||
#: resources/ui/adw/pixel-wheel.ui:69 resources/ui/adw/pixel-wheel.ui:102
|
||||
#: resources/ui/adw/glide.ui:36 resources/ui/adw/glide.ui:69
|
||||
#: resources/ui/adw/glide.ui:102 resources/ui/adw/glide.ui:135
|
||||
#: resources/ui/adw/glide.ui:168 resources/ui/adw/apparition.ui:37
|
||||
#: resources/ui/adw/apparition.ui:70 resources/ui/adw/apparition.ui:103
|
||||
#: resources/ui/adw/apparition.ui:136 resources/ui/adw/apparition.ui:169
|
||||
#: resources/ui/adw/portal.ui:36 resources/ui/adw/portal.ui:69
|
||||
#: resources/ui/adw/portal.ui:102 resources/ui/adw/portal.ui:135
|
||||
#: resources/ui/adw/portal.ui:160 resources/ui/adw/incinerate.ui:36
|
||||
#: resources/ui/adw/incinerate.ui:69 resources/ui/adw/incinerate.ui:102
|
||||
#: resources/ui/adw/incinerate.ui:125 resources/ui/adw/incinerate.ui:150
|
||||
#: resources/ui/adw/hexagon.ui:36 resources/ui/adw/hexagon.ui:69
|
||||
#: resources/ui/adw/hexagon.ui:102 resources/ui/adw/hexagon.ui:127
|
||||
#: resources/ui/adw/hexagon.ui:152 resources/ui/adw/hexagon.ui:175
|
||||
#: resources/ui/adw/fire.ui:52 resources/ui/adw/fire.ui:85
|
||||
#: resources/ui/adw/fire.ui:118 resources/ui/adw/fire.ui:141
|
||||
#: resources/ui/adw/fire.ui:199 resources/ui/adw/pixel-wipe.ui:36
|
||||
#: resources/ui/adw/pixel-wipe.ui:69 resources/ui/adw/snap.ui:36
|
||||
#: resources/ui/adw/snap.ui:69 resources/ui/adw/snap.ui:94
|
||||
#: resources/ui/adw/energize-a.ui:36 resources/ui/adw/energize-a.ui:69
|
||||
#: resources/ui/adw/energize-a.ui:94 resources/ui/adw/pixelate.ui:36
|
||||
#: resources/ui/adw/pixelate.ui:69 resources/ui/adw/pixelate.ui:102
|
||||
#: resources/ui/adw/tv.ui:36 resources/ui/adw/tv.ui:61
|
||||
msgid "Reset to Default Value"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/broken-glass.ui:68 resources/ui/gtk4/tv-glitch.ui:69
|
||||
#: resources/ui/gtk4/glitch.ui:69 resources/ui/gtk4/matrix.ui:69
|
||||
#: resources/ui/gtk4/wisps.ui:69 resources/ui/gtk4/energize-b.ui:69
|
||||
#: resources/ui/gtk4/glide.ui:69 resources/ui/gtk4/incinerate.ui:69
|
||||
#: resources/ui/gtk4/hexagon.ui:69 resources/ui/gtk4/fire.ui:92
|
||||
#: resources/ui/gtk4/snap.ui:69 resources/ui/gtk4/energize-a.ui:69
|
||||
#: resources/ui/gtk3/tv-glitch.ui:97 resources/ui/gtk3/glitch.ui:97
|
||||
#: resources/ui/gtk3/wisps.ui:83 resources/ui/gtk3/energize-b.ui:83
|
||||
#: resources/ui/gtk3/glide.ui:104 resources/ui/gtk3/incinerate.ui:90
|
||||
#: resources/ui/gtk3/hexagon.ui:90 resources/ui/gtk3/fire.ui:128
|
||||
#: resources/ui/gtk3/energize-a.ui:83 resources/ui/adw/broken-glass.ui:48
|
||||
#: resources/ui/adw/tv-glitch.ui:47 resources/ui/adw/glitch.ui:47
|
||||
#: resources/ui/adw/matrix.ui:47 resources/ui/adw/wisps.ui:47
|
||||
#: resources/ui/adw/energize-b.ui:48 resources/ui/adw/glide.ui:47
|
||||
#: resources/ui/adw/incinerate.ui:47 resources/ui/adw/hexagon.ui:47
|
||||
#: resources/ui/adw/fire.ui:63 resources/ui/adw/snap.ui:47
|
||||
#: resources/ui/adw/energize-a.ui:47
|
||||
msgid "Scale"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/broken-glass.ui:114 resources/ui/adw/broken-glass.ui:81
|
||||
msgid "Gravity"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/broken-glass.ui:160 resources/ui/adw/broken-glass.ui:114
|
||||
msgid "Blow Force"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/broken-glass.ui:210 resources/ui/adw/broken-glass.ui:147
|
||||
msgid "Shatter From Pointer Location"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/broken-glass.ui:219 resources/ui/adw/broken-glass.ui:148
|
||||
msgid ""
|
||||
"The shards will fly away from where your mouse pointer was when closing the "
|
||||
"window."
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/tv-glitch.ui:115 resources/ui/gtk4/glitch.ui:115
|
||||
#: resources/ui/gtk3/tv-glitch.ui:142 resources/ui/gtk3/glitch.ui:142
|
||||
#: resources/ui/adw/tv-glitch.ui:80 resources/ui/adw/glitch.ui:80
|
||||
msgid "Strength"
|
||||
msgstr ""
|
||||
|
||||
#: 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/gtk3/glitch.ui:187 resources/ui/gtk3/fire.ui:172
|
||||
#: resources/ui/adw/tv-glitch.ui:113 resources/ui/adw/glitch.ui:113
|
||||
#: resources/ui/adw/fire.ui:96
|
||||
msgid "Speed"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/tv-glitch.ui:207 resources/ui/gtk4/glitch.ui:207
|
||||
#: resources/ui/gtk4/wisps.ui:115 resources/ui/gtk4/energize-b.ui:115
|
||||
#: resources/ui/gtk4/portal.ui:207 resources/ui/gtk4/incinerate.ui:216
|
||||
#: resources/ui/gtk4/snap.ui:115 resources/ui/gtk4/energize-a.ui:115
|
||||
#: resources/ui/gtk4/tv.ui:69 resources/ui/gtk3/tv-glitch.ui:231
|
||||
#: resources/ui/gtk3/glitch.ui:231 resources/ui/gtk3/wisps.ui:129
|
||||
#: resources/ui/gtk3/energize-b.ui:127 resources/ui/gtk3/portal.ui:231
|
||||
#: resources/ui/gtk3/incinerate.ui:238 resources/ui/gtk3/energize-a.ui:127
|
||||
#: resources/ui/gtk3/tv.ui:75 resources/ui/adw/tv-glitch.ui:146
|
||||
#: resources/ui/adw/glitch.ui:146 resources/ui/adw/wisps.ui:80
|
||||
#: resources/ui/adw/energize-b.ui:81 resources/ui/adw/portal.ui:146
|
||||
#: resources/ui/adw/incinerate.ui:136 resources/ui/adw/snap.ui:80
|
||||
#: resources/ui/adw/energize-a.ui:80 resources/ui/adw/tv.ui:47
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/matrix.ui:115 resources/ui/gtk4/apparition.ui:68
|
||||
#: resources/ui/gtk3/apparition.ui:104 resources/ui/adw/matrix.ui:80
|
||||
#: resources/ui/adw/apparition.ui:48
|
||||
msgid "Randomness"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/matrix.ui:161 resources/ui/adw/matrix.ui:113
|
||||
msgid "Vertical Overshooting"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/matrix.ui:207 resources/ui/adw/matrix.ui:146
|
||||
msgid "Trail Color"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/matrix.ui:244 resources/ui/adw/matrix.ui:171
|
||||
msgid "Tip Color"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/doom.ui:68 resources/ui/gtk3/doom.ui:97
|
||||
#: resources/ui/adw/doom.ui:47
|
||||
msgid "Horizontal Scale"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/doom.ui:114 resources/ui/gtk3/doom.ui:142
|
||||
#: resources/ui/adw/doom.ui:80
|
||||
msgid "Vertical Scale"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/doom.ui:160 resources/ui/gtk4/pixel-wheel.ui:115
|
||||
#: resources/ui/gtk4/pixel-wipe.ui:69 resources/ui/gtk4/pixelate.ui:115
|
||||
#: resources/ui/gtk3/doom.ui:187 resources/ui/gtk3/pixel-wheel.ui:135
|
||||
#: resources/ui/gtk3/pixel-wipe.ui:90 resources/ui/gtk3/pixelate.ui:135
|
||||
#: resources/ui/adw/doom.ui:113 resources/ui/adw/pixel-wheel.ui:80
|
||||
#: resources/ui/adw/pixel-wipe.ui:47 resources/ui/adw/pixelate.ui:80
|
||||
msgid "Pixel Size"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/paint-brush.ui:69 resources/ui/adw/paint-brush.ui:47
|
||||
msgid "Brush Size"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/trex.ui:69 resources/ui/adw/trex.ui:47
|
||||
msgid "Claw Scratch Scale"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/trex.ui:115 resources/ui/adw/trex.ui:80
|
||||
msgid "Claw Scratch Count"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/trex.ui:161 resources/ui/adw/trex.ui:113
|
||||
msgid "Warp Effect"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/trex.ui:207 resources/ui/adw/trex.ui:146
|
||||
msgid "Flash Color"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/pixel-wheel.ui:69 resources/ui/gtk3/pixel-wheel.ui:90
|
||||
#: resources/ui/adw/pixel-wheel.ui:47
|
||||
msgid "Spoke Count"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/glide.ui:115 resources/ui/gtk3/glide.ui:149
|
||||
#: resources/ui/adw/glide.ui:80
|
||||
msgid "Squish"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/glide.ui:161 resources/ui/gtk3/glide.ui:194
|
||||
#: resources/ui/adw/glide.ui:113
|
||||
msgid "Tilt"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/glide.ui:207 resources/ui/gtk3/glide.ui:239
|
||||
#: resources/ui/adw/glide.ui:146
|
||||
msgid "Shift"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/apparition.ui:114 resources/ui/gtk3/apparition.ui:149
|
||||
#: resources/ui/adw/apparition.ui:81
|
||||
msgid "Twirl Intensity"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/apparition.ui:160 resources/ui/gtk3/apparition.ui:194
|
||||
#: resources/ui/adw/apparition.ui:114
|
||||
msgid "Shake Intensity"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/apparition.ui:206 resources/ui/gtk3/apparition.ui:239
|
||||
#: resources/ui/adw/apparition.ui:147
|
||||
msgid "Suction Intensity"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/portal.ui:69 resources/ui/gtk3/portal.ui:142
|
||||
#: resources/ui/adw/portal.ui:80
|
||||
msgid "Whirling"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/portal.ui:115 resources/ui/gtk3/portal.ui:97
|
||||
#: resources/ui/adw/portal.ui:47
|
||||
msgid "Rotation Speed"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/portal.ui:161 resources/ui/gtk3/portal.ui:187
|
||||
#: resources/ui/adw/portal.ui:113
|
||||
msgid "Details"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/incinerate.ui:115 resources/ui/gtk3/incinerate.ui:135
|
||||
#: resources/ui/adw/incinerate.ui:80
|
||||
msgid "Turbulence"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/incinerate.ui:165 resources/ui/gtk3/incinerate.ui:183
|
||||
#: resources/ui/adw/incinerate.ui:113
|
||||
msgid "Start at Pointer"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/incinerate.ui:174 resources/ui/gtk3/incinerate.ui:192
|
||||
#: resources/ui/adw/incinerate.ui:114
|
||||
msgid "If disabled, a random location will be chosen."
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/hexagon.ui:115 resources/ui/gtk3/hexagon.ui:135
|
||||
#: resources/ui/adw/hexagon.ui:80
|
||||
msgid "Mesh Line Width"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/hexagon.ui:161 resources/ui/gtk3/hexagon.ui:179
|
||||
#: resources/ui/adw/hexagon.ui:113
|
||||
msgid "Line Color"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/hexagon.ui:198 resources/ui/gtk3/hexagon.ui:221
|
||||
#: resources/ui/adw/hexagon.ui:138
|
||||
msgid "Glow Color"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/hexagon.ui:239 resources/ui/gtk3/hexagon.ui:267
|
||||
#: resources/ui/adw/hexagon.ui:163
|
||||
msgid "Additive Blending"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/hexagon.ui:248 resources/ui/gtk3/hexagon.ui:276
|
||||
#: resources/ui/adw/hexagon.ui:164
|
||||
msgid "You may want to enable this for dark window themes."
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/fire.ui:22 resources/ui/gtk3/fire.ui:44
|
||||
#: resources/ui/adw/fire.ui:14
|
||||
msgid "Presets"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/fire.ui:31 resources/ui/gtk3/fire.ui:58
|
||||
#: resources/ui/adw/fire.ui:19
|
||||
msgid "Choose a Preset"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/fire.ui:188 resources/ui/gtk3/fire.ui:220
|
||||
#: resources/ui/adw/fire.ui:129
|
||||
msgid "3D Noise"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/fire.ui:197 resources/ui/gtk3/fire.ui:229
|
||||
#: resources/ui/adw/fire.ui:130
|
||||
msgid "Creates a more dynamic fire but requires more GPU power."
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/fire.ui:239 resources/ui/gtk3/fire.ui:276
|
||||
#: resources/ui/adw/fire.ui:152
|
||||
msgid "Gradient"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:91 resources/ui/gtk3/prefs.ui:133
|
||||
#: resources/ui/adw/prefs.ui:224
|
||||
msgid "Effect Selection"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:101 resources/ui/gtk3/prefs.ui:143
|
||||
#: resources/ui/adw/prefs.ui:225
|
||||
msgid "If multiple are selected, one is chosen randomly."
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:118 resources/ui/gtk3/prefs.ui:160
|
||||
#: resources/ui/adw/prefs.ui:236
|
||||
msgid "All"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:124 resources/ui/gtk3/prefs.ui:166
|
||||
#: resources/ui/adw/prefs.ui:242
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:168 resources/ui/gtk3/prefs.ui:208
|
||||
#: resources/ui/adw/prefs.ui:65
|
||||
msgid "Effect Profile Constraints"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:178 resources/ui/gtk3/prefs.ui:218
|
||||
#: resources/ui/adw/prefs.ui:66
|
||||
msgid "Define when the current effect settings should be used."
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:202 resources/ui/gtk3/prefs.ui:242
|
||||
#: resources/ui/adw/prefs.ui:70
|
||||
msgid "Application"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:220 resources/ui/gtk4/prefs.ui:255
|
||||
#: resources/ui/gtk4/prefs.ui:284 resources/ui/gtk4/prefs.ui:313
|
||||
#: resources/ui/gtk4/prefs.ui:342 resources/ui/gtk4/prefs.ui:371
|
||||
#: resources/ui/gtk3/prefs.ui:260 resources/ui/gtk3/prefs.ui:300
|
||||
#: resources/ui/gtk3/prefs.ui:329 resources/ui/gtk3/prefs.ui:358
|
||||
#: resources/ui/gtk3/prefs.ui:387 resources/ui/gtk3/prefs.ui:416
|
||||
#: resources/ui/adw/prefs.ui:81 resources/ui/adw/prefs.ui:102
|
||||
#: resources/ui/adw/prefs.ui:117 resources/ui/adw/prefs.ui:132
|
||||
#: resources/ui/adw/prefs.ui:147 resources/ui/adw/prefs.ui:162
|
||||
msgid "Any"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:244 resources/ui/gtk3/prefs.ui:289
|
||||
#: resources/ui/adw/prefs.ui:98
|
||||
msgid "Animation Type"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:273 resources/ui/gtk3/prefs.ui:318
|
||||
#: resources/ui/adw/prefs.ui:113
|
||||
msgid "Window Type"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:302 resources/ui/gtk3/prefs.ui:347
|
||||
#: resources/ui/adw/prefs.ui:128
|
||||
msgid "Color Scheme"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:331 resources/ui/gtk3/prefs.ui:376
|
||||
#: resources/ui/adw/prefs.ui:143
|
||||
msgid "Power Mode"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:360 resources/ui/gtk3/prefs.ui:405
|
||||
#: resources/ui/adw/prefs.ui:158
|
||||
msgid "Power Profile"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:392 resources/ui/gtk3/prefs.ui:437
|
||||
#: resources/ui/adw/prefs.ui:179
|
||||
msgid "Advanced Profile Options"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:432 resources/ui/gtk3/prefs.ui:477
|
||||
#: resources/ui/adw/prefs.ui:184
|
||||
msgid "Use this profile even if there are better matching profiles."
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:464 resources/ui/gtk3/prefs.ui:509
|
||||
#: resources/ui/adw/prefs.ui:204
|
||||
msgid "Delete this Profile..."
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/pixelate.ui:69 resources/ui/gtk3/pixelate.ui:90
|
||||
#: resources/ui/adw/pixelate.ui:47
|
||||
msgid "Noise"
|
||||
msgstr ""
|
||||
@@ -0,0 +1,798 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR Simon Schneegans
|
||||
# This file is distributed under the same license as the burn-my-windows package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: burn-my-windows\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-08-31 07:30+0200\n"
|
||||
"PO-Revision-Date: 2023-02-06 11:38+0000\n"
|
||||
"Last-Translator: KinteLiX <superh552@gmail.com>\n"
|
||||
"Language-Team: Hungarian <https://hosted.weblate.org/projects/burn-my-"
|
||||
"windows/core/hu/>\n"
|
||||
"Language: hu\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.16-dev\n"
|
||||
|
||||
#: src/ProfileManager.js:175 resources/ui/gtk4/prefs.ui:256
|
||||
#: resources/ui/gtk3/prefs.ui:301 resources/ui/adw/prefs.ui:103
|
||||
msgid "Opening Windows"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:176 resources/ui/gtk4/prefs.ui:257
|
||||
#: resources/ui/gtk3/prefs.ui:302 resources/ui/adw/prefs.ui:104
|
||||
msgid "Closing Windows"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:177 resources/ui/gtk4/prefs.ui:285
|
||||
#: resources/ui/gtk3/prefs.ui:330 resources/ui/adw/prefs.ui:118
|
||||
msgid "Normal Windows"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:178 resources/ui/gtk4/prefs.ui:286
|
||||
#: resources/ui/gtk3/prefs.ui:331 resources/ui/adw/prefs.ui:119
|
||||
msgid "Dialog Windows"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:179 resources/ui/gtk4/prefs.ui:314
|
||||
#: resources/ui/gtk3/prefs.ui:359 resources/ui/adw/prefs.ui:133
|
||||
msgid "Default Color Scheme"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:180 resources/ui/gtk4/prefs.ui:315
|
||||
#: resources/ui/gtk3/prefs.ui:360 resources/ui/adw/prefs.ui:134
|
||||
msgid "Dark Color Scheme"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:181 resources/ui/gtk4/prefs.ui:343
|
||||
#: resources/ui/gtk3/prefs.ui:388 resources/ui/adw/prefs.ui:148
|
||||
msgid "On Battery"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:182 resources/ui/gtk4/prefs.ui:344
|
||||
#: resources/ui/gtk3/prefs.ui:389 resources/ui/adw/prefs.ui:149
|
||||
msgid "Plugged In"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:183 resources/ui/gtk4/prefs.ui:372
|
||||
#: resources/ui/gtk3/prefs.ui:417 resources/ui/adw/prefs.ui:163
|
||||
msgid "Power-Saver Mode"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:184 resources/ui/gtk4/prefs.ui:373
|
||||
#: resources/ui/gtk3/prefs.ui:418 resources/ui/adw/prefs.ui:164
|
||||
msgid "Balanced Mode"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:185 resources/ui/gtk4/prefs.ui:374
|
||||
#: resources/ui/gtk3/prefs.ui:419 resources/ui/adw/prefs.ui:165
|
||||
msgid "Performance Mode"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:186 resources/ui/gtk4/prefs.ui:375
|
||||
#: resources/ui/gtk3/prefs.ui:420 resources/ui/adw/prefs.ui:166
|
||||
msgid "Power Saver or Balanced"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:187 resources/ui/gtk4/prefs.ui:376
|
||||
#: resources/ui/gtk3/prefs.ui:421 resources/ui/adw/prefs.ui:167
|
||||
msgid "Balanced or Performance"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:192 resources/ui/gtk4/prefs.ui:423
|
||||
#: resources/ui/gtk3/prefs.ui:468 resources/ui/adw/prefs.ui:183
|
||||
msgid "High Priority"
|
||||
msgstr ""
|
||||
|
||||
#: src/ProfileManager.js:198
|
||||
msgid "Standard Profile"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/Apparition.js:78
|
||||
msgid "Apparition"
|
||||
msgstr "Jelenés"
|
||||
|
||||
#: src/effects/BrokenGlass.js:137
|
||||
msgid "Broken Glass"
|
||||
msgstr "Szilánkok"
|
||||
|
||||
#: src/effects/Doom.js:88
|
||||
msgid "Doom"
|
||||
msgstr "Végzet"
|
||||
|
||||
#: src/effects/EnergizeA.js:80
|
||||
msgid "Energize A"
|
||||
msgstr "Energia A"
|
||||
|
||||
#: src/effects/EnergizeB.js:81
|
||||
msgid "Energize B"
|
||||
msgstr "Energia B"
|
||||
|
||||
#: src/effects/Fire.js:100
|
||||
msgid "Fire"
|
||||
msgstr "Tűz"
|
||||
|
||||
#: src/effects/Fire.js:154
|
||||
msgid "Default Fire"
|
||||
msgstr "Alapértelmezett tűz"
|
||||
|
||||
#: src/effects/Fire.js:164
|
||||
msgid "Hell Fire"
|
||||
msgstr "Pokoli tűz"
|
||||
|
||||
#: src/effects/Fire.js:174
|
||||
msgid "Dark and Smutty"
|
||||
msgstr "Sötét és kormos"
|
||||
|
||||
#: src/effects/Fire.js:184
|
||||
msgid "Cold Breeze"
|
||||
msgstr "Hideg szellő"
|
||||
|
||||
#: src/effects/Fire.js:194
|
||||
msgid "Santa is Coming"
|
||||
msgstr "Jön a télapó"
|
||||
|
||||
#: src/effects/Glide.js:78
|
||||
msgid "Glide"
|
||||
msgstr "Siklás"
|
||||
|
||||
#: src/effects/Glitch.js:86
|
||||
msgid "Glitch"
|
||||
msgstr "Hiba"
|
||||
|
||||
#: src/effects/Hexagon.js:94
|
||||
msgid "Hexagon"
|
||||
msgstr "Hatszög"
|
||||
|
||||
#: src/effects/Incinerate.js:131
|
||||
msgid "Incinerate"
|
||||
msgstr "Elégetés"
|
||||
|
||||
#: src/effects/Matrix.js:114
|
||||
msgid "Matrix"
|
||||
msgstr "Mátrix"
|
||||
|
||||
#: src/effects/PaintBrush.js:102
|
||||
msgid "Paint Brush"
|
||||
msgstr ""
|
||||
|
||||
#: src/effects/Pixelate.js:74
|
||||
msgid "Pixelate"
|
||||
msgstr "Pixelezés"
|
||||
|
||||
#: src/effects/PixelWheel.js:74
|
||||
msgid "Pixel Wheel"
|
||||
msgstr "Pixelciklus"
|
||||
|
||||
#: src/effects/PixelWipe.js:101
|
||||
msgid "Pixel Wipe"
|
||||
msgstr "Pixelhullám"
|
||||
|
||||
#: src/effects/Portal.js:88
|
||||
msgid "Portal"
|
||||
msgstr "Portál"
|
||||
|
||||
#: src/effects/SnapOfDisintegration.js:114
|
||||
msgid "Snap of Disintegration"
|
||||
msgstr "Hírtelen felbomlás"
|
||||
|
||||
#: src/effects/TRexAttack.js:112
|
||||
msgid "T-Rex Attack"
|
||||
msgstr "T-Rex támadás"
|
||||
|
||||
#: src/effects/TVEffect.js:78
|
||||
msgid "TV Effect"
|
||||
msgstr "Tévé hatás"
|
||||
|
||||
#: src/effects/TVGlitch.js:87
|
||||
msgid "TV Glitch"
|
||||
msgstr "Tévé hiba"
|
||||
|
||||
#: src/effects/Wisps.js:89
|
||||
msgid "Wisps"
|
||||
msgstr "Szálak"
|
||||
|
||||
#: prefs.js:269
|
||||
msgid "Preview this effect"
|
||||
msgstr "Nézze elő ezt a hatást"
|
||||
|
||||
#: prefs.js:388 resources/ui/gtk4/prefs.ui:50 resources/ui/gtk3/prefs.ui:86
|
||||
msgid "Burn-My-Windows has been updated!"
|
||||
msgstr ""
|
||||
|
||||
#: prefs.js:389 resources/ui/common/menus.ui:17 resources/ui/gtk4/prefs.ui:56
|
||||
#: resources/ui/gtk3/prefs.ui:96
|
||||
msgid "View Changelog"
|
||||
msgstr "Változási napló megtekintése"
|
||||
|
||||
#: prefs.js:571 prefs.js:603
|
||||
msgid "Gold Sponsors"
|
||||
msgstr "Aranyszponzorok"
|
||||
|
||||
#: prefs.js:575 prefs.js:607
|
||||
msgid "Silver Sponsors"
|
||||
msgstr "Ezüstszponzorok"
|
||||
|
||||
#: prefs.js:579 prefs.js:611
|
||||
msgid "Bronze Sponsors"
|
||||
msgstr "Bronzszponzorok"
|
||||
|
||||
#: prefs.js:583 prefs.js:615
|
||||
msgid "Past Sponsors"
|
||||
msgstr "Korábbi szponzorok"
|
||||
|
||||
#: prefs.js:660
|
||||
msgid "Delete this Profile?"
|
||||
msgstr ""
|
||||
|
||||
#: prefs.js:661
|
||||
msgid ""
|
||||
"The current effect profile with all its effect settings will be permanently "
|
||||
"lost."
|
||||
msgstr ""
|
||||
|
||||
#: prefs.js:664
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: prefs.js:669
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: %s will be replaced by the effect's name.
|
||||
#: prefs.js:980
|
||||
#, javascript-format
|
||||
msgid "Preview for %s"
|
||||
msgstr "%s előnézete"
|
||||
|
||||
#: prefs.js:1002
|
||||
msgid "Close this Window to Preview the Effect!"
|
||||
msgstr "Zárja be ezt az ablakot hogy előnézze ezt a hatást!"
|
||||
|
||||
#: resources/ui/common/menus.ui:13
|
||||
msgid "Visit Homepage"
|
||||
msgstr "Honlap meglátogatása"
|
||||
|
||||
#: resources/ui/common/menus.ui:21
|
||||
msgid "View Matching Wallpapers"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/common/menus.ui:27
|
||||
msgid "Report a Bug"
|
||||
msgstr "Hiba jelentése"
|
||||
|
||||
#: resources/ui/common/menus.ui:31
|
||||
msgid "Create an Effect"
|
||||
msgstr "Hatás készítése"
|
||||
|
||||
#: resources/ui/common/menus.ui:35
|
||||
msgid "Translate"
|
||||
msgstr "Fordítás"
|
||||
|
||||
#: resources/ui/common/menus.ui:39
|
||||
msgid "Donate"
|
||||
msgstr "Adományozás"
|
||||
|
||||
#: resources/ui/common/menus.ui:56
|
||||
msgid "Open Effect-Profile Directory"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/common/menus.ui:62
|
||||
msgid "About Burn-My-Windows"
|
||||
msgstr "A Burn-My-Windowsról"
|
||||
|
||||
#: resources/ui/common/menus.ui:73
|
||||
msgid "Add New Profile..."
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/broken-glass.ui:22 resources/ui/gtk4/tv-glitch.ui:23
|
||||
#: resources/ui/gtk4/glitch.ui:23 resources/ui/gtk4/matrix.ui:23
|
||||
#: resources/ui/gtk4/doom.ui:22 resources/ui/gtk4/paint-brush.ui:23
|
||||
#: resources/ui/gtk4/trex.ui:23 resources/ui/gtk4/wisps.ui:23
|
||||
#: resources/ui/gtk4/energize-b.ui:23 resources/ui/gtk4/pixel-wheel.ui:23
|
||||
#: resources/ui/gtk4/glide.ui:23 resources/ui/gtk4/apparition.ui:22
|
||||
#: resources/ui/gtk4/portal.ui:23 resources/ui/gtk4/incinerate.ui:23
|
||||
#: resources/ui/gtk4/hexagon.ui:23 resources/ui/gtk4/fire.ui:46
|
||||
#: resources/ui/gtk4/pixel-wipe.ui:23 resources/ui/gtk4/snap.ui:23
|
||||
#: resources/ui/gtk4/energize-a.ui:23 resources/ui/gtk4/pixelate.ui:23
|
||||
#: resources/ui/gtk4/tv.ui:23 resources/ui/gtk3/tv-glitch.ui:52
|
||||
#: resources/ui/gtk3/glitch.ui:52 resources/ui/gtk3/doom.ui:52
|
||||
#: resources/ui/gtk3/wisps.ui:38 resources/ui/gtk3/energize-b.ui:38
|
||||
#: resources/ui/gtk3/pixel-wheel.ui:45 resources/ui/gtk3/glide.ui:59
|
||||
#: resources/ui/gtk3/apparition.ui:59 resources/ui/gtk3/portal.ui:52
|
||||
#: resources/ui/gtk3/incinerate.ui:45 resources/ui/gtk3/hexagon.ui:45
|
||||
#: resources/ui/gtk3/fire.ui:84 resources/ui/gtk3/pixel-wipe.ui:45
|
||||
#: resources/ui/gtk3/energize-a.ui:38 resources/ui/gtk3/pixelate.ui:45
|
||||
#: resources/ui/gtk3/tv.ui:31 resources/ui/adw/broken-glass.ui:15
|
||||
#: resources/ui/adw/tv-glitch.ui:14 resources/ui/adw/glitch.ui:14
|
||||
#: resources/ui/adw/matrix.ui:14 resources/ui/adw/doom.ui:14
|
||||
#: resources/ui/adw/paint-brush.ui:14 resources/ui/adw/trex.ui:14
|
||||
#: resources/ui/adw/wisps.ui:14 resources/ui/adw/energize-b.ui:15
|
||||
#: resources/ui/adw/pixel-wheel.ui:14 resources/ui/adw/glide.ui:14
|
||||
#: resources/ui/adw/apparition.ui:15 resources/ui/adw/portal.ui:14
|
||||
#: resources/ui/adw/incinerate.ui:14 resources/ui/adw/hexagon.ui:14
|
||||
#: resources/ui/adw/fire.ui:30 resources/ui/adw/pixel-wipe.ui:14
|
||||
#: resources/ui/adw/snap.ui:14 resources/ui/adw/energize-a.ui:14
|
||||
#: resources/ui/adw/pixelate.ui:14 resources/ui/adw/tv.ui:14
|
||||
msgid "Animation Time [ms]"
|
||||
msgstr "Animáció időtartama [ms]"
|
||||
|
||||
#: resources/ui/gtk4/broken-glass.ui:50 resources/ui/gtk4/broken-glass.ui:96
|
||||
#: resources/ui/gtk4/broken-glass.ui:142 resources/ui/gtk4/broken-glass.ui:188
|
||||
#: resources/ui/gtk4/broken-glass.ui:244 resources/ui/gtk4/tv-glitch.ui:51
|
||||
#: resources/ui/gtk4/tv-glitch.ui:97 resources/ui/gtk4/tv-glitch.ui:143
|
||||
#: resources/ui/gtk4/tv-glitch.ui:189 resources/ui/gtk4/tv-glitch.ui:226
|
||||
#: resources/ui/gtk4/glitch.ui:51 resources/ui/gtk4/glitch.ui:97
|
||||
#: resources/ui/gtk4/glitch.ui:143 resources/ui/gtk4/glitch.ui:189
|
||||
#: resources/ui/gtk4/glitch.ui:226 resources/ui/gtk4/matrix.ui:51
|
||||
#: resources/ui/gtk4/matrix.ui:97 resources/ui/gtk4/matrix.ui:143
|
||||
#: resources/ui/gtk4/matrix.ui:189 resources/ui/gtk4/matrix.ui:226
|
||||
#: resources/ui/gtk4/matrix.ui:263 resources/ui/gtk4/doom.ui:50
|
||||
#: resources/ui/gtk4/doom.ui:96 resources/ui/gtk4/doom.ui:142
|
||||
#: resources/ui/gtk4/doom.ui:188 resources/ui/gtk4/paint-brush.ui:51
|
||||
#: resources/ui/gtk4/paint-brush.ui:97 resources/ui/gtk4/trex.ui:51
|
||||
#: resources/ui/gtk4/trex.ui:97 resources/ui/gtk4/trex.ui:143
|
||||
#: resources/ui/gtk4/trex.ui:189 resources/ui/gtk4/trex.ui:226
|
||||
#: resources/ui/gtk4/wisps.ui:51 resources/ui/gtk4/wisps.ui:97
|
||||
#: resources/ui/gtk4/wisps.ui:140 resources/ui/gtk4/energize-b.ui:51
|
||||
#: resources/ui/gtk4/energize-b.ui:97 resources/ui/gtk4/energize-b.ui:134
|
||||
#: resources/ui/gtk4/pixel-wheel.ui:51 resources/ui/gtk4/pixel-wheel.ui:97
|
||||
#: resources/ui/gtk4/pixel-wheel.ui:143 resources/ui/gtk4/glide.ui:51
|
||||
#: resources/ui/gtk4/glide.ui:97 resources/ui/gtk4/glide.ui:143
|
||||
#: resources/ui/gtk4/glide.ui:189 resources/ui/gtk4/glide.ui:235
|
||||
#: resources/ui/gtk4/apparition.ui:50 resources/ui/gtk4/apparition.ui:96
|
||||
#: resources/ui/gtk4/apparition.ui:142 resources/ui/gtk4/apparition.ui:188
|
||||
#: resources/ui/gtk4/apparition.ui:234 resources/ui/gtk4/portal.ui:51
|
||||
#: resources/ui/gtk4/portal.ui:97 resources/ui/gtk4/portal.ui:143
|
||||
#: resources/ui/gtk4/portal.ui:189 resources/ui/gtk4/portal.ui:226
|
||||
#: resources/ui/gtk4/incinerate.ui:51 resources/ui/gtk4/incinerate.ui:97
|
||||
#: resources/ui/gtk4/incinerate.ui:143 resources/ui/gtk4/incinerate.ui:198
|
||||
#: resources/ui/gtk4/incinerate.ui:235 resources/ui/gtk4/hexagon.ui:51
|
||||
#: resources/ui/gtk4/hexagon.ui:97 resources/ui/gtk4/hexagon.ui:143
|
||||
#: resources/ui/gtk4/hexagon.ui:180 resources/ui/gtk4/hexagon.ui:217
|
||||
#: resources/ui/gtk4/hexagon.ui:272 resources/ui/gtk4/fire.ui:74
|
||||
#: resources/ui/gtk4/fire.ui:120 resources/ui/gtk4/fire.ui:166
|
||||
#: resources/ui/gtk4/fire.ui:221 resources/ui/gtk4/fire.ui:280
|
||||
#: resources/ui/gtk4/pixel-wipe.ui:51 resources/ui/gtk4/pixel-wipe.ui:97
|
||||
#: resources/ui/gtk4/snap.ui:51 resources/ui/gtk4/snap.ui:97
|
||||
#: resources/ui/gtk4/snap.ui:134 resources/ui/gtk4/energize-a.ui:51
|
||||
#: resources/ui/gtk4/energize-a.ui:97 resources/ui/gtk4/energize-a.ui:134
|
||||
#: resources/ui/gtk4/pixelate.ui:51 resources/ui/gtk4/pixelate.ui:97
|
||||
#: resources/ui/gtk4/pixelate.ui:143 resources/ui/gtk4/tv.ui:51
|
||||
#: resources/ui/gtk4/tv.ui:88 resources/ui/gtk3/tv-glitch.ui:78
|
||||
#: resources/ui/gtk3/tv-glitch.ui:123 resources/ui/gtk3/tv-glitch.ui:168
|
||||
#: resources/ui/gtk3/tv-glitch.ui:213 resources/ui/gtk3/tv-glitch.ui:255
|
||||
#: resources/ui/gtk3/glitch.ui:78 resources/ui/gtk3/glitch.ui:123
|
||||
#: resources/ui/gtk3/glitch.ui:168 resources/ui/gtk3/glitch.ui:213
|
||||
#: resources/ui/gtk3/glitch.ui:255 resources/ui/gtk3/doom.ui:78
|
||||
#: resources/ui/gtk3/doom.ui:123 resources/ui/gtk3/doom.ui:168
|
||||
#: resources/ui/gtk3/doom.ui:213 resources/ui/gtk3/wisps.ui:64
|
||||
#: resources/ui/gtk3/wisps.ui:109 resources/ui/gtk3/wisps.ui:159
|
||||
#: resources/ui/gtk3/energize-b.ui:64 resources/ui/gtk3/energize-b.ui:109
|
||||
#: resources/ui/gtk3/energize-b.ui:151 resources/ui/gtk3/pixel-wheel.ui:71
|
||||
#: resources/ui/gtk3/pixel-wheel.ui:116 resources/ui/gtk3/pixel-wheel.ui:161
|
||||
#: resources/ui/gtk3/glide.ui:85 resources/ui/gtk3/glide.ui:130
|
||||
#: resources/ui/gtk3/glide.ui:175 resources/ui/gtk3/glide.ui:220
|
||||
#: resources/ui/gtk3/glide.ui:265 resources/ui/gtk3/apparition.ui:85
|
||||
#: resources/ui/gtk3/apparition.ui:130 resources/ui/gtk3/apparition.ui:175
|
||||
#: resources/ui/gtk3/apparition.ui:220 resources/ui/gtk3/apparition.ui:265
|
||||
#: resources/ui/gtk3/portal.ui:78 resources/ui/gtk3/portal.ui:123
|
||||
#: resources/ui/gtk3/portal.ui:168 resources/ui/gtk3/portal.ui:213
|
||||
#: resources/ui/gtk3/portal.ui:255 resources/ui/gtk3/incinerate.ui:71
|
||||
#: resources/ui/gtk3/incinerate.ui:116 resources/ui/gtk3/incinerate.ui:161
|
||||
#: resources/ui/gtk3/incinerate.ui:220 resources/ui/gtk3/incinerate.ui:262
|
||||
#: resources/ui/gtk3/hexagon.ui:71 resources/ui/gtk3/hexagon.ui:116
|
||||
#: resources/ui/gtk3/hexagon.ui:161 resources/ui/gtk3/hexagon.ui:203
|
||||
#: resources/ui/gtk3/hexagon.ui:245 resources/ui/gtk3/hexagon.ui:304
|
||||
#: resources/ui/gtk3/fire.ui:110 resources/ui/gtk3/fire.ui:154
|
||||
#: resources/ui/gtk3/fire.ui:198 resources/ui/gtk3/fire.ui:257
|
||||
#: resources/ui/gtk3/fire.ui:321 resources/ui/gtk3/pixel-wipe.ui:71
|
||||
#: resources/ui/gtk3/pixel-wipe.ui:116 resources/ui/gtk3/energize-a.ui:64
|
||||
#: resources/ui/gtk3/energize-a.ui:109 resources/ui/gtk3/energize-a.ui:151
|
||||
#: resources/ui/gtk3/pixelate.ui:71 resources/ui/gtk3/pixelate.ui:116
|
||||
#: resources/ui/gtk3/pixelate.ui:161 resources/ui/gtk3/tv.ui:57
|
||||
#: resources/ui/gtk3/tv.ui:99 resources/ui/adw/broken-glass.ui:37
|
||||
#: resources/ui/adw/broken-glass.ui:70 resources/ui/adw/broken-glass.ui:103
|
||||
#: resources/ui/adw/broken-glass.ui:136 resources/ui/adw/broken-glass.ui:159
|
||||
#: resources/ui/adw/tv-glitch.ui:36 resources/ui/adw/tv-glitch.ui:69
|
||||
#: resources/ui/adw/tv-glitch.ui:102 resources/ui/adw/tv-glitch.ui:135
|
||||
#: resources/ui/adw/tv-glitch.ui:160 resources/ui/adw/glitch.ui:36
|
||||
#: resources/ui/adw/glitch.ui:69 resources/ui/adw/glitch.ui:102
|
||||
#: resources/ui/adw/glitch.ui:135 resources/ui/adw/glitch.ui:160
|
||||
#: resources/ui/adw/matrix.ui:36 resources/ui/adw/matrix.ui:69
|
||||
#: resources/ui/adw/matrix.ui:102 resources/ui/adw/matrix.ui:135
|
||||
#: resources/ui/adw/matrix.ui:160 resources/ui/adw/matrix.ui:185
|
||||
#: resources/ui/adw/doom.ui:36 resources/ui/adw/doom.ui:69
|
||||
#: resources/ui/adw/doom.ui:102 resources/ui/adw/doom.ui:135
|
||||
#: resources/ui/adw/paint-brush.ui:36 resources/ui/adw/paint-brush.ui:69
|
||||
#: resources/ui/adw/trex.ui:36 resources/ui/adw/trex.ui:69
|
||||
#: resources/ui/adw/trex.ui:102 resources/ui/adw/trex.ui:135
|
||||
#: resources/ui/adw/trex.ui:160 resources/ui/adw/wisps.ui:36
|
||||
#: resources/ui/adw/wisps.ui:69 resources/ui/adw/wisps.ui:110
|
||||
#: resources/ui/adw/energize-b.ui:37 resources/ui/adw/energize-b.ui:70
|
||||
#: resources/ui/adw/energize-b.ui:95 resources/ui/adw/pixel-wheel.ui:36
|
||||
#: resources/ui/adw/pixel-wheel.ui:69 resources/ui/adw/pixel-wheel.ui:102
|
||||
#: resources/ui/adw/glide.ui:36 resources/ui/adw/glide.ui:69
|
||||
#: resources/ui/adw/glide.ui:102 resources/ui/adw/glide.ui:135
|
||||
#: resources/ui/adw/glide.ui:168 resources/ui/adw/apparition.ui:37
|
||||
#: resources/ui/adw/apparition.ui:70 resources/ui/adw/apparition.ui:103
|
||||
#: resources/ui/adw/apparition.ui:136 resources/ui/adw/apparition.ui:169
|
||||
#: resources/ui/adw/portal.ui:36 resources/ui/adw/portal.ui:69
|
||||
#: resources/ui/adw/portal.ui:102 resources/ui/adw/portal.ui:135
|
||||
#: resources/ui/adw/portal.ui:160 resources/ui/adw/incinerate.ui:36
|
||||
#: resources/ui/adw/incinerate.ui:69 resources/ui/adw/incinerate.ui:102
|
||||
#: resources/ui/adw/incinerate.ui:125 resources/ui/adw/incinerate.ui:150
|
||||
#: resources/ui/adw/hexagon.ui:36 resources/ui/adw/hexagon.ui:69
|
||||
#: resources/ui/adw/hexagon.ui:102 resources/ui/adw/hexagon.ui:127
|
||||
#: resources/ui/adw/hexagon.ui:152 resources/ui/adw/hexagon.ui:175
|
||||
#: resources/ui/adw/fire.ui:52 resources/ui/adw/fire.ui:85
|
||||
#: resources/ui/adw/fire.ui:118 resources/ui/adw/fire.ui:141
|
||||
#: resources/ui/adw/fire.ui:199 resources/ui/adw/pixel-wipe.ui:36
|
||||
#: resources/ui/adw/pixel-wipe.ui:69 resources/ui/adw/snap.ui:36
|
||||
#: resources/ui/adw/snap.ui:69 resources/ui/adw/snap.ui:94
|
||||
#: resources/ui/adw/energize-a.ui:36 resources/ui/adw/energize-a.ui:69
|
||||
#: resources/ui/adw/energize-a.ui:94 resources/ui/adw/pixelate.ui:36
|
||||
#: resources/ui/adw/pixelate.ui:69 resources/ui/adw/pixelate.ui:102
|
||||
#: resources/ui/adw/tv.ui:36 resources/ui/adw/tv.ui:61
|
||||
msgid "Reset to Default Value"
|
||||
msgstr "Visszaállítás az alapértelmezett értékre"
|
||||
|
||||
#: resources/ui/gtk4/broken-glass.ui:68 resources/ui/gtk4/tv-glitch.ui:69
|
||||
#: resources/ui/gtk4/glitch.ui:69 resources/ui/gtk4/matrix.ui:69
|
||||
#: resources/ui/gtk4/wisps.ui:69 resources/ui/gtk4/energize-b.ui:69
|
||||
#: resources/ui/gtk4/glide.ui:69 resources/ui/gtk4/incinerate.ui:69
|
||||
#: resources/ui/gtk4/hexagon.ui:69 resources/ui/gtk4/fire.ui:92
|
||||
#: resources/ui/gtk4/snap.ui:69 resources/ui/gtk4/energize-a.ui:69
|
||||
#: resources/ui/gtk3/tv-glitch.ui:97 resources/ui/gtk3/glitch.ui:97
|
||||
#: resources/ui/gtk3/wisps.ui:83 resources/ui/gtk3/energize-b.ui:83
|
||||
#: resources/ui/gtk3/glide.ui:104 resources/ui/gtk3/incinerate.ui:90
|
||||
#: resources/ui/gtk3/hexagon.ui:90 resources/ui/gtk3/fire.ui:128
|
||||
#: resources/ui/gtk3/energize-a.ui:83 resources/ui/adw/broken-glass.ui:48
|
||||
#: resources/ui/adw/tv-glitch.ui:47 resources/ui/adw/glitch.ui:47
|
||||
#: resources/ui/adw/matrix.ui:47 resources/ui/adw/wisps.ui:47
|
||||
#: resources/ui/adw/energize-b.ui:48 resources/ui/adw/glide.ui:47
|
||||
#: resources/ui/adw/incinerate.ui:47 resources/ui/adw/hexagon.ui:47
|
||||
#: resources/ui/adw/fire.ui:63 resources/ui/adw/snap.ui:47
|
||||
#: resources/ui/adw/energize-a.ui:47
|
||||
msgid "Scale"
|
||||
msgstr "Skála"
|
||||
|
||||
#: resources/ui/gtk4/broken-glass.ui:114 resources/ui/adw/broken-glass.ui:81
|
||||
msgid "Gravity"
|
||||
msgstr "Gravitáció"
|
||||
|
||||
#: resources/ui/gtk4/broken-glass.ui:160 resources/ui/adw/broken-glass.ui:114
|
||||
msgid "Blow Force"
|
||||
msgstr "Fúvóerő"
|
||||
|
||||
#: resources/ui/gtk4/broken-glass.ui:210 resources/ui/adw/broken-glass.ui:147
|
||||
msgid "Shatter From Pointer Location"
|
||||
msgstr "Összetörés a mutató pozíciójáról"
|
||||
|
||||
#: resources/ui/gtk4/broken-glass.ui:219 resources/ui/adw/broken-glass.ui:148
|
||||
msgid ""
|
||||
"The shards will fly away from where your mouse pointer was when closing the "
|
||||
"window."
|
||||
msgstr ""
|
||||
"A szilánkok onnan fognak elrepülni, ahol a mutató tartózkodott az ablak "
|
||||
"bezárásakor."
|
||||
|
||||
#: resources/ui/gtk4/tv-glitch.ui:115 resources/ui/gtk4/glitch.ui:115
|
||||
#: resources/ui/gtk3/tv-glitch.ui:142 resources/ui/gtk3/glitch.ui:142
|
||||
#: resources/ui/adw/tv-glitch.ui:80 resources/ui/adw/glitch.ui:80
|
||||
msgid "Strength"
|
||||
msgstr "Erő"
|
||||
|
||||
#: 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/gtk3/glitch.ui:187 resources/ui/gtk3/fire.ui:172
|
||||
#: resources/ui/adw/tv-glitch.ui:113 resources/ui/adw/glitch.ui:113
|
||||
#: resources/ui/adw/fire.ui:96
|
||||
msgid "Speed"
|
||||
msgstr "Gyorsaság"
|
||||
|
||||
#: resources/ui/gtk4/tv-glitch.ui:207 resources/ui/gtk4/glitch.ui:207
|
||||
#: resources/ui/gtk4/wisps.ui:115 resources/ui/gtk4/energize-b.ui:115
|
||||
#: resources/ui/gtk4/portal.ui:207 resources/ui/gtk4/incinerate.ui:216
|
||||
#: resources/ui/gtk4/snap.ui:115 resources/ui/gtk4/energize-a.ui:115
|
||||
#: resources/ui/gtk4/tv.ui:69 resources/ui/gtk3/tv-glitch.ui:231
|
||||
#: resources/ui/gtk3/glitch.ui:231 resources/ui/gtk3/wisps.ui:129
|
||||
#: resources/ui/gtk3/energize-b.ui:127 resources/ui/gtk3/portal.ui:231
|
||||
#: resources/ui/gtk3/incinerate.ui:238 resources/ui/gtk3/energize-a.ui:127
|
||||
#: resources/ui/gtk3/tv.ui:75 resources/ui/adw/tv-glitch.ui:146
|
||||
#: resources/ui/adw/glitch.ui:146 resources/ui/adw/wisps.ui:80
|
||||
#: resources/ui/adw/energize-b.ui:81 resources/ui/adw/portal.ui:146
|
||||
#: resources/ui/adw/incinerate.ui:136 resources/ui/adw/snap.ui:80
|
||||
#: resources/ui/adw/energize-a.ui:80 resources/ui/adw/tv.ui:47
|
||||
msgid "Color"
|
||||
msgstr "Szín"
|
||||
|
||||
#: resources/ui/gtk4/matrix.ui:115 resources/ui/gtk4/apparition.ui:68
|
||||
#: resources/ui/gtk3/apparition.ui:104 resources/ui/adw/matrix.ui:80
|
||||
#: resources/ui/adw/apparition.ui:48
|
||||
msgid "Randomness"
|
||||
msgstr "Véletlenszerűség"
|
||||
|
||||
#: resources/ui/gtk4/matrix.ui:161 resources/ui/adw/matrix.ui:113
|
||||
msgid "Vertical Overshooting"
|
||||
msgstr "Függőleges túlcsúszás"
|
||||
|
||||
#: resources/ui/gtk4/matrix.ui:207 resources/ui/adw/matrix.ui:146
|
||||
msgid "Trail Color"
|
||||
msgstr "Nyom színe"
|
||||
|
||||
#: resources/ui/gtk4/matrix.ui:244 resources/ui/adw/matrix.ui:171
|
||||
msgid "Tip Color"
|
||||
msgstr "Csúcs színe"
|
||||
|
||||
#: resources/ui/gtk4/doom.ui:68 resources/ui/gtk3/doom.ui:97
|
||||
#: resources/ui/adw/doom.ui:47
|
||||
msgid "Horizontal Scale"
|
||||
msgstr "Vízszintes skála"
|
||||
|
||||
#: resources/ui/gtk4/doom.ui:114 resources/ui/gtk3/doom.ui:142
|
||||
#: resources/ui/adw/doom.ui:80
|
||||
msgid "Vertical Scale"
|
||||
msgstr "Függőleges skála"
|
||||
|
||||
#: resources/ui/gtk4/doom.ui:160 resources/ui/gtk4/pixel-wheel.ui:115
|
||||
#: resources/ui/gtk4/pixel-wipe.ui:69 resources/ui/gtk4/pixelate.ui:115
|
||||
#: resources/ui/gtk3/doom.ui:187 resources/ui/gtk3/pixel-wheel.ui:135
|
||||
#: resources/ui/gtk3/pixel-wipe.ui:90 resources/ui/gtk3/pixelate.ui:135
|
||||
#: resources/ui/adw/doom.ui:113 resources/ui/adw/pixel-wheel.ui:80
|
||||
#: resources/ui/adw/pixel-wipe.ui:47 resources/ui/adw/pixelate.ui:80
|
||||
msgid "Pixel Size"
|
||||
msgstr "Pixelméret"
|
||||
|
||||
#: resources/ui/gtk4/paint-brush.ui:69 resources/ui/adw/paint-brush.ui:47
|
||||
msgid "Brush Size"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/trex.ui:69 resources/ui/adw/trex.ui:47
|
||||
msgid "Claw Scratch Scale"
|
||||
msgstr "Korom karmolás skálája"
|
||||
|
||||
#: resources/ui/gtk4/trex.ui:115 resources/ui/adw/trex.ui:80
|
||||
msgid "Claw Scratch Count"
|
||||
msgstr "Korom karmolás száma"
|
||||
|
||||
#: resources/ui/gtk4/trex.ui:161 resources/ui/adw/trex.ui:113
|
||||
msgid "Warp Effect"
|
||||
msgstr "Eltorzító hatás"
|
||||
|
||||
#: resources/ui/gtk4/trex.ui:207 resources/ui/adw/trex.ui:146
|
||||
msgid "Flash Color"
|
||||
msgstr "Villanás színe"
|
||||
|
||||
#: resources/ui/gtk4/pixel-wheel.ui:69 resources/ui/gtk3/pixel-wheel.ui:90
|
||||
#: resources/ui/adw/pixel-wheel.ui:47
|
||||
msgid "Spoke Count"
|
||||
msgstr "Sugár száma"
|
||||
|
||||
#: resources/ui/gtk4/glide.ui:115 resources/ui/gtk3/glide.ui:149
|
||||
#: resources/ui/adw/glide.ui:80
|
||||
msgid "Squish"
|
||||
msgstr "Összenyomás"
|
||||
|
||||
#: resources/ui/gtk4/glide.ui:161 resources/ui/gtk3/glide.ui:194
|
||||
#: resources/ui/adw/glide.ui:113
|
||||
msgid "Tilt"
|
||||
msgstr "Billenés"
|
||||
|
||||
#: resources/ui/gtk4/glide.ui:207 resources/ui/gtk3/glide.ui:239
|
||||
#: resources/ui/adw/glide.ui:146
|
||||
msgid "Shift"
|
||||
msgstr "Elmozdítás"
|
||||
|
||||
#: resources/ui/gtk4/apparition.ui:114 resources/ui/gtk3/apparition.ui:149
|
||||
#: resources/ui/adw/apparition.ui:81
|
||||
msgid "Twirl Intensity"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/apparition.ui:160 resources/ui/gtk3/apparition.ui:194
|
||||
#: resources/ui/adw/apparition.ui:114
|
||||
msgid "Shake Intensity"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/apparition.ui:206 resources/ui/gtk3/apparition.ui:239
|
||||
#: resources/ui/adw/apparition.ui:147
|
||||
msgid "Suction Intensity"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/portal.ui:69 resources/ui/gtk3/portal.ui:142
|
||||
#: resources/ui/adw/portal.ui:80
|
||||
msgid "Whirling"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/portal.ui:115 resources/ui/gtk3/portal.ui:97
|
||||
#: resources/ui/adw/portal.ui:47
|
||||
msgid "Rotation Speed"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/portal.ui:161 resources/ui/gtk3/portal.ui:187
|
||||
#: resources/ui/adw/portal.ui:113
|
||||
msgid "Details"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/incinerate.ui:115 resources/ui/gtk3/incinerate.ui:135
|
||||
#: resources/ui/adw/incinerate.ui:80
|
||||
msgid "Turbulence"
|
||||
msgstr "Légörvény"
|
||||
|
||||
#: resources/ui/gtk4/incinerate.ui:165 resources/ui/gtk3/incinerate.ui:183
|
||||
#: resources/ui/adw/incinerate.ui:113
|
||||
msgid "Start at Pointer"
|
||||
msgstr "Mutatónál kezdje"
|
||||
|
||||
#: resources/ui/gtk4/incinerate.ui:174 resources/ui/gtk3/incinerate.ui:192
|
||||
#: resources/ui/adw/incinerate.ui:114
|
||||
msgid "If disabled, a random location will be chosen."
|
||||
msgstr "Ha ki van kapcsolva, egy véletlenszerű hely lesz választva."
|
||||
|
||||
#: resources/ui/gtk4/hexagon.ui:115 resources/ui/gtk3/hexagon.ui:135
|
||||
#: resources/ui/adw/hexagon.ui:80
|
||||
msgid "Mesh Line Width"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/hexagon.ui:161 resources/ui/gtk3/hexagon.ui:179
|
||||
#: resources/ui/adw/hexagon.ui:113
|
||||
msgid "Line Color"
|
||||
msgstr "Vonal színe"
|
||||
|
||||
#: resources/ui/gtk4/hexagon.ui:198 resources/ui/gtk3/hexagon.ui:221
|
||||
#: resources/ui/adw/hexagon.ui:138
|
||||
msgid "Glow Color"
|
||||
msgstr "Világítás színe"
|
||||
|
||||
#: resources/ui/gtk4/hexagon.ui:239 resources/ui/gtk3/hexagon.ui:267
|
||||
#: resources/ui/adw/hexagon.ui:163
|
||||
msgid "Additive Blending"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/hexagon.ui:248 resources/ui/gtk3/hexagon.ui:276
|
||||
#: resources/ui/adw/hexagon.ui:164
|
||||
msgid "You may want to enable this for dark window themes."
|
||||
msgstr "Lehet, hogy szeretné bekapcsolni ezt a sötét témájú ablaktémákoknak."
|
||||
|
||||
#: resources/ui/gtk4/fire.ui:22 resources/ui/gtk3/fire.ui:44
|
||||
#: resources/ui/adw/fire.ui:14
|
||||
msgid "Presets"
|
||||
msgstr "Sablonok"
|
||||
|
||||
#: resources/ui/gtk4/fire.ui:31 resources/ui/gtk3/fire.ui:58
|
||||
#: resources/ui/adw/fire.ui:19
|
||||
msgid "Choose a Preset"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/fire.ui:188 resources/ui/gtk3/fire.ui:220
|
||||
#: resources/ui/adw/fire.ui:129
|
||||
msgid "3D Noise"
|
||||
msgstr "3D zaj"
|
||||
|
||||
#: resources/ui/gtk4/fire.ui:197 resources/ui/gtk3/fire.ui:229
|
||||
#: resources/ui/adw/fire.ui:130
|
||||
msgid "Creates a more dynamic fire but requires more GPU power."
|
||||
msgstr "Egy dinamikusabb tüzet készít, de több GPU erőt igényel."
|
||||
|
||||
#: resources/ui/gtk4/fire.ui:239 resources/ui/gtk3/fire.ui:276
|
||||
#: resources/ui/adw/fire.ui:152
|
||||
msgid "Gradient"
|
||||
msgstr "Gradiens"
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:91 resources/ui/gtk3/prefs.ui:133
|
||||
#: resources/ui/adw/prefs.ui:224
|
||||
msgid "Effect Selection"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:101 resources/ui/gtk3/prefs.ui:143
|
||||
#: resources/ui/adw/prefs.ui:225
|
||||
msgid "If multiple are selected, one is chosen randomly."
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:118 resources/ui/gtk3/prefs.ui:160
|
||||
#: resources/ui/adw/prefs.ui:236
|
||||
msgid "All"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:124 resources/ui/gtk3/prefs.ui:166
|
||||
#: resources/ui/adw/prefs.ui:242
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:168 resources/ui/gtk3/prefs.ui:208
|
||||
#: resources/ui/adw/prefs.ui:65
|
||||
msgid "Effect Profile Constraints"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:178 resources/ui/gtk3/prefs.ui:218
|
||||
#: resources/ui/adw/prefs.ui:66
|
||||
msgid "Define when the current effect settings should be used."
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:202 resources/ui/gtk3/prefs.ui:242
|
||||
#: resources/ui/adw/prefs.ui:70
|
||||
msgid "Application"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:220 resources/ui/gtk4/prefs.ui:255
|
||||
#: resources/ui/gtk4/prefs.ui:284 resources/ui/gtk4/prefs.ui:313
|
||||
#: resources/ui/gtk4/prefs.ui:342 resources/ui/gtk4/prefs.ui:371
|
||||
#: resources/ui/gtk3/prefs.ui:260 resources/ui/gtk3/prefs.ui:300
|
||||
#: resources/ui/gtk3/prefs.ui:329 resources/ui/gtk3/prefs.ui:358
|
||||
#: resources/ui/gtk3/prefs.ui:387 resources/ui/gtk3/prefs.ui:416
|
||||
#: resources/ui/adw/prefs.ui:81 resources/ui/adw/prefs.ui:102
|
||||
#: resources/ui/adw/prefs.ui:117 resources/ui/adw/prefs.ui:132
|
||||
#: resources/ui/adw/prefs.ui:147 resources/ui/adw/prefs.ui:162
|
||||
msgid "Any"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:244 resources/ui/gtk3/prefs.ui:289
|
||||
#: resources/ui/adw/prefs.ui:98
|
||||
msgid "Animation Type"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:273 resources/ui/gtk3/prefs.ui:318
|
||||
#: resources/ui/adw/prefs.ui:113
|
||||
msgid "Window Type"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:302 resources/ui/gtk3/prefs.ui:347
|
||||
#: resources/ui/adw/prefs.ui:128
|
||||
msgid "Color Scheme"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:331 resources/ui/gtk3/prefs.ui:376
|
||||
#: resources/ui/adw/prefs.ui:143
|
||||
msgid "Power Mode"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:360 resources/ui/gtk3/prefs.ui:405
|
||||
#: resources/ui/adw/prefs.ui:158
|
||||
msgid "Power Profile"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:392 resources/ui/gtk3/prefs.ui:437
|
||||
#: resources/ui/adw/prefs.ui:179
|
||||
msgid "Advanced Profile Options"
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:432 resources/ui/gtk3/prefs.ui:477
|
||||
#: resources/ui/adw/prefs.ui:184
|
||||
msgid "Use this profile even if there are better matching profiles."
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/prefs.ui:464 resources/ui/gtk3/prefs.ui:509
|
||||
#: resources/ui/adw/prefs.ui:204
|
||||
msgid "Delete this Profile..."
|
||||
msgstr ""
|
||||
|
||||
#: resources/ui/gtk4/pixelate.ui:69 resources/ui/gtk3/pixelate.ui:90
|
||||
#: resources/ui/adw/pixelate.ui:47
|
||||
msgid "Noise"
|
||||
msgstr "Zaj"
|
||||
|
||||
#~ msgid "Effects"
|
||||
#~ msgstr "Hatások"
|
||||
|
||||
#~ msgid "Use this effect when opening windows"
|
||||
#~ msgstr "Használja ezt a hatást az ablakok megnyitásakor"
|
||||
|
||||
#~ msgid "Use this effect when closing windows"
|
||||
#~ msgstr "Használja ezt a hatást az ablakok bezárásakor"
|
||||
|
||||
#~ msgid "General Options"
|
||||
#~ msgstr "Általános opciók"
|
||||
|
||||
#~ msgid "Welcome to Burn-My-Windows!"
|
||||
#~ msgstr "Üdvözöljük a Burn-My-Windowsban!"
|
||||
|
||||
#~ msgid "If you like this extension, recommend it to your friends :)"
|
||||
#~ msgstr "Ha tetszik önnek ez a bővítmény, ajánlja barátainak :)"
|
||||
|
||||
#~ msgid "Open Window Animation"
|
||||
#~ msgstr "Megnyitott ablak animációja"
|
||||
@@ -1,82 +0,0 @@
|
||||
{
|
||||
"gold": [
|
||||
{
|
||||
"name": "D3vil0p3r",
|
||||
"url": "https://github.com/D3vil0p3r"
|
||||
},
|
||||
{
|
||||
"name": "Maxence Sebald",
|
||||
"url": ""
|
||||
},
|
||||
{
|
||||
"name": "Dennis ten Hoove",
|
||||
"url": "https://github.com/dennis1248"
|
||||
}
|
||||
],
|
||||
"silver": [
|
||||
{
|
||||
"name": "@danielheadbang",
|
||||
"url": "https://github.com/danielheadbang"
|
||||
},
|
||||
{
|
||||
"name": "@MRR-dev",
|
||||
"url": "https://github.com/MRR-dev"
|
||||
},
|
||||
{
|
||||
"name": "Jorge Castro",
|
||||
"url": "https://github.com/castrojo"
|
||||
}
|
||||
],
|
||||
"bronze": [
|
||||
{
|
||||
"name": "@vlazic",
|
||||
"url": "https://github.com/vlazic"
|
||||
},
|
||||
{
|
||||
"name": "Angel Brielez",
|
||||
"url": "https://github.com/AngelBrielez"
|
||||
}
|
||||
],
|
||||
"past": [
|
||||
{
|
||||
"name": "@taconomix",
|
||||
"url": "https://github.com/taconomix"
|
||||
},
|
||||
{
|
||||
"name": "@enolive",
|
||||
"url": "https://github.com/enolive"
|
||||
},
|
||||
{
|
||||
"name": "@Aggraxis",
|
||||
"url": "https://github.com/Aggraxis"
|
||||
},
|
||||
{
|
||||
"name": "tj3k",
|
||||
"url": "https://twitter.com/tjiiik"
|
||||
},
|
||||
{
|
||||
"name": "@wolfyrion",
|
||||
"url": "https://github.com/wolfyrion"
|
||||
},
|
||||
{
|
||||
"name": "@MrTomRod",
|
||||
"url": "https://github.com/MrTomRod"
|
||||
},
|
||||
{
|
||||
"name": "Pouhiou",
|
||||
"url": ""
|
||||
},
|
||||
{
|
||||
"name": "DAPREMONT Christophe",
|
||||
"url": ""
|
||||
},
|
||||
{
|
||||
"name": "@manero6",
|
||||
"url": "https://github.com/manero6"
|
||||
},
|
||||
{
|
||||
"name": "@RickStanley",
|
||||
"url": "https://github.com/RickStanley"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,198 +1,11 @@
|
||||
[
|
||||
{
|
||||
"Turkish": [
|
||||
[
|
||||
"tcreeper.earth@gmail.com",
|
||||
"TCr3",
|
||||
24
|
||||
],
|
||||
[
|
||||
"muhaaliss@pm.me",
|
||||
"Muha Aliss",
|
||||
59
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Lithuanian": [
|
||||
[
|
||||
"hazap@hotmail.com",
|
||||
"Moo",
|
||||
50
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"German": [
|
||||
[
|
||||
"juri26@outlook.de",
|
||||
"jagfwajgf",
|
||||
1
|
||||
],
|
||||
[
|
||||
"atalanttore@googlemail.com",
|
||||
"Ettore Atalan",
|
||||
2
|
||||
],
|
||||
[
|
||||
"code@simonschneegans.de",
|
||||
"Simon Schneegans",
|
||||
92
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Esperanto": [
|
||||
[
|
||||
"phlostically@mailinator.com",
|
||||
"phlostically",
|
||||
81
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Russian": [
|
||||
[
|
||||
"sergei@racingrebel.com",
|
||||
"\u041c\u0438\u0441\u0442\u0435\u0440 \u041f\u0435\u0440\u0435\u0432\u043e\u0434",
|
||||
11
|
||||
],
|
||||
[
|
||||
"lenemter@gmail.com",
|
||||
"lenemter",
|
||||
16
|
||||
],
|
||||
[
|
||||
"ddaudix@gmail.com",
|
||||
"Daudix UFO",
|
||||
33
|
||||
],
|
||||
[
|
||||
"eg.ermakov2016@yandex.ru",
|
||||
"\u0415\u0433\u043e\u0440 \u0415\u0440\u043c\u0430\u043a\u043e\u0432",
|
||||
39
|
||||
],
|
||||
[
|
||||
"franigoyt@gmail.com",
|
||||
"ANIGO R. (AR)",
|
||||
56
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Romanian": [
|
||||
[
|
||||
"softexpert@gmail.com",
|
||||
"SoftExpert",
|
||||
101
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Ukrainian": [
|
||||
[
|
||||
"911us@duck.com",
|
||||
"Petro S.",
|
||||
52
|
||||
],
|
||||
[
|
||||
"yuridm@gmail.com",
|
||||
"\u042e\u0440\u0456\u0439 \u0414\u043c\u0438\u0442\u0440\u0435\u043d\u043a\u043e",
|
||||
53
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Japanese": [
|
||||
[
|
||||
"ryuichi.ya220@gmail.com",
|
||||
"Ryan Y",
|
||||
96
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Czech": [
|
||||
[
|
||||
"yuridm@gmail.com",
|
||||
"\u042e\u0440\u0456\u0439 \u0414\u043c\u0438\u0442\u0440\u0435\u043d\u043a\u043e",
|
||||
1
|
||||
],
|
||||
[
|
||||
"jose1711@gmail.com",
|
||||
"Jose Riha",
|
||||
4
|
||||
],
|
||||
[
|
||||
"jiri.doubravsky@gmail.com",
|
||||
"Ji\u0159\u00ed Doubravsk\u00fd",
|
||||
69
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Portuguese": [
|
||||
[
|
||||
"ssantos@web.de",
|
||||
"ssantos",
|
||||
1
|
||||
],
|
||||
[
|
||||
"dyegoaurelio@gmail.com",
|
||||
"dyegoaurelio",
|
||||
12
|
||||
],
|
||||
[
|
||||
"pedro.hvn.2018@gmail.com",
|
||||
"KrulesExGamer",
|
||||
78
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Hebrew": [
|
||||
[
|
||||
"hvusvvnkl12345@gmail.com",
|
||||
"\u05d9\u05d4\u05d5\u05d3\u05d4 \u05d0\u05dc\u05d9\u05e1\u05e3",
|
||||
38
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Polish": [
|
||||
[
|
||||
"sto@tutanota.de",
|
||||
"WaldiS",
|
||||
7
|
||||
],
|
||||
[
|
||||
"gnu.ewm@protonmail.com",
|
||||
"gnu-ewm",
|
||||
11
|
||||
],
|
||||
[
|
||||
"pwrzonca@gmail.com",
|
||||
"Pawe\u0142 Rzo\u0144ca",
|
||||
85
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Italian": [
|
||||
[
|
||||
"mario03@gmail.com",
|
||||
"Mario",
|
||||
1
|
||||
],
|
||||
[
|
||||
"albano_battistella@hotmail.com",
|
||||
"albanobattistella",
|
||||
104
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Arabic": [
|
||||
[
|
||||
"fawaz27000@hotmail.com",
|
||||
"fawaz006",
|
||||
68
|
||||
],
|
||||
[
|
||||
"dabsantamer@yahoo.com",
|
||||
"tamer dab",
|
||||
@@ -201,17 +14,12 @@
|
||||
[
|
||||
"yamen.malik2@gmail.com",
|
||||
"Yamen Malik",
|
||||
8
|
||||
7
|
||||
],
|
||||
[
|
||||
"hamzah.abusamak@gmail.com",
|
||||
"bonbonboi",
|
||||
8
|
||||
],
|
||||
[
|
||||
"fawaz27000@hotmail.com",
|
||||
"fawaz006",
|
||||
76
|
||||
5
|
||||
]
|
||||
]
|
||||
},
|
||||
@@ -220,125 +28,91 @@
|
||||
[
|
||||
"xxmn77@gmail.com",
|
||||
"X\u0259yyam Qocayev",
|
||||
76
|
||||
67
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Indonesian": [
|
||||
"Chinese (Simplified)": [
|
||||
[
|
||||
"randompsyduck@duck.com",
|
||||
"Sir-Ivysaur",
|
||||
87
|
||||
"aerowolf@tom.com",
|
||||
"aerowolf",
|
||||
103
|
||||
],
|
||||
[
|
||||
"poonsters6@gmail.com",
|
||||
"merelymyself",
|
||||
38
|
||||
],
|
||||
[
|
||||
"lyuutau@outlook.com",
|
||||
"\u5218\u97ec",
|
||||
34
|
||||
],
|
||||
[
|
||||
"coelacanthushex@gmail.com",
|
||||
"Celeste Liu",
|
||||
3
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Czech": [
|
||||
[
|
||||
"6325410@seznam.cz",
|
||||
"Miraficus",
|
||||
83
|
||||
],
|
||||
[
|
||||
"jiri.doubravsky@gmail.com",
|
||||
"Ji\u0159\u00ed Doubravsk\u00fd",
|
||||
60
|
||||
],
|
||||
[
|
||||
"jose1711@gmail.com",
|
||||
"Jose Riha",
|
||||
4
|
||||
],
|
||||
[
|
||||
"yuridm@gmail.com",
|
||||
"\u042e\u0440\u0456\u0439 \u0414\u043c\u0438\u0442\u0440\u0435\u043d\u043a\u043e",
|
||||
1
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Dutch": [
|
||||
[
|
||||
"vistausss@fastmail.com",
|
||||
"Heimen Stoffels",
|
||||
126
|
||||
],
|
||||
[
|
||||
"philip.goto@gmail.com",
|
||||
"Philip Goto",
|
||||
7
|
||||
],
|
||||
[
|
||||
"code@simonschneegans.de",
|
||||
"Simon Schneegans",
|
||||
1
|
||||
],
|
||||
[
|
||||
"vistausss@fastmail.com",
|
||||
"Heimen Stoffels",
|
||||
105
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Spanish": [
|
||||
[
|
||||
"jorgec2005@gmail.com",
|
||||
"Jorge C",
|
||||
5
|
||||
],
|
||||
[
|
||||
"dev.n47os@aleeas.com",
|
||||
"Ulices",
|
||||
6
|
||||
],
|
||||
[
|
||||
"fitojb@ubuntu.com",
|
||||
"Adolfo Jayme Barrientos",
|
||||
9
|
||||
],
|
||||
[
|
||||
"andres.segarra.aparicio@gmail.com",
|
||||
"Andres Segarra",
|
||||
10
|
||||
],
|
||||
[
|
||||
"fran-carro@hotmail.es",
|
||||
"gallegonovato",
|
||||
17
|
||||
],
|
||||
[
|
||||
"oscfdezdz@tuta.io",
|
||||
"\u00d3scar Fern\u00e1ndez D\u00edaz",
|
||||
69
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"French": [
|
||||
[
|
||||
"matshot03@gmail.com",
|
||||
"Mathis Chabrier",
|
||||
5
|
||||
],
|
||||
[
|
||||
"redxxiii@zaclys.net",
|
||||
"Reda",
|
||||
13
|
||||
],
|
||||
"English": [
|
||||
[
|
||||
"softexpert@gmail.com",
|
||||
"SoftExpert",
|
||||
17
|
||||
],
|
||||
[
|
||||
"mathieu.bousquet2@gmail.com",
|
||||
"Mathieu B.",
|
||||
28
|
||||
],
|
||||
[
|
||||
"theo.remon+weblate@uswery.eu",
|
||||
"Th\u00e9o Remon",
|
||||
30
|
||||
],
|
||||
[
|
||||
"bonnemainsnathan@gmail.com",
|
||||
"Nathan",
|
||||
42
|
||||
1
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Swedish": [
|
||||
"Esperanto": [
|
||||
[
|
||||
"obslsessed@duck.com",
|
||||
"obslsessed",
|
||||
5
|
||||
],
|
||||
[
|
||||
"droidbittin@gmail.com",
|
||||
"Luna Jernberg",
|
||||
10
|
||||
],
|
||||
[
|
||||
"swedishsailfishosuser@tutanota.com",
|
||||
"Kristoffer Grundstr\u00f6m",
|
||||
55
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Persian": [
|
||||
[
|
||||
"eshagh094@gmail.com",
|
||||
"Eshagh shahidani",
|
||||
"phlostically@mailinator.com",
|
||||
"phlostically",
|
||||
72
|
||||
]
|
||||
]
|
||||
@@ -348,7 +122,120 @@
|
||||
[
|
||||
"jiri.gronroos@iki.fi",
|
||||
"Jiri Gr\u00f6nroos",
|
||||
54
|
||||
47
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"French": [
|
||||
[
|
||||
"softexpert@gmail.com",
|
||||
"SoftExpert",
|
||||
52
|
||||
],
|
||||
[
|
||||
"bonnemainsnathan@gmail.com",
|
||||
"Nathan",
|
||||
38
|
||||
],
|
||||
[
|
||||
"mathieu.bousquet2@gmail.com",
|
||||
"Mathieu B.",
|
||||
26
|
||||
],
|
||||
[
|
||||
"theo.remon+weblate@uswery.eu",
|
||||
"Th\u00e9o Remon",
|
||||
22
|
||||
],
|
||||
[
|
||||
"redxxiii@zaclys.net",
|
||||
"Reda",
|
||||
10
|
||||
],
|
||||
[
|
||||
"brice.laurencin@gmail.com",
|
||||
"Brice Laurencin",
|
||||
7
|
||||
],
|
||||
[
|
||||
"matshot03@gmail.com",
|
||||
"Mathis Chabrier",
|
||||
2
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"German": [
|
||||
[
|
||||
"code@simonschneegans.de",
|
||||
"Simon Schneegans",
|
||||
122
|
||||
],
|
||||
[
|
||||
"atalanttore@googlemail.com",
|
||||
"Ettore Atalan",
|
||||
3
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Hebrew": [
|
||||
[
|
||||
"hvusvvnkl12345@gmail.com",
|
||||
"\u05d9\u05d4\u05d5\u05d3\u05d4 \u05d0\u05dc\u05d9\u05e1\u05e3",
|
||||
37
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Hungarian": [
|
||||
[
|
||||
"superh552@gmail.com",
|
||||
"KinteLiX",
|
||||
79
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Indonesian": [
|
||||
[
|
||||
"randompsyduck@duck.com",
|
||||
"Sir-Ivysaur",
|
||||
75
|
||||
],
|
||||
[
|
||||
"rezaalmanda27@gmail.com",
|
||||
"Reza Almanda",
|
||||
58
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Italian": [
|
||||
[
|
||||
"albano_battistella@hotmail.com",
|
||||
"albanobattistella",
|
||||
132
|
||||
],
|
||||
[
|
||||
"mceyes@protonmail.com",
|
||||
"Frankie McEyes",
|
||||
2
|
||||
],
|
||||
[
|
||||
"mario03@gmail.com",
|
||||
"Mario",
|
||||
1
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Japanese": [
|
||||
[
|
||||
"ryuichi.ya220@gmail.com",
|
||||
"Ryan Y",
|
||||
79
|
||||
]
|
||||
]
|
||||
},
|
||||
@@ -357,7 +244,149 @@
|
||||
[
|
||||
"darkcircle.0426@gmail.com",
|
||||
"Seong-ho Cho",
|
||||
74
|
||||
134
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Lithuanian": [
|
||||
[
|
||||
"hazap@hotmail.com",
|
||||
"Moo",
|
||||
43
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Norwegian Bokm\u00e5l": [
|
||||
[
|
||||
"epost@anotheragency.no",
|
||||
"Allan Nordh\u00f8y",
|
||||
44
|
||||
],
|
||||
[
|
||||
"code@simonschneegans.de",
|
||||
"Simon Schneegans",
|
||||
1
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Persian": [
|
||||
[
|
||||
"lijeyol367@nickolis.com",
|
||||
"lijeyol367",
|
||||
82
|
||||
],
|
||||
[
|
||||
"eshagh094@gmail.com",
|
||||
"Eshagh shahidani",
|
||||
65
|
||||
],
|
||||
[
|
||||
"dani.behzi@ubuntu.com",
|
||||
"Danial Behzadi",
|
||||
40
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Polish": [
|
||||
[
|
||||
"pwrzonca@gmail.com",
|
||||
"Pawe\u0142 Rzo\u0144ca",
|
||||
77
|
||||
],
|
||||
[
|
||||
"sto@tutanota.de",
|
||||
"WaldiS",
|
||||
38
|
||||
],
|
||||
[
|
||||
"gnu.ewm@protonmail.com",
|
||||
"Eryk Michalak",
|
||||
10
|
||||
],
|
||||
[
|
||||
"krzys.chorzempa@gmail.com",
|
||||
"Krzysztof Chorzempa",
|
||||
6
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Portuguese": [
|
||||
[
|
||||
"pedro.hvn.2018@gmail.com",
|
||||
"KrulesExGamer",
|
||||
70
|
||||
],
|
||||
[
|
||||
"ssantos@web.de",
|
||||
"ssantos",
|
||||
57
|
||||
],
|
||||
[
|
||||
"dyegoaurelio@gmail.com",
|
||||
"dyegoaurelio",
|
||||
8
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Portuguese (Brazil)": [
|
||||
[
|
||||
"mr-isaac@ig.com.br",
|
||||
"Isaac Dias",
|
||||
93
|
||||
],
|
||||
[
|
||||
"fefehex12@gmail.com",
|
||||
"Fernando Lopes",
|
||||
51
|
||||
],
|
||||
[
|
||||
"gutojusto22@gmail.com",
|
||||
"Gustavo",
|
||||
24
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Romanian": [
|
||||
[
|
||||
"softexpert@gmail.com",
|
||||
"SoftExpert",
|
||||
132
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Russian": [
|
||||
[
|
||||
"lenemter@gmail.com",
|
||||
"lenemter",
|
||||
49
|
||||
],
|
||||
[
|
||||
"franigoyt@gmail.com",
|
||||
"ANIGO R. (AR)",
|
||||
49
|
||||
],
|
||||
[
|
||||
"eg.ermakov2016@yandex.ru",
|
||||
"\u0415\u0433\u043e\u0440 \u0415\u0440\u043c\u0430\u043a\u043e\u0432",
|
||||
33
|
||||
],
|
||||
[
|
||||
"ddaudix@gmail.com",
|
||||
"Daudix UFO",
|
||||
31
|
||||
],
|
||||
[
|
||||
"sergei@racingrebel.com",
|
||||
"\u041c\u0438\u0441\u0442\u0435\u0440 \u041f\u0435\u0440\u0435\u0432\u043e\u0434",
|
||||
11
|
||||
]
|
||||
]
|
||||
},
|
||||
@@ -366,50 +395,108 @@
|
||||
[
|
||||
"jose1711@gmail.com",
|
||||
"Jose Riha",
|
||||
82
|
||||
128
|
||||
],
|
||||
[
|
||||
"salka.milan@googlemail.com",
|
||||
"Milan \u0160alka",
|
||||
12
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Chinese (Simplified)": [
|
||||
"Spanish": [
|
||||
[
|
||||
"coelacanthushex@gmail.com",
|
||||
"Celeste Liu",
|
||||
3
|
||||
"oscfdezdz@tuta.io",
|
||||
"\u00d3scar Fern\u00e1ndez D\u00edaz",
|
||||
60
|
||||
],
|
||||
[
|
||||
"ourmicroid@outlook.com",
|
||||
"joe",
|
||||
4
|
||||
],
|
||||
[
|
||||
"lyuutau@outlook.com",
|
||||
"\u5218\u97ec",
|
||||
35
|
||||
],
|
||||
[
|
||||
"poonsters6@gmail.com",
|
||||
"merelymyself",
|
||||
"hasecilu@tuta.io",
|
||||
"Ulices",
|
||||
39
|
||||
],
|
||||
[
|
||||
"aerowolf@tom.com",
|
||||
"aerowolf",
|
||||
49
|
||||
"fran-carro@hotmail.es",
|
||||
"gallegonovato",
|
||||
20
|
||||
],
|
||||
[
|
||||
"andres.segarra.aparicio@gmail.com",
|
||||
"Andres Segarra",
|
||||
10
|
||||
],
|
||||
[
|
||||
"fitojb@ubuntu.com",
|
||||
"Adolfo Jayme Barrientos",
|
||||
7
|
||||
],
|
||||
[
|
||||
"jorgec2005@gmail.com",
|
||||
"Jorge C",
|
||||
5
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Norwegian Bokm\u00e5l": [
|
||||
"Swedish": [
|
||||
[
|
||||
"code@simonschneegans.de",
|
||||
"Simon Schneegans",
|
||||
1
|
||||
"swedishsailfishosuser@tutanota.com",
|
||||
"Kristoffer Grundstr\u00f6m",
|
||||
50
|
||||
],
|
||||
[
|
||||
"epost@anotheragency.no",
|
||||
"Allan Nordh\u00f8y",
|
||||
47
|
||||
"droidbittin@gmail.com",
|
||||
"Luna Jernberg",
|
||||
9
|
||||
],
|
||||
[
|
||||
"obslsessed@duck.com",
|
||||
"obslsessed",
|
||||
5
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Turkish": [
|
||||
[
|
||||
"libreajans@gmail.com",
|
||||
"Sabri \u00dcnal",
|
||||
74
|
||||
],
|
||||
[
|
||||
"muhaaliss@pm.me",
|
||||
"Muha Aliss",
|
||||
52
|
||||
],
|
||||
[
|
||||
"tcreeper.earth@gmail.com",
|
||||
"TCr3",
|
||||
24
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"Ukrainian": [
|
||||
[
|
||||
"yuridm@gmail.com",
|
||||
"\u042e\u0440\u0456\u0439 \u0414\u043c\u0438\u0442\u0440\u0435\u043d\u043a\u043e",
|
||||
48
|
||||
],
|
||||
[
|
||||
"911us@duck.com",
|
||||
"Petro S.",
|
||||
44
|
||||
],
|
||||
[
|
||||
"cakestwix1@gmail.com",
|
||||
"CakesTwix",
|
||||
35
|
||||
],
|
||||
[
|
||||
"sergiy.goncharuk.1@gmail.com",
|
||||
"\u0421\u0435\u0440\u0433\u0456\u0439",
|
||||
6
|
||||
]
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
/*
|
||||
SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
|
||||
SPDX-License-Identifier: CC0-1.0
|
||||
*/
|
||||
|
||||
.pill-button {
|
||||
border-radius: 9999px;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
|
||||
SPDX-License-Identifier: CC0-1.0
|
||||
*/
|
||||
|
||||
row {
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.effect-row {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.effect-row-header,
|
||||
.effect-row list {
|
||||
padding: 8px;
|
||||
border: 0 solid @borders;
|
||||
border-bottom-width: 1px;
|
||||
}
|
||||
|
||||
.revealer-arrow {
|
||||
margin-right: 6px;
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
|
||||
SPDX-License-Identifier: CC0-1.0
|
||||
*/
|
||||
|
||||
/* These are only used if not using libadwaita */
|
||||
|
||||
.effect-row {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.effect-row-header,
|
||||
.effect-row list {
|
||||
padding: 8px;
|
||||
border: 0 solid @borders;
|
||||
border-bottom-width: 1px;
|
||||
}
|
||||
|
||||
.revealer-arrow {
|
||||
margin-right: 6px;
|
||||
transition: transform 250ms;
|
||||
}
|
||||
|
||||
.revealer-arrow.revealed {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
After Width: | Height: | Size: 955 KiB |
@@ -0,0 +1,45 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="16"
|
||||
height="16"
|
||||
version="1.1"
|
||||
id="svg859"
|
||||
sodipodi:docname="bmw-copy-effects-symbolic.svg"
|
||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs863" />
|
||||
<sodipodi:namedview
|
||||
id="namedview861"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
showgrid="true"
|
||||
inkscape:zoom="39.949625"
|
||||
inkscape:cx="3.1915194"
|
||||
inkscape:cy="6.7334801"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1163"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg859">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid963" />
|
||||
</sodipodi:namedview>
|
||||
<g
|
||||
fill="#222222"
|
||||
id="g951"
|
||||
transform="rotate(-90,8.5,8.5)">
|
||||
<path
|
||||
id="path949"
|
||||
d="M 11,5 H 10 C 9.742188,5 9.472656,5.128906 9.28125,5.3125 L 9,5.59375 V 0 H 7 V 5.59375 L 6.71875,5.3125 C 6.527344,5.128906 6.257812,5 6,5 H 5 V 6 C 5,6 5.089844,6.550781 5.28125,6.75 L 8,9.40625 10.71875,6.75 C 10.910156,6.550781 11,6.308594 11,6 Z m 0,0 M 6,2 H 3 C 2,2 2,3 2,3 v 10 c 0,0 0,1 1,1 h 11 c 1,0 1,-1 1,-1 v -3 c 0.14,0 0.28,0 0.41,-0.03 C 16.32,9.78 17,8.97 17,8 17,6.9 16.1,6 15,6 V 3 C 15,2 14,2 14,2 h -4 v 2 h 3 v 1 h -1 v 6 h 1 v 1 H 4 V 4 H 6 Z M 16,8 C 16,8.41 15.73,8.75 15.38,8.91 15.26,8.96 15.14,9 15,9 14.45,9 14,8.55 14,8 c 0,-0.55 0.45,-1 1,-1 0.55,0 1,0.45 1,1 z" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 11.574219 0.402344 l -2.574219 2.597656 l 3.984375 4.074219 l 2.648437 -2.671875 c 0.484376 -0.484375 0.425782 -1.515625 0 -1.941406 l -2.058593 -2.058594 c -0.4375 -0.4375002 -1.441407 -0.554688 -2 0 z m -3.574219 3.597656 l -8 8 v 4 h 4.058594 l 7.925781 -7.925781 z m 0 0" fill="#222222"/></svg>
|
||||
|
After Width: | Height: | Size: 436 B |
@@ -0,0 +1,45 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="16"
|
||||
height="16"
|
||||
version="1.1"
|
||||
id="svg859"
|
||||
sodipodi:docname="bmw-paste-effects-symbolic.svg"
|
||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs863" />
|
||||
<sodipodi:namedview
|
||||
id="namedview861"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
showgrid="true"
|
||||
inkscape:zoom="30.619781"
|
||||
inkscape:cx="14.02688"
|
||||
inkscape:cy="7.5114841"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1163"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg859">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid963" />
|
||||
</sodipodi:namedview>
|
||||
<g
|
||||
fill="#222222"
|
||||
id="g951"
|
||||
transform="rotate(-90,11.5,5.5)">
|
||||
<path
|
||||
id="path949"
|
||||
d="M 11,5 H 10 C 9.742188,5 9.472656,5.128906 9.28125,5.3125 L 9,5.59375 V 1 H 7 V 5.59375 L 6.71875,5.3125 C 6.527344,5.128906 6.257812,5 6,5 H 5 V 6 C 5,6 5.089844,6.550781 5.28125,6.75 L 8,9.40625 10.71875,6.75 C 10.910156,6.550781 11,6.308594 11,6 Z M 16,2 C 16,2.41 15.73,2.75 15.38,2.91 15.26,2.96 15.14,3 15,3 14.45,3 14,2.55 14,2 c 0,-0.55 0.45,-1 1,-1 0.55,0 1,0.45 1,1 z m -3,-4 v 1 h -1 v 6 h 1 v 1 h -1 c 0,1 0,1 -1,2 h 3 c 1,0 1,-1 1,-1 V 4 C 15.14,4 15.28,4 15.41,3.97 16.32,3.78 17,2.97 17,2 17,0.9 16.1,0 15,0 V -3 C 15,-4 14,-4 14,-4 9.9636199,-4 6.886735,-4 3,-4 2,-4 2,-3 2,-3 V 7 C 2,7 2,8 3,8 H 5.048681 C 4,7 4,7 4,6 v -8 c 3.0556612,0 6.334851,0 9,0 z" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1,55 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
height="16px"
|
||||
viewBox="0 0 16 16"
|
||||
width="16px"
|
||||
version="1.1"
|
||||
id="svg880"
|
||||
sodipodi:docname="bmw-select-app-symbolic.svg"
|
||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs884" />
|
||||
<sodipodi:namedview
|
||||
id="namedview882"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
showgrid="true"
|
||||
inkscape:zoom="57.412587"
|
||||
inkscape:cx="8.0905604"
|
||||
inkscape:cy="8.0992692"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1163"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg880">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid975" />
|
||||
</sodipodi:namedview>
|
||||
<path
|
||||
d="m 7,11 v 5 h 2 v -5 m 2,-2 h 5 V 7 H 11 M 9,5 V 0 H 7 V 5 M 5.0431967,7 H 0 v 2 h 4.9715524"
|
||||
fill="#222222"
|
||||
id="path878"
|
||||
sodipodi:nodetypes="cccccccccccccccc" />
|
||||
<path
|
||||
id="path966"
|
||||
d="M 14.708984 10 L 12.580078 10 C 12.074974 11.149358 11.149798 12.075226 10 12.580078 L 10 14.707031 C 12.252335 14.032781 14.034893 12.252099 14.708984 10 z " />
|
||||
<path
|
||||
id="path2645"
|
||||
d="M 10 1.2929688 L 10 3.4199219 C 11.149798 3.9247737 12.074974 4.8506419 12.580078 6 L 14.708984 6 C 14.034893 3.7479009 12.252335 1.9672199 10 1.2929688 z " />
|
||||
<path
|
||||
id="path2107"
|
||||
d="M 3.421875 10 L 1.2910156 10 C 1.965107 12.252099 3.7476652 14.032781 6 14.707031 L 6 12.580078 C 4.8504712 12.075345 3.9270579 11.148985 3.421875 10 z " />
|
||||
<path
|
||||
id="path2456"
|
||||
d="M 6 1.2929688 C 3.7476652 1.9672199 1.965107 3.7479009 1.2910156 6 L 3.421875 6 C 3.9270579 4.8510155 4.8504712 3.9246556 6 3.4199219 L 6 1.2929688 z " />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
@@ -0,0 +1,13 @@
|
||||
<!--
|
||||
SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
|
||||
SPDX-License-Identifier: CC0-1.0
|
||||
-->
|
||||
|
||||
<node>
|
||||
<interface name="org.gnome.shell.extensions.BurnMyWindows">
|
||||
<method name="PickWindow" />
|
||||
<signal name="WindowPicked">
|
||||
<arg name="window" type="s" />
|
||||
</signal>
|
||||
</interface>
|
||||
</node>
|
||||
@@ -31,7 +31,7 @@ void main() {
|
||||
float progress = uForOpening ? 1.0 - uProgress : uProgress;
|
||||
|
||||
// Draw the individual shard layers.
|
||||
for (float i = 0; i < SHARD_LAYERS; ++i) {
|
||||
for (float i = 0.0; i < SHARD_LAYERS; ++i) {
|
||||
|
||||
// To enable drawing shards outside of the window bounds, the actor was scaled
|
||||
// by ACTOR_SCALE. Here we scale and move the texture coordinates so that the
|
||||
@@ -51,8 +51,8 @@ void main() {
|
||||
|
||||
// Move down each layer a bit.
|
||||
float gravity =
|
||||
(uForOpening ? -1.0 : 1.0) * uGravity * 0.1 * (i + 1) * progress * progress;
|
||||
coords += vec2(0, gravity);
|
||||
(uForOpening ? -1.0 : 1.0) * uGravity * 0.1 * (i + 1.0) * progress * progress;
|
||||
coords += vec2(0.0, gravity);
|
||||
|
||||
// Restore correct position.
|
||||
coords += uEpicenter;
|
||||
@@ -66,10 +66,10 @@ void main() {
|
||||
// the bin of the current shard.
|
||||
float shardGroup = floor(shardMap.g * SHARD_LAYERS * 0.999);
|
||||
|
||||
if (shardGroup == i && (shardMap.x - pow(progress + 0.1, 2)) > 0.0) {
|
||||
if (shardGroup == i && (shardMap.x - pow(progress + 0.1, 2.0)) > 0.0) {
|
||||
oColor = getInputColor(coords);
|
||||
}
|
||||
}
|
||||
|
||||
setOutputColor(oColor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,13 +20,14 @@
|
||||
|
||||
// Each shader can access these standard input values:
|
||||
|
||||
// vec2 iTexCoord: Texture coordinates for retrieving the window input color.
|
||||
// bool uForOpening: True if a window-open animation is ongoing, false otherwise.
|
||||
// float uProgress: A value which transitions from 0 to 1 during the animation.
|
||||
// float uDuration: The duration of the current animation in seconds.
|
||||
// vec2 uSize: The size of uTexture in pixels.
|
||||
// float uPadding: The empty area around the actual window (e.g. where the shadow
|
||||
// is drawn). For now, this will only be set on GNOME.
|
||||
// vec2 iTexCoord: Texture coordinates for retrieving the window input color.
|
||||
// bool uIsFullscreen: True if the window is maximized or in fullscreen mode.
|
||||
// bool uForOpening: True if a window-open animation is ongoing, false otherwise.
|
||||
// float uProgress: A value which transitions from 0 to 1 during the animation.
|
||||
// float uDuration: The duration of the current animation in seconds.
|
||||
// vec2 uSize: The size of uTexture in pixels.
|
||||
// float uPadding: The empty area around the actual window (e.g. where the shadow
|
||||
// is drawn). For now, this will only be set on GNOME.
|
||||
|
||||
// Furthermore, there are two global methods for reading the window input color and
|
||||
// setting the shader output color. Both methods assume straight alpha:
|
||||
@@ -35,6 +36,7 @@
|
||||
// void setOutputColor(vec4 outColor)
|
||||
|
||||
uniform bool uForOpening;
|
||||
uniform bool uIsFullscreen;
|
||||
uniform float uProgress;
|
||||
uniform float uDuration;
|
||||
|
||||
@@ -62,6 +64,15 @@ vec4 getInputColor(vec2 coords) {
|
||||
}
|
||||
|
||||
void setOutputColor(vec4 outColor) {
|
||||
|
||||
// If a uniform is not used, it will be optimized away. This condition is always
|
||||
// false, but it will prevent the compiler from optimizing away the uniforms uForOpening
|
||||
// and uIsFullscreen. On KWin, we need to do this as we do not have a way to check if a
|
||||
// uniform is used in the shader.
|
||||
if (outColor.a > 1000.0 && uForOpening && uIsFullscreen) {
|
||||
outColor = vec4(0.0);
|
||||
}
|
||||
|
||||
fragColor = vec4(outColor.rgb * outColor.a, outColor.a);
|
||||
}
|
||||
|
||||
@@ -88,6 +99,14 @@ vec4 getInputColor(vec2 coords) {
|
||||
}
|
||||
|
||||
void setOutputColor(vec4 outColor) {
|
||||
// If a uniform is not used, it will be optimized away. This condition is always
|
||||
// false, but it will prevent the compiler from optimizing away the uniforms uForOpening
|
||||
// and uIsFullscreen. On KWin, we need to do this as we do not have a way to check if a
|
||||
// uniform is used in the shader.
|
||||
if (outColor.a > 1000.0 && uForOpening && uIsFullscreen) {
|
||||
outColor = vec4(0.0);
|
||||
}
|
||||
|
||||
gl_FragColor = vec4(outColor.rgb * outColor.a, outColor.a);
|
||||
}
|
||||
|
||||
@@ -99,7 +118,7 @@ uniform vec2 uSize;
|
||||
uniform float uPadding;
|
||||
|
||||
// On GNOME, we set iTexCoord to be an alias for the cogl variables.
|
||||
vec2 iTexCoord = cogl_tex_coord_in[0].st;
|
||||
#define iTexCoord vec2(cogl_tex_coord_in[0])
|
||||
|
||||
// Shell.GLSLEffect uses straight alpha. So we have to convert from premultiplied.
|
||||
vec4 getInputColor(vec2 coords) {
|
||||
@@ -168,14 +187,18 @@ float easeOutBack(float x, float e) {
|
||||
// --------------------------------------------------------------------- edge mask helpers
|
||||
|
||||
// This method returns a mask which smoothly transitions towards zero when approaching
|
||||
// the window's borders. There is a variant which takes the transition area width in
|
||||
// the window's borders. If the window is currently maximized or in fullscreen mode, this
|
||||
// will return 1.0 everywhere. There is a variant which takes the transition area width in
|
||||
// pixels and one which takes this as a percentage.
|
||||
float getEdgeMask(vec2 uv, vec2 maxUV, float fadeWidth) {
|
||||
float mask = 1.0;
|
||||
mask *= smoothstep(0.0, 1.0, clamp(uv.x / fadeWidth, 0.0, 1.0));
|
||||
mask *= smoothstep(0.0, 1.0, clamp(uv.y / fadeWidth, 0.0, 1.0));
|
||||
mask *= smoothstep(0.0, 1.0, clamp((maxUV.x - uv.x) / fadeWidth, 0.0, 1.0));
|
||||
mask *= smoothstep(0.0, 1.0, clamp((maxUV.y - uv.y) / fadeWidth, 0.0, 1.0));
|
||||
|
||||
if (!uIsFullscreen) {
|
||||
mask *= smoothstep(0.0, 1.0, clamp(uv.x / fadeWidth, 0.0, 1.0));
|
||||
mask *= smoothstep(0.0, 1.0, clamp(uv.y / fadeWidth, 0.0, 1.0));
|
||||
mask *= smoothstep(0.0, 1.0, clamp((maxUV.x - uv.x) / fadeWidth, 0.0, 1.0));
|
||||
mask *= smoothstep(0.0, 1.0, clamp((maxUV.y - uv.y) / fadeWidth, 0.0, 1.0));
|
||||
}
|
||||
|
||||
return mask;
|
||||
}
|
||||
|
||||
@@ -107,12 +107,14 @@ void main() {
|
||||
if ((!uForOpening && gradient > hideThreshold) ||
|
||||
(uForOpening && gradient < hideThreshold)) {
|
||||
|
||||
// We add some distortion in the scorch zone
|
||||
// We add some distortion in the scorch zone. This is only possible if using GLES.
|
||||
vec2 distort = vec2(0.0);
|
||||
|
||||
#ifndef GL_ES
|
||||
if (scorchRange.x < gradient && gradient < scorchRange.y) {
|
||||
distort = vec2(dFdx(gradient), dFdy(gradient)) * scorchMask * 5.0;
|
||||
}
|
||||
#endif
|
||||
|
||||
oColor = getInputColor(iTexCoord + distort);
|
||||
}
|
||||
@@ -154,4 +156,4 @@ void main() {
|
||||
}
|
||||
|
||||
setOutputColor(oColor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ vec2 getRain(vec2 fragCoord) {
|
||||
float delay = fract(sin(column) * 78.233) * mix(0.0, 1.0, uRandomness);
|
||||
float speed = fract(cos(column) * 12.989) * mix(0.0, 0.3, uRandomness) + 1.5;
|
||||
|
||||
float distToDrop = (uProgress * 2 - delay) * speed - iTexCoord.y;
|
||||
float distToDrop = (uProgress * 2.0 - delay) * speed - iTexCoord.y;
|
||||
|
||||
float rainAlpha = distToDrop >= 0.0 ? exp(-distToDrop / TRAIL_LENGTH) : 0.0;
|
||||
float windowAlpha = 1.0 - clamp(uSize.y * distToDrop, 0.0, FADE_WIDTH) / FADE_WIDTH;
|
||||
@@ -91,7 +91,7 @@ void main() {
|
||||
|
||||
// This is used to fade out the remaining trails in the end.
|
||||
float finalFade =
|
||||
1 -
|
||||
1.0 -
|
||||
clamp((uProgress - FINAL_FADE_START_TIME) / (1.0 - FINAL_FADE_START_TIME), 0.0, 1.0);
|
||||
float rainAlpha = finalFade * rainMask.x;
|
||||
|
||||
@@ -106,4 +106,4 @@ void main() {
|
||||
// oColor = vec4(vec3(rainMask.y), 1);
|
||||
|
||||
setOutputColor(oColor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
// ) ( //
|
||||
// ( /( ( ( ) ( ( ( ( )\ ) ( ( //
|
||||
// )\()) ))\ )( ( ( )\ ) )\))( )\ ( (()/( ( )\))( ( //
|
||||
// ((_)\ /((_|()\ )\ ) )\ '(()/( ((_)()((_) )\ ) ((_)))\((_)()\ )\ //
|
||||
// | |(_|_))( ((_)_(_/( _((_)) )(_)) _(()((_|_)_(_/( _| |((_)(()((_|(_) //
|
||||
// | '_ \ || | '_| ' \)) | ' \()| || | \ V V / | ' \)) _` / _ \ V V (_-< //
|
||||
// |_.__/\_,_|_| |_||_| |_|_|_| \_, | \_/\_/|_|_||_|\__,_\___/\_/\_//__/ //
|
||||
// |__/ //
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// The content from common.glsl is automatically prepended to each shader effect.
|
||||
|
||||
// See assets/README.md for how this texture was created.
|
||||
uniform sampler2D uBrushTexture;
|
||||
uniform float uBrushSize;
|
||||
|
||||
const float SHADOW_WIDTH = 0.03;
|
||||
const float SHADOW_STEPS = 10.0;
|
||||
|
||||
// Returns 1.0 if the window texture at the given texCoord should be painted.
|
||||
float getMask(vec2 texCoord, float progress) {
|
||||
float brush = texture2D(uBrushTexture, texCoord)[int(uBrushSize - 1.0)];
|
||||
if (uForOpening) {
|
||||
return step(brush, progress);
|
||||
}
|
||||
|
||||
return step(progress, brush);
|
||||
}
|
||||
|
||||
void main() {
|
||||
|
||||
vec4 oColor = getInputColor(iTexCoord.st);
|
||||
|
||||
// This will be 0.0 in the masked-out areas.
|
||||
float mask = getMask(iTexCoord.st, uProgress);
|
||||
|
||||
// Add a simple drop shadow below the remaining parts.
|
||||
if (mask == 0.0) {
|
||||
|
||||
for (float i = 0.0; i < SHADOW_STEPS; ++i) {
|
||||
vec2 shadowTexCoord = iTexCoord.st - vec2(0.0, i * SHADOW_WIDTH / SHADOW_STEPS);
|
||||
float shadowMask = getMask(shadowTexCoord, uProgress);
|
||||
float shadowAlpha = (1.0 - i / SHADOW_STEPS) * shadowMask * getInputColor(shadowTexCoord).a;
|
||||
|
||||
if (shadowAlpha > 0.0) {
|
||||
oColor = vec4(vec3(0.0), shadowAlpha * 0.2);
|
||||
break;
|
||||
}
|
||||
|
||||
// If we arrived at the end of the shadow, make sure to set the alpha to 0.
|
||||
if (i == SHADOW_STEPS - 1.0) {
|
||||
oColor.a = 0.0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setOutputColor(oColor);
|
||||
}
|
||||
@@ -29,19 +29,20 @@ const float WINDOW_TILT = -1.0;
|
||||
|
||||
// Make sure that the portal and window open / close animations are quick even if the
|
||||
// duration is longer.
|
||||
float PORTAL_OPEN_TIME = 0.4 / uDuration;
|
||||
float PORTAL_CLOSE_TIME = 0.4 / uDuration;
|
||||
float WINDOW_OPEN_TIME = 0.35 / uDuration;
|
||||
float PORTAL_OPEN_TIME = 0.4;
|
||||
float PORTAL_CLOSE_TIME = 0.4;
|
||||
float WINDOW_OPEN_TIME = 0.35;
|
||||
|
||||
// This will distort the given coordinate to achieve the wobble effect of the portal when
|
||||
// the window passes through. The wobble happens around the point where the window appears
|
||||
// or disappears (which is controlled by WINDOW_OPEN_TIME) and takes
|
||||
// PORTAL_WOBBLE_TIME.
|
||||
vec2 getPortalWobble(vec2 coords) {
|
||||
float progress = (uForOpening ? (1.0 - uProgress) : uProgress) / WINDOW_OPEN_TIME;
|
||||
progress = clamp(1.0 - abs((progress - 1.0) / PORTAL_WOBBLE_TIME), 0.0, 1.0);
|
||||
progress = easeInBack(progress, 1.7);
|
||||
float dist = length(coords);
|
||||
float progress =
|
||||
(uForOpening ? (1.0 - uProgress) : uProgress) / WINDOW_OPEN_TIME * uDuration;
|
||||
progress = clamp(1.0 - abs((progress - 1.0) / PORTAL_WOBBLE_TIME), 0.0, 1.0);
|
||||
progress = easeInBack(progress, 1.7);
|
||||
float dist = length(coords);
|
||||
|
||||
return coords * (1.0 - dist) * exp(-dist) * progress * PORTAL_WOBBLE_STRENGTH;
|
||||
}
|
||||
@@ -50,12 +51,13 @@ vec2 getPortalWobble(vec2 coords) {
|
||||
// increase during uDuration*PORTAL_OPEN_TIME, stay at one until uDuration*(1.0 -
|
||||
// PORTAL_CLOSE_TIME) and then decrease again.
|
||||
float getPortalScale() {
|
||||
float scale = 1.0;
|
||||
if (uProgress < PORTAL_OPEN_TIME) {
|
||||
scale = easeOutBack(uProgress / PORTAL_OPEN_TIME, 1.5);
|
||||
} else if (uProgress > 1.0 - PORTAL_CLOSE_TIME) {
|
||||
scale =
|
||||
easeOutBack(1.0 - (uProgress - 1.0 + PORTAL_CLOSE_TIME) / PORTAL_CLOSE_TIME, 1.5);
|
||||
float scale = 1.0;
|
||||
float closeTime = PORTAL_CLOSE_TIME / uDuration;
|
||||
float openTime = PORTAL_OPEN_TIME / uDuration;
|
||||
if (uProgress < openTime) {
|
||||
scale = easeOutBack(uProgress / openTime, 1.5);
|
||||
} else if (uProgress > 1.0 - closeTime) {
|
||||
scale = easeOutBack(1.0 - (uProgress - 1.0 + closeTime) / closeTime, 1.5);
|
||||
}
|
||||
|
||||
return scale;
|
||||
@@ -165,7 +167,8 @@ vec4 getPortalColor() {
|
||||
// window). The fraction of the animation time take for the window animation is defined by
|
||||
// WINDOW_OPEN_TIME.
|
||||
vec4 getWindowColor() {
|
||||
float progress = (uForOpening ? (1.0 - uProgress) : uProgress) / WINDOW_OPEN_TIME;
|
||||
float progress =
|
||||
(uForOpening ? (1.0 - uProgress) : uProgress) / WINDOW_OPEN_TIME * uDuration;
|
||||
|
||||
// Add some elastic easing to make the effect more dynamic.
|
||||
progress = easeInBack(clamp(progress, 0.0, 1.0), 1.2);
|
||||
@@ -203,4 +206,4 @@ void main() {
|
||||
// These can be useful for understanding how this works.
|
||||
// setOutputColor(portal);
|
||||
// setOutputColor(window);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ void main() {
|
||||
|
||||
vec4 oColor = vec4(0.0);
|
||||
|
||||
for (float i = 0; i < DUST_LAYERS; ++i) {
|
||||
for (float i = 0.0; i < DUST_LAYERS; ++i) {
|
||||
|
||||
// Create a random direction.
|
||||
float factor = DUST_LAYERS == 1.0 ? 0.0 : i / (DUST_LAYERS - 1.0);
|
||||
@@ -84,7 +84,7 @@ void main() {
|
||||
windowColor.rgb = mix(windowColor.rgb, dustColor, progress);
|
||||
|
||||
// Dissolve and blend the layers.
|
||||
if (dustMap.x - progress > 0) {
|
||||
if (dustMap.x - progress > 0.0) {
|
||||
oColor = windowColor;
|
||||
}
|
||||
}
|
||||
@@ -94,4 +94,4 @@ void main() {
|
||||
// oColor = vec4(progress, 0, 0, 0);
|
||||
|
||||
setOutputColor(oColor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,9 +23,12 @@ uniform float uNumClaws;
|
||||
uniform float uWarpIntensity;
|
||||
|
||||
const float FLASH_INTENSITY = 0.1;
|
||||
const float MAX_SPAWN_TIME =
|
||||
0.6; // Scratches will only start in the first half of the animation.
|
||||
const float FF_TIME = 0.6; // Relative time for the final fade to transparency.
|
||||
|
||||
// Scratches will only start in the first half of the animation.
|
||||
const float MAX_SPAWN_TIME = 0.6;
|
||||
|
||||
// Relative time for the final fade to transparency.
|
||||
const float FF_TIME = 0.6;
|
||||
|
||||
// This method generates a grid of randomly rotated, slightly shifted and scaled
|
||||
// UV squares. It returns the texture coords of the UV square at the given actor
|
||||
@@ -82,15 +85,21 @@ void main() {
|
||||
// relative time when the respective part will become invisible. Therefore we can
|
||||
// add a value to make the scratch appear later.
|
||||
float scratchMap = 1.0;
|
||||
for (int i = 0; i < uNumClaws; ++i) {
|
||||
vec2 uv = getClawUV(coords, 1.0 / uClawSize, uSeed * (i + 1));
|
||||
for (float i = 0.0; i < uNumClaws; ++i) {
|
||||
vec2 uv = getClawUV(coords, 1.0 / uClawSize, uSeed * (i + 1.0));
|
||||
float delay = i / uNumClaws * MAX_SPAWN_TIME;
|
||||
scratchMap = min(scratchMap, clamp(texture2D(uClawTexture, uv).r + delay, 0.0, 1.0));
|
||||
}
|
||||
|
||||
// Get the window texture. We shift the texture lookup by the local derivative of
|
||||
// the claw texture in order to mimic some folding distortion.
|
||||
vec2 offset = vec2(dFdx(scratchMap), dFdy(scratchMap)) * progress * 0.5;
|
||||
// the claw texture in order to mimic some folding distortion. This is only possible if
|
||||
// not using GLES.
|
||||
vec2 offset = vec2(0.0);
|
||||
|
||||
#ifndef GL_ES
|
||||
offset = vec2(dFdx(scratchMap), dFdy(scratchMap)) * progress * 0.5;
|
||||
#endif
|
||||
|
||||
vec4 oColor = getInputColor(coords + offset);
|
||||
|
||||
// Add colorful flashes.
|
||||
@@ -118,4 +127,4 @@ void main() {
|
||||
// oColor = vec4(vec3(scratchMap), 1);
|
||||
|
||||
setOutputColor(oColor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,8 +15,10 @@
|
||||
// The content from common.glsl is automatically prepended to each shader effect.
|
||||
|
||||
uniform vec2 uSeed;
|
||||
uniform vec3 uColor;
|
||||
uniform float uScale;
|
||||
uniform vec3 uColor1;
|
||||
uniform vec3 uColor2;
|
||||
uniform vec3 uColor3;
|
||||
|
||||
const float WISPS_RADIUS = 20.0;
|
||||
const float WISPS_SPEED = 10.0;
|
||||
@@ -28,7 +30,7 @@ const float SCALING = 0.9;
|
||||
|
||||
// Returns a grid of randomly moving points. Each grid cell contains one point which
|
||||
// moves on an ellipse.
|
||||
float getWisps(vec2 texCoords, float gridSize, vec2 seed) {
|
||||
vec4 getWisps(vec2 texCoords, float gridSize, vec2 seed) {
|
||||
|
||||
// Shift coordinates by a random offset and make sure the have a 1:1 aspect ratio.
|
||||
vec2 coords = (texCoords + hash22(seed)) * uSize;
|
||||
@@ -56,13 +58,16 @@ float getWisps(vec2 texCoords, float gridSize, vec2 seed) {
|
||||
|
||||
cellUV += offset;
|
||||
|
||||
vec3 color = tritone(hash12(cellID * seed * 1.256), uColor1, uColor2, uColor3);
|
||||
|
||||
// Use distance to center of shifted / rotated UV coordinates to draw a glaring point.
|
||||
float dist = length(cellUV - 0.5) * gridSize / radius;
|
||||
if (dist < 1.0) {
|
||||
return min(5.0, 0.01 / pow(dist, 2.0));
|
||||
float alpha = min(5.0, 0.01 / pow(dist, 2.0));
|
||||
return vec4(color * alpha, alpha);
|
||||
}
|
||||
|
||||
return 0.0;
|
||||
return vec4(0.0);
|
||||
}
|
||||
|
||||
void main() {
|
||||
@@ -78,9 +83,9 @@ void main() {
|
||||
// Compute several layers of moving wisps.
|
||||
vec2 uv = (iTexCoord.st - 0.5) / mix(1.0, 0.5, progress) + 0.5;
|
||||
uv /= uScale;
|
||||
float wisps = 0.0;
|
||||
vec4 wisps = vec4(0.0);
|
||||
for (float i = 0.0; i < WISPS_LAYERS; ++i) {
|
||||
wisps += getWisps(uv * 0.3, WISPS_SPACING, uSeed * (i + 1.0));
|
||||
wisps = alphaOver(wisps, getWisps(uv * 0.3, WISPS_SPACING, uSeed * (i + 1.0)));
|
||||
}
|
||||
|
||||
// Compute shrinking edge mask.
|
||||
@@ -100,8 +105,8 @@ void main() {
|
||||
oColor.a *= windowMask * mask;
|
||||
|
||||
// Add the wisps.
|
||||
vec4 wispColor = wisps * vec4(uColor, min(wispsIn, 1.0 - wispsOut) * mask);
|
||||
oColor = alphaOver(oColor, wispColor);
|
||||
wisps.a *= min(wispsIn, 1.0 - wispsOut) * mask;
|
||||
oColor = alphaOver(oColor, wisps);
|
||||
|
||||
// These are pretty useful for understanding how this works.
|
||||
// oColor = vec4(vec3(windowMask), 1.0);
|
||||
|
||||
@@ -69,7 +69,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
<property name="value-pos">left</property>
|
||||
<property name="width-request">300</property>
|
||||
<property name="adjustment">
|
||||
<object class="GtkAdjustment" id="flame-scale">
|
||||
<object class="GtkAdjustment" id="fire-scale">
|
||||
<property name="upper">3</property>
|
||||
<property name="lower">0.1</property>
|
||||
<property name="step-increment">0.01</property>
|
||||
@@ -79,7 +79,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="reset-flame-scale">
|
||||
<object class="GtkButton" id="reset-fire-scale">
|
||||
<property name="icon-name">edit-clear-symbolic</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
|
||||
@@ -102,7 +102,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
<property name="value-pos">left</property>
|
||||
<property name="width-request">300</property>
|
||||
<property name="adjustment">
|
||||
<object class="GtkAdjustment" id="flame-movement-speed">
|
||||
<object class="GtkAdjustment" id="fire-movement-speed">
|
||||
<property name="upper">2.0</property>
|
||||
<property name="lower">-2.0</property>
|
||||
<property name="step-increment">0.01</property>
|
||||
@@ -112,7 +112,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="reset-flame-movement-speed">
|
||||
<object class="GtkButton" id="reset-fire-movement-speed">
|
||||
<property name="icon-name">edit-clear-symbolic</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
|
||||
@@ -128,14 +128,14 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
<object class="AdwActionRow">
|
||||
<property name="title" translatable="yes">3D Noise</property>
|
||||
<property name="subtitle" translatable="yes">Creates a more dynamic fire but requires more GPU power.</property>
|
||||
<property name="activatable-widget">flame-3d-noise</property>
|
||||
<property name="activatable-widget">fire-3d-noise</property>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="flame-3d-noise">
|
||||
<object class="GtkSwitch" id="fire-3d-noise">
|
||||
<property name="valign">center</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="reset-flame-3d-noise">
|
||||
<object class="GtkButton" id="reset-fire-3d-noise">
|
||||
<property name="icon-name">edit-clear-symbolic</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
|
||||