Compare commits

..

6 Commits

Author SHA1 Message Date
Simon Schneegans 62c57a5163 Merge branch 'main' into feature/magic-lamp
Checks / Check Clang-Format (push) Has been cancelled
Checks / Check Compliance with REUSE Specification (push) Has been cancelled
Checks / Check Comment Percentage (push) Has been cancelled
Checks / Run ShellCheck (push) Has been cancelled
Checks / Generate References (push) Has been cancelled
Checks / Run Tests (gnome-wayland-nested, 32) (push) Has been cancelled
Checks / Run Tests (gnome-wayland-nested, 33) (push) Has been cancelled
Checks / Run Tests (gnome-wayland-nested, 34) (push) Has been cancelled
Checks / Run Tests (gnome-wayland-nested, 35) (push) Has been cancelled
Checks / Run Tests (gnome-wayland-nested, 36) (push) Has been cancelled
Checks / Run Tests (gnome-wayland-nested, 37) (push) Has been cancelled
Checks / Run Tests (gnome-wayland-nested, 38) (push) Has been cancelled
Checks / Run Tests (gnome-wayland-nested, rawhide) (push) Has been cancelled
Checks / Run Tests (gnome-xsession, 32) (push) Has been cancelled
Checks / Run Tests (gnome-xsession, 33) (push) Has been cancelled
Checks / Run Tests (gnome-xsession, 34) (push) Has been cancelled
Checks / Run Tests (gnome-xsession, 35) (push) Has been cancelled
Checks / Run Tests (gnome-xsession, 36) (push) Has been cancelled
Checks / Run Tests (gnome-xsession, 37) (push) Has been cancelled
Checks / Run Tests (gnome-xsession, 38) (push) Has been cancelled
Checks / Run Tests (gnome-xsession, rawhide) (push) Has been cancelled
2023-08-13 12:43:40 +02:00
Simon Schneegans b9901bad86 🔧 Work on lamp warping 2023-08-05 12:15:55 +02:00
Simon Schneegans 21dc4eac3d 🔧 Pass initial pointer position to magic lamp shader 2023-08-02 19:25:31 +02:00
Simon Schneegans b53b856c3e 🔧 Add some warping 2023-08-02 14:02:38 +02:00
Simon Schneegans 7625c98ad8 Merge branch 'main' into feature/magic-lamp 2023-08-02 13:49:00 +02:00
Simon Schneegans 6eebcc6b8c 🎉 Add initial magic lamp code 2023-03-29 20:00:11 +02:00
936 changed files with 23424 additions and 25005 deletions
+10 -5
View File
@@ -1,10 +1,15 @@
# SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
# SPDX-License-Identifier: CC0-1.0
# These are supported funding model platforms
github: schneegans
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: schneegans
custom:
[
"https://www.paypal.com/donate/?hosted_button_id=3F7UFL8KLVPXE",
https://schneegans.cb.id,
]
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.me/simonschneegans"]
+3 -3
View File
@@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
uses: actions/checkout@v2
- name: Download cloc
run: sudo apt-get update -y && sudo apt-get install -y cloc
- name: Get the Numbers
@@ -22,7 +22,7 @@ jobs:
echo "CODE_LINES=$(scripts/cloc.sh --loc)" >> $GITHUB_ENV
echo "COMMENT_LINES=$(scripts/cloc.sh --percentage)" >> $GITHUB_ENV
- name: Create Lines-of-Code-Badge
uses: schneegans/dynamic-badges-action@v1.7.0
uses: schneegans/dynamic-badges-action@v1.3.0
with:
auth: ${{ secrets.GIST_SECRET }}
gistID: 8cf45f23253ff09b21196e7271378762
@@ -32,7 +32,7 @@ jobs:
color: lightgrey
labelColor: 303030
- name: Create Comments-Badge
uses: schneegans/dynamic-badges-action@v1.7.0
uses: schneegans/dynamic-badges-action@v1.3.0
with:
auth: ${{ secrets.GIST_SECRET }}
gistID: 8cf45f23253ff09b21196e7271378762
+46 -16
View File
@@ -6,10 +6,10 @@ name: Checks
on:
push:
branches:
- "**"
- '**'
pull_request:
branches:
- "**"
- '**'
jobs:
clang_format:
@@ -17,7 +17,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
uses: actions/checkout@v3
- name: Download Clang-Format
run: |
sudo apt update -qq
sudo apt install clang-format -qq
- name: Run Clang-Format
run: scripts/clang-format.sh
- name: Compare Results
@@ -29,9 +33,9 @@ jobs:
name: Check Compliance with REUSE Specification
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v3
- name: REUSE Compliance Check
uses: fsfe/reuse-action@v4
uses: fsfe/reuse-action@v1
comment_percentage:
name: Check Comment Percentage
@@ -39,12 +43,12 @@ jobs:
if: github.event_name == 'pull_request'
steps:
- name: Checkout Current Repository
uses: actions/checkout@v4
uses: actions/checkout@v3
with:
path: current
ref: ${{ github.ref }}
- name: Checkout Base Repository
uses: actions/checkout@v4
uses: actions/checkout@v3
with:
path: base
ref: ${{ github.base_ref }}
@@ -70,14 +74,34 @@ jobs:
name: Run ShellCheck
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v3
- name: Run ShellCheck
run: |
find $GITHUB_WORKSPACE -type f -and \( -name "*.sh" \) | xargs shellcheck
references:
name: Generate References
runs-on: ubuntu-22.04
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/
build:
name: Run Tests
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
if: >
github.event_name == 'pull_request' ||
( contains(github.ref, 'main') && !contains(github.event.head_commit.message, '[no-ci]') ) ||
@@ -86,22 +110,28 @@ jobs:
fail-fast: false
matrix:
version:
- "39"
- "40"
- "41"
- '32'
- '33'
- '34'
- '35'
- '36'
- '37'
- '38'
- 'rawhide'
session:
- "gnome-xsession"
- 'gnome-xsession'
- 'gnome-wayland-nested'
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v3
- name: Download Dependencies
run: |
sudo apt update -qq
sudo apt install gettext imagemagick libglib2.0-dev -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@v4
- uses: actions/upload-artifact@v3
if: failure()
with:
name: result_${{ matrix.version }}_${{ matrix.session }}
+6 -8
View File
@@ -6,7 +6,7 @@ name: Deploy
on:
push:
tags:
- "**"
- '**'
jobs:
gnome_bundle:
@@ -14,29 +14,28 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
uses: actions/checkout@v2
- name: Install Dependencies
run: |
sudo apt-get update -q
sudo apt-get install gettext libglib2.0-dev
sudo apt-get install gettext
- name: Create Release
run: |
make zip
- name: Upload Release
uses: svenstaro/upload-release-action@2.9.0
uses: svenstaro/upload-release-action@2.2.1
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: burn-my-windows@schneegans.github.com.zip
tag: ${{ github.ref }}
overwrite: true
prerelease: true
kwin_bundle:
name: Bundle KWin Effect
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
uses: actions/checkout@v2
- name: Install Dependencies
run: |
sudo apt-get update -q
@@ -45,11 +44,10 @@ jobs:
run: |
./kwin/build.sh
- name: Upload Release
uses: svenstaro/upload-release-action@2.9.0
uses: svenstaro/upload-release-action@2.2.1
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: kwin/*.tar.gz
tag: ${{ github.ref }}
overwrite: true
file_glob: true
prerelease: true
-36
View File
@@ -1,36 +0,0 @@
# SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
# SPDX-License-Identifier: CC0-1.0
name: Generate References
on:
workflow_dispatch:
jobs:
references:
name: Generate References
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
version:
- "39"
- "40"
- "41"
- "rawhide"
session:
- "gnome-xsession"
steps:
- uses: actions/checkout@v4
- 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 $GITHUB_WORKSPACE/tests/generate-references.sh -v ${{ matrix.version }} -s ${{ matrix.session }}
- uses: actions/upload-artifact@v4
with:
name: references-${{ matrix.session }}-${{ matrix.version }}
path: tests/references/*${{ matrix.session }}-${{ matrix.version }}.png
+33
View File
@@ -0,0 +1,33 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Files: tests/references/*
Copyright: Simon Schneegans <code@simonschneegans.de>
License: CC0-1.0
Files: kwin/metadata.desktop.in
Copyright: Simon Schneegans <code@simonschneegans.de>
License: CC0-1.0
Files: resources/credits/*
Copyright: Simon Schneegans <code@simonschneegans.de>
License: CC0-1.0
Files: resources/img/*
Copyright: Simon Schneegans <code@simonschneegans.de>
License: CC-BY-4.0
Files: docs/pics/*
Copyright: Simon Schneegans <code@simonschneegans.de>
License: CC-BY-4.0
Files: assets/*
Copyright: Simon Schneegans <code@simonschneegans.de>
License: CC-BY-4.0
Files: po/*
Copyright: Simon Schneegans <code@simonschneegans.de>
License: GPL-3.0-or-later
Files: metadata.json
Copyright: Simon Schneegans <code@simonschneegans.de>
License: GPL-3.0-or-later
+28 -1
View File
@@ -19,7 +19,7 @@ LOCALES_MO = $(patsubst po/%.po,locale/%/LC_MESSAGES/$(NAME).mo,$(LOCALES_PO
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 \
metadata.json LICENSE
schemas/gschemas.compiled metadata.json LICENSE
# These seven recipes can be invoked by the user.
.PHONY: zip install uninstall pot clean test references
@@ -46,6 +46,28 @@ pot: $(JS_FILES) $(UI_FILES)
--output=po/$(NAME).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 38 "rawhide" ; do \
for session in "gnome-xsession" "gnome-wayland-nested" ; do \
echo ; \
echo "Running Tests on Fedora $$version ($$session)." ; \
echo ; \
./tests/run-test.sh -s $$session -v $$version ; \
done \
done
# This re-generates all reference images required by the tests.
references:
@ for version in 32 33 34 35 36 37 38 "rawhide" ; do \
for session in "gnome-xsession" "gnome-wayland-nested" ; do \
echo ; \
echo "Generating References for Fedora $$version ($$session)." ; \
echo ; \
./tests/generate-references.sh -s $$session -v $$version ; \
done \
done
# This removes all temporary files created with the other recipes.
clean:
rm -rf $(ZIP_NAME) \
@@ -70,6 +92,11 @@ $(ZIP_NAME): $(ZIP_CONTENT)
exit 1; \
fi
# Compiles the gschemas.compiled file from the gschema.xml file.
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
# Compiles the gresource file from the gresources.xml.
resources/$(NAME).gresource: resources/$(NAME).gresource.xml
@echo "Compiling resources..."
+132 -143
View File
@@ -13,49 +13,41 @@ SPDX-License-Identifier: CC-BY-4.0
<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/>
<a href="https://github.com/Schneegans/Burn-My-Windows/actions"><img src="https://github.com/Schneegans/Burn-My-Windows/workflows/Checks/badge.svg?branch=main" /></a>
<a href="https://api.reuse.software/info/github.com/Schneegans/Burn-My-Windows"><img src="https://api.reuse.software/badge/github.com/Schneegans/Burn-My-Windows" /></a>
<a href="https://schneegans.github.io/sponsors/"><img src="https://gist.githubusercontent.com/Schneegans/2d06edf0937c480951feb86b9e719304/raw/weekly.svg" /></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/License-GPLv3-blue.svg?labelColor=303030" /></a>
<a href="https://hosted.weblate.org/engage/burn-my-windows/"><img src="https://img.shields.io/weblate/progress/burn-my-windows?label=Translated&logo=weblate&logoColor=lightgray&labelColor=303030" /></a>
<a href="scripts/cloc.sh"><img src="https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Schneegans/8cf45f23253ff09b21196e7271378762/raw/loc.json" /></a>
<a href="scripts/cloc.sh"><img src="https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Schneegans/8cf45f23253ff09b21196e7271378762/raw/comments.json" /></a>
</p>
> [!IMPORTANT]
> The code in the `main` branch is for GNOME Shell 45+. For older GNOME versions, please use the `gnome-3.36-44` branch.
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)!
**🖼️ 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" /> |
| **Aura Glow** <br> A radiant edge-lit animation | <img src ="docs/pics/aura-glow.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/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" /> |
| **Focus** <br> Focus dude, focus! | <img src ="docs/pics/focus.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" /> |
| **Mushroom** <br> Inspired by your favorite italian plumber! | <img src ="docs/pics/mushroom.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" /> |
| **Portal** <br> This ridiculous effect teleports your windows from and to alternative dimensions. It may resemble the portal from a well-known cartoon series... | <img src ="docs/pics/portal.gif" /> |
| **RGB Warp** <br> Red Blue and Green go bye bye. | <img src ="docs/pics/rgbwarp.gif" /> |
| **Snap of Disintegration** <br> Dissolve your windows into a cloud of dust. | <img src ="docs/pics/snap.gif" /> |
| **TeamRocket** <br> ... is blasting off again! | <img src ="docs/pics/teamrocket.gif" /> |
| **T-Rex Attack** <br> Destroy your windows with a series of violent slashes! | <img src ="docs/pics/trex.gif" /> |
| **TV Effect** <br> This is a very simple effect to demonstrate that this extension could also be used in a more professional environment. | <img src ="docs/pics/tv.gif" /> |
| **TV Glitch** <br> This effect combines the Glitch and the TV Effect. | <img src ="docs/pics/tv-glitch.gif" /> |
| **Wisps** <br> Let your windows be carried away to the realm of dreams by these little fairies! | <img src ="docs/pics/wisps.gif" /> |
| **Your Effect!** <br> The extension is very modular and with a bit of creativity and GLSL knowledge, [you can easily create your own effects](docs/how-to-create-new-effects.md). | [![Create your own effects](docs/pics/custom.jpg)](docs/how-to-create-new-effects.md) |
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/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/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" />
**Portal** <br> This ridiculous effect teleports your windows from and to alternative dimensions. It may resemble the portal from a well-known cartoon series... | <img src ="docs/pics/portal.gif" />
**Snap of Disintegration** <br> Dissolve your windows into a cloud of dust.| <img src ="docs/pics/snap.gif" />
**T-Rex Attack** <br> Destroy your windows with a series of violent slashes!| <img src ="docs/pics/trex.gif" />
**TV Effect** <br> This is a very simple effect to demonstrate that this extension could also be used in a more professional environment. | <img src ="docs/pics/tv.gif" />
**TV Glitch** <br> This effect combines the Glitch and the TV Effect. | <img src ="docs/pics/tv-glitch.gif" />
**Wisps** <br> Let your windows be carried away to the realm of dreams by these little fairies! | <img src ="docs/pics/wisps.gif" />
**Your Effect!** <br> The extension is very modular and with a bit of creativity and GLSL knowledge, [you can easily create your own effects](docs/how-to-create-new-effects.md). | [![Create your own effects](docs/pics/custom.jpg)](docs/how-to-create-new-effects.md)
## ✅ Supported Versions
@@ -65,55 +57,77 @@ Below is a table which summarizes the current availability for all effects.
<table width="100%">
<tr>
<td></td>
<td colspan="4"><strong>GNOME</strong></td>
<td colspan="3"><strong>GNOME</strong></td>
<td colspan="1"><strong>KWin</strong></td>
</tr>
<tr><td></td> <td>3.36</td> <td>3.38</td><td>40-44</td><td>45+</td><td>5.25.0+</td></tr>
<tr><td>Apparition</td> <td> </td> <td>✅</td> <td>✅</td> <td>✅</td> <td> </td> </tr>
<tr><td>Aura Glow</td> <td> </td> <td> </td> <td> </td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Broken Glass</td> <td> </td> <td> </td> <td>✅</td> <td>✅</td> <td> </td> </tr>
<tr><td>Doom</td> <td> </td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Energize A</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Energize B</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Fire</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Focus</td> <td> </td> <td> </td> <td> </td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Glide</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Glitch</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Hexagon</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Incinerate</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Matrix</td> <td> </td> <td> </td> <td>✅</td> <td>✅</td> <td> </td> </tr>
<tr><td>Mushroom</td> <td> </td> <td> </td> <td> </td> <td>✅</td> <td> </td> </tr>
<tr><td>Paint Brush</td> <td> </td> <td> </td> <td>✅</td> <td>✅</td> <td> </td> </tr>
<tr><td>Pixelate</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Pixel Wheel</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Pixel Wipe</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Portal</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>RGB Warp</td> <td> </td> <td> </td> <td> </td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Snap of Disintegration</td> <td> </td> <td> </td> <td>✅</td> <td>✅</td> <td> </td> </tr>
<tr><td>TeamRocket</td> <td> </td> <td> </td> <td> </td> <td>✅</td> <td>✅</td> </tr>
<tr><td>T-Rex Attack</td> <td> </td> <td> </td> <td>✅</td> <td>✅</td> <td> </td> </tr>
<tr><td>TV Effect</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>TV Glitch</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Wisps</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td></td> <td>3.36</td> <td>3.38</td><td>40+</td><td>5.25.0+</td></tr>
<tr><td>Apparition</td> <td> </td> <td>✅</td> <td>✅</td> <td> </td> </tr>
<tr><td>Broken Glass</td> <td> </td> <td> </td> <td>✅</td> <td> </td> </tr>
<tr><td>Doom</td> <td> </td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Energize A</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Energize B</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Fire</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Glide</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Glitch</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<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>
<tr><td>Portal</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Snap of Disintegration</td> <td> </td> <td> </td> <td>✅</td> <td> </td> </tr>
<tr><td>T-Rex Attack</td> <td> </td> <td> </td> <td>✅</td> <td> </td> </tr>
<tr><td>TV Effect</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>TV Glitch</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
<tr><td>Wisps</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr>
</table>
## 💞 Show that you love Burn-My-Windows!
[![kofi](https://img.shields.io/badge/Donate-on_Ko--fi-ff5e5b?logo=ko-fi)](https://ko-fi.com/schneegans)
[![github](https://img.shields.io/badge/Donate-on_GitHub-purple?logo=github)](https://github.com/sponsors/Schneegans)
[![paypal](https://img.shields.io/badge/Donate-on_PayPal-009cde?logo=paypal)](https://www.paypal.com/donate/?hosted_button_id=3F7UFL8KLVPXE)
[![crypto](https://img.shields.io/badge/Donate-some_Crypto-f7931a?logo=bitcoin)](https://schneegans.cb.id)
## 💞 These People _love_ this Extension
While coding new features or translating Burn-My-Windows is the most awesome way to contribute, providing financial support will encourage me to invest my spare time for developing free and open-source software.
While [coding new features](docs/how-to-create-new-effects.md) or [translating the extension](https://hosted.weblate.org/engage/burn-my-windows/) are the most awesome ways to contribute, providing financial support will help me stay motivated to invest my spare time to keep the project alive in the future.
**These awesome people have already donated to the development of my open-source projects:**
<h3 align="center">🥇 Current Gold Sponsors</h3>
<p align="center">
<a href="https://github.com/D3vil0p3r">D3vil0p3r</a><br>
Maxence Sebald<br>
</p>
<a href="https://schneegans.github.io/sponsors/">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://schneegans.github.io/sponsors/sponsors_dark_small.svg">
<img alt="Sponsors List" src="https://schneegans.github.io/sponsors/sponsors_light_small.svg#gh-light-mode-only">
</picture>
</a>
<h3 align="center">🥈 Current Silver Sponsors</h3>
<p align="center">
<a href="https://github.com/danielheadbang">@danielheadbang</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/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>
<a href="https://twitter.com/tjiiik">tj3k</a><br>
<a href="https://github.com/wolfyrion">@wolfyrion</a><br>
<a href="https://github.com/MrTomRod">@MrTomRod</a><br>
Pouhiou<br>
DAPREMONT Christophe<br>
<a href="https://github.com/manero6">@manero6</a><br>
<a href="https://github.com/RickStanley">@RickStanley</a><br>
</p>
Do you want to show that you love it too? You may <a href="https://github.com/sponsors/Schneegans">become a sponsor for as little as 1$ / month</a>!
If you like this extension, you may also want to try one of my other GNOME extensions: [🧊 Desktop-Cube](https://github.com/Schneegans/Desktop-Cube) or [🍰 Fly-Pie](https://github.com/Schneegans/Fly-Pie/)!
## ⬇️ Installation (GNOME)
@@ -143,7 +157,7 @@ gnome-extensions install burn-my-windows@schneegans.github.com.zip
Then restart GNOME Shell with <kbd>Alt</kbd> + <kbd>F2</kbd>, <kbd>r</kbd> + <kbd>Enter</kbd>.
Or logout / login if you are on Wayland.
Then you can enable the extension with the _Gnome Tweak Tool_, the _Extensions_ application or with this command:
Then you can enable the extension with the *Gnome Tweak Tool*, the *Extensions* application or with this command:
```bash
gnome-extensions enable burn-my-windows@schneegans.github.com
@@ -159,12 +173,6 @@ git clone https://github.com/Schneegans/Burn-My-Windows.git
cd Burn-My-Windows
```
If your GNOME Shell version is <= 45, you will have to checkout the `gnome-3.36-44` branch:
```bash
git checkout gnome-3.36-44
```
Now you will have to install the extension.
The `make` command below compiles the locales, schemas and resources, creates a zip file of the extension and finally installs it with the `gnome-extensions` tool.
@@ -174,47 +182,40 @@ make install
Then restart GNOME Shell with <kbd>Alt</kbd> + <kbd>F2</kbd>, <kbd>r</kbd> + <kbd>Enter</kbd>.
Or logout / login if you are on Wayland.
Then you can enable the extension with the _Gnome Tweak Tool_, the _Extensions_ application or with this command:
Then you can enable the extension with the *Gnome Tweak Tool*, the *Extensions* application or with this command:
```bash
gnome-extensions enable burn-my-windows@schneegans.github.com
```
## ⬇️ Installation (KWin)
You can either download the effects from the KDE store (a), download a stable version from GitHub (b) or clone the latest version directly with `git` (c).
> [!IMPORTANT]
> You need at least KWin 5.25.0 for the Burn-My-Windows effects.
:warning: **You need at least KWin 5.25.0 for the Burn-My-Windows effects.**
> [!NOTE]
> If the color picker widgets in the effect settings do not work for you, you may have to install a package called `libkf5widgetsaddons-dev` (Kubuntu, KDE Neon, ...) or `kf5-kwidgetsaddons-devel`, `kwidgetsaddons-devel` (Fedora, OpenSuse, ...).
:warning: **If the color picker widgets in the effect settings do not work for you, you may have to install a package called `libkf5widgetsaddons-dev` (Kubuntu, KDE Neon, ...) or `kf5-kwidgetsaddons-devel`, `kwidgetsaddons-devel` (Fedora, OpenSuse, ...).**
### a) Download from the KDE Store
Here are links to all effects which are currently available in the KDE store:
Here are links to all effects which are currently available in the KDE store;
| Plasma 5 | Plasma 6 |
| ---------------------------------------------- | ---------------------------------------------- |
| [Aura Glow](https://store.kde.org/p/2263064) | [Aura Glow](https://store.kde.org/p/2263065) |
| [Doom](https://store.kde.org/p/1898739) | [Doom](https://store.kde.org/p/2133831) |
| [Energize A](https://store.kde.org/p/1884310) | [Energize A](https://store.kde.org/p/2133829) |
| [Energize B](https://store.kde.org/p/1884311) | [Energize B](https://store.kde.org/p/2133828) |
| [Fire](https://store.kde.org/p/1884307) | [Fire](https://store.kde.org/p/2133822) |
| [Focus](https://store.kde.org/p/2221217) | [Focus](https://store.kde.org/p/2221219) |
| [Glide](https://store.kde.org/p/1935778) | [Glide](https://store.kde.org/p/2133839) |
| [Glitch](https://store.kde.org/p/1972813) | [Glitch](https://store.kde.org/p/2133844) |
| [Hexagon](https://store.kde.org/p/1884309) | [Hexagon](https://store.kde.org/p/2133836) |
| [Incinerate](https://store.kde.org/p/1861183) | [Incinerate](https://store.kde.org/p/2133817) |
| [Pixelate](https://store.kde.org/p/1898742) | [Pixelate](https://store.kde.org/p/2133832) |
| [Pixel Wheel](https://store.kde.org/p/1898746) | [Pixel Wheel](https://store.kde.org/p/2133833) |
| [Pixel Wipe](https://store.kde.org/p/1898748) | [Pixel Wipe](https://store.kde.org/p/2133834) |
| [Portal](https://store.kde.org/p/1959879) | [Portal](https://store.kde.org/p/2133842) |
| [Team Rocket](https://store.kde.org/p/2263069) | [Team Rocket](https://store.kde.org/p/2263070) |
| [TV-Effect](https://store.kde.org/p/1884312) | [TV-Effect](https://store.kde.org/p/2133825) |
| [TV-Glitch](https://store.kde.org/p/1982142) | [TV-Glitch](https://store.kde.org/p/2133819) |
| [RGB Warp](https://store.kde.org/p/2263071) | [RGB Warp](https://store.kde.org/p/2263073) |
| [Wisps](https://store.kde.org/p/1884313) | [Wisps](https://store.kde.org/p/2133824) |
* [Doom](https://store.kde.org/p/1898739)
* [Energize A](https://store.kde.org/p/1884310)
* [Energize B](https://store.kde.org/p/1884311)
* [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)
* [Pixel Wheel](https://store.kde.org/p/1898746)
* [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 Effects...".
@@ -224,27 +225,19 @@ Just go to your System Settings, then "Workspace Behavior", and "Desktop Effects
Execute this command to download the latest stable release:
```bash
# For Plasma 5
wget https://github.com/Schneegans/Burn-My-Windows/releases/latest/download/burn_my_windows_kwin5.tar.gz
# For Plasma 6
wget https://github.com/Schneegans/Burn-My-Windows/releases/latest/download/burn_my_windows_kwin6.tar.gz
wget https://github.com/Schneegans/Burn-My-Windows/releases/latest/download/burn_my_windows_kwin4.tar.gz
```
Install it by executing the following commands.
```bash
mkdir -p ~/.local/share/kwin/effects
# For Plasma 5
tar -xf burn_my_windows_kwin5.tar.gz -C ~/.local/share/kwin/effects
# For Plasma 6
tar -xf burn_my_windows_kwin6.tar.gz -C ~/.local/share/kwin/effects
tar -xf burn_my_windows_kwin4.tar.gz -C ~/.local/share/kwin/effects
```
Then select the desired effects in the system settings under "Desktop Effects".
### c) Cloning the Latest Version with `git`
Execute the clone command below where you want to have the source code of the extension.
@@ -259,40 +252,36 @@ Now you will have to build the effects and copy them to your KWin effect directo
```bash
./kwin/build.sh
mkdir -p ~/.local/share/kwin/effects
# For Plasma 5
tar -xf kwin/burn_my_windows_kwin5.tar.gz -C ~/.local/share/kwin/effects
# For Plasma 6
tar -xf kwin/burn_my_windows_kwin6.tar.gz -C ~/.local/share/kwin/effects
tar -xf kwin/burn_my_windows_kwin4.tar.gz -C ~/.local/share/kwin/effects
```
That's it!
You can now select the desired effects in the system settings under "Desktop Effects".
## :octocat: I want to contribute!
That's great!
Most likely, you want to [create a new effect](docs/how-to-create-new-effects.md) or to [translate the extension](https://hosted.weblate.org/engage/burn-my-windows/)?
Here are some basic rules to get you started:
Commits should start with a Capital letter and should be written in present tense (e.g. **:tada: Add cool new feature** instead of **:tada: Added cool new feature**).
Commits should start with a Capital letter and should be written in present tense (e.g. __:tada: Add cool new feature__ instead of __:tada: Added cool new feature__).
You should also start your commit message with **one** applicable emoji.
This does not only look great but also makes you rethink what to add to a commit. Make many but small commits!
| Emoji | Description |
| --------------------------------------------------------- | ------------------------------------------------------------------------- |
| :tada: `:tada:` | When you added a cool new feature. |
| :wrench: `:wrench:` | When you added a piece of code. |
| :recycle: `:recycle:` | When you refactored a part of the code. |
| :sparkles: `:sparkles:` | When you applied clang-format. |
| :globe_with_meridians: `:globe_with_meridians:` | When you worked on translations. |
| :art: `:art:` | When you improved / added assets like themes. |
| :lipstick: `:lipstick:` | When you worked on the UI of the preferences dialog. |
| :rocket: `:rocket:` | When you improved performance. |
| :memo: `:memo:` | When you wrote documentation. |
| :beetle: `:beetle:` | When you fixed a bug. |
| :revolving_hearts: `:revolving_hearts:` | When a new sponsor is added or credits are updated. |
| :heavy_check_mark: `:heavy_check_mark:` | When you worked on checks or adjusted the code to be compliant with them. |
| :twisted_rightwards_arrows: `:twisted_rightwards_arrows:` | When you merged a branch. |
| :fire: `:fire:` | When you removed something. |
| :truck: `:truck:` | When you moved / renamed something. |
Emoji | Description
------|------------
:tada: `:tada:` | When you added a cool new feature.
:wrench: `:wrench:` | When you added a piece of code.
:recycle: `:recycle:` | When you refactored a part of the code.
:sparkles: `:sparkles:` | When you applied clang-format.
:globe_with_meridians: `:globe_with_meridians:` | When you worked on translations.
:art: `:art:` | When you improved / added assets like themes.
:lipstick: `:lipstick:` | When you worked on the UI of the preferences dialog.
:rocket: `:rocket:` | When you improved performance.
:memo: `:memo:` | When you wrote documentation.
:beetle: `:beetle:` | When you fixed a bug.
:revolving_hearts: `:revolving_hearts:` | When a new sponsor is added or credits are updated.
:heavy_check_mark: `:heavy_check_mark:` | When you worked on checks or adjusted the code to be compliant with them.
:twisted_rightwards_arrows: `:twisted_rightwards_arrows:` | When you merged a branch.
:fire: `:fire:` | When you removed something.
:truck: `:truck:` | When you moved / renamed something.
-52
View File
@@ -1,52 +0,0 @@
# SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
# SPDX-License-Identifier: CC0-1.0
version = 1
[[annotations]]
path = "tests/references/**"
precedence = "aggregate"
SPDX-FileCopyrightText = "Simon Schneegans <code@simonschneegans.de>"
SPDX-License-Identifier = "CC0-1.0"
[[annotations]]
path = "kwin/metadata.desktop.in"
precedence = "aggregate"
SPDX-FileCopyrightText = "Simon Schneegans <code@simonschneegans.de>"
SPDX-License-Identifier = "CC0-1.0"
[[annotations]]
path = "resources/credits/**"
precedence = "aggregate"
SPDX-FileCopyrightText = "Simon Schneegans <code@simonschneegans.de>"
SPDX-License-Identifier = "CC0-1.0"
[[annotations]]
path = "resources/img/**"
precedence = "aggregate"
SPDX-FileCopyrightText = "Simon Schneegans <code@simonschneegans.de>"
SPDX-License-Identifier = "CC-BY-4.0"
[[annotations]]
path = "docs/pics/**"
precedence = "aggregate"
SPDX-FileCopyrightText = "Simon Schneegans <code@simonschneegans.de>"
SPDX-License-Identifier = "CC-BY-4.0"
[[annotations]]
path = "assets/**"
precedence = "aggregate"
SPDX-FileCopyrightText = "Simon Schneegans <code@simonschneegans.de>"
SPDX-License-Identifier = "CC-BY-4.0"
[[annotations]]
path = "po/**"
precedence = "aggregate"
SPDX-FileCopyrightText = "Simon Schneegans <code@simonschneegans.de>"
SPDX-License-Identifier = "GPL-3.0-or-later"
[[annotations]]
path = "metadata.json"
precedence = "aggregate"
SPDX-FileCopyrightText = "Simon Schneegans <code@simonschneegans.de>"
SPDX-License-Identifier = "GPL-3.0-or-later"
+3 -178
View File
@@ -5,191 +5,14 @@ SPDX-License-Identifier: CC-BY-4.0
# Changelog of the Burn-My-Windows Extension
## [unreleased]
## [Burn My Windows 36](https://github.com/schneegans/Burn-My-Windows/releases/tag/v36)
**Release Date:** TBD
#### New Features
- Added support for GNOME 51. Thanks to [@tristantarrant](https://github.com/tristantarrant) for this contribution!
#### Other Changes
- Many translations have been updated. Thanks to all the translators!
## [Burn My Windows 48](https://github.com/schneegans/Burn-My-Windows/releases/tag/v48)
**Release Date:** 2026-03-15
#### New Features
- Added support for GNOME 50.
#### Other Changes
- Many translations have been updated. Thanks to all the translators!
## [Burn My Windows 47](https://github.com/schneegans/Burn-My-Windows/releases/tag/v47)
**Release Date:** 2025-08-25
#### New Features
- Ported the extension to GNOME 49.
- Added a color preview widget to the preferences of the Aura Glow effect. Thanks to [@lstrsrt](https://github.com/lstrsrt) for this contribution!
#### Other Changes
- Many translations have been updated. Thanks to all the translators!
## [Burn My Windows 46](https://github.com/schneegans/Burn-My-Windows/releases/tag/v46)
**Release Date:** 2025-03-09
#### New Features
- Added an option to choose a random color for the Fire effect each time a window is closed or opened. Thanks to [@jgarza9788](https://github.com/jgarza9788) for this contribution!
#### Other Changes
- Many translations have been updated. Thanks to all the translators!
#### Bug Fixes
- Fixed an issue introduced by the GNOME 48 Beta release which caused some effects to break (Broken Glass, Matrix, Paint Brush, Snap of Disintegration, T-Rex Attack).
## [Burn My Windows 45](https://github.com/schneegans/Burn-My-Windows/releases/tag/v45)
**Release Date:** 2025-02-21
#### New Features
<a href="https://youtu.be/DmFNHnOakpY"><img align="right" src ="pics/bmw45.jpg" /></a>
- **Support for GNOME 48!** The extension has been updated to work with GNOME 48.
- **New Effect: Aura Glow!** This effect adds a glowing aura to your windows. Thanks to [@jgarza9788](https://github.com/jgarza9788) for this contribution!
- **New Effect: Mushroom!** This overly ridiculous effect is inspired by the animation of Super Mario when he eats a mushroom. Thanks again to [@jgarza9788](https://github.com/jgarza9788) for this contribution!
- **New Effect: RGB Warp!** This effect warps the colors of your windows separating the color channels. Thanks once more to [@jgarza9788](https://github.com/jgarza9788) for this contribution!
- **New Effect: Team Rocket!** Do you remember what happened when Team Rocket failed again? Thanks the fourth time to [@jgarza9788](https://github.com/jgarza9788) for this contribution!
#### Other Changes
- If after filtering the effects in the preferences dialog only one effect is left, the effect's settings are shown immediately.
- The fire of the Incinerate effect now propagates circularly. This makes the effect look more natural as it does not mimic the window's aspect ratio anymore. Thanks to [@rcmz](https://github.com/rcmz) for this contribution!
## [Burn My Windows 44](https://github.com/schneegans/Burn-My-Windows/releases/tag/v44)
**Release Date:** 2024-11-06
#### New Features
<a href="https://youtu.be/hEdFfzqy2J0"><img align="right" src ="pics/bmw44.jpg" /></a>
- **New Effect: Focus.** Focus dude, focus. This effect is available both for GNOME and KDE. Thanks to [@jgarza9788](https://github.com/jgarza9788) for this contribution!
- Effect Search: There is now a search bar in the preferences dialog which allows you to quickly find the effect you are looking for. Thanks to [@jgarza9788](https://github.com/jgarza9788) for this contribution!
#### Other Changes
- The animation duration of all effects can now be adjusted between 0.1s and 3s. This makes fine adjustments easier than with the previous 0.1s to 10s range.
- There are now different effect packages for Plasma 5 and Plasma 6. Please make sure to install the correct one for your system.
- Many translations have been updated. Thanks to all the translators!
- The CI jobs now run only on X11. In addition to GNOME 45, they now also run on GNOME 46 and GNOME 47.
#### Bug Fixes
- The effects now work on Plasma 6 even if an ICC profile is set. Thanks to [@Zamundaaa](https://github.com/Zamundaaa) for helping here!
## [Burn My Windows 43](https://github.com/schneegans/Burn-My-Windows/releases/tag/v43)
**Release Date:** 2024-08-23
#### Enhancements
- Ported the extension to GNOME 47.
- Several translations have been updated. Thanks to all the translators!
#### Bug Fixes
- Fixed an issue in the KDE metadata files which caused a warning in the logs on KDE Plasma 6. Thanks to [@nask0](https://github.com/nask0) for the fix!
## [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
@@ -292,6 +115,7 @@ SPDX-License-Identifier: CC-BY-4.0
#### 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)
@@ -300,6 +124,7 @@ SPDX-License-Identifier: CC-BY-4.0
- 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
+291 -69
View File
@@ -104,7 +104,6 @@ Please study this code carefully, all of it is explained with inline comments.
// provides the standard input:
// 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.
@@ -163,16 +162,16 @@ void main() {
// SPDX-FileCopyrightText: Your Name <your@email.com>
// SPDX-License-Identifier: GPL-3.0-or-later
"use strict";
'use strict';
import * as utils from "../utils.js";
const GObject = imports.gi.GObject;
// We import the ShaderFactory only in the Shell process as it is not required in the
// preferences process. The preferences process does not create any shader instances, it
// only uses the static metadata of the effect.
const ShaderFactory = await utils.importInShellOnly("./ShaderFactory.js");
const _ = imports.gettext.domain('burn-my-windows').gettext;
const _ = await utils.importGettext();
const ExtensionUtils = imports.misc.extensionUtils;
const Me = imports.misc.extensionUtils.getCurrentExtension();
const utils = Me.imports.src.utils;
const ShaderFactory = Me.imports.src.ShaderFactory.ShaderFactory;
//////////////////////////////////////////////////////////////////////////////////////////
// This effect ... //
@@ -182,21 +181,21 @@ const _ = await utils.importGettext();
// The effect class can be used to get some metadata (like the effect's name or supported
// GNOME Shell versions), to initialize the respective page of the settings dialog, as
// well as to create the actual shader for the effect.
export default class Effect {
var SimpleFade = class {
// The constructor creates a ShaderFactory which will be used by extension.js to create
// shader instances for this effect. The shaders will be automagically created using the
// GLSL file in resources/shaders/<nick>.glsl. The callback will be called for each
// newly created shader instance.
constructor() {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
this.shaderFactory = new ShaderFactory(this.getNick(), (shader) => {
// Store uniform locations of newly created shaders.
shader._uFadeWidth = shader.get_uniform_location("uFadeWidth");
shader._uFadeWidth = shader.get_uniform_location('uFadeWidth');
// Write all uniform values at the start of each animation.
shader.connect("begin-animation", (shader, settings) => {
shader.set_uniform_float(shader._uFadeWidth, 1, [
settings.get_double("simple-fade-width"),
]);
shader.connect('begin-animation', (shader, settings) => {
shader.set_uniform_float(shader._uFadeWidth, 1, [settings.get_double('simple-fade-width')]);
});
});
}
@@ -204,7 +203,7 @@ export default class Effect {
// ---------------------------------------------------------------------------- metadata
// The effect is available on all GNOME Shell versions supported by this extension.
static getMinShellVersion() {
getMinShellVersion() {
return [3, 36];
}
@@ -213,21 +212,21 @@ export default class Effect {
// 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.
static getNick() {
return "simple-fade";
getNick() {
return 'simple-fade';
}
// This will be shown in the sidebar of the preferences dialog as well as in the
// drop-down menus where the user can choose the effect.
static getLabel() {
return _("Simple Fade Effect");
getLabel() {
return _('Simple Fade Effect');
}
// -------------------------------------------------------------------- API for prefs.js
// 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.
static bindPreferences(dialog) {
bindPreferences(dialog) {
// Empty for now... Code is added here later in the tutorial!
}
@@ -236,8 +235,8 @@ export default class Effect {
// The getActorScale() is called from extension.js to adjust the actor's size during the
// animation. This is useful if the effect requires drawing something beyond the usual
// bounds of the actor. This only works for GNOME 3.38+.
static getActorScale(settings, forOpening, actor) {
return { x: 1.0, y: 1.0 };
getActorScale(settings) {
return {x: 1.0, y: 1.0};
}
}
```
@@ -251,17 +250,15 @@ Both, [`extension.js`](../extension.js) and [`prefs.js`](../prefs.js) define an
Like this:
```javascript
import SimpleFade from './src/effects/SimpleFade.js';
...
const ALL_EFFECTS = [
...
new SimpleFade(),
new Me.imports.src.effects.SimpleFade.SimpleFade(),
...
];
```
### Testing your Effect
Now you can call `make install` and restart GNOME Shell with <kbd>Alt</kbd> + <kbd>F2</kbd>, <kbd>r</kbd> + <kbd>Enter</kbd>.
@@ -277,11 +274,18 @@ gnome-extensions prefs burn-my-windows@schneegans.github.com
## Adding a Preferences Page
There should be two sliders in this example: The animation duration and the width of the fading gradient.
Just save the code below to `resources/ui/adw/simple-fade.ui`.
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.
_: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>
<summary>Expand this to show the UI code.</summary>
<summary>Expand this to show the GTK3 code.</summary>
```xml
<?xml version="1.0" encoding="UTF-8"?>
@@ -294,7 +298,261 @@ SPDX-License-Identifier: GPL-3.0-or-later
<interface domain="burn-my-windows">
<object class="GtkAdjustment" id="simple-fade-animation-time">
<property name="upper">3000</property>
<property name="upper">5000</property>
<property name="lower">100</property>
<property name="step-increment">10</property>
<property name="page-increment">100</property>
</object>
<object class="GtkAdjustment" id="simple-fade-width">
<property name="upper">1</property>
<property name="lower">0</property>
<property name="step-increment">0.01</property>
<property name="page-increment">0.1</property>
</object>
<object class="GtkRevealer" id="simple-fade-prefs">
<child>
<object class="GtkListBox">
<property name="selection-mode">none</property>
<child>
<object class="GtkListBoxRow">
<property name="activatable">0</property>
<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">
<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>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="activatable">0</property>
<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">
<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>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>
```
</details>
<details>
<summary>Expand this to show the GTK4 code.</summary>
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
SPDX-FileCopyrightText: Your Name <your@email.com>
SPDX-License-Identifier: GPL-3.0-or-later
-->
<interface domain="burn-my-windows">
<object class="GtkAdjustment" id="simple-fade-animation-time">
<property name="upper">5000</property>
<property name="lower">100</property>
<property name="step-increment">10</property>
<property name="page-increment">100</property>
</object>
<object class="GtkAdjustment" id="simple-fade-width">
<property name="upper">1</property>
<property name="lower">0</property>
<property name="step-increment">0.01</property>
<property name="page-increment">0.1</property>
</object>
<object class="GtkRevealer" id="simple-fade-prefs">
<child>
<object class="GtkListBox">
<property name="selection-mode">none</property>
<child>
<object class="GtkListBoxRow">
<property name="activatable">0</property>
<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>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="activatable">0</property>
<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>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>
```
</details>
<details>
<summary>Expand this to show the libadwaita code.</summary>
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
SPDX-FileCopyrightText: Your Name <your@email.com>
SPDX-License-Identifier: GPL-3.0-or-later
-->
<interface domain="burn-my-windows">
<object class="GtkAdjustment" id="simple-fade-animation-time">
<property name="upper">5000</property>
<property name="lower">100</property>
<property name="step-increment">10</property>
<property name="page-increment">100</property>
@@ -370,10 +628,10 @@ SPDX-License-Identifier: GPL-3.0-or-later
### Loading the Preferences Page
In order to load the above `*.ui` file, add the following code to your effect's `bindPreferences()` method.
In order to load the above `*.ui` files, add the following code to your effect's `bindPreferences()` method.
```javascript
static bindPreferences(dialog) {
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');
@@ -394,39 +652,3 @@ make install && pkill -f '.Extensions' && sleep 2 ; gnome-extensions prefs burn-
That's it!
If you have any questions, feel free to [ask them on the discussions board](https://github.com/Schneegans/Burn-My-Windows/discussions).
If you are happy with your effect, submit a pull request, and it may get included in the next version!
## Install Dependencies (if needed)
the list below might not be 100% correct, please pull request if changes need to be made
### **Ubuntu**
```bash
sudo apt install make gettext libglib2.0-dev-bin clang-format
```
### **Fedora/RHEL**
```bash
sudo dnf install make gettext glib2-devel clang-format
```
### **Arch Linux**
```bash
sudo pacman -S base-devel gettext glib2 clang-format
```
### **openSUSE**
```bash
sudo zypper install make gettext-tools glib2-devel clang-format
```
### **Alpine Linux**
For minimal distributions like Alpine:
```bash
sudo apk add build-base gettext-dev glib-dev clang-format
```
### **Gentoo**
```bash
sudo emerge --ask sys-devel/make sys-devel/gettext dev-libs/glib clang-format
```
-9
View File
@@ -5,12 +5,3 @@ The preview GIFs are recorded with OBS Studio at 1920x1080, cut to a length of e
```bash
gifski --fps 30 -W 320 -H 180 -o effect.gif effect.mp4
```
# gif Info
GIF length: 2 second(s)
GIF width/height: 320×180 pixels
number of frames: 60
number of colors: 256
loop count: 0 (endless)
The animation should starts 1s into the gif.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 422 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 490 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 567 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 329 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 311 KiB

+93 -73
View File
@@ -14,46 +14,26 @@
'use strict';
import Gio from 'gi://Gio';
import Meta from 'gi://Meta';
const {Clutter, Gio, Meta} = imports.gi;
import {fromVersion26} from './src/migrate.js';
import {ProfileManager} from './src/ProfileManager.js';
import {WindowPicker} from './src/WindowPicker.js';
import * as utils from './src/utils.js';
const Main = imports.ui.main;
const Workspace = imports.ui.workspace.Workspace;
const WindowManager = imports.ui.windowManager.WindowManager;
import Apparition from './src/effects/Apparition.js';
import AuraGlow from './src/effects/AuraGlow.js';
import BrokenGlass from './src/effects/BrokenGlass.js';
import Doom from './src/effects/Doom.js';
import EnergizeA from './src/effects/EnergizeA.js';
import EnergizeB from './src/effects/EnergizeB.js';
import Fire from './src/effects/Fire.js';
import Focus from './src/effects/Focus.js';
import Glide from './src/effects/Glide.js';
import Glitch from './src/effects/Glitch.js';
import Hexagon from './src/effects/Hexagon.js';
import Incinerate from './src/effects/Incinerate.js';
import Matrix from './src/effects/Matrix.js';
import Mushroom from './src/effects/Mushroom.js';
import PaintBrush from './src/effects/PaintBrush.js';
import Pixelate from './src/effects/Pixelate.js';
import PixelWheel from './src/effects/PixelWheel.js';
import PixelWipe from './src/effects/PixelWipe.js';
import Portal from './src/effects/Portal.js';
import RGBWarp from './src/effects/RGBWarp.js';
import SnapOfDisintegration from './src/effects/SnapOfDisintegration.js';
import TeamRocket from './src/effects/TeamRocket.js';
import TRexAttack from './src/effects/TRexAttack.js';
import TVEffect from './src/effects/TVEffect.js';
import TVGlitch from './src/effects/TVGlitch.js';
import Wisps from './src/effects/Wisps.js';
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
import {Workspace} from 'resource:///org/gnome/shell/ui/workspace.js';
import {WindowPreview} from 'resource:///org/gnome/shell/ui/windowPreview.js';
import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js';
// The WindowPreview class is only available on GNOME Shell 3.38+;
let WindowPreview = null;
try {
WindowPreview = imports.ui.windowPreview.WindowPreview;
} catch (error) {
// Nothing to be done, we are on GNOME Shell 3.36.
}
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 //
@@ -64,7 +44,7 @@ import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js';
// to get this working. For more details, read the other comments in this file... //
//////////////////////////////////////////////////////////////////////////////////////////
export default class BurnMyWindows extends Extension {
class Extension {
// ------------------------------------------------------------------------ public stuff
@@ -74,33 +54,47 @@ export default class BurnMyWindows extends Extension {
// New effects must be registered here and in prefs.js.
this._ALL_EFFECTS = [
new Apparition(), new AuraGlow(), new BrokenGlass(), new Doom(),
new EnergizeA(), new EnergizeB(), new Fire(), new Focus(),
new Glide(), new Glitch(), new Hexagon(), new Incinerate(),
new Matrix(), new PaintBrush(), new Pixelate(), new PixelWheel(),
new PixelWipe(), new Portal(), new RGBWarp(), new SnapOfDisintegration(),
new TeamRocket(), new TRexAttack(), new TVEffect(), new TVGlitch(),
new Wisps(), new Mushroom()
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.MagicLamp.MagicLamp(),
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.
this._resources =
Gio.Resource.load(this.path + '/resources/burn-my-windows.gresource');
this._resources = Gio.Resource.load(Me.path + '/resources/burn-my-windows.gresource');
Gio.resources_register(this._resources);
// Store a reference to the settings object.
this._settings = this.getSettings();
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 < this.metadata.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.
fromVersion26().finally(() => {
migrate.fromVersion26().finally(() => {
this._loadProfiles();
this._settings.set_int('last-extension-version', this.metadata.version);
this._settings.set_int('last-extension-version', Me.metadata.version);
});
} else {
this._loadProfiles();
@@ -242,8 +236,20 @@ export default class BurnMyWindows extends Extension {
// the window as well.
Workspace.prototype._addWindowClone = function(...params) {
const clone = extensionThis._origAddWindowClone.apply(this, params);
const container = clone.window_container;
const realWindow = params[0].get_compositor_private();
// The parameters of this method changed a bit through the versions...
let realWindow, container;
if (utils.shellVersionIs(3, 36)) {
container = clone[0];
realWindow = container.realWindow;
} else if (utils.shellVersionIs(3, 38)) {
container = clone._windowContainer;
realWindow = params[0].get_compositor_private();
} else {
container = clone.window_container;
realWindow = params[0].get_compositor_private();
}
// 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
@@ -257,6 +263,16 @@ export default class BurnMyWindows extends Extension {
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#L1363
if (utils.shellVersionIs(3, 36)) {
container.connect('destroy', () => this._doRemoveWindow(container.metaWindow));
}
return clone;
};
@@ -286,7 +302,9 @@ export default class BurnMyWindows extends Extension {
};
// With the code below, we hide the window-overlay (icon, label, close button) in the
// overview once the close-animation is running.
// overview once the close-animation is running. As the WindowPreview class is only
// available on GNOME 3.38 and beyond, we cannot hide the overlay on GNOME 3.36.
if (WindowPreview) {
// We will monkey-patch these methods.
this._origDeleteAll = WindowPreview.prototype._deleteAll;
@@ -331,6 +349,7 @@ export default class BurnMyWindows extends Extension {
}
};
}
}
// This function could be called after the extension is uninstalled, disabled in GNOME
// Tweaks, when you log out or when the screen locks.
@@ -354,9 +373,11 @@ export default class BurnMyWindows extends Extension {
Main.wm._shouldAnimateActor = this._origShouldAnimateActor;
Main.wm._waitForOverviewToHide = this._origWaitForOverviewToHide;
if (WindowPreview) {
WindowPreview.prototype._deleteAll = this._origDeleteAll;
WindowPreview.prototype._restack = this._origRestack;
WindowPreview.prototype._init = this._origInit;
}
this._settings = null;
}
@@ -372,7 +393,7 @@ export default class BurnMyWindows extends Extension {
_loadProfiles() {
// Get all currently available profiles.
const profileManager = new ProfileManager(this.metadata);
const profileManager = new ProfileManager();
this._profiles = profileManager.getProfiles();
// Whenever the properties of a profile is changed in the settings, we may have to
@@ -428,8 +449,7 @@ export default class BurnMyWindows extends Extension {
if (previewNick != '') {
const activeProfile = this._settings.get_string('active-profile');
effect =
this._ALL_EFFECTS.find(effect => effect.constructor.getNick() == previewNick);
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.
@@ -482,7 +502,7 @@ export default class BurnMyWindows extends Extension {
}
// If the profile is still matching, we also check the color scheme.
if (matches && profileColorScheme != 0) {
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');
@@ -512,8 +532,7 @@ export default class BurnMyWindows extends Extension {
// Create a list of all enabled effects of this profile.
const enabled = this._ALL_EFFECTS.filter(effect => {
return profile.settings.get_boolean(
`${effect.constructor.getNick()}-enable-effect`);
return profile.settings.get_boolean(`${effect.getNick()}-enable-effect`);
});
// And then choose a random effect.
@@ -551,8 +570,7 @@ export default class BurnMyWindows extends 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.constructor.getActorScale(profile.settings, forOpening, actor);
const actorScale = effect.getActorScale(profile.settings, forOpening, actor);
// All scaling is relative to the window's center.
actor.set_pivot_point(0.5, 0.5);
@@ -563,7 +581,7 @@ export default class BurnMyWindows extends Extension {
// 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) {
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;
@@ -580,16 +598,12 @@ export default class BurnMyWindows extends Extension {
const endID = shader.connect('end-animation', () => {
shader.disconnect(endID);
if (actor._bmwOverviewClone) {
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();
@@ -605,11 +619,10 @@ export default class BurnMyWindows extends Extension {
}
});
// To make things deterministic during testing, we set the effect duration to 8
// To make things deterministic during testing, we set the effect duration to 5
// seconds.
const duration = testMode ?
8000 :
profile.settings.get_int(effect.constructor.getNick() + '-animation-time');
const duration =
testMode ? 5000 : profile.settings.get_int(effect.getNick() + '-animation-time');
// Finally start the animation!
shader.beginAnimation(profile.settings, forOpening, testMode, duration, actor);
@@ -623,9 +636,16 @@ export default class BurnMyWindows extends Extension {
return true;
}
const actor = workspace._windows[index]._windowActor;
// This was called "realWindow" in GNOME 3.36.
const propertyName = utils.shellVersionIs(3, 36) ? 'realWindow' : '_windowActor';
const actor = workspace._windows[index][propertyName];
const shader = actor.get_effect('burn-my-windows-effect');
return shader == null;
}
}
// This function is called once when the extension is loaded, not enabled.
function init() {
return new Extension();
}
-210
View File
@@ -1,210 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
SPDX-License-Identifier: GPL-3.0-or-later
-->
<ui version="4.0">
<class>BMWConfigForm</class>
<widget class="QWidget" name="BMWConfigForm">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>562</width>
<height>353</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Animation Time [ms]</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QSpinBox" name="kcfg_Duration">
<property name="minimum">
<number>100</number>
</property>
<property name="maximum">
<number>9999</number>
</property>
<property name="singleStep">
<number>100</number>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QCheckBox" name="kcfg_RandomColor">
<property name="text">
<string>Random Color</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Start Hue</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QDoubleSpinBox" name="kcfg_StartHue">
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>0.500000000000000</double>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Speed</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QDoubleSpinBox" name="kcfg_Speed">
<property name="minimum">
<double>-5.000000000000000</double>
</property>
<property name="maximum">
<double>5.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Saturation</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QDoubleSpinBox" name="kcfg_Saturation">
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Edge Size</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QDoubleSpinBox" name="kcfg_EdgeSize">
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Edge Hardness</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QDoubleSpinBox" name="kcfg_EdgeHardness">
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Blur Amount</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QDoubleSpinBox" name="kcfg_BlurAmount">
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>30.000000000000000</double>
</property>
<property name="singleStep">
<double>1.000000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
</layout>
</widget>
<resources />
<connections />
</ui>
-36
View File
@@ -1,36 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
SPDX-License-Identifier: GPL-3.0-or-later
-->
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0 http://www.kde.org/standards/kcfg/1.0/kcfg.xsd">
<kcfgfile name="" />
<group name="">
<entry name="Duration" type="UInt">
<default>750</default>
</entry>
<entry name="RandomColor" type="Bool">
<default>false</default>
</entry>
<entry name="StartHue" type="Double">
<default>0.0</default>
</entry>
<entry name="Speed" type="Double">
<default>2.5</default>
</entry>
<entry name="Saturation" type="Double">
<default>0.75</default>
</entry>
<entry name="EdgeSize" type="Double">
<default>0.75</default>
</entry>
<entry name="EdgeHardness" type="Double">
<default>0.25</default>
</entry>
<entry name="BlurAmount" type="Double">
<default>15.0</default>
</entry>
</group>
</kcfg>
-8
View File
@@ -1,8 +0,0 @@
// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
// SPDX-License-Identifier: GPL-3.0-or-later
// This part is automatically included in the effect's source during the build process.
// The code below is called whenever a window is closed or opened.
let seed = [Math.random(), Math.random()];
effect.setUniform(this.shader, 'uSeed', seed);
-15
View File
@@ -1,15 +0,0 @@
// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
// SPDX-License-Identifier: GPL-3.0-or-later
// This part is automatically included in the effect's source during the build process.
// The code below is called whenever the user changes something in the configuration of
// the effect.
effect.setUniform(this.shader, 'uSpeed', effect.readConfig('Speed', 1.0));
effect.setUniform(this.shader, 'uRandomColor',
effect.readConfig('RandomColor', true) ? 1.0 : 0.0);
effect.setUniform(this.shader, 'uStartHue', effect.readConfig('StartHue', 1.0));
effect.setUniform(this.shader, 'uSaturation', effect.readConfig('Saturation', 1.0));
effect.setUniform(this.shader, 'uBlur', effect.readConfig('BlurAmount', 1.0));
effect.setUniform(this.shader, 'uEdgeSize', effect.readConfig('EdgeSize', 1.0));
effect.setUniform(this.shader, 'uEdgeHardness', effect.readConfig('EdgeHardness', 1.0));
+4 -30
View File
@@ -38,24 +38,14 @@ for file in ../po/*.po; do
msgfmt "$file" -o "$BUILD_DIR/locale/$lang/LC_MESSAGES/burn-my-windows.mo"
done
# This method is called once for each effect. The parameters are as follows:
# This method is called one for each effect. The parameters are as follows:
# $1: The nick of the effect (e.g. "energize-a")
# $2: The name of the effect (e.g. "Energize A")
# $3: A short description of the effect (e.g. "Beam your windows away")
generate() {
generate_impl "$1" "$2" "$3" "kwin5"
generate_impl "$1" "$2" "$3" "kwin6"
}
# This method is called twice for each effect. The parameters are as follows:
# $1: The nick of the effect (e.g. "energize-a")
# $2: The name of the effect (e.g. "Energize A")
# $3: A short description of the effect (e.g. "Beam your windows away")
# #4: Either "kwin5" or "kwin6".
generate_impl() {
# We use the nick for the effect's directory name by replacing dashes with underscoares.
DIR_NAME="${4}_effect_$(echo "$1" | tr '-' '_')"
DIR_NAME="kwin4_effect_$(echo "$1" | tr '-' '_')"
# We transform the nick to CamelCase for the JavaScript class name.
EFFECT_CLASS="BurnMyWindows$(sed -r 's/(^|-)(\w)/\U\2/g' <<<"$1")Effect"
@@ -116,11 +106,6 @@ generate_impl() {
{
echo "#version 140"
echo "#define KWIN"
if [ "$4" == "kwin6" ]; then
echo "#define PLASMA6"
fi
echo ""
echo "// This file is automatically generated during the build process."
echo ""
@@ -130,11 +115,6 @@ generate_impl() {
{
echo "#define KWIN_LEGACY"
if [ "$4" == "kwin6" ]; then
echo "#define PLASMA6"
fi
echo ""
echo "// This file is automatically generated during the build process."
echo ""
@@ -150,16 +130,14 @@ generate_impl() {
# Create an archive which can be uploaded to https://store.kde.org.
# shellcheck disable=SC2046
tar -czf "$DIR_NAME.tar.gz" -C "$BUILD_DIR/$DIR_NAME" $(ls "$BUILD_DIR/$DIR_NAME")
tar -cjf "$DIR_NAME.tar.gz" -C "$BUILD_DIR/$DIR_NAME" $(ls "$BUILD_DIR/$DIR_NAME")
}
# Now run the above method for all supported effects.
generate "aura-glow" "Aura Glow [Burn-My-Windows]" "A radiant edge-lit animation"
generate "doom" "Doom [Burn-My-Windows]" "Melt your windows"
generate "energize-a" "Energize A [Burn-My-Windows]" "Beam your windows away"
generate "energize-b" "Energize B [Burn-My-Windows]" "Using different transporter technology results in an alternative visual effect"
generate "fire" "Fire [Burn-My-Windows]" "The classic effect inspired by Compiz"
generate "focus" "Focus [Burn-My-Windows]" "Focus dude, focus!"
generate "glide" "Glide [Burn-My-Windows]" "Fade the window to transparency with subtle 3D effects"
generate "glitch" "Glitch [Burn-My-Windows]" "This effect applies some intentional graphics issues to your windows"
generate "hexagon" "Hexagon [Burn-My-Windows]" "With glowing lines and hexagon-shaped tiles, this effect looks very sci-fi"
@@ -168,14 +146,10 @@ generate "pixelate" "Pixelate [Burn-My-Windows]" "Pixelate the window and
generate "pixel-wheel" "Pixel Wheel [Burn-My-Windows]" "Pixelate the window and hide the pixels in a wheel-like fashion"
generate "pixel-wipe" "Pixel Wipe [Burn-My-Windows]" "Pixelate the window and hide the pixels radially, starting from the pointer position"
generate "portal" "Portal [Burn-My-Windows]" "Transfer your windows to other locations in space and time"
generate "rgbwarp" "RGB Warp [Burn-My-Windows]" "Red Blue and Green go bye bye"
generate "team-rocket" "Team Rocket [Burn-My-Windows]" "... is blasting off again!"
generate "tv" "TV Effect [Burn-My-Windows]" "Make windows close like turning off a TV"
generate "tv-glitch" "TV Glitch [Burn-My-Windows]" "Make your windows close like a very glitchy old-school TV"
generate "wisps" "Wisps [Burn-My-Windows]" "Let your windows be carried away to the realm of dreams by these little fairies"
# Finally, create an archive for the effects.
# shellcheck disable=SC2046
cd "$BUILD_DIR"
tar -czf "../burn_my_windows_kwin5.tar.gz" kwin5*
tar -czf "../burn_my_windows_kwin6.tar.gz" kwin6*
tar -cjf "burn_my_windows_kwin4.tar.gz" -C "$BUILD_DIR" $(ls "$BUILD_DIR")
+21 -28
View File
@@ -17,13 +17,13 @@ SPDX-License-Identifier: GPL-3.0-or-later
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<item row="4" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Animation Time [ms]</string>
<string>Gradient</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
@@ -40,16 +40,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Scale</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="kcfg_Scale">
<property name="minimum">
@@ -60,17 +50,17 @@ SPDX-License-Identifier: GPL-3.0-or-later
</property>
</widget>
</item>
<item row="2" column="0">
<item row="3" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Speed</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
<item row="3" column="1">
<widget class="QDoubleSpinBox" name="kcfg_MovementSpeed">
<property name="minimum">
<double>-5.000000000000000</double>
@@ -80,17 +70,17 @@ SPDX-License-Identifier: GPL-3.0-or-later
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_4">
<item row="1" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Gradient</string>
<string>Scale</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="1">
<item row="4" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="KColorButton" name="kcfg_Gradient1">
@@ -129,17 +119,20 @@ SPDX-License-Identifier: GPL-3.0-or-later
</item>
</layout>
</item>
<item row="4" column="1">
<item row="7" column="1">
<widget class="QCheckBox" name="kcfg_3DNoise">
<property name="text">
<string>3D Noise</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QCheckBox" name="kcfg_RandomColor">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Use Random Color</string>
<string>Animation Time [ms]</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
@@ -152,6 +145,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
<header>kcolorbutton.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
<resources />
<connections />
</ui>
-3
View File
@@ -36,8 +36,5 @@ SPDX-License-Identifier: GPL-3.0-or-later
<entry name="3DNoise" type="Bool">
<default>false</default>
</entry>
<entry name="RandomColor" type="Bool">
<default>false</default>
</entry>
</group>
</kcfg>
-8
View File
@@ -1,8 +0,0 @@
// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
// SPDX-License-Identifier: GPL-3.0-or-later
// This part is automatically included in the effect's source during the build process.
// The code below is called whenever a window is closed or opened.
let seed = Math.random();
effect.setUniform(this.shader, 'uSeed', seed);
+2 -4
View File
@@ -5,15 +5,13 @@
// The code below is called whenever the user changes something in the configuration of
// the effect.
// clang-format off
effect.setUniform(this.shader, 'uDuration', this.duration * 0.001);
effect.setUniform(this.shader, 'u3DNoise',
effect.readConfig('3DNoise', true) ? 1.0 : 0.0);
effect.setUniform(this.shader, 'uScale', effect.readConfig('Scale', 1.0));
effect.setUniform(this.shader, 'uMovementSpeed', effect.readConfig('MovementSpeed', 1.0));
effect.setUniform(this.shader, 'u3DNoise',effect.readConfig('3DNoise', true) ? 1.0 : 0.0);
effect.setUniform(this.shader, 'uRandomColor', effect.readConfig('RandomColor', true) ? 1.0 : 0.0);
effect.setUniform(this.shader, 'uGradient1', this.readRGBAConfig('Gradient1'));
effect.setUniform(this.shader, 'uGradient2', this.readRGBAConfig('Gradient2'));
effect.setUniform(this.shader, 'uGradient3', this.readRGBAConfig('Gradient3'));
effect.setUniform(this.shader, 'uGradient4', this.readRGBAConfig('Gradient4'));
effect.setUniform(this.shader, 'uGradient5', this.readRGBAConfig('Gradient5'));
// clang-format on
-93
View File
@@ -1,93 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
SPDX-License-Identifier: GPL-3.0-or-later
-->
<ui version="4.0">
<class>BMWConfigForm</class>
<widget class="QWidget" name="BMWConfigForm">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>562</width>
<height>365</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Animation Time [ms]</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Quality</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QSpinBox" name="kcfg_Duration">
<property name="minimum">
<number>100</number>
</property>
<property name="maximum">
<number>9999</number>
</property>
<property name="singleStep">
<number>100</number>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Amount</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QDoubleSpinBox" name="kcfg_Quality">
<property name="decimals">
<number>0</number>
</property>
<property name="minimum">
<double>1.000000000000000</double>
</property>
<property name="maximum">
<double>10.000000000000000</double>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="kcfg_Amount">
<property name="decimals">
<number>0</number>
</property>
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>100.000000000000000</double>
</property>
</widget>
</item>
</layout>
</widget>
<resources />
<connections />
</ui>
-21
View File
@@ -1,21 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
SPDX-License-Identifier: GPL-3.0-or-later
-->
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0 http://www.kde.org/standards/kcfg/1.0/kcfg.xsd">
<kcfgfile name="" />
<group name="">
<entry name="Duration" type="UInt">
<default>500</default>
</entry>
<entry name="Amount" type="UInt">
<default>50</default>
</entry>
<entry name="Quality" type="UInt">
<default>3</default>
</entry>
</group>
</kcfg>
-9
View File
@@ -1,9 +0,0 @@
// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
// SPDX-License-Identifier: GPL-3.0-or-later
// This part is automatically included in the effect's source during the build process.
// The code below is called whenever the user changes something in the configuration of
// the effect.
effect.setUniform(this.shader, 'uBlurAmount', effect.readConfig('Amount', 1.0));
effect.setUniform(this.shader, 'uBlurQuality', effect.readConfig('Quality', 1.0));
+2 -13
View File
@@ -14,13 +14,8 @@ const blacklist = [
// 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"
"jetbrains-studio jetbrains-studio", "jetbrains-clion jetbrains-clion",
"jetbrains-pycharm-ce jetbrains-pycharm-ce"
];
class %EFFECT_CLASS% {
@@ -80,12 +75,6 @@ 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;
}
+1 -3
View File
@@ -1,5 +1,4 @@
{
"KPackageStructure": "KWin/Effect",
"KPlugin": {
"Name": "%NAME%",
"Description": "%DESCRIPTION%",
@@ -13,14 +12,13 @@
"Id": "%DIR_NAME%",
"License": "GPLv3",
"Version": "1.0",
"EnabledByDefault": false,
"EnabledByDefault": "false",
"Website": "https://github.com/Schneegans/Burn-My-Windows/",
"BugReportUrl": "https://github.com/Schneegans/Burn-My-Windows/issues",
"ServiceTypes": [
"KWin/Effect"
]
},
"X-KDE-ConfigModule": "kcm_kwin4_genericscripted",
"X-KDE-Ordering": "60",
"X-KDE-PluginKeyword": "%DIR_NAME%",
"X-KWin-Config-TranslationDomain": "burn-my-windows",
-148
View File
@@ -1,148 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
SPDX-License-Identifier: GPL-3.0-or-later
-->
<ui version="4.0">
<class>BMWConfigForm</class>
<widget class="QWidget" name="BMWConfigForm">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>562</width>
<height>365</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="2" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Speed Red</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QSpinBox" name="kcfg_Duration">
<property name="minimum">
<number>100</number>
</property>
<property name="maximum">
<number>9999</number>
</property>
<property name="singleStep">
<number>100</number>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Brightness</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Animation Time [ms]</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="kcfg_Brightness">
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Speed Green</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Speed Blue</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QDoubleSpinBox" name="kcfg_SpeedR">
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QDoubleSpinBox" name="kcfg_SpeedG">
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QDoubleSpinBox" name="kcfg_SpeedB">
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
-27
View File
@@ -1,27 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
SPDX-License-Identifier: GPL-3.0-or-later
-->
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0 http://www.kde.org/standards/kcfg/1.0/kcfg.xsd">
<kcfgfile name="" />
<group name="">
<entry name="Duration" type="UInt">
<default>750</default>
</entry>
<entry name="Brightness" type="Double">
<default>1.0</default>
</entry>
<entry name="SpeedR" type="Double">
<default>1.0</default>
</entry>
<entry name="SpeedG" type="Double">
<default>0.9</default>
</entry>
<entry name="SpeedB" type="Double">
<default>0.8</default>
</entry>
</group>
</kcfg>
-11
View File
@@ -1,11 +0,0 @@
// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
// SPDX-License-Identifier: GPL-3.0-or-later
// This part is automatically included in the effect's source during the build process.
// The code below is called whenever the user changes something in the configuration of
// the effect.
effect.setUniform(this.shader, 'uBrightness', effect.readConfig('Brightness', 1.0));
effect.setUniform(this.shader, 'uSpeedR', effect.readConfig('SpeedR', 1.0));
effect.setUniform(this.shader, 'uSpeedG', effect.readConfig('SpeedG', 1.0));
effect.setUniform(this.shader, 'uSpeedB', effect.readConfig('SpeedB', 1.0));
-185
View File
@@ -1,185 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
SPDX-License-Identifier: GPL-3.0-or-later
-->
<ui version="4.0">
<class>BMWConfigForm</class>
<widget class="QWidget" name="BMWConfigForm">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>562</width>
<height>365</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Animation Time [ms]</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QSpinBox" name="kcfg_Duration">
<property name="minimum">
<number>100</number>
</property>
<property name="maximum">
<number>9999</number>
</property>
<property name="singleStep">
<number>100</number>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Animation Split</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="kcfg_AnimationSplit">
<property name="minimum">
<double>0.200000000000000</double>
</property>
<property name="maximum">
<double>8.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>0.500000000000000</double>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QCheckBox" name="kcfg_RotateWindow">
<property name="text">
<string>Rotate Window</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Horizontal Sparkle Position</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QDoubleSpinBox" name="kcfg_HorizontalSparklePosition">
<property name="minimum">
<double>-1.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Vertical Sparkle Position</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QDoubleSpinBox" name="kcfg_VerticalSparklePosition">
<property name="minimum">
<double>-1.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Sparkle Size</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QDoubleSpinBox" name="kcfg_SparkleSize">
<property name="minimum">
<double>0.500000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Sparkle Rotation</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QDoubleSpinBox" name="kcfg_SparkleRotation">
<property name="minimum">
<double>-1.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
</layout>
</widget>
<resources />
<connections />
</ui>
-33
View File
@@ -1,33 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
SPDX-License-Identifier: GPL-3.0-or-later
-->
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0 http://www.kde.org/standards/kcfg/1.0/kcfg.xsd">
<kcfgfile name="" />
<group name="">
<entry name="Duration" type="UInt">
<default>1500</default>
</entry>
<entry name="AnimationSplit" type="Double">
<default>0.5</default>
</entry>
<entry name="RotateWindow" type="Bool">
<default>true</default>
</entry>
<entry name="HorizontalSparklePosition" type="Double">
<default>0.0</default>
</entry>
<entry name="VerticalSparklePosition" type="Double">
<default>0.5</default>
</entry>
<entry name="SparkleSize" type="Double">
<default>0.75</default>
</entry>
<entry name="SparkleRotation" type="Double">
<default>0.33</default>
</entry>
</group>
</kcfg>
-8
View File
@@ -1,8 +0,0 @@
// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
// SPDX-License-Identifier: GPL-3.0-or-later
// This part is automatically included in the effect's source during the build process.
// The code below is called whenever a window is closed or opened.
let seed = [Math.random(), Math.random()];
effect.setUniform(this.shader, 'uSeed', seed);
-17
View File
@@ -1,17 +0,0 @@
// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
// SPDX-License-Identifier: GPL-3.0-or-later
// This part is automatically included in the effect's source during the build process.
// The code below is called whenever the user changes something in the configuration of
// the effect.
effect.setUniform(this.shader, 'uAnimationSplit',
effect.readConfig('AnimationSplit', 1.0));
effect.setUniform(this.shader, 'uWindowRotation',
effect.readConfig('RotateWindow', true) ? 1.0 : 0.0);
effect.setUniform(this.shader, 'uHorizontalSparklePosition',
effect.readConfig('HorizontalSparklePosition', 1.0));
effect.setUniform(this.shader, 'uVerticalSparklePosition',
effect.readConfig('VerticalSparklePosition', 1.0));
effect.setUniform(this.shader, 'uSparkleRot', effect.readConfig('SparkleRotation', 1.0));
effect.setUniform(this.shader, 'uSparkleSize', effect.readConfig('SparkleSize', 1.0));
+1 -11
View File
@@ -71,17 +71,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
</widget>
</item>
<item row="1" column="1">
<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>
<widget class="KColorButton" name="kcfg_Color"></widget>
</item>
</layout>
</widget>
+3 -8
View File
@@ -5,7 +5,8 @@ SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
SPDX-License-Identifier: GPL-3.0-or-later
-->
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0 http://www.kde.org/standards/kcfg/1.0/kcfg.xsd">
<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">
@@ -14,14 +15,8 @@ SPDX-License-Identifier: GPL-3.0-or-later
<entry name="Scale" type="Double">
<default>1</default>
</entry>
<entry name="Color1" type="Color">
<entry name="Color" 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>
+1 -3
View File
@@ -7,6 +7,4 @@
effect.setUniform(this.shader, 'uDuration', this.duration * 0.001);
effect.setUniform(this.shader, 'uScale', effect.readConfig('Scale', 1.0));
effect.setUniform(this.shader, 'uColor1', this.readRGBConfig('Color1'));
effect.setUniform(this.shader, 'uColor2', this.readRGBConfig('Color2'));
effect.setUniform(this.shader, 'uColor3', this.readRGBConfig('Color3'));
effect.setUniform(this.shader, 'uColor', this.readRGBConfig('Color'));
+10 -2
View File
@@ -9,7 +9,15 @@
},
"gettext-domain": "burn-my-windows",
"settings-schema": "org.gnome.shell.extensions.burn-my-windows",
"shell-version": ["45", "46", "47", "48", "49", "50", "51"],
"shell-version": [
"3.36",
"3.38",
"40",
"41",
"42",
"43",
"44"
],
"url": "https://github.com/Schneegans/Burn-My-Windows",
"version": 48
"version": 36
}
+376 -382
View File
File diff suppressed because it is too large Load Diff
+376 -382
View File
File diff suppressed because it is too large Load Diff
+376 -370
View File
File diff suppressed because it is too large Load Diff
+432 -447
View File
File diff suppressed because it is too large Load Diff
-795
View File
@@ -1,795 +0,0 @@
# 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: 2025-02-17 20:23+0100\n"
"PO-Revision-Date: 2025-02-27 16:01+0000\n"
"Last-Translator: symegac <97731141+symegac@users.noreply.github.com>\n"
"Language-Team: Danish <https://hosted.weblate.org/projects/burn-my-windows/"
"core/da/>\n"
"Language: da\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 5.10.2-dev\n"
#: src/effects/Apparition.js:80
#, fuzzy
msgid "Apparition"
msgstr "Åndesyn"
#: src/effects/AuraGlow.js:89
msgid "Aura Glow"
msgstr "Auraglød"
#: src/effects/BrokenGlass.js:138
msgid "Broken Glass"
msgstr "Knust glas"
#: src/effects/Doom.js:87
msgid "Doom"
msgstr "Doom"
#: src/effects/EnergizeA.js:74
msgid "Energize A"
msgstr "Energi A"
#: src/effects/EnergizeB.js:75
msgid "Energize B"
msgstr "Energi B"
#: src/effects/Fire.js:96
msgid "Fire"
msgstr "Ild"
#: src/effects/Fire.js:150
msgid "Default Fire"
msgstr "Standardild"
#: src/effects/Fire.js:160
msgid "Hell Fire"
msgstr "Helvedesild"
#: src/effects/Fire.js:170
msgid "Dark and Smutty"
msgstr "Mørk og smudsig"
#: src/effects/Fire.js:180
msgid "Cold Breeze"
msgstr "Kold brise"
#: src/effects/Fire.js:190
msgid "Santa is Coming"
msgstr "Julemanden kommer"
#: src/effects/Fire.js:201
#, fuzzy
msgid "Nuclear ☢️"
msgstr "Atomisk ☢️"
#: src/effects/Focus.js:76
msgid "Focus"
msgstr "Fokus"
#: src/effects/Glide.js:78
msgid "Glide"
msgstr "Glid"
#: src/effects/Glitch.js:80
msgid "Glitch"
msgstr "Skærmfejl"
#: src/effects/Hexagon.js:83
msgid "Hexagon"
msgstr "Sekskant"
#: src/effects/Incinerate.js:126
msgid "Incinerate"
msgstr "Afbrænd"
#: src/effects/Matrix.js:109
msgid "Matrix"
msgstr "Matrix"
#: src/effects/Mushroom.js:124
msgid "Mushroom"
msgstr "Svamp"
#: src/effects/Mushroom.js:204
msgid "8Bit Plumber"
msgstr "8Bit-blikkenslager"
#: src/effects/Mushroom.js:221
msgid "New Bros 2 🍄"
msgstr "New Bros 2 🍄"
#: src/effects/Mushroom.js:239
msgid "Red White and Blue 🇺🇸"
msgstr "Rød, hvid og blå 🇺🇸"
#: src/effects/Mushroom.js:256
msgid "Rainbow 🌈"
msgstr "Regnbue 🌈"
#: src/effects/Mushroom.js:273
#, fuzzy
msgid "Cattuccino 😺"
msgstr "Kattuccino 😺"
#: src/effects/Mushroom.js:291
msgid "Dracula 🦇"
msgstr "Dracula 🦇"
#: src/effects/Mushroom.js:308
msgid "Sparkle ✨"
msgstr "Glimt ✨"
#: src/effects/PaintBrush.js:101
msgid "Paint Brush"
msgstr "Pensel"
#: src/effects/Pixelate.js:74
msgid "Pixelate"
msgstr "Pixeler"
#: src/effects/PixelWheel.js:74
msgid "Pixel Wheel"
msgstr "Pixelhjul"
#: src/effects/PixelWipe.js:100
msgid "Pixel Wipe"
msgstr "Pixelbølge"
#: src/effects/Portal.js:82
msgid "Portal"
msgstr "Portal"
#: src/effects/RGBWarp.js:77
#, fuzzy
msgid "RGB Warp"
msgstr "RGB-forvrængning"
#: src/effects/SnapOfDisintegration.js:110
msgid "Snap of Disintegration"
msgstr "Opløsningsknips"
#: src/effects/TeamRocket.js:89
msgid "Team Rocket"
msgstr "Team Rocket"
#: src/effects/TRexAttack.js:109
msgid "T-Rex Attack"
msgstr "Tyrannosaurus-angreb"
#: src/effects/TVEffect.js:73
msgid "TV Effect"
msgstr "TV-effekt"
#: src/effects/TVGlitch.js:81
msgid "TV Glitch"
msgstr "TV-skærmfejl"
#: src/effects/Wisps.js:85
msgid "Wisps"
msgstr "Feer"
#: prefs.js:256
msgid "Preview this effect"
msgstr "Forhåndsvis denne effekt"
#: prefs.js:333
msgid "Burn-My-Windows has been updated!"
msgstr "Burn-My-Windows er blevet opdateret!"
#: prefs.js:334 resources/ui/common/menus.ui:17
msgid "View Changelog"
msgstr "Vis ændringslog"
#: prefs.js:516
msgid "Delete this Profile?"
msgstr "Slet denne profil?"
#: prefs.js:517
msgid ""
"The current effect profile with all its effect settings will be permanently "
"lost."
msgstr ""
"Den aktuelle effektprofil med alle dens effektsindstillinger vil gå "
"permanent tabt."
#: prefs.js:520
msgid "Cancel"
msgstr "Annuller"
#: prefs.js:525
msgid "Delete"
msgstr "Slet"
#: prefs.js:757 resources/ui/adw/prefs.ui:103
msgid "Opening Windows"
msgstr "Åbning af vinduer"
#: prefs.js:758 resources/ui/adw/prefs.ui:104
msgid "Closing Windows"
msgstr "Lukning af vinduer"
#: prefs.js:759 resources/ui/adw/prefs.ui:118
msgid "Normal Windows"
msgstr "Normale vinduer"
#: prefs.js:760 resources/ui/adw/prefs.ui:119
msgid "Dialog Windows"
msgstr "Dialogvinduer"
#: prefs.js:761 resources/ui/adw/prefs.ui:133
msgid "Default Color Scheme"
msgstr "Standardfarveskema"
#: prefs.js:762 resources/ui/adw/prefs.ui:134
msgid "Dark Color Scheme"
msgstr "Mørkt farveskema"
#: prefs.js:763 resources/ui/adw/prefs.ui:148
msgid "On Battery"
msgstr "På batteri"
#: prefs.js:764 resources/ui/adw/prefs.ui:149
msgid "Plugged In"
msgstr "Tilsluttet"
#: prefs.js:765 resources/ui/adw/prefs.ui:163
msgid "Power-Saver Mode"
msgstr "Energisparetilstand"
#: prefs.js:766 resources/ui/adw/prefs.ui:164
msgid "Balanced Mode"
msgstr "Balanceret tilstand"
#: prefs.js:767 resources/ui/adw/prefs.ui:165
msgid "Performance Mode"
msgstr "Ydelsestilstand"
#: prefs.js:768 resources/ui/adw/prefs.ui:166
msgid "Power Saver or Balanced"
msgstr "Energisparetilstand eller balanceret"
#: prefs.js:769 resources/ui/adw/prefs.ui:167
msgid "Balanced or Performance"
msgstr "Balanceret eller ydelsestilstand"
#: prefs.js:774 resources/ui/adw/prefs.ui:183
msgid "High Priority"
msgstr "Høj prioritet"
#: prefs.js:780
msgid "Standard Profile"
msgstr "Standardprofil"
#. Translators: %s will be replaced by the effect's name.
#: prefs.js:860
#, javascript-format
msgid "Preview for %s"
msgstr "Forhåndsvisning af %s"
#: prefs.js:879
msgid "Close this Window to Preview the Effect!"
msgstr "Luk dette vindue for at forhåndsvise effekten!"
#: resources/ui/common/menus.ui:13
msgid "Visit Homepage"
msgstr "Besøg hjemmesiden"
#: resources/ui/common/menus.ui:21
msgid "View Matching Wallpapers"
msgstr "Vis passende baggrundsbilleder"
#: resources/ui/common/menus.ui:25
msgid "View Donors Hall-of-Fame"
msgstr "Vis donor-æresgalleriet"
#: resources/ui/common/menus.ui:31
msgid "Donate"
msgstr "Doner"
#: resources/ui/common/menus.ui:50
msgid "Report a Bug"
msgstr "Rapportér en fejl"
#: resources/ui/common/menus.ui:54
msgid "Create an Effect"
msgstr "Opret en effekt"
#: resources/ui/common/menus.ui:58
msgid "Translate"
msgstr "Oversæt"
#: resources/ui/common/menus.ui:64
msgid "Open Effect-Profile Directory"
msgstr "Åbn effektprofil-filkatalog"
#: resources/ui/common/menus.ui:70
msgid "About Burn-My-Windows"
msgstr "Om Burn-My-Windows"
#: resources/ui/common/menus.ui:81
msgid "Add New Profile..."
msgstr "Tilføj ny profil..."
#: 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/rgbwarp.ui:17
#: resources/ui/adw/paint-brush.ui:14 resources/ui/adw/trex.ui:14
#: resources/ui/adw/wisps.ui:14 resources/ui/adw/aura-glow.ui:13
#: 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/team-rocket.ui:17 resources/ui/adw/pixel-wipe.ui:14
#: resources/ui/adw/snap.ui:14 resources/ui/adw/focus.ui:35
#: resources/ui/adw/mushroom.ui:17 resources/ui/adw/energize-a.ui:14
#: resources/ui/adw/pixelate.ui:14 resources/ui/adw/tv.ui:14
msgid "Animation Time [ms]"
msgstr "Animationstid [ms]"
#: 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/rgbwarp.ui:42
#: resources/ui/adw/rgbwarp.ui:81 resources/ui/adw/rgbwarp.ui:118
#: resources/ui/adw/rgbwarp.ui:155 resources/ui/adw/rgbwarp.ui:192
#: 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/aura-glow.ui:35 resources/ui/adw/aura-glow.ui:58
#: resources/ui/adw/aura-glow.ui:92 resources/ui/adw/aura-glow.ui:125
#: resources/ui/adw/aura-glow.ui:158 resources/ui/adw/aura-glow.ui:191
#: resources/ui/adw/aura-glow.ui:224 resources/ui/adw/aura-glow.ui:257
#: 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/team-rocket.ui:42
#: resources/ui/adw/team-rocket.ui:80 resources/ui/adw/team-rocket.ui:102
#: resources/ui/adw/team-rocket.ui:139 resources/ui/adw/team-rocket.ui:176
#: resources/ui/adw/team-rocket.ui:214 resources/ui/adw/team-rocket.ui:251
#: 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/focus.ui:50
#: resources/ui/adw/focus.ui:76 resources/ui/adw/focus.ui:102
#: resources/ui/adw/mushroom.ui:42 resources/ui/adw/mushroom.ui:99
#: resources/ui/adw/mushroom.ui:137 resources/ui/adw/mushroom.ui:175
#: resources/ui/adw/mushroom.ui:209 resources/ui/adw/mushroom.ui:243
#: resources/ui/adw/mushroom.ui:281 resources/ui/adw/mushroom.ui:319
#: resources/ui/adw/mushroom.ui:357 resources/ui/adw/mushroom.ui:427
#: 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 "Nulstil til standardværdi"
#: 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 "Størrelse"
#: resources/ui/adw/broken-glass.ui:81
msgid "Gravity"
msgstr "Tyngdekraft"
#: resources/ui/adw/broken-glass.ui:114
msgid "Blow Force"
msgstr "Slagkraft"
#: resources/ui/adw/broken-glass.ui:147
msgid "Shatter From Pointer Location"
msgstr "Knus fra musepositionen"
#: resources/ui/adw/broken-glass.ui:148
msgid ""
"The shards will fly away from where your mouse pointer was when closing the "
"window."
msgstr ""
"Glasskårene flyver væk fra der, hvor din musemarkør befandt sig ved lukning "
"af vinduet."
#: resources/ui/adw/tv-glitch.ui:80 resources/ui/adw/glitch.ui:80
msgid "Strength"
msgstr "Styrke"
#: resources/ui/adw/tv-glitch.ui:113 resources/ui/adw/glitch.ui:113
#: resources/ui/adw/aura-glow.ui:103 resources/ui/adw/fire.ui:96
msgid "Speed"
msgstr "Hastighed"
#: 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 "Farve"
#: resources/ui/adw/matrix.ui:80 resources/ui/adw/apparition.ui:48
msgid "Randomness"
msgstr "Tilfældighed"
#: resources/ui/adw/matrix.ui:113
#, fuzzy
msgid "Vertical Overshooting"
msgstr "Vertikal overskridelse"
#: resources/ui/adw/matrix.ui:146
msgid "Trail Color"
msgstr "Sporets farve"
#: resources/ui/adw/matrix.ui:171
msgid "Tip Color"
msgstr "Spidsens farve"
#: resources/ui/adw/doom.ui:47
msgid "Horizontal Scale"
msgstr "Vandret skalering"
#: resources/ui/adw/doom.ui:80
msgid "Vertical Scale"
msgstr "Lodret skalering"
#: 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 "Pixelstørrelse"
#: resources/ui/adw/rgbwarp.ui:55
msgid "Brightness"
msgstr "Lysstyrke"
#: resources/ui/adw/rgbwarp.ui:93
msgid "Red Speed"
msgstr "Rød hastighed"
#: resources/ui/adw/rgbwarp.ui:130
msgid "Green Speed"
msgstr "Grøn hastighed"
#: resources/ui/adw/rgbwarp.ui:167
msgid "Blue Speed"
msgstr "Blå hastighed"
#: resources/ui/adw/paint-brush.ui:47
msgid "Brush Size"
msgstr "Penselstørrelse"
#: resources/ui/adw/trex.ui:47
msgid "Claw Scratch Scale"
msgstr "Klokradsstørrelse"
#: resources/ui/adw/trex.ui:80
msgid "Claw Scratch Count"
msgstr "Klokradsantal"
#: resources/ui/adw/trex.ui:113
msgid "Warp Effect"
msgstr "Forvridningseffekt"
#: resources/ui/adw/trex.ui:146
msgid "Flash Color"
msgstr "Blitzfarve"
#: resources/ui/adw/aura-glow.ui:47
msgid "Random Color"
msgstr "Tilfældig farve"
#: resources/ui/adw/aura-glow.ui:69
msgid "Start Hue"
msgstr "Startkulør"
#: resources/ui/adw/aura-glow.ui:136
msgid "Saturation"
msgstr "Farvemætning"
#: resources/ui/adw/aura-glow.ui:169
msgid "Edge Size"
msgstr "Kantstørrelse"
#: resources/ui/adw/aura-glow.ui:202
msgid "Edge Hardness"
msgstr "Kanthårdhed"
#: resources/ui/adw/aura-glow.ui:235 resources/ui/adw/focus.ui:61
msgid "Blur Amount"
msgstr "Sløringsmængde"
#: resources/ui/adw/pixel-wheel.ui:47
msgid "Spoke Count"
msgstr "Antal eger"
#: resources/ui/adw/glide.ui:80
#, fuzzy
msgid "Squish"
msgstr "Komprimering"
#: resources/ui/adw/glide.ui:113
msgid "Tilt"
msgstr "Hældning"
#: resources/ui/adw/glide.ui:146
msgid "Shift"
msgstr "Forskydning"
#: resources/ui/adw/apparition.ui:81
msgid "Twirl Intensity"
msgstr "Hvirvelintensitet"
#: resources/ui/adw/apparition.ui:114
msgid "Shake Intensity"
msgstr "Rystelsesintensitet"
#: resources/ui/adw/apparition.ui:147
msgid "Suction Intensity"
msgstr "Sugeintensitet"
#: resources/ui/adw/portal.ui:47
msgid "Rotation Speed"
msgstr "Rotationshastighed"
#: resources/ui/adw/portal.ui:80
msgid "Whirling"
msgstr "Hvirvling"
#: resources/ui/adw/portal.ui:113
msgid "Details"
msgstr "Detaljer"
#: resources/ui/adw/incinerate.ui:80
msgid "Turbulence"
msgstr "Turbulens"
#: resources/ui/adw/incinerate.ui:113
msgid "Start at Pointer"
msgstr "Start ved musemarkør"
#: resources/ui/adw/incinerate.ui:114
msgid "If disabled, a random location will be chosen."
msgstr "Hvis dette er deaktiveret, vælges en tilfældig placering."
#: resources/ui/adw/hexagon.ui:80
msgid "Mesh Line Width"
msgstr "Gitterlinjebredde"
#: resources/ui/adw/hexagon.ui:113
msgid "Line Color"
msgstr "Linjefarve"
#: resources/ui/adw/hexagon.ui:138
msgid "Glow Color"
msgstr "Glødfarve"
#: resources/ui/adw/hexagon.ui:163
msgid "Additive Blending"
msgstr "Additiv farveblanding"
#: resources/ui/adw/hexagon.ui:164
msgid "You may want to enable this for dark window themes."
msgstr "Du får måske brug for at aktivere dette for mørke vinduestemaer."
#: resources/ui/adw/fire.ui:14
msgid "Presets"
msgstr "Forhåndsindstillinger"
#: resources/ui/adw/fire.ui:19 resources/ui/adw/mushroom.ui:61
msgid "Choose a Preset"
msgstr "Vælg en forhåndsindstilling"
#: resources/ui/adw/fire.ui:129
msgid "3D Noise"
msgstr "3D-støj"
#: resources/ui/adw/fire.ui:130
msgid "Creates a more dynamic fire but requires more GPU power."
msgstr "Skaber en mere dynamisk ild men kræver mere GPU-kraft."
#: resources/ui/adw/fire.ui:152
msgid "Gradient"
msgstr "Farveforløb"
#: resources/ui/adw/team-rocket.ui:54
#, fuzzy
msgid "Animation Split"
msgstr "Animationssplit"
#: resources/ui/adw/team-rocket.ui:91
msgid "Rotate Window"
msgstr "Roter vindue"
#: resources/ui/adw/team-rocket.ui:114
msgid "Horizontal Sparkle Position"
msgstr "Vandret glimtposition"
#: resources/ui/adw/team-rocket.ui:151
msgid "Vertical Sparkle Position"
msgstr "Lodret glimtposition"
#: resources/ui/adw/team-rocket.ui:189
msgid "Sparkle Size"
msgstr "Glimtstørrelse"
#: resources/ui/adw/team-rocket.ui:226
msgid "Sparkle Rotation"
msgstr "Glimtrotation"
#: resources/ui/adw/focus.ui:87
msgid "Blur Quality"
msgstr "Sløringskvalitet"
#: resources/ui/adw/prefs.ui:65
msgid "Effect Profile Constraints"
msgstr "Rediger profilbegrænsninger"
#: resources/ui/adw/prefs.ui:66
msgid "Define when the current effect settings should be used."
msgstr "Definer, hvornår de aktuelle effektindstillinger skal bruges."
#: resources/ui/adw/prefs.ui:70
#, fuzzy
msgid "Application"
msgstr "Applikation"
#: 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 "Hvilken som helst"
#: resources/ui/adw/prefs.ui:98
msgid "Animation Type"
msgstr "Animationstype"
#: resources/ui/adw/prefs.ui:113
msgid "Window Type"
msgstr "Vinduestype"
#: resources/ui/adw/prefs.ui:128
msgid "Color Scheme"
msgstr "Farveskema"
#: resources/ui/adw/prefs.ui:143
msgid "Power Mode"
msgstr "Strømtilstand"
#: resources/ui/adw/prefs.ui:158
msgid "Power Profile"
msgstr "Strømprofil"
#: resources/ui/adw/prefs.ui:179
msgid "Advanced Profile Options"
msgstr "Avancerede profilindstillinger"
#: resources/ui/adw/prefs.ui:184
msgid "Use this profile even if there are better matching profiles."
msgstr "Benyt denne profil, selv hvis der er mere passende profiler."
#: resources/ui/adw/prefs.ui:204
msgid "Delete this Profile..."
msgstr "Slet denne profil..."
#: resources/ui/adw/prefs.ui:223
msgid "Effect Selection"
msgstr "Effektudvælgelse"
#: resources/ui/adw/prefs.ui:224
msgid "If multiple are selected, one is chosen randomly."
msgstr "Hvis flere er valgt, vælges en tilfældigt."
#: resources/ui/adw/prefs.ui:235
msgid "Search..."
msgstr "Søg..."
#: resources/ui/adw/prefs.ui:250
msgid "Enable All"
msgstr "Aktivér alle"
#: resources/ui/adw/prefs.ui:256
msgid "Disable All"
msgstr "Deaktiver alle"
#: resources/ui/adw/mushroom.ui:55
msgid "Effect Presets"
msgstr "Effektforudindstillinger"
#: resources/ui/adw/mushroom.ui:73
msgid "Scale Style"
msgstr "Skaleringsstil"
#: resources/ui/adw/mushroom.ui:74
msgid "8Bit --- Smooth"
msgstr "8Bit --- Blød"
#: resources/ui/adw/mushroom.ui:112
msgid "Spark Count"
msgstr "Glimtantal"
#: resources/ui/adw/mushroom.ui:150
msgid "Spark Rotation"
msgstr "Glimtrotation"
#: resources/ui/adw/mushroom.ui:188
msgid "Spark Color"
msgstr "Glimtfarve"
#: resources/ui/adw/mushroom.ui:222
msgid "Rays Color"
msgstr "Strålefarve"
#: resources/ui/adw/mushroom.ui:256
msgid "Star Rings Count"
msgstr "Antal stjerneringe"
#: resources/ui/adw/mushroom.ui:294
msgid "Star Ring Rotation"
msgstr "Stjerneringsrotation"
#: resources/ui/adw/mushroom.ui:332
msgid "Stars Count Per Ring"
msgstr "Antal stjerner pr. ring"
#: resources/ui/adw/mushroom.ui:370
msgid "Star Gradient"
msgstr "Stjernefarveforløb"
#: resources/ui/adw/pixelate.ui:47
msgid "Noise"
msgstr "Støj"
#~ msgid "Gold Sponsors"
#~ msgstr "Guldsponsorer"
#~ msgid "Silver Sponsors"
#~ msgstr "Sølvsponsorer"
#~ msgid "Bronze Sponsors"
#~ msgstr "Bronzesponsorer"
#~ msgid "Past Sponsors"
#~ msgstr "Tidligere sponsorer"
#~ msgid "All"
#~ msgstr "Alle"
#~ msgid "None"
#~ msgstr "Ingen"
+383 -401
View File
File diff suppressed because it is too large Load Diff
-769
View File
@@ -1,769 +0,0 @@
# 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: 2025-02-17 20:23+0100\n"
"PO-Revision-Date: 2025-05-25 10:03+0000\n"
"Last-Translator: cris b <ventura@users.noreply.hosted.weblate.org>\n"
"Language-Team: Greek <https://hosted.weblate.org/projects/burn-my-windows/"
"core/el/>\n"
"Language: el\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 5.12-dev\n"
#: src/effects/Apparition.js:80
msgid "Apparition"
msgstr "Οπτασία"
#: src/effects/AuraGlow.js:89
msgid "Aura Glow"
msgstr "Λάμψη Αύρας"
#: src/effects/BrokenGlass.js:138
msgid "Broken Glass"
msgstr "Σπασμένο Γυαλί"
#: src/effects/Doom.js:87
msgid "Doom"
msgstr "Καταδίκη"
#: src/effects/EnergizeA.js:74
msgid "Energize A"
msgstr "Ενεργοποίηση Α"
#: src/effects/EnergizeB.js:75
msgid "Energize B"
msgstr "Ενεργοποίηση Β"
#: src/effects/Fire.js:96
msgid "Fire"
msgstr "Φωτιά"
#: src/effects/Fire.js:150
msgid "Default Fire"
msgstr "Προεπιλεγμένη Φωτιά"
#: src/effects/Fire.js:160
msgid "Hell Fire"
msgstr "Πυρκαγιά"
#: src/effects/Fire.js:170
msgid "Dark and Smutty"
msgstr "Σκοτεινό και Βρώμικο"
#: src/effects/Fire.js:180
msgid "Cold Breeze"
msgstr "Κρύο Αεράκι"
#: src/effects/Fire.js:190
msgid "Santa is Coming"
msgstr "Ο Άι Βασίλης Έρχεται"
#: src/effects/Fire.js:201
msgid "Nuclear ☢️"
msgstr "Πυρηνικά ☢️"
#: src/effects/Focus.js:76
msgid "Focus"
msgstr "Συγκέντρωση"
#: src/effects/Glide.js:78
msgid "Glide"
msgstr "Ολίσθηση"
#: src/effects/Glitch.js:80
msgid "Glitch"
msgstr "Σφάλμα"
#: src/effects/Hexagon.js:83
msgid "Hexagon"
msgstr "Εξάγωνο"
#: src/effects/Incinerate.js:126
msgid "Incinerate"
msgstr "Αποτέφρωσε"
#: src/effects/Matrix.js:109
msgid "Matrix"
msgstr "Μήτρα"
#: src/effects/Mushroom.js:124
msgid "Mushroom"
msgstr "Μανιτάρι"
#: src/effects/Mushroom.js:204
msgid "8Bit Plumber"
msgstr "Υδραυλικός 8bit"
#: src/effects/Mushroom.js:221
msgid "New Bros 2 🍄"
msgstr "Νέο Bros 2 🍄"
#: src/effects/Mushroom.js:239
msgid "Red White and Blue 🇺🇸"
msgstr "Κόκκινο Λευκό και Μπλε 🇺🇸"
#: src/effects/Mushroom.js:256
msgid "Rainbow 🌈"
msgstr "Ουράνιο τόξο 🌈"
#: src/effects/Mushroom.js:273
msgid "Cattuccino 😺"
msgstr "Γατουτσίνο 😺"
#: src/effects/Mushroom.js:291
msgid "Dracula 🦇"
msgstr "Δράκουλας 🦇"
#: src/effects/Mushroom.js:308
msgid "Sparkle ✨"
msgstr "Σπινθηρίζω ✨"
#: src/effects/PaintBrush.js:101
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:100
msgid "Pixel Wipe"
msgstr "Σκουπίσμα Εικονοστοιχείων"
#: src/effects/Portal.js:82
msgid "Portal"
msgstr "Πύλη"
#: src/effects/RGBWarp.js:77
msgid "RGB Warp"
msgstr "RGB Παραμόρφωση"
#: src/effects/SnapOfDisintegration.js:110
msgid "Snap of Disintegration"
msgstr "Κρότος της Αποσύνθεσης"
#: src/effects/TeamRocket.js:89
msgid "Team Rocket"
msgstr "Ομάδα Πύραυλος"
#: src/effects/TRexAttack.js:109
msgid "T-Rex Attack"
msgstr "Επίθεση T-Rex"
#: src/effects/TVEffect.js:73
msgid "TV Effect"
msgstr "Εφέ Τηλεόρασης"
#: src/effects/TVGlitch.js:81
msgid "TV Glitch"
msgstr "Σφάλμα Τηλεόρασης"
#: src/effects/Wisps.js:85
msgid "Wisps"
msgstr "Δέσμες"
#: prefs.js:256
msgid "Preview this effect"
msgstr "Προεπισκόπηση του εφέ"
#: prefs.js:333
msgid "Burn-My-Windows has been updated!"
msgstr "Το Burn-My-Windows έχει ενημερωθεί!"
#: prefs.js:334 resources/ui/common/menus.ui:17
msgid "View Changelog"
msgstr "Δείτε το Αρχείο Αλλαγών"
#: prefs.js:516
msgid "Delete this Profile?"
msgstr "Διαγραφή αυτού του Προφίλ;"
#: prefs.js:517
msgid ""
"The current effect profile with all its effect settings will be permanently "
"lost."
msgstr "Το τρέχον προφίλ εφέ με όλες τις ρυθμίσεις εφέν θα χαθούν μόνιμα."
#: prefs.js:520
msgid "Cancel"
msgstr "Ακύρωση"
#: prefs.js:525
msgid "Delete"
msgstr "Διαγραφή"
#: prefs.js:757 resources/ui/adw/prefs.ui:103
msgid "Opening Windows"
msgstr "Άνοιγμα Παραθύρων"
#: prefs.js:758 resources/ui/adw/prefs.ui:104
msgid "Closing Windows"
msgstr "Κλείσιμο Παραθύρων"
#: prefs.js:759 resources/ui/adw/prefs.ui:118
msgid "Normal Windows"
msgstr "Κανονικά Παραθύρα"
#: prefs.js:760 resources/ui/adw/prefs.ui:119
msgid "Dialog Windows"
msgstr "Παράθυρα Διαλόγου"
#: prefs.js:761 resources/ui/adw/prefs.ui:133
msgid "Default Color Scheme"
msgstr "Προεπιλεγμένο Σχέδιο Χρωμάτων"
#: prefs.js:762 resources/ui/adw/prefs.ui:134
msgid "Dark Color Scheme"
msgstr "Σκούρο Σχέδιο Χρωμάτων"
#: prefs.js:763 resources/ui/adw/prefs.ui:148
msgid "On Battery"
msgstr "Σε Μπαταρία"
#: prefs.js:764 resources/ui/adw/prefs.ui:149
msgid "Plugged In"
msgstr "Συνδεδεμένο"
#: prefs.js:765 resources/ui/adw/prefs.ui:163
msgid "Power-Saver Mode"
msgstr "Λειτουργία Εξοινόμησης-Ενέργειας"
#: prefs.js:766 resources/ui/adw/prefs.ui:164
msgid "Balanced Mode"
msgstr "Ισορροπημένη Λειτουργία"
#: prefs.js:767 resources/ui/adw/prefs.ui:165
msgid "Performance Mode"
msgstr "Λειτουργία Απόδοσης"
#: prefs.js:768 resources/ui/adw/prefs.ui:166
msgid "Power Saver or Balanced"
msgstr "Εξοικονόμηση ενέργειας ή Ισορροπημένη"
#: prefs.js:769 resources/ui/adw/prefs.ui:167
msgid "Balanced or Performance"
msgstr "Ισορροπημένη ή Απόδοσης"
#: prefs.js:774 resources/ui/adw/prefs.ui:183
msgid "High Priority"
msgstr "Υψηλή Προτεραιότητα"
#: prefs.js:780
msgid "Standard Profile"
msgstr "Τυπικό Προφίλ"
#. Translators: %s will be replaced by the effect's name.
#: prefs.js:860
#, javascript-format
msgid "Preview for %s"
msgstr "Προεπισκόπηση για %s"
#: prefs.js:879
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:25
msgid "View Donors Hall-of-Fame"
msgstr "Δείτε το Hall-of-Fame των Δωρητών"
#: resources/ui/common/menus.ui:31
msgid "Donate"
msgstr "Δωρήστε"
#: resources/ui/common/menus.ui:50
msgid "Report a Bug"
msgstr "Αναφέρετε ένα Σφάλμα"
#: resources/ui/common/menus.ui:54
msgid "Create an Effect"
msgstr "Δημιουργήστε ένα Εφέ"
#: resources/ui/common/menus.ui:58
msgid "Translate"
msgstr "Μεταφράστε"
#: resources/ui/common/menus.ui:64
msgid "Open Effect-Profile Directory"
msgstr "Ανοίξτε Κατάλογο Προφίλ-Εφέ"
#: resources/ui/common/menus.ui:70
msgid "About Burn-My-Windows"
msgstr "Σχετικά με το Burn-My-Windows"
#: resources/ui/common/menus.ui:81
msgid "Add New Profile..."
msgstr "Προσθήκη Νέου Προφίλ ..."
#: 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/rgbwarp.ui:17
#: resources/ui/adw/paint-brush.ui:14 resources/ui/adw/trex.ui:14
#: resources/ui/adw/wisps.ui:14 resources/ui/adw/aura-glow.ui:13
#: 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/team-rocket.ui:17 resources/ui/adw/pixel-wipe.ui:14
#: resources/ui/adw/snap.ui:14 resources/ui/adw/focus.ui:35
#: resources/ui/adw/mushroom.ui:17 resources/ui/adw/energize-a.ui:14
#: resources/ui/adw/pixelate.ui:14 resources/ui/adw/tv.ui:14
msgid "Animation Time [ms]"
msgstr "Χρόνος Κινουμένων Σχεδίων [ms]"
#: 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/rgbwarp.ui:42
#: resources/ui/adw/rgbwarp.ui:81 resources/ui/adw/rgbwarp.ui:118
#: resources/ui/adw/rgbwarp.ui:155 resources/ui/adw/rgbwarp.ui:192
#: 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/aura-glow.ui:35 resources/ui/adw/aura-glow.ui:58
#: resources/ui/adw/aura-glow.ui:92 resources/ui/adw/aura-glow.ui:125
#: resources/ui/adw/aura-glow.ui:158 resources/ui/adw/aura-glow.ui:191
#: resources/ui/adw/aura-glow.ui:224 resources/ui/adw/aura-glow.ui:257
#: 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/team-rocket.ui:42
#: resources/ui/adw/team-rocket.ui:80 resources/ui/adw/team-rocket.ui:102
#: resources/ui/adw/team-rocket.ui:139 resources/ui/adw/team-rocket.ui:176
#: resources/ui/adw/team-rocket.ui:214 resources/ui/adw/team-rocket.ui:251
#: 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/focus.ui:50
#: resources/ui/adw/focus.ui:76 resources/ui/adw/focus.ui:102
#: resources/ui/adw/mushroom.ui:42 resources/ui/adw/mushroom.ui:99
#: resources/ui/adw/mushroom.ui:137 resources/ui/adw/mushroom.ui:175
#: resources/ui/adw/mushroom.ui:209 resources/ui/adw/mushroom.ui:243
#: resources/ui/adw/mushroom.ui:281 resources/ui/adw/mushroom.ui:319
#: resources/ui/adw/mushroom.ui:357 resources/ui/adw/mushroom.ui:427
#: 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/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/adw/broken-glass.ui:81
msgid "Gravity"
msgstr "Βαρύτητα"
#: resources/ui/adw/broken-glass.ui:114
msgid "Blow Force"
msgstr "Δύναμη Έκρηξης"
#: resources/ui/adw/broken-glass.ui:147
msgid "Shatter From Pointer Location"
msgstr "Θραύση Από Την Τοποθεσία Κέρσορα"
#: 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/adw/tv-glitch.ui:80 resources/ui/adw/glitch.ui:80
msgid "Strength"
msgstr "Δύναμη"
#: resources/ui/adw/tv-glitch.ui:113 resources/ui/adw/glitch.ui:113
#: resources/ui/adw/aura-glow.ui:103 resources/ui/adw/fire.ui:96
msgid "Speed"
msgstr "Ταχύτητα"
#: 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/adw/matrix.ui:80 resources/ui/adw/apparition.ui:48
msgid "Randomness"
msgstr "Τυχαιότητα"
#: resources/ui/adw/matrix.ui:113
msgid "Vertical Overshooting"
msgstr "Κατακόρυφη Επικάλυψη"
#: resources/ui/adw/matrix.ui:146
msgid "Trail Color"
msgstr "Χρώμα Ίχνους"
#: resources/ui/adw/matrix.ui:171
msgid "Tip Color"
msgstr "Χρώμα Άκρης"
#: resources/ui/adw/doom.ui:47
msgid "Horizontal Scale"
msgstr "Οριζόντια Κλιμάκωση"
#: resources/ui/adw/doom.ui:80
msgid "Vertical Scale"
msgstr "Κατακόρυφη Κλιμάκωση"
#: 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/adw/rgbwarp.ui:55
msgid "Brightness"
msgstr "Φωτεινότητα"
#: resources/ui/adw/rgbwarp.ui:93
msgid "Red Speed"
msgstr "Ταχύτητα Κόκκινου"
#: resources/ui/adw/rgbwarp.ui:130
msgid "Green Speed"
msgstr "Ταχύτητα Πράσινου"
#: resources/ui/adw/rgbwarp.ui:167
msgid "Blue Speed"
msgstr "Ταχύτητα Μπλε"
#: resources/ui/adw/paint-brush.ui:47
msgid "Brush Size"
msgstr "Μέγεθος Βούρτσας"
#: resources/ui/adw/trex.ui:47
msgid "Claw Scratch Scale"
msgstr "Κλιμάκωση γραντζουνιών"
#: resources/ui/adw/trex.ui:80
msgid "Claw Scratch Count"
msgstr "Πλήθος Γραντζουνιών"
#: resources/ui/adw/trex.ui:113
msgid "Warp Effect"
msgstr "Εφέ Παραμόρφωσης"
#: resources/ui/adw/trex.ui:146
msgid "Flash Color"
msgstr "Χρώμα Φλας"
#: resources/ui/adw/aura-glow.ui:47
msgid "Random Color"
msgstr "Τυχαίο Χρώμα"
#: resources/ui/adw/aura-glow.ui:69
msgid "Start Hue"
msgstr "Απόχρωση Έναρξης"
#: resources/ui/adw/aura-glow.ui:136
msgid "Saturation"
msgstr "Κορεσμός"
#: resources/ui/adw/aura-glow.ui:169
msgid "Edge Size"
msgstr "Μέγεθος Άκρων"
#: resources/ui/adw/aura-glow.ui:202
msgid "Edge Hardness"
msgstr "Σκληρότητα Άκρων"
#: resources/ui/adw/aura-glow.ui:235 resources/ui/adw/focus.ui:61
msgid "Blur Amount"
msgstr "Ποσό Θολώματος"
#: resources/ui/adw/pixel-wheel.ui:47
msgid "Spoke Count"
msgstr "Πλήθος Ακτίνων"
#: resources/ui/adw/glide.ui:80
msgid "Squish"
msgstr "Συμπίεση"
#: resources/ui/adw/glide.ui:113
msgid "Tilt"
msgstr "Πρόσκλιση"
#: resources/ui/adw/glide.ui:146
msgid "Shift"
msgstr "Μετακίνηση"
#: resources/ui/adw/apparition.ui:81
msgid "Twirl Intensity"
msgstr "Ένταση Στρόβιλου"
#: resources/ui/adw/apparition.ui:114
msgid "Shake Intensity"
msgstr "Ένταση Κουνήματος"
#: resources/ui/adw/apparition.ui:147
msgid "Suction Intensity"
msgstr "Ένταση Αναρρόφησης"
#: resources/ui/adw/portal.ui:47
msgid "Rotation Speed"
msgstr "Ταχύτητα Περιστροφής"
#: resources/ui/adw/portal.ui:80
msgid "Whirling"
msgstr "Στροβιλισμός"
#: resources/ui/adw/portal.ui:113
msgid "Details"
msgstr "Λεπτομέρειες"
#: resources/ui/adw/incinerate.ui:80
msgid "Turbulence"
msgstr "Tύρβη"
#: resources/ui/adw/incinerate.ui:113
msgid "Start at Pointer"
msgstr "Ξεκινήστε από τον Κέρσορα"
#: resources/ui/adw/incinerate.ui:114
msgid "If disabled, a random location will be chosen."
msgstr "Εάν απενεργοποιηθεί, θα επιλεγεί μια τυχαία θέση."
#: resources/ui/adw/hexagon.ui:80
msgid "Mesh Line Width"
msgstr "Πλάτος Γραμμής Πλέγματος"
#: resources/ui/adw/hexagon.ui:113
msgid "Line Color"
msgstr "Χρώμα Γραμμής"
#: resources/ui/adw/hexagon.ui:138
msgid "Glow Color"
msgstr "Χρώμα Λάμψης"
#: resources/ui/adw/hexagon.ui:163
msgid "Additive Blending"
msgstr "Πρόσθετη Ανάμειξη"
#: resources/ui/adw/hexagon.ui:164
msgid "You may want to enable this for dark window themes."
msgstr "Μπορεί να θέλετε να το ενεργοποιήσετε για θέματα σκοτεινού παραθύρου."
#: resources/ui/adw/fire.ui:14
msgid "Presets"
msgstr "Προεπιλογές"
#: resources/ui/adw/fire.ui:19 resources/ui/adw/mushroom.ui:61
msgid "Choose a Preset"
msgstr "Επιλέξτε μια Προεπιλογή"
#: resources/ui/adw/fire.ui:129
msgid "3D Noise"
msgstr "3D Θόρυβος"
#: resources/ui/adw/fire.ui:130
msgid "Creates a more dynamic fire but requires more GPU power."
msgstr "Δημιουργεί μια πιο δυναμική φωτιά, αλλά απαιτεί περισσότερη ισχύ GPU."
#: resources/ui/adw/fire.ui:152
msgid "Gradient"
msgstr "Κλίση"
#: resources/ui/adw/team-rocket.ui:54
msgid "Animation Split"
msgstr "Διαχωρισμός Κινουμένων Σχεδίων"
#: resources/ui/adw/team-rocket.ui:91
msgid "Rotate Window"
msgstr "Περιστρεφή Παραθύρου"
#: resources/ui/adw/team-rocket.ui:114
msgid "Horizontal Sparkle Position"
msgstr "Οριζόντια Θέση Σπινθήρων"
#: resources/ui/adw/team-rocket.ui:151
msgid "Vertical Sparkle Position"
msgstr "Κατακόρυφη Θέση Σπινθήρων"
#: resources/ui/adw/team-rocket.ui:189
msgid "Sparkle Size"
msgstr "Μέγεθος Σπινθήρων"
#: resources/ui/adw/team-rocket.ui:226
msgid "Sparkle Rotation"
msgstr "Περιστροφή Σπινθήρων"
#: resources/ui/adw/focus.ui:87
msgid "Blur Quality"
msgstr "Ποιότητα Θολώματος"
#: resources/ui/adw/prefs.ui:65
msgid "Effect Profile Constraints"
msgstr "Περιορισμοί Προφίλ Εφέ"
#: resources/ui/adw/prefs.ui:66
msgid "Define when the current effect settings should be used."
msgstr "Ορίστε πότε πρέπει να χρησιμοποιηθούν οι τρέχουσες ρυθμίσεις εφέ."
#: resources/ui/adw/prefs.ui:70
msgid "Application"
msgstr "Εφαρμογή"
#: 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/adw/prefs.ui:98
msgid "Animation Type"
msgstr "Τύπος Κινουμένων Σχεδίων"
#: resources/ui/adw/prefs.ui:113
msgid "Window Type"
msgstr "Τύπος Παραθύρου"
#: resources/ui/adw/prefs.ui:128
msgid "Color Scheme"
msgstr "Σχέδιο Χρώματος"
#: resources/ui/adw/prefs.ui:143
msgid "Power Mode"
msgstr "Λειτουργία Ισχύος"
#: resources/ui/adw/prefs.ui:158
msgid "Power Profile"
msgstr "Προφίλ Ισχύος"
#: resources/ui/adw/prefs.ui:179
msgid "Advanced Profile Options"
msgstr "Προχωρημένες Επιλογές Προφίλ"
#: resources/ui/adw/prefs.ui:184
msgid "Use this profile even if there are better matching profiles."
msgstr ""
"Χρησιμοποιήστε αυτό το προφίλ ακόμη και αν υπάρχουν καλύτερα αντιστοιχίσιμα "
"προφίλ ."
#: resources/ui/adw/prefs.ui:204
msgid "Delete this Profile..."
msgstr "Διαγράψτε αυτό το Προφίλ .."
#: resources/ui/adw/prefs.ui:223
msgid "Effect Selection"
msgstr "Επιλογή Εφέ"
#: resources/ui/adw/prefs.ui:224
msgid "If multiple are selected, one is chosen randomly."
msgstr "Εάν έχουν επιλεγεί πολλαπλά, επιλέγεται ένα τυχαία."
#: resources/ui/adw/prefs.ui:235
msgid "Search..."
msgstr "Αναζήτηση..."
#: resources/ui/adw/prefs.ui:250
msgid "Enable All"
msgstr "Ενεργοποίηση Όλων"
#: resources/ui/adw/prefs.ui:256
msgid "Disable All"
msgstr "Απενεργοποίηση Όλων"
#: resources/ui/adw/mushroom.ui:55
msgid "Effect Presets"
msgstr "Προεπιλογές Εφέ"
#: resources/ui/adw/mushroom.ui:73
msgid "Scale Style"
msgstr "Στυλ Κλιμάκωσης"
#: resources/ui/adw/mushroom.ui:74
msgid "8Bit --- Smooth"
msgstr "8Bit --- Ομαλό"
#: resources/ui/adw/mushroom.ui:112
msgid "Spark Count"
msgstr "Πλήθος Σπινθήρων"
#: resources/ui/adw/mushroom.ui:150
msgid "Spark Rotation"
msgstr "Περιστροφή Σπινθήρα"
#: resources/ui/adw/mushroom.ui:188
msgid "Spark Color"
msgstr "Χρώμα Σπινθήρων"
#: resources/ui/adw/mushroom.ui:222
msgid "Rays Color"
msgstr "Χρώμα Ακτίνων"
#: resources/ui/adw/mushroom.ui:256
msgid "Star Rings Count"
msgstr "Πλήθος Αστρικών Δακτυλίων"
#: resources/ui/adw/mushroom.ui:294
msgid "Star Ring Rotation"
msgstr "Περιστροφή Αστρικού Δακτυλίου"
#: resources/ui/adw/mushroom.ui:332
msgid "Stars Count Per Ring"
msgstr "Πλήθος Αστέρων Ανά Δακτύλιο"
#: resources/ui/adw/mushroom.ui:370
msgid "Star Gradient"
msgstr "Κλίση Αστέρα"
#: resources/ui/adw/pixelate.ui:47
msgid "Noise"
msgstr "Θόρυβος"
+376 -382
View File
File diff suppressed because it is too large Load Diff
+383 -395
View File
File diff suppressed because it is too large Load Diff
-766
View File
@@ -1,766 +0,0 @@
# 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: 2025-02-17 20:23+0100\n"
"PO-Revision-Date: 2025-02-04 12:01+0000\n"
"Last-Translator: Priit Jõerüüt <hwlate@joeruut.com>\n"
"Language-Team: Estonian <https://hosted.weblate.org/projects/burn-my-windows/"
"core/et/>\n"
"Language: et\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 5.10-dev\n"
#: src/effects/Apparition.js:80
msgid "Apparition"
msgstr ""
#: src/effects/AuraGlow.js:89
msgid "Aura Glow"
msgstr ""
#: src/effects/BrokenGlass.js:138
msgid "Broken Glass"
msgstr ""
#: src/effects/Doom.js:87
msgid "Doom"
msgstr ""
#: src/effects/EnergizeA.js:74
msgid "Energize A"
msgstr ""
#: src/effects/EnergizeB.js:75
msgid "Energize B"
msgstr ""
#: src/effects/Fire.js:96
msgid "Fire"
msgstr ""
#: src/effects/Fire.js:150
msgid "Default Fire"
msgstr ""
#: src/effects/Fire.js:160
msgid "Hell Fire"
msgstr ""
#: src/effects/Fire.js:170
msgid "Dark and Smutty"
msgstr ""
#: src/effects/Fire.js:180
msgid "Cold Breeze"
msgstr ""
#: src/effects/Fire.js:190
msgid "Santa is Coming"
msgstr ""
#: src/effects/Fire.js:201
msgid "Nuclear ☢️"
msgstr ""
#: src/effects/Focus.js:76
msgid "Focus"
msgstr ""
#: src/effects/Glide.js:78
msgid "Glide"
msgstr ""
#: src/effects/Glitch.js:80
msgid "Glitch"
msgstr ""
#: src/effects/Hexagon.js:83
msgid "Hexagon"
msgstr ""
#: src/effects/Incinerate.js:126
msgid "Incinerate"
msgstr ""
#: src/effects/Matrix.js:109
msgid "Matrix"
msgstr ""
#: src/effects/Mushroom.js:124
msgid "Mushroom"
msgstr ""
#: src/effects/Mushroom.js:204
msgid "8Bit Plumber"
msgstr ""
#: src/effects/Mushroom.js:221
msgid "New Bros 2 🍄"
msgstr ""
#: src/effects/Mushroom.js:239
msgid "Red White and Blue 🇺🇸"
msgstr ""
#: src/effects/Mushroom.js:256
msgid "Rainbow 🌈"
msgstr ""
#: src/effects/Mushroom.js:273
msgid "Cattuccino 😺"
msgstr ""
#: src/effects/Mushroom.js:291
msgid "Dracula 🦇"
msgstr ""
#: src/effects/Mushroom.js:308
msgid "Sparkle ✨"
msgstr ""
#: src/effects/PaintBrush.js:101
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:100
msgid "Pixel Wipe"
msgstr ""
#: src/effects/Portal.js:82
msgid "Portal"
msgstr ""
#: src/effects/RGBWarp.js:77
msgid "RGB Warp"
msgstr ""
#: src/effects/SnapOfDisintegration.js:110
msgid "Snap of Disintegration"
msgstr ""
#: src/effects/TeamRocket.js:89
msgid "Team Rocket"
msgstr ""
#: src/effects/TRexAttack.js:109
msgid "T-Rex Attack"
msgstr ""
#: src/effects/TVEffect.js:73
msgid "TV Effect"
msgstr ""
#: src/effects/TVGlitch.js:81
msgid "TV Glitch"
msgstr ""
#: src/effects/Wisps.js:85
msgid "Wisps"
msgstr ""
#: prefs.js:256
msgid "Preview this effect"
msgstr ""
#: prefs.js:333
msgid "Burn-My-Windows has been updated!"
msgstr ""
#: prefs.js:334 resources/ui/common/menus.ui:17
msgid "View Changelog"
msgstr ""
#: prefs.js:516
msgid "Delete this Profile?"
msgstr "Kas kustutame selle profiili?"
#: prefs.js:517
msgid ""
"The current effect profile with all its effect settings will be permanently "
"lost."
msgstr ""
"Praegune profiil koos kõikide seadistatud efektidega läheb jäädavalt kaotsi."
#: prefs.js:520
msgid "Cancel"
msgstr "Katkesta"
#: prefs.js:525
msgid "Delete"
msgstr "Kustuta"
#: prefs.js:757 resources/ui/adw/prefs.ui:103
msgid "Opening Windows"
msgstr "Avame aknaid"
#: prefs.js:758 resources/ui/adw/prefs.ui:104
msgid "Closing Windows"
msgstr "Sulgeme aknaid"
#: prefs.js:759 resources/ui/adw/prefs.ui:118
msgid "Normal Windows"
msgstr "Tavalised aknad"
#: prefs.js:760 resources/ui/adw/prefs.ui:119
msgid "Dialog Windows"
msgstr ""
#: prefs.js:761 resources/ui/adw/prefs.ui:133
msgid "Default Color Scheme"
msgstr ""
#: prefs.js:762 resources/ui/adw/prefs.ui:134
msgid "Dark Color Scheme"
msgstr ""
#: prefs.js:763 resources/ui/adw/prefs.ui:148
msgid "On Battery"
msgstr ""
#: prefs.js:764 resources/ui/adw/prefs.ui:149
msgid "Plugged In"
msgstr ""
#: prefs.js:765 resources/ui/adw/prefs.ui:163
msgid "Power-Saver Mode"
msgstr ""
#: prefs.js:766 resources/ui/adw/prefs.ui:164
msgid "Balanced Mode"
msgstr ""
#: prefs.js:767 resources/ui/adw/prefs.ui:165
msgid "Performance Mode"
msgstr ""
#: prefs.js:768 resources/ui/adw/prefs.ui:166
msgid "Power Saver or Balanced"
msgstr ""
#: prefs.js:769 resources/ui/adw/prefs.ui:167
msgid "Balanced or Performance"
msgstr ""
#: prefs.js:774 resources/ui/adw/prefs.ui:183
msgid "High Priority"
msgstr ""
#: prefs.js:780
msgid "Standard Profile"
msgstr ""
#. Translators: %s will be replaced by the effect's name.
#: prefs.js:860
#, javascript-format
msgid "Preview for %s"
msgstr ""
#: prefs.js:879
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:25
msgid "View Donors Hall-of-Fame"
msgstr ""
#: resources/ui/common/menus.ui:31
msgid "Donate"
msgstr ""
#: resources/ui/common/menus.ui:50
msgid "Report a Bug"
msgstr ""
#: resources/ui/common/menus.ui:54
msgid "Create an Effect"
msgstr ""
#: resources/ui/common/menus.ui:58
msgid "Translate"
msgstr ""
#: resources/ui/common/menus.ui:64
msgid "Open Effect-Profile Directory"
msgstr ""
#: resources/ui/common/menus.ui:70
msgid "About Burn-My-Windows"
msgstr ""
#: resources/ui/common/menus.ui:81
msgid "Add New Profile..."
msgstr ""
#: 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/rgbwarp.ui:17
#: resources/ui/adw/paint-brush.ui:14 resources/ui/adw/trex.ui:14
#: resources/ui/adw/wisps.ui:14 resources/ui/adw/aura-glow.ui:13
#: 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/team-rocket.ui:17 resources/ui/adw/pixel-wipe.ui:14
#: resources/ui/adw/snap.ui:14 resources/ui/adw/focus.ui:35
#: resources/ui/adw/mushroom.ui:17 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/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/rgbwarp.ui:42
#: resources/ui/adw/rgbwarp.ui:81 resources/ui/adw/rgbwarp.ui:118
#: resources/ui/adw/rgbwarp.ui:155 resources/ui/adw/rgbwarp.ui:192
#: 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/aura-glow.ui:35 resources/ui/adw/aura-glow.ui:58
#: resources/ui/adw/aura-glow.ui:92 resources/ui/adw/aura-glow.ui:125
#: resources/ui/adw/aura-glow.ui:158 resources/ui/adw/aura-glow.ui:191
#: resources/ui/adw/aura-glow.ui:224 resources/ui/adw/aura-glow.ui:257
#: 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/team-rocket.ui:42
#: resources/ui/adw/team-rocket.ui:80 resources/ui/adw/team-rocket.ui:102
#: resources/ui/adw/team-rocket.ui:139 resources/ui/adw/team-rocket.ui:176
#: resources/ui/adw/team-rocket.ui:214 resources/ui/adw/team-rocket.ui:251
#: 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/focus.ui:50
#: resources/ui/adw/focus.ui:76 resources/ui/adw/focus.ui:102
#: resources/ui/adw/mushroom.ui:42 resources/ui/adw/mushroom.ui:99
#: resources/ui/adw/mushroom.ui:137 resources/ui/adw/mushroom.ui:175
#: resources/ui/adw/mushroom.ui:209 resources/ui/adw/mushroom.ui:243
#: resources/ui/adw/mushroom.ui:281 resources/ui/adw/mushroom.ui:319
#: resources/ui/adw/mushroom.ui:357 resources/ui/adw/mushroom.ui:427
#: 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/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/adw/broken-glass.ui:81
msgid "Gravity"
msgstr ""
#: resources/ui/adw/broken-glass.ui:114
msgid "Blow Force"
msgstr ""
#: resources/ui/adw/broken-glass.ui:147
msgid "Shatter From Pointer Location"
msgstr ""
#: 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/adw/tv-glitch.ui:80 resources/ui/adw/glitch.ui:80
msgid "Strength"
msgstr ""
#: resources/ui/adw/tv-glitch.ui:113 resources/ui/adw/glitch.ui:113
#: resources/ui/adw/aura-glow.ui:103 resources/ui/adw/fire.ui:96
msgid "Speed"
msgstr ""
#: 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/adw/matrix.ui:80 resources/ui/adw/apparition.ui:48
msgid "Randomness"
msgstr ""
#: resources/ui/adw/matrix.ui:113
msgid "Vertical Overshooting"
msgstr ""
#: resources/ui/adw/matrix.ui:146
msgid "Trail Color"
msgstr ""
#: resources/ui/adw/matrix.ui:171
msgid "Tip Color"
msgstr ""
#: resources/ui/adw/doom.ui:47
msgid "Horizontal Scale"
msgstr ""
#: resources/ui/adw/doom.ui:80
msgid "Vertical Scale"
msgstr ""
#: 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/adw/rgbwarp.ui:55
msgid "Brightness"
msgstr ""
#: resources/ui/adw/rgbwarp.ui:93
msgid "Red Speed"
msgstr ""
#: resources/ui/adw/rgbwarp.ui:130
msgid "Green Speed"
msgstr ""
#: resources/ui/adw/rgbwarp.ui:167
msgid "Blue Speed"
msgstr ""
#: resources/ui/adw/paint-brush.ui:47
msgid "Brush Size"
msgstr ""
#: resources/ui/adw/trex.ui:47
msgid "Claw Scratch Scale"
msgstr ""
#: resources/ui/adw/trex.ui:80
msgid "Claw Scratch Count"
msgstr ""
#: resources/ui/adw/trex.ui:113
msgid "Warp Effect"
msgstr ""
#: resources/ui/adw/trex.ui:146
msgid "Flash Color"
msgstr ""
#: resources/ui/adw/aura-glow.ui:47
msgid "Random Color"
msgstr ""
#: resources/ui/adw/aura-glow.ui:69
msgid "Start Hue"
msgstr ""
#: resources/ui/adw/aura-glow.ui:136
msgid "Saturation"
msgstr ""
#: resources/ui/adw/aura-glow.ui:169
msgid "Edge Size"
msgstr ""
#: resources/ui/adw/aura-glow.ui:202
msgid "Edge Hardness"
msgstr ""
#: resources/ui/adw/aura-glow.ui:235 resources/ui/adw/focus.ui:61
msgid "Blur Amount"
msgstr ""
#: resources/ui/adw/pixel-wheel.ui:47
msgid "Spoke Count"
msgstr ""
#: resources/ui/adw/glide.ui:80
msgid "Squish"
msgstr ""
#: resources/ui/adw/glide.ui:113
msgid "Tilt"
msgstr ""
#: resources/ui/adw/glide.ui:146
msgid "Shift"
msgstr ""
#: resources/ui/adw/apparition.ui:81
msgid "Twirl Intensity"
msgstr ""
#: resources/ui/adw/apparition.ui:114
msgid "Shake Intensity"
msgstr ""
#: resources/ui/adw/apparition.ui:147
msgid "Suction Intensity"
msgstr ""
#: resources/ui/adw/portal.ui:47
msgid "Rotation Speed"
msgstr ""
#: resources/ui/adw/portal.ui:80
msgid "Whirling"
msgstr ""
#: resources/ui/adw/portal.ui:113
msgid "Details"
msgstr ""
#: resources/ui/adw/incinerate.ui:80
msgid "Turbulence"
msgstr ""
#: resources/ui/adw/incinerate.ui:113
msgid "Start at Pointer"
msgstr ""
#: resources/ui/adw/incinerate.ui:114
msgid "If disabled, a random location will be chosen."
msgstr ""
#: resources/ui/adw/hexagon.ui:80
msgid "Mesh Line Width"
msgstr ""
#: resources/ui/adw/hexagon.ui:113
msgid "Line Color"
msgstr ""
#: resources/ui/adw/hexagon.ui:138
msgid "Glow Color"
msgstr ""
#: resources/ui/adw/hexagon.ui:163
msgid "Additive Blending"
msgstr ""
#: resources/ui/adw/hexagon.ui:164
msgid "You may want to enable this for dark window themes."
msgstr ""
#: resources/ui/adw/fire.ui:14
msgid "Presets"
msgstr ""
#: resources/ui/adw/fire.ui:19 resources/ui/adw/mushroom.ui:61
msgid "Choose a Preset"
msgstr ""
#: resources/ui/adw/fire.ui:129
msgid "3D Noise"
msgstr ""
#: resources/ui/adw/fire.ui:130
msgid "Creates a more dynamic fire but requires more GPU power."
msgstr ""
#: resources/ui/adw/fire.ui:152
msgid "Gradient"
msgstr ""
#: resources/ui/adw/team-rocket.ui:54
msgid "Animation Split"
msgstr ""
#: resources/ui/adw/team-rocket.ui:91
msgid "Rotate Window"
msgstr ""
#: resources/ui/adw/team-rocket.ui:114
msgid "Horizontal Sparkle Position"
msgstr ""
#: resources/ui/adw/team-rocket.ui:151
msgid "Vertical Sparkle Position"
msgstr ""
#: resources/ui/adw/team-rocket.ui:189
msgid "Sparkle Size"
msgstr ""
#: resources/ui/adw/team-rocket.ui:226
msgid "Sparkle Rotation"
msgstr ""
#: resources/ui/adw/focus.ui:87
msgid "Blur Quality"
msgstr ""
#: resources/ui/adw/prefs.ui:65
msgid "Effect Profile Constraints"
msgstr ""
#: resources/ui/adw/prefs.ui:66
msgid "Define when the current effect settings should be used."
msgstr ""
#: resources/ui/adw/prefs.ui:70
msgid "Application"
msgstr ""
#: 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/adw/prefs.ui:98
msgid "Animation Type"
msgstr ""
#: resources/ui/adw/prefs.ui:113
msgid "Window Type"
msgstr ""
#: resources/ui/adw/prefs.ui:128
msgid "Color Scheme"
msgstr ""
#: resources/ui/adw/prefs.ui:143
msgid "Power Mode"
msgstr ""
#: resources/ui/adw/prefs.ui:158
msgid "Power Profile"
msgstr ""
#: resources/ui/adw/prefs.ui:179
msgid "Advanced Profile Options"
msgstr ""
#: resources/ui/adw/prefs.ui:184
msgid "Use this profile even if there are better matching profiles."
msgstr ""
#: resources/ui/adw/prefs.ui:204
msgid "Delete this Profile..."
msgstr ""
#: resources/ui/adw/prefs.ui:223
msgid "Effect Selection"
msgstr ""
#: resources/ui/adw/prefs.ui:224
msgid "If multiple are selected, one is chosen randomly."
msgstr ""
#: resources/ui/adw/prefs.ui:235
msgid "Search..."
msgstr ""
#: resources/ui/adw/prefs.ui:250
msgid "Enable All"
msgstr ""
#: resources/ui/adw/prefs.ui:256
msgid "Disable All"
msgstr ""
#: resources/ui/adw/mushroom.ui:55
msgid "Effect Presets"
msgstr ""
#: resources/ui/adw/mushroom.ui:73
msgid "Scale Style"
msgstr ""
#: resources/ui/adw/mushroom.ui:74
msgid "8Bit --- Smooth"
msgstr ""
#: resources/ui/adw/mushroom.ui:112
msgid "Spark Count"
msgstr ""
#: resources/ui/adw/mushroom.ui:150
msgid "Spark Rotation"
msgstr ""
#: resources/ui/adw/mushroom.ui:188
msgid "Spark Color"
msgstr ""
#: resources/ui/adw/mushroom.ui:222
msgid "Rays Color"
msgstr ""
#: resources/ui/adw/mushroom.ui:256
msgid "Star Rings Count"
msgstr ""
#: resources/ui/adw/mushroom.ui:294
msgid "Star Ring Rotation"
msgstr ""
#: resources/ui/adw/mushroom.ui:332
msgid "Stars Count Per Ring"
msgstr ""
#: resources/ui/adw/mushroom.ui:370
msgid "Star Gradient"
msgstr ""
#: resources/ui/adw/pixelate.ui:47
msgid "Noise"
msgstr ""
+440 -453
View File
File diff suppressed because it is too large Load Diff
+439 -446
View File
File diff suppressed because it is too large Load Diff
+382 -394
View File
File diff suppressed because it is too large Load Diff
+374 -380
View File
File diff suppressed because it is too large Load Diff
-784
View File
@@ -1,784 +0,0 @@
# 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: 2025-02-17 20:23+0100\n"
"PO-Revision-Date: 2024-05-08 03:07+0000\n"
"Last-Translator: Scrambled777 <weblate.scrambled777@simplelogin.com>\n"
"Language-Team: Hindi <https://hosted.weblate.org/projects/burn-my-windows/"
"core/hi/>\n"
"Language: hi\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 5.5.4-rc\n"
#: src/effects/Apparition.js:80
msgid "Apparition"
msgstr "प्रेतछाया"
#: src/effects/AuraGlow.js:89
msgid "Aura Glow"
msgstr ""
#: src/effects/BrokenGlass.js:138
msgid "Broken Glass"
msgstr "टूटा हुआ शीशा"
#: src/effects/Doom.js:87
msgid "Doom"
msgstr "कयामत"
#: src/effects/EnergizeA.js:74
msgid "Energize A"
msgstr "ऊर्जावान A"
#: src/effects/EnergizeB.js:75
msgid "Energize B"
msgstr "ऊर्जावान B"
#: src/effects/Fire.js:96
msgid "Fire"
msgstr "आग"
#: src/effects/Fire.js:150
msgid "Default Fire"
msgstr "तयशुदा आग"
#: src/effects/Fire.js:160
msgid "Hell Fire"
msgstr "नरक की आग"
#: src/effects/Fire.js:170
msgid "Dark and Smutty"
msgstr "अँधेरी और मैली"
#: src/effects/Fire.js:180
msgid "Cold Breeze"
msgstr "ठंडी हवा"
#: src/effects/Fire.js:190
msgid "Santa is Coming"
msgstr "सांता आ रहा है"
#: src/effects/Fire.js:201
msgid "Nuclear ☢️"
msgstr ""
#: src/effects/Focus.js:76
msgid "Focus"
msgstr ""
#: src/effects/Glide.js:78
msgid "Glide"
msgstr "फिसलन"
#: src/effects/Glitch.js:80
msgid "Glitch"
msgstr "गड़बड़ी"
#: src/effects/Hexagon.js:83
msgid "Hexagon"
msgstr "षटकोण"
#: src/effects/Incinerate.js:126
msgid "Incinerate"
msgstr "भस्म"
#: src/effects/Matrix.js:109
msgid "Matrix"
msgstr "आव्यूह"
#: src/effects/Mushroom.js:124
msgid "Mushroom"
msgstr ""
#: src/effects/Mushroom.js:204
msgid "8Bit Plumber"
msgstr ""
#: src/effects/Mushroom.js:221
msgid "New Bros 2 🍄"
msgstr ""
#: src/effects/Mushroom.js:239
msgid "Red White and Blue 🇺🇸"
msgstr ""
#: src/effects/Mushroom.js:256
msgid "Rainbow 🌈"
msgstr ""
#: src/effects/Mushroom.js:273
msgid "Cattuccino 😺"
msgstr ""
#: src/effects/Mushroom.js:291
msgid "Dracula 🦇"
msgstr ""
#: src/effects/Mushroom.js:308
msgid "Sparkle ✨"
msgstr ""
#: src/effects/PaintBrush.js:101
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:100
msgid "Pixel Wipe"
msgstr "पिक्सल वाइप"
#: src/effects/Portal.js:82
msgid "Portal"
msgstr "पोर्टल"
#: src/effects/RGBWarp.js:77
msgid "RGB Warp"
msgstr ""
#: src/effects/SnapOfDisintegration.js:110
msgid "Snap of Disintegration"
msgstr "विघटन की चुटकी"
#: src/effects/TeamRocket.js:89
msgid "Team Rocket"
msgstr ""
#: src/effects/TRexAttack.js:109
msgid "T-Rex Attack"
msgstr "T-Rex का हमला"
#: src/effects/TVEffect.js:73
msgid "TV Effect"
msgstr "TV प्रभाव"
#: src/effects/TVGlitch.js:81
msgid "TV Glitch"
msgstr "TV की गड़बड़ी"
#: src/effects/Wisps.js:85
msgid "Wisps"
msgstr "विसप्स"
#: prefs.js:256
msgid "Preview this effect"
msgstr "इस प्रभाव का पूर्वावलोकन करें"
#: prefs.js:333
msgid "Burn-My-Windows has been updated!"
msgstr "Burn-My-Windows अपडेट कर दिया गया है!"
#: prefs.js:334 resources/ui/common/menus.ui:17
msgid "View Changelog"
msgstr "चेंजलॉग देखें"
#: prefs.js:516
msgid "Delete this Profile?"
msgstr "यह प्रोफ़ाइल हटाएं?"
#: prefs.js:517
msgid ""
"The current effect profile with all its effect settings will be permanently "
"lost."
msgstr "वर्तमान प्रभाव प्रोफ़ाइल अपनी सभी प्रभाव सेटिंग्स के साथ स्थायी रूप से खो जाएगी।"
#: prefs.js:520
msgid "Cancel"
msgstr "रद्द करें"
#: prefs.js:525
msgid "Delete"
msgstr "मिटाएं"
#: prefs.js:757 resources/ui/adw/prefs.ui:103
msgid "Opening Windows"
msgstr "विंडो खोलते समय"
#: prefs.js:758 resources/ui/adw/prefs.ui:104
msgid "Closing Windows"
msgstr "विंडो बंद करते समय"
#: prefs.js:759 resources/ui/adw/prefs.ui:118
msgid "Normal Windows"
msgstr "सामान्य विंडो"
#: prefs.js:760 resources/ui/adw/prefs.ui:119
msgid "Dialog Windows"
msgstr "संवाद विंडो"
#: prefs.js:761 resources/ui/adw/prefs.ui:133
msgid "Default Color Scheme"
msgstr "तयशुदा रंग योजना"
#: prefs.js:762 resources/ui/adw/prefs.ui:134
msgid "Dark Color Scheme"
msgstr "गहरी रंग योजना"
#: prefs.js:763 resources/ui/adw/prefs.ui:148
msgid "On Battery"
msgstr "बैटरी पर"
#: prefs.js:764 resources/ui/adw/prefs.ui:149
msgid "Plugged In"
msgstr "जब प्लग इन हो"
#: prefs.js:765 resources/ui/adw/prefs.ui:163
msgid "Power-Saver Mode"
msgstr "पावर-सेवर मोड"
#: prefs.js:766 resources/ui/adw/prefs.ui:164
msgid "Balanced Mode"
msgstr "संतुलित मोड"
#: prefs.js:767 resources/ui/adw/prefs.ui:165
msgid "Performance Mode"
msgstr "प्रदर्शन मोड"
#: prefs.js:768 resources/ui/adw/prefs.ui:166
msgid "Power Saver or Balanced"
msgstr "पावर सेवर या संतुलित"
#: prefs.js:769 resources/ui/adw/prefs.ui:167
msgid "Balanced or Performance"
msgstr "संतुलित या प्रदर्शन"
#: prefs.js:774 resources/ui/adw/prefs.ui:183
msgid "High Priority"
msgstr "उच्च प्राथमिकता"
#: prefs.js:780
msgid "Standard Profile"
msgstr "मानक प्रोफ़ाइल"
#. Translators: %s will be replaced by the effect's name.
#: prefs.js:860
#, javascript-format
msgid "Preview for %s"
msgstr "%s का पूर्वावलोकन"
#: prefs.js:879
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:25
msgid "View Donors Hall-of-Fame"
msgstr ""
#: resources/ui/common/menus.ui:31
msgid "Donate"
msgstr "दान करें"
#: resources/ui/common/menus.ui:50
msgid "Report a Bug"
msgstr "बग रिपोर्ट करें"
#: resources/ui/common/menus.ui:54
msgid "Create an Effect"
msgstr "एक प्रभाव पैदा करें"
#: resources/ui/common/menus.ui:58
msgid "Translate"
msgstr "अनुवाद"
#: resources/ui/common/menus.ui:64
msgid "Open Effect-Profile Directory"
msgstr "इफ़ेक्ट-प्रोफ़ाइल निर्देशिका खोलें"
#: resources/ui/common/menus.ui:70
msgid "About Burn-My-Windows"
msgstr "Burn-My-Windows के बारे में"
#: resources/ui/common/menus.ui:81
msgid "Add New Profile..."
msgstr "नई प्रोफ़ाइल जोड़ें…"
#: 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/rgbwarp.ui:17
#: resources/ui/adw/paint-brush.ui:14 resources/ui/adw/trex.ui:14
#: resources/ui/adw/wisps.ui:14 resources/ui/adw/aura-glow.ui:13
#: 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/team-rocket.ui:17 resources/ui/adw/pixel-wipe.ui:14
#: resources/ui/adw/snap.ui:14 resources/ui/adw/focus.ui:35
#: resources/ui/adw/mushroom.ui:17 resources/ui/adw/energize-a.ui:14
#: resources/ui/adw/pixelate.ui:14 resources/ui/adw/tv.ui:14
msgid "Animation Time [ms]"
msgstr "एनीमेशन समय [ms]"
#: 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/rgbwarp.ui:42
#: resources/ui/adw/rgbwarp.ui:81 resources/ui/adw/rgbwarp.ui:118
#: resources/ui/adw/rgbwarp.ui:155 resources/ui/adw/rgbwarp.ui:192
#: 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/aura-glow.ui:35 resources/ui/adw/aura-glow.ui:58
#: resources/ui/adw/aura-glow.ui:92 resources/ui/adw/aura-glow.ui:125
#: resources/ui/adw/aura-glow.ui:158 resources/ui/adw/aura-glow.ui:191
#: resources/ui/adw/aura-glow.ui:224 resources/ui/adw/aura-glow.ui:257
#: 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/team-rocket.ui:42
#: resources/ui/adw/team-rocket.ui:80 resources/ui/adw/team-rocket.ui:102
#: resources/ui/adw/team-rocket.ui:139 resources/ui/adw/team-rocket.ui:176
#: resources/ui/adw/team-rocket.ui:214 resources/ui/adw/team-rocket.ui:251
#: 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/focus.ui:50
#: resources/ui/adw/focus.ui:76 resources/ui/adw/focus.ui:102
#: resources/ui/adw/mushroom.ui:42 resources/ui/adw/mushroom.ui:99
#: resources/ui/adw/mushroom.ui:137 resources/ui/adw/mushroom.ui:175
#: resources/ui/adw/mushroom.ui:209 resources/ui/adw/mushroom.ui:243
#: resources/ui/adw/mushroom.ui:281 resources/ui/adw/mushroom.ui:319
#: resources/ui/adw/mushroom.ui:357 resources/ui/adw/mushroom.ui:427
#: 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/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/adw/broken-glass.ui:81
msgid "Gravity"
msgstr "गुरुत्व"
#: resources/ui/adw/broken-glass.ui:114
msgid "Blow Force"
msgstr "प्रहार का बल"
#: resources/ui/adw/broken-glass.ui:147
msgid "Shatter From Pointer Location"
msgstr "सूचक स्थान से चकनाचूर"
#: 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/adw/tv-glitch.ui:80 resources/ui/adw/glitch.ui:80
msgid "Strength"
msgstr "ताकत"
#: resources/ui/adw/tv-glitch.ui:113 resources/ui/adw/glitch.ui:113
#: resources/ui/adw/aura-glow.ui:103 resources/ui/adw/fire.ui:96
msgid "Speed"
msgstr "गति"
#: 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/adw/matrix.ui:80 resources/ui/adw/apparition.ui:48
msgid "Randomness"
msgstr "बेतरतीबी"
#: resources/ui/adw/matrix.ui:113
msgid "Vertical Overshooting"
msgstr "लंबवत ओवरशूटिंग"
#: resources/ui/adw/matrix.ui:146
msgid "Trail Color"
msgstr "पगडंडी का रंग"
#: resources/ui/adw/matrix.ui:171
msgid "Tip Color"
msgstr "टिप का रंग"
#: resources/ui/adw/doom.ui:47
msgid "Horizontal Scale"
msgstr "क्षैतिज पैमाना"
#: resources/ui/adw/doom.ui:80
msgid "Vertical Scale"
msgstr "लंबवत पैमाना"
#: 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/adw/rgbwarp.ui:55
msgid "Brightness"
msgstr ""
#: resources/ui/adw/rgbwarp.ui:93
msgid "Red Speed"
msgstr ""
#: resources/ui/adw/rgbwarp.ui:130
msgid "Green Speed"
msgstr ""
#: resources/ui/adw/rgbwarp.ui:167
msgid "Blue Speed"
msgstr ""
#: resources/ui/adw/paint-brush.ui:47
msgid "Brush Size"
msgstr "ब्रश का आकार"
#: resources/ui/adw/trex.ui:47
msgid "Claw Scratch Scale"
msgstr "पंजे का स्क्रैच स्केल"
#: resources/ui/adw/trex.ui:80
msgid "Claw Scratch Count"
msgstr "पंजे की खरोंच गिनती"
#: resources/ui/adw/trex.ui:113
msgid "Warp Effect"
msgstr "वार्प प्रभाव"
#: resources/ui/adw/trex.ui:146
msgid "Flash Color"
msgstr "फ़्लैश रंग"
#: resources/ui/adw/aura-glow.ui:47
msgid "Random Color"
msgstr ""
#: resources/ui/adw/aura-glow.ui:69
msgid "Start Hue"
msgstr ""
#: resources/ui/adw/aura-glow.ui:136
msgid "Saturation"
msgstr ""
#: resources/ui/adw/aura-glow.ui:169
msgid "Edge Size"
msgstr ""
#: resources/ui/adw/aura-glow.ui:202
msgid "Edge Hardness"
msgstr ""
#: resources/ui/adw/aura-glow.ui:235 resources/ui/adw/focus.ui:61
msgid "Blur Amount"
msgstr ""
#: resources/ui/adw/pixel-wheel.ui:47
msgid "Spoke Count"
msgstr "स्पोक की गिनती"
#: resources/ui/adw/glide.ui:80
msgid "Squish"
msgstr "स्क्विश"
#: resources/ui/adw/glide.ui:113
msgid "Tilt"
msgstr "झुकाव"
#: resources/ui/adw/glide.ui:146
msgid "Shift"
msgstr "बदलाव"
#: resources/ui/adw/apparition.ui:81
msgid "Twirl Intensity"
msgstr "घुमाव की तीव्रता"
#: resources/ui/adw/apparition.ui:114
msgid "Shake Intensity"
msgstr "झटकों की तीव्रता"
#: resources/ui/adw/apparition.ui:147
msgid "Suction Intensity"
msgstr "चूषण तीव्रता"
#: resources/ui/adw/portal.ui:47
msgid "Rotation Speed"
msgstr "घूर्णन गति"
#: resources/ui/adw/portal.ui:80
msgid "Whirling"
msgstr "घुमावदार"
#: resources/ui/adw/portal.ui:113
msgid "Details"
msgstr "विवरण"
#: resources/ui/adw/incinerate.ui:80
msgid "Turbulence"
msgstr "उथल-पुथल"
#: resources/ui/adw/incinerate.ui:113
msgid "Start at Pointer"
msgstr "सूचक से प्रारंभ करें"
#: resources/ui/adw/incinerate.ui:114
msgid "If disabled, a random location will be chosen."
msgstr "यदि अक्षम किया गया है, तो एक यादृच्छिक स्थान चुना जाएगा।"
#: resources/ui/adw/hexagon.ui:80
msgid "Mesh Line Width"
msgstr "जाल रेखा की चौड़ाई"
#: resources/ui/adw/hexagon.ui:113
msgid "Line Color"
msgstr "रेखा रंग"
#: resources/ui/adw/hexagon.ui:138
msgid "Glow Color"
msgstr "चमकदार रंग"
#: resources/ui/adw/hexagon.ui:163
msgid "Additive Blending"
msgstr "योगात्मक सम्मिश्रण"
#: resources/ui/adw/hexagon.ui:164
msgid "You may want to enable this for dark window themes."
msgstr "आप इसे डार्क विंडो थीम के लिए सक्षम करना चाह सकते हैं।"
#: resources/ui/adw/fire.ui:14
msgid "Presets"
msgstr "प्रीसेट"
#: resources/ui/adw/fire.ui:19 resources/ui/adw/mushroom.ui:61
msgid "Choose a Preset"
msgstr "प्रीसेट चुनें"
#: resources/ui/adw/fire.ui:129
msgid "3D Noise"
msgstr "3D शोर"
#: resources/ui/adw/fire.ui:130
msgid "Creates a more dynamic fire but requires more GPU power."
msgstr ""
"अधिक गतिशील आग पैदा करता है लेकिन इसके लिए अधिक GPU शक्ति की आवश्यकता होती है।"
#: resources/ui/adw/fire.ui:152
msgid "Gradient"
msgstr "ग्रेडियेंट"
#: resources/ui/adw/team-rocket.ui:54
msgid "Animation Split"
msgstr ""
#: resources/ui/adw/team-rocket.ui:91
msgid "Rotate Window"
msgstr ""
#: resources/ui/adw/team-rocket.ui:114
msgid "Horizontal Sparkle Position"
msgstr ""
#: resources/ui/adw/team-rocket.ui:151
msgid "Vertical Sparkle Position"
msgstr ""
#: resources/ui/adw/team-rocket.ui:189
msgid "Sparkle Size"
msgstr ""
#: resources/ui/adw/team-rocket.ui:226
msgid "Sparkle Rotation"
msgstr ""
#: resources/ui/adw/focus.ui:87
msgid "Blur Quality"
msgstr ""
#: resources/ui/adw/prefs.ui:65
msgid "Effect Profile Constraints"
msgstr "प्रभाव प्रोफ़ाइल बाधाएं"
#: resources/ui/adw/prefs.ui:66
msgid "Define when the current effect settings should be used."
msgstr "परिभाषित करें कि वर्तमान प्रभाव सेटिंग्स का उपयोग कब किया जाना चाहिए।"
#: resources/ui/adw/prefs.ui:70
msgid "Application"
msgstr "अनुप्रयोग"
#: 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/adw/prefs.ui:98
msgid "Animation Type"
msgstr "एनिमेशन प्रकार"
#: resources/ui/adw/prefs.ui:113
msgid "Window Type"
msgstr "विंडो प्रकार"
#: resources/ui/adw/prefs.ui:128
msgid "Color Scheme"
msgstr "रंग योजना"
#: resources/ui/adw/prefs.ui:143
msgid "Power Mode"
msgstr "पावर मोड"
#: resources/ui/adw/prefs.ui:158
msgid "Power Profile"
msgstr "पावर प्रोफ़ाइल"
#: resources/ui/adw/prefs.ui:179
msgid "Advanced Profile Options"
msgstr "उन्नत प्रोफ़ाइल विकल्प"
#: resources/ui/adw/prefs.ui:184
msgid "Use this profile even if there are better matching profiles."
msgstr "बेहतर मिलान वाली प्रोफ़ाइल होने पर भी इस प्रोफ़ाइल का उपयोग करें।"
#: resources/ui/adw/prefs.ui:204
msgid "Delete this Profile..."
msgstr "इस प्रोफ़ाइल को मिटाएं…"
#: resources/ui/adw/prefs.ui:223
msgid "Effect Selection"
msgstr "प्रभाव चयन"
#: resources/ui/adw/prefs.ui:224
msgid "If multiple are selected, one is chosen randomly."
msgstr "यदि एकाधिक का चयन किया जाता है, तो एक को यादृच्छिक रूप से चुना जाता है।"
#: resources/ui/adw/prefs.ui:235
msgid "Search..."
msgstr ""
#: resources/ui/adw/prefs.ui:250
msgid "Enable All"
msgstr ""
#: resources/ui/adw/prefs.ui:256
msgid "Disable All"
msgstr ""
#: resources/ui/adw/mushroom.ui:55
msgid "Effect Presets"
msgstr ""
#: resources/ui/adw/mushroom.ui:73
msgid "Scale Style"
msgstr ""
#: resources/ui/adw/mushroom.ui:74
msgid "8Bit --- Smooth"
msgstr ""
#: resources/ui/adw/mushroom.ui:112
msgid "Spark Count"
msgstr ""
#: resources/ui/adw/mushroom.ui:150
msgid "Spark Rotation"
msgstr ""
#: resources/ui/adw/mushroom.ui:188
msgid "Spark Color"
msgstr ""
#: resources/ui/adw/mushroom.ui:222
msgid "Rays Color"
msgstr ""
#: resources/ui/adw/mushroom.ui:256
msgid "Star Rings Count"
msgstr ""
#: resources/ui/adw/mushroom.ui:294
msgid "Star Ring Rotation"
msgstr ""
#: resources/ui/adw/mushroom.ui:332
msgid "Stars Count Per Ring"
msgstr ""
#: resources/ui/adw/mushroom.ui:370
msgid "Star Gradient"
msgstr ""
#: resources/ui/adw/pixelate.ui:47
msgid "Noise"
msgstr "शोर"
#~ msgid "Gold Sponsors"
#~ msgstr "स्वर्ण प्रायोजक"
#~ msgid "Silver Sponsors"
#~ msgstr "रजत प्रायोजक"
#~ msgid "Bronze Sponsors"
#~ msgstr "कांस्य प्रायोजक"
#~ msgid "Past Sponsors"
#~ msgstr "पिछले प्रायोजक"
#~ msgid "All"
#~ msgstr "सभी"
#~ msgid "None"
#~ msgstr "कोई नहीं"
+422 -437
View File
File diff suppressed because it is too large Load Diff
+385 -397
View File
File diff suppressed because it is too large Load Diff
+382 -403
View File
File diff suppressed because it is too large Load Diff
+386 -393
View File
File diff suppressed because it is too large Load Diff
-765
View File
@@ -1,765 +0,0 @@
# 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: 2025-02-17 20:23+0100\n"
"PO-Revision-Date: 2025-05-26 11:01+0000\n"
"Last-Translator: ButterflyOfFire <boffire@users.noreply.hosted.weblate.org>\n"
"Language-Team: Kabyle <https://hosted.weblate.org/projects/burn-my-windows/"
"core/kab/>\n"
"Language: kab\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 5.12-dev\n"
#: src/effects/Apparition.js:80
msgid "Apparition"
msgstr ""
#: src/effects/AuraGlow.js:89
msgid "Aura Glow"
msgstr ""
#: src/effects/BrokenGlass.js:138
msgid "Broken Glass"
msgstr ""
#: src/effects/Doom.js:87
msgid "Doom"
msgstr ""
#: src/effects/EnergizeA.js:74
msgid "Energize A"
msgstr ""
#: src/effects/EnergizeB.js:75
msgid "Energize B"
msgstr ""
#: src/effects/Fire.js:96
msgid "Fire"
msgstr "Times"
#: src/effects/Fire.js:150
msgid "Default Fire"
msgstr ""
#: src/effects/Fire.js:160
msgid "Hell Fire"
msgstr ""
#: src/effects/Fire.js:170
msgid "Dark and Smutty"
msgstr ""
#: src/effects/Fire.js:180
msgid "Cold Breeze"
msgstr ""
#: src/effects/Fire.js:190
msgid "Santa is Coming"
msgstr ""
#: src/effects/Fire.js:201
msgid "Nuclear ☢️"
msgstr ""
#: src/effects/Focus.js:76
msgid "Focus"
msgstr ""
#: src/effects/Glide.js:78
msgid "Glide"
msgstr ""
#: src/effects/Glitch.js:80
msgid "Glitch"
msgstr ""
#: src/effects/Hexagon.js:83
msgid "Hexagon"
msgstr ""
#: src/effects/Incinerate.js:126
msgid "Incinerate"
msgstr ""
#: src/effects/Matrix.js:109
msgid "Matrix"
msgstr ""
#: src/effects/Mushroom.js:124
msgid "Mushroom"
msgstr ""
#: src/effects/Mushroom.js:204
msgid "8Bit Plumber"
msgstr ""
#: src/effects/Mushroom.js:221
msgid "New Bros 2 🍄"
msgstr ""
#: src/effects/Mushroom.js:239
msgid "Red White and Blue 🇺🇸"
msgstr ""
#: src/effects/Mushroom.js:256
msgid "Rainbow 🌈"
msgstr ""
#: src/effects/Mushroom.js:273
msgid "Cattuccino 😺"
msgstr ""
#: src/effects/Mushroom.js:291
msgid "Dracula 🦇"
msgstr ""
#: src/effects/Mushroom.js:308
msgid "Sparkle ✨"
msgstr ""
#: src/effects/PaintBrush.js:101
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:100
msgid "Pixel Wipe"
msgstr ""
#: src/effects/Portal.js:82
msgid "Portal"
msgstr ""
#: src/effects/RGBWarp.js:77
msgid "RGB Warp"
msgstr ""
#: src/effects/SnapOfDisintegration.js:110
msgid "Snap of Disintegration"
msgstr ""
#: src/effects/TeamRocket.js:89
msgid "Team Rocket"
msgstr ""
#: src/effects/TRexAttack.js:109
msgid "T-Rex Attack"
msgstr ""
#: src/effects/TVEffect.js:73
msgid "TV Effect"
msgstr ""
#: src/effects/TVGlitch.js:81
msgid "TV Glitch"
msgstr ""
#: src/effects/Wisps.js:85
msgid "Wisps"
msgstr ""
#: prefs.js:256
msgid "Preview this effect"
msgstr ""
#: prefs.js:333
msgid "Burn-My-Windows has been updated!"
msgstr ""
#: prefs.js:334 resources/ui/common/menus.ui:17
msgid "View Changelog"
msgstr ""
#: prefs.js:516
msgid "Delete this Profile?"
msgstr ""
#: prefs.js:517
msgid ""
"The current effect profile with all its effect settings will be permanently "
"lost."
msgstr ""
#: prefs.js:520
msgid "Cancel"
msgstr ""
#: prefs.js:525
msgid "Delete"
msgstr "Kkes"
#: prefs.js:757 resources/ui/adw/prefs.ui:103
msgid "Opening Windows"
msgstr ""
#: prefs.js:758 resources/ui/adw/prefs.ui:104
msgid "Closing Windows"
msgstr ""
#: prefs.js:759 resources/ui/adw/prefs.ui:118
msgid "Normal Windows"
msgstr ""
#: prefs.js:760 resources/ui/adw/prefs.ui:119
msgid "Dialog Windows"
msgstr ""
#: prefs.js:761 resources/ui/adw/prefs.ui:133
msgid "Default Color Scheme"
msgstr ""
#: prefs.js:762 resources/ui/adw/prefs.ui:134
msgid "Dark Color Scheme"
msgstr ""
#: prefs.js:763 resources/ui/adw/prefs.ui:148
msgid "On Battery"
msgstr ""
#: prefs.js:764 resources/ui/adw/prefs.ui:149
msgid "Plugged In"
msgstr ""
#: prefs.js:765 resources/ui/adw/prefs.ui:163
msgid "Power-Saver Mode"
msgstr ""
#: prefs.js:766 resources/ui/adw/prefs.ui:164
msgid "Balanced Mode"
msgstr ""
#: prefs.js:767 resources/ui/adw/prefs.ui:165
msgid "Performance Mode"
msgstr ""
#: prefs.js:768 resources/ui/adw/prefs.ui:166
msgid "Power Saver or Balanced"
msgstr ""
#: prefs.js:769 resources/ui/adw/prefs.ui:167
msgid "Balanced or Performance"
msgstr ""
#: prefs.js:774 resources/ui/adw/prefs.ui:183
msgid "High Priority"
msgstr ""
#: prefs.js:780
msgid "Standard Profile"
msgstr ""
#. Translators: %s will be replaced by the effect's name.
#: prefs.js:860
#, javascript-format
msgid "Preview for %s"
msgstr ""
#: prefs.js:879
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:25
msgid "View Donors Hall-of-Fame"
msgstr ""
#: resources/ui/common/menus.ui:31
msgid "Donate"
msgstr "Mudd tawsa"
#: resources/ui/common/menus.ui:50
msgid "Report a Bug"
msgstr ""
#: resources/ui/common/menus.ui:54
msgid "Create an Effect"
msgstr ""
#: resources/ui/common/menus.ui:58
msgid "Translate"
msgstr "Suqel"
#: resources/ui/common/menus.ui:64
msgid "Open Effect-Profile Directory"
msgstr ""
#: resources/ui/common/menus.ui:70
msgid "About Burn-My-Windows"
msgstr ""
#: resources/ui/common/menus.ui:81
msgid "Add New Profile..."
msgstr "Rnu amaɣnu amaynut…"
#: 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/rgbwarp.ui:17
#: resources/ui/adw/paint-brush.ui:14 resources/ui/adw/trex.ui:14
#: resources/ui/adw/wisps.ui:14 resources/ui/adw/aura-glow.ui:13
#: 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/team-rocket.ui:17 resources/ui/adw/pixel-wipe.ui:14
#: resources/ui/adw/snap.ui:14 resources/ui/adw/focus.ui:35
#: resources/ui/adw/mushroom.ui:17 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/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/rgbwarp.ui:42
#: resources/ui/adw/rgbwarp.ui:81 resources/ui/adw/rgbwarp.ui:118
#: resources/ui/adw/rgbwarp.ui:155 resources/ui/adw/rgbwarp.ui:192
#: 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/aura-glow.ui:35 resources/ui/adw/aura-glow.ui:58
#: resources/ui/adw/aura-glow.ui:92 resources/ui/adw/aura-glow.ui:125
#: resources/ui/adw/aura-glow.ui:158 resources/ui/adw/aura-glow.ui:191
#: resources/ui/adw/aura-glow.ui:224 resources/ui/adw/aura-glow.ui:257
#: 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/team-rocket.ui:42
#: resources/ui/adw/team-rocket.ui:80 resources/ui/adw/team-rocket.ui:102
#: resources/ui/adw/team-rocket.ui:139 resources/ui/adw/team-rocket.ui:176
#: resources/ui/adw/team-rocket.ui:214 resources/ui/adw/team-rocket.ui:251
#: 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/focus.ui:50
#: resources/ui/adw/focus.ui:76 resources/ui/adw/focus.ui:102
#: resources/ui/adw/mushroom.ui:42 resources/ui/adw/mushroom.ui:99
#: resources/ui/adw/mushroom.ui:137 resources/ui/adw/mushroom.ui:175
#: resources/ui/adw/mushroom.ui:209 resources/ui/adw/mushroom.ui:243
#: resources/ui/adw/mushroom.ui:281 resources/ui/adw/mushroom.ui:319
#: resources/ui/adw/mushroom.ui:357 resources/ui/adw/mushroom.ui:427
#: 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/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/adw/broken-glass.ui:81
msgid "Gravity"
msgstr ""
#: resources/ui/adw/broken-glass.ui:114
msgid "Blow Force"
msgstr ""
#: resources/ui/adw/broken-glass.ui:147
msgid "Shatter From Pointer Location"
msgstr ""
#: 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/adw/tv-glitch.ui:80 resources/ui/adw/glitch.ui:80
msgid "Strength"
msgstr ""
#: resources/ui/adw/tv-glitch.ui:113 resources/ui/adw/glitch.ui:113
#: resources/ui/adw/aura-glow.ui:103 resources/ui/adw/fire.ui:96
msgid "Speed"
msgstr ""
#: 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 "Ini"
#: resources/ui/adw/matrix.ui:80 resources/ui/adw/apparition.ui:48
msgid "Randomness"
msgstr ""
#: resources/ui/adw/matrix.ui:113
msgid "Vertical Overshooting"
msgstr ""
#: resources/ui/adw/matrix.ui:146
msgid "Trail Color"
msgstr ""
#: resources/ui/adw/matrix.ui:171
msgid "Tip Color"
msgstr ""
#: resources/ui/adw/doom.ui:47
msgid "Horizontal Scale"
msgstr ""
#: resources/ui/adw/doom.ui:80
msgid "Vertical Scale"
msgstr ""
#: 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/adw/rgbwarp.ui:55
msgid "Brightness"
msgstr ""
#: resources/ui/adw/rgbwarp.ui:93
msgid "Red Speed"
msgstr ""
#: resources/ui/adw/rgbwarp.ui:130
msgid "Green Speed"
msgstr ""
#: resources/ui/adw/rgbwarp.ui:167
msgid "Blue Speed"
msgstr ""
#: resources/ui/adw/paint-brush.ui:47
msgid "Brush Size"
msgstr ""
#: resources/ui/adw/trex.ui:47
msgid "Claw Scratch Scale"
msgstr ""
#: resources/ui/adw/trex.ui:80
msgid "Claw Scratch Count"
msgstr ""
#: resources/ui/adw/trex.ui:113
msgid "Warp Effect"
msgstr ""
#: resources/ui/adw/trex.ui:146
msgid "Flash Color"
msgstr ""
#: resources/ui/adw/aura-glow.ui:47
msgid "Random Color"
msgstr ""
#: resources/ui/adw/aura-glow.ui:69
msgid "Start Hue"
msgstr ""
#: resources/ui/adw/aura-glow.ui:136
msgid "Saturation"
msgstr ""
#: resources/ui/adw/aura-glow.ui:169
msgid "Edge Size"
msgstr ""
#: resources/ui/adw/aura-glow.ui:202
msgid "Edge Hardness"
msgstr ""
#: resources/ui/adw/aura-glow.ui:235 resources/ui/adw/focus.ui:61
msgid "Blur Amount"
msgstr ""
#: resources/ui/adw/pixel-wheel.ui:47
msgid "Spoke Count"
msgstr ""
#: resources/ui/adw/glide.ui:80
msgid "Squish"
msgstr ""
#: resources/ui/adw/glide.ui:113
msgid "Tilt"
msgstr ""
#: resources/ui/adw/glide.ui:146
msgid "Shift"
msgstr ""
#: resources/ui/adw/apparition.ui:81
msgid "Twirl Intensity"
msgstr ""
#: resources/ui/adw/apparition.ui:114
msgid "Shake Intensity"
msgstr ""
#: resources/ui/adw/apparition.ui:147
msgid "Suction Intensity"
msgstr ""
#: resources/ui/adw/portal.ui:47
msgid "Rotation Speed"
msgstr ""
#: resources/ui/adw/portal.ui:80
msgid "Whirling"
msgstr ""
#: resources/ui/adw/portal.ui:113
msgid "Details"
msgstr ""
#: resources/ui/adw/incinerate.ui:80
msgid "Turbulence"
msgstr ""
#: resources/ui/adw/incinerate.ui:113
msgid "Start at Pointer"
msgstr ""
#: resources/ui/adw/incinerate.ui:114
msgid "If disabled, a random location will be chosen."
msgstr ""
#: resources/ui/adw/hexagon.ui:80
msgid "Mesh Line Width"
msgstr ""
#: resources/ui/adw/hexagon.ui:113
msgid "Line Color"
msgstr ""
#: resources/ui/adw/hexagon.ui:138
msgid "Glow Color"
msgstr ""
#: resources/ui/adw/hexagon.ui:163
msgid "Additive Blending"
msgstr ""
#: resources/ui/adw/hexagon.ui:164
msgid "You may want to enable this for dark window themes."
msgstr ""
#: resources/ui/adw/fire.ui:14
msgid "Presets"
msgstr ""
#: resources/ui/adw/fire.ui:19 resources/ui/adw/mushroom.ui:61
msgid "Choose a Preset"
msgstr ""
#: resources/ui/adw/fire.ui:129
msgid "3D Noise"
msgstr ""
#: resources/ui/adw/fire.ui:130
msgid "Creates a more dynamic fire but requires more GPU power."
msgstr ""
#: resources/ui/adw/fire.ui:152
msgid "Gradient"
msgstr ""
#: resources/ui/adw/team-rocket.ui:54
msgid "Animation Split"
msgstr ""
#: resources/ui/adw/team-rocket.ui:91
msgid "Rotate Window"
msgstr ""
#: resources/ui/adw/team-rocket.ui:114
msgid "Horizontal Sparkle Position"
msgstr ""
#: resources/ui/adw/team-rocket.ui:151
msgid "Vertical Sparkle Position"
msgstr ""
#: resources/ui/adw/team-rocket.ui:189
msgid "Sparkle Size"
msgstr ""
#: resources/ui/adw/team-rocket.ui:226
msgid "Sparkle Rotation"
msgstr ""
#: resources/ui/adw/focus.ui:87
msgid "Blur Quality"
msgstr ""
#: resources/ui/adw/prefs.ui:65
msgid "Effect Profile Constraints"
msgstr ""
#: resources/ui/adw/prefs.ui:66
msgid "Define when the current effect settings should be used."
msgstr ""
#: resources/ui/adw/prefs.ui:70
msgid "Application"
msgstr "Asnas"
#: 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/adw/prefs.ui:98
msgid "Animation Type"
msgstr ""
#: resources/ui/adw/prefs.ui:113
msgid "Window Type"
msgstr ""
#: resources/ui/adw/prefs.ui:128
msgid "Color Scheme"
msgstr ""
#: resources/ui/adw/prefs.ui:143
msgid "Power Mode"
msgstr ""
#: resources/ui/adw/prefs.ui:158
msgid "Power Profile"
msgstr ""
#: resources/ui/adw/prefs.ui:179
msgid "Advanced Profile Options"
msgstr ""
#: resources/ui/adw/prefs.ui:184
msgid "Use this profile even if there are better matching profiles."
msgstr ""
#: resources/ui/adw/prefs.ui:204
msgid "Delete this Profile..."
msgstr "Kkes amaɣnu-a…"
#: resources/ui/adw/prefs.ui:223
msgid "Effect Selection"
msgstr ""
#: resources/ui/adw/prefs.ui:224
msgid "If multiple are selected, one is chosen randomly."
msgstr ""
#: resources/ui/adw/prefs.ui:235
msgid "Search..."
msgstr "Nadi..."
#: resources/ui/adw/prefs.ui:250
msgid "Enable All"
msgstr ""
#: resources/ui/adw/prefs.ui:256
msgid "Disable All"
msgstr ""
#: resources/ui/adw/mushroom.ui:55
msgid "Effect Presets"
msgstr ""
#: resources/ui/adw/mushroom.ui:73
msgid "Scale Style"
msgstr ""
#: resources/ui/adw/mushroom.ui:74
msgid "8Bit --- Smooth"
msgstr ""
#: resources/ui/adw/mushroom.ui:112
msgid "Spark Count"
msgstr ""
#: resources/ui/adw/mushroom.ui:150
msgid "Spark Rotation"
msgstr ""
#: resources/ui/adw/mushroom.ui:188
msgid "Spark Color"
msgstr ""
#: resources/ui/adw/mushroom.ui:222
msgid "Rays Color"
msgstr ""
#: resources/ui/adw/mushroom.ui:256
msgid "Star Rings Count"
msgstr ""
#: resources/ui/adw/mushroom.ui:294
msgid "Star Ring Rotation"
msgstr ""
#: resources/ui/adw/mushroom.ui:332
msgid "Stars Count Per Ring"
msgstr ""
#: resources/ui/adw/mushroom.ui:370
msgid "Star Gradient"
msgstr ""
#: resources/ui/adw/pixelate.ui:47
msgid "Noise"
msgstr ""
+384 -396
View File
File diff suppressed because it is too large Load Diff
+411 -424
View File
File diff suppressed because it is too large Load Diff
+376 -382
View File
File diff suppressed because it is too large Load Diff
+383 -395
View File
File diff suppressed because it is too large Load Diff
-765
View File
@@ -1,765 +0,0 @@
# 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: 2025-02-17 20:23+0100\n"
"PO-Revision-Date: 2025-11-08 17:51+0000\n"
"Last-Translator: bgo-eiu <huyaqoob+toolforge@gmail.com>\n"
"Language-Team: Turkish (Ottoman) <https://hosted.weblate.org/projects/"
"burn-my-windows/core/ota/>\n"
"Language: ota\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 5.15-dev\n"
#: src/effects/Apparition.js:80
msgid "Apparition"
msgstr "خیالت"
#: src/effects/AuraGlow.js:89
msgid "Aura Glow"
msgstr ""
#: src/effects/BrokenGlass.js:138
msgid "Broken Glass"
msgstr ""
#: src/effects/Doom.js:87
msgid "Doom"
msgstr "قیامت"
#: src/effects/EnergizeA.js:74
msgid "Energize A"
msgstr ""
#: src/effects/EnergizeB.js:75
msgid "Energize B"
msgstr ""
#: src/effects/Fire.js:96
msgid "Fire"
msgstr "آتش"
#: src/effects/Fire.js:150
msgid "Default Fire"
msgstr ""
#: src/effects/Fire.js:160
msgid "Hell Fire"
msgstr ""
#: src/effects/Fire.js:170
msgid "Dark and Smutty"
msgstr ""
#: src/effects/Fire.js:180
msgid "Cold Breeze"
msgstr ""
#: src/effects/Fire.js:190
msgid "Santa is Coming"
msgstr ""
#: src/effects/Fire.js:201
msgid "Nuclear ☢️"
msgstr ""
#: src/effects/Focus.js:76
msgid "Focus"
msgstr "اوداقلان"
#: src/effects/Glide.js:78
msgid "Glide"
msgstr "سوزولمە"
#: src/effects/Glitch.js:80
msgid "Glitch"
msgstr "قصور"
#: src/effects/Hexagon.js:83
msgid "Hexagon"
msgstr "آلتیگن"
#: src/effects/Incinerate.js:126
msgid "Incinerate"
msgstr "یانمە"
#: src/effects/Matrix.js:109
msgid "Matrix"
msgstr ""
#: src/effects/Mushroom.js:124
msgid "Mushroom"
msgstr "منطار"
#: src/effects/Mushroom.js:204
msgid "8Bit Plumber"
msgstr ""
#: src/effects/Mushroom.js:221
msgid "New Bros 2 🍄"
msgstr ""
#: src/effects/Mushroom.js:239
msgid "Red White and Blue 🇺🇸"
msgstr ""
#: src/effects/Mushroom.js:256
msgid "Rainbow 🌈"
msgstr ""
#: src/effects/Mushroom.js:273
msgid "Cattuccino 😺"
msgstr ""
#: src/effects/Mushroom.js:291
msgid "Dracula 🦇"
msgstr ""
#: src/effects/Mushroom.js:308
msgid "Sparkle ✨"
msgstr ""
#: src/effects/PaintBrush.js:101
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:100
msgid "Pixel Wipe"
msgstr ""
#: src/effects/Portal.js:82
msgid "Portal"
msgstr "پورتال"
#: src/effects/RGBWarp.js:77
msgid "RGB Warp"
msgstr ""
#: src/effects/SnapOfDisintegration.js:110
msgid "Snap of Disintegration"
msgstr ""
#: src/effects/TeamRocket.js:89
msgid "Team Rocket"
msgstr ""
#: src/effects/TRexAttack.js:109
msgid "T-Rex Attack"
msgstr ""
#: src/effects/TVEffect.js:73
msgid "TV Effect"
msgstr ""
#: src/effects/TVGlitch.js:81
msgid "TV Glitch"
msgstr ""
#: src/effects/Wisps.js:85
msgid "Wisps"
msgstr "سحر"
#: prefs.js:256
msgid "Preview this effect"
msgstr ""
#: prefs.js:333
msgid "Burn-My-Windows has been updated!"
msgstr ""
#: prefs.js:334 resources/ui/common/menus.ui:17
msgid "View Changelog"
msgstr ""
#: prefs.js:516
msgid "Delete this Profile?"
msgstr ""
#: prefs.js:517
msgid ""
"The current effect profile with all its effect settings will be permanently "
"lost."
msgstr ""
#: prefs.js:520
msgid "Cancel"
msgstr "ابطال"
#: prefs.js:525
msgid "Delete"
msgstr "سیل"
#: prefs.js:757 resources/ui/adw/prefs.ui:103
msgid "Opening Windows"
msgstr ""
#: prefs.js:758 resources/ui/adw/prefs.ui:104
msgid "Closing Windows"
msgstr ""
#: prefs.js:759 resources/ui/adw/prefs.ui:118
msgid "Normal Windows"
msgstr ""
#: prefs.js:760 resources/ui/adw/prefs.ui:119
msgid "Dialog Windows"
msgstr ""
#: prefs.js:761 resources/ui/adw/prefs.ui:133
msgid "Default Color Scheme"
msgstr ""
#: prefs.js:762 resources/ui/adw/prefs.ui:134
msgid "Dark Color Scheme"
msgstr ""
#: prefs.js:763 resources/ui/adw/prefs.ui:148
msgid "On Battery"
msgstr ""
#: prefs.js:764 resources/ui/adw/prefs.ui:149
msgid "Plugged In"
msgstr ""
#: prefs.js:765 resources/ui/adw/prefs.ui:163
msgid "Power-Saver Mode"
msgstr ""
#: prefs.js:766 resources/ui/adw/prefs.ui:164
msgid "Balanced Mode"
msgstr ""
#: prefs.js:767 resources/ui/adw/prefs.ui:165
msgid "Performance Mode"
msgstr ""
#: prefs.js:768 resources/ui/adw/prefs.ui:166
msgid "Power Saver or Balanced"
msgstr ""
#: prefs.js:769 resources/ui/adw/prefs.ui:167
msgid "Balanced or Performance"
msgstr ""
#: prefs.js:774 resources/ui/adw/prefs.ui:183
msgid "High Priority"
msgstr ""
#: prefs.js:780
msgid "Standard Profile"
msgstr ""
#. Translators: %s will be replaced by the effect's name.
#: prefs.js:860
#, javascript-format
msgid "Preview for %s"
msgstr ""
#: prefs.js:879
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:25
msgid "View Donors Hall-of-Fame"
msgstr ""
#: resources/ui/common/menus.ui:31
msgid "Donate"
msgstr "باغیش"
#: resources/ui/common/menus.ui:50
msgid "Report a Bug"
msgstr ""
#: resources/ui/common/menus.ui:54
msgid "Create an Effect"
msgstr ""
#: resources/ui/common/menus.ui:58
msgid "Translate"
msgstr "چویر"
#: resources/ui/common/menus.ui:64
msgid "Open Effect-Profile Directory"
msgstr ""
#: resources/ui/common/menus.ui:70
msgid "About Burn-My-Windows"
msgstr ""
#: resources/ui/common/menus.ui:81
msgid "Add New Profile..."
msgstr ""
#: 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/rgbwarp.ui:17
#: resources/ui/adw/paint-brush.ui:14 resources/ui/adw/trex.ui:14
#: resources/ui/adw/wisps.ui:14 resources/ui/adw/aura-glow.ui:13
#: 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/team-rocket.ui:17 resources/ui/adw/pixel-wipe.ui:14
#: resources/ui/adw/snap.ui:14 resources/ui/adw/focus.ui:35
#: resources/ui/adw/mushroom.ui:17 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/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/rgbwarp.ui:42
#: resources/ui/adw/rgbwarp.ui:81 resources/ui/adw/rgbwarp.ui:118
#: resources/ui/adw/rgbwarp.ui:155 resources/ui/adw/rgbwarp.ui:192
#: 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/aura-glow.ui:35 resources/ui/adw/aura-glow.ui:58
#: resources/ui/adw/aura-glow.ui:92 resources/ui/adw/aura-glow.ui:125
#: resources/ui/adw/aura-glow.ui:158 resources/ui/adw/aura-glow.ui:191
#: resources/ui/adw/aura-glow.ui:224 resources/ui/adw/aura-glow.ui:257
#: 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/team-rocket.ui:42
#: resources/ui/adw/team-rocket.ui:80 resources/ui/adw/team-rocket.ui:102
#: resources/ui/adw/team-rocket.ui:139 resources/ui/adw/team-rocket.ui:176
#: resources/ui/adw/team-rocket.ui:214 resources/ui/adw/team-rocket.ui:251
#: 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/focus.ui:50
#: resources/ui/adw/focus.ui:76 resources/ui/adw/focus.ui:102
#: resources/ui/adw/mushroom.ui:42 resources/ui/adw/mushroom.ui:99
#: resources/ui/adw/mushroom.ui:137 resources/ui/adw/mushroom.ui:175
#: resources/ui/adw/mushroom.ui:209 resources/ui/adw/mushroom.ui:243
#: resources/ui/adw/mushroom.ui:281 resources/ui/adw/mushroom.ui:319
#: resources/ui/adw/mushroom.ui:357 resources/ui/adw/mushroom.ui:427
#: 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/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/adw/broken-glass.ui:81
msgid "Gravity"
msgstr "یر چكیمی"
#: resources/ui/adw/broken-glass.ui:114
msgid "Blow Force"
msgstr ""
#: resources/ui/adw/broken-glass.ui:147
msgid "Shatter From Pointer Location"
msgstr ""
#: 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/adw/tv-glitch.ui:80 resources/ui/adw/glitch.ui:80
msgid "Strength"
msgstr "گوچ"
#: resources/ui/adw/tv-glitch.ui:113 resources/ui/adw/glitch.ui:113
#: resources/ui/adw/aura-glow.ui:103 resources/ui/adw/fire.ui:96
msgid "Speed"
msgstr "خیز"
#: 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/adw/matrix.ui:80 resources/ui/adw/apparition.ui:48
msgid "Randomness"
msgstr "راست‌گلەلك"
#: resources/ui/adw/matrix.ui:113
msgid "Vertical Overshooting"
msgstr ""
#: resources/ui/adw/matrix.ui:146
msgid "Trail Color"
msgstr ""
#: resources/ui/adw/matrix.ui:171
msgid "Tip Color"
msgstr ""
#: resources/ui/adw/doom.ui:47
msgid "Horizontal Scale"
msgstr ""
#: resources/ui/adw/doom.ui:80
msgid "Vertical Scale"
msgstr ""
#: 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/adw/rgbwarp.ui:55
msgid "Brightness"
msgstr "پارلاقلق"
#: resources/ui/adw/rgbwarp.ui:93
msgid "Red Speed"
msgstr ""
#: resources/ui/adw/rgbwarp.ui:130
msgid "Green Speed"
msgstr ""
#: resources/ui/adw/rgbwarp.ui:167
msgid "Blue Speed"
msgstr ""
#: resources/ui/adw/paint-brush.ui:47
msgid "Brush Size"
msgstr ""
#: resources/ui/adw/trex.ui:47
msgid "Claw Scratch Scale"
msgstr ""
#: resources/ui/adw/trex.ui:80
msgid "Claw Scratch Count"
msgstr ""
#: resources/ui/adw/trex.ui:113
msgid "Warp Effect"
msgstr ""
#: resources/ui/adw/trex.ui:146
msgid "Flash Color"
msgstr ""
#: resources/ui/adw/aura-glow.ui:47
msgid "Random Color"
msgstr ""
#: resources/ui/adw/aura-glow.ui:69
msgid "Start Hue"
msgstr ""
#: resources/ui/adw/aura-glow.ui:136
msgid "Saturation"
msgstr "دویغونلق"
#: resources/ui/adw/aura-glow.ui:169
msgid "Edge Size"
msgstr ""
#: resources/ui/adw/aura-glow.ui:202
msgid "Edge Hardness"
msgstr ""
#: resources/ui/adw/aura-glow.ui:235 resources/ui/adw/focus.ui:61
msgid "Blur Amount"
msgstr ""
#: resources/ui/adw/pixel-wheel.ui:47
msgid "Spoke Count"
msgstr ""
#: resources/ui/adw/glide.ui:80
msgid "Squish"
msgstr "ازمك"
#: resources/ui/adw/glide.ui:113
msgid "Tilt"
msgstr "اگیم"
#: resources/ui/adw/glide.ui:146
msgid "Shift"
msgstr "قایمە"
#: resources/ui/adw/apparition.ui:81
msgid "Twirl Intensity"
msgstr ""
#: resources/ui/adw/apparition.ui:114
msgid "Shake Intensity"
msgstr ""
#: resources/ui/adw/apparition.ui:147
msgid "Suction Intensity"
msgstr ""
#: resources/ui/adw/portal.ui:47
msgid "Rotation Speed"
msgstr ""
#: resources/ui/adw/portal.ui:80
msgid "Whirling"
msgstr "دونمە"
#: resources/ui/adw/portal.ui:113
msgid "Details"
msgstr "آیریندیلر"
#: resources/ui/adw/incinerate.ui:80
msgid "Turbulence"
msgstr "توربولانس"
#: resources/ui/adw/incinerate.ui:113
msgid "Start at Pointer"
msgstr ""
#: resources/ui/adw/incinerate.ui:114
msgid "If disabled, a random location will be chosen."
msgstr ""
#: resources/ui/adw/hexagon.ui:80
msgid "Mesh Line Width"
msgstr ""
#: resources/ui/adw/hexagon.ui:113
msgid "Line Color"
msgstr ""
#: resources/ui/adw/hexagon.ui:138
msgid "Glow Color"
msgstr ""
#: resources/ui/adw/hexagon.ui:163
msgid "Additive Blending"
msgstr ""
#: resources/ui/adw/hexagon.ui:164
msgid "You may want to enable this for dark window themes."
msgstr ""
#: resources/ui/adw/fire.ui:14
msgid "Presets"
msgstr "شابلون"
#: resources/ui/adw/fire.ui:19 resources/ui/adw/mushroom.ui:61
msgid "Choose a Preset"
msgstr ""
#: resources/ui/adw/fire.ui:129
msgid "3D Noise"
msgstr ""
#: resources/ui/adw/fire.ui:130
msgid "Creates a more dynamic fire but requires more GPU power."
msgstr ""
#: resources/ui/adw/fire.ui:152
msgid "Gradient"
msgstr "غرادیان"
#: resources/ui/adw/team-rocket.ui:54
msgid "Animation Split"
msgstr ""
#: resources/ui/adw/team-rocket.ui:91
msgid "Rotate Window"
msgstr ""
#: resources/ui/adw/team-rocket.ui:114
msgid "Horizontal Sparkle Position"
msgstr ""
#: resources/ui/adw/team-rocket.ui:151
msgid "Vertical Sparkle Position"
msgstr ""
#: resources/ui/adw/team-rocket.ui:189
msgid "Sparkle Size"
msgstr ""
#: resources/ui/adw/team-rocket.ui:226
msgid "Sparkle Rotation"
msgstr ""
#: resources/ui/adw/focus.ui:87
msgid "Blur Quality"
msgstr ""
#: resources/ui/adw/prefs.ui:65
msgid "Effect Profile Constraints"
msgstr ""
#: resources/ui/adw/prefs.ui:66
msgid "Define when the current effect settings should be used."
msgstr ""
#: resources/ui/adw/prefs.ui:70
msgid "Application"
msgstr "اویغولامە"
#: 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/adw/prefs.ui:98
msgid "Animation Type"
msgstr ""
#: resources/ui/adw/prefs.ui:113
msgid "Window Type"
msgstr ""
#: resources/ui/adw/prefs.ui:128
msgid "Color Scheme"
msgstr ""
#: resources/ui/adw/prefs.ui:143
msgid "Power Mode"
msgstr ""
#: resources/ui/adw/prefs.ui:158
msgid "Power Profile"
msgstr ""
#: resources/ui/adw/prefs.ui:179
msgid "Advanced Profile Options"
msgstr ""
#: resources/ui/adw/prefs.ui:184
msgid "Use this profile even if there are better matching profiles."
msgstr ""
#: resources/ui/adw/prefs.ui:204
msgid "Delete this Profile..."
msgstr ""
#: resources/ui/adw/prefs.ui:223
msgid "Effect Selection"
msgstr ""
#: resources/ui/adw/prefs.ui:224
msgid "If multiple are selected, one is chosen randomly."
msgstr ""
#: resources/ui/adw/prefs.ui:235
msgid "Search..."
msgstr ""
#: resources/ui/adw/prefs.ui:250
msgid "Enable All"
msgstr ""
#: resources/ui/adw/prefs.ui:256
msgid "Disable All"
msgstr ""
#: resources/ui/adw/mushroom.ui:55
msgid "Effect Presets"
msgstr ""
#: resources/ui/adw/mushroom.ui:73
msgid "Scale Style"
msgstr ""
#: resources/ui/adw/mushroom.ui:74
msgid "8Bit --- Smooth"
msgstr ""
#: resources/ui/adw/mushroom.ui:112
msgid "Spark Count"
msgstr ""
#: resources/ui/adw/mushroom.ui:150
msgid "Spark Rotation"
msgstr ""
#: resources/ui/adw/mushroom.ui:188
msgid "Spark Color"
msgstr ""
#: resources/ui/adw/mushroom.ui:222
msgid "Rays Color"
msgstr ""
#: resources/ui/adw/mushroom.ui:256
msgid "Star Rings Count"
msgstr ""
#: resources/ui/adw/mushroom.ui:294
msgid "Star Ring Rotation"
msgstr ""
#: resources/ui/adw/mushroom.ui:332
msgid "Stars Count Per Ring"
msgstr ""
#: resources/ui/adw/mushroom.ui:370
msgid "Star Gradient"
msgstr ""
#: resources/ui/adw/pixelate.ui:47
msgid "Noise"
msgstr ""
+388 -400
View File
File diff suppressed because it is too large Load Diff
+419 -433
View File
File diff suppressed because it is too large Load Diff
+429 -441
View File
File diff suppressed because it is too large Load Diff
+383 -395
View File
File diff suppressed because it is too large Load Diff
+388 -394
View File
File diff suppressed because it is too large Load Diff
+384 -396
View File
File diff suppressed because it is too large Load Diff
+378 -384
View File
File diff suppressed because it is too large Load Diff
-768
View File
@@ -1,768 +0,0 @@
# 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: 2025-02-17 20:23+0100\n"
"PO-Revision-Date: 2026-06-22 06:01+0000\n"
"Last-Translator: தமிழ்நேரம் <tamilneram247@gmail.com>\n"
"Language-Team: Tamil <https://hosted.weblate.org/projects/burn-my-windows/"
"core/ta/>\n"
"Language: ta\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 2026.7.dev0\n"
#: src/effects/Apparition.js:80
msgid "Apparition"
msgstr "தோற்றம்"
#: src/effects/AuraGlow.js:89
msgid "Aura Glow"
msgstr "ஆரா க்ளோ"
#: src/effects/BrokenGlass.js:138
msgid "Broken Glass"
msgstr "உடைந்த கண்ணாடி"
#: src/effects/Doom.js:87
msgid "Doom"
msgstr "டூம்"
#: src/effects/EnergizeA.js:74
msgid "Energize A"
msgstr "ஒரு ஆற்றல்"
#: src/effects/EnergizeB.js:75
msgid "Energize B"
msgstr "ஆற்றல் ஆ"
#: src/effects/Fire.js:96
msgid "Fire"
msgstr "தீ"
#: src/effects/Fire.js:150
msgid "Default Fire"
msgstr "இயல்புநிலை Fire"
#: src/effects/Fire.js:160
msgid "Hell Fire"
msgstr "நரக நெருப்பு"
#: src/effects/Fire.js:170
msgid "Dark and Smutty"
msgstr "இருண்ட மற்றும் ச்முட்டி"
#: src/effects/Fire.js:180
msgid "Cold Breeze"
msgstr "குளிர் காற்று"
#: src/effects/Fire.js:190
msgid "Santa is Coming"
msgstr "சாண்டா வருகிறார்"
#: src/effects/Fire.js:201
msgid "Nuclear ☢️"
msgstr "அணு ☢️"
#: src/effects/Focus.js:76
msgid "Focus"
msgstr "குவி"
#: src/effects/Glide.js:78
msgid "Glide"
msgstr "சறுக்கு"
#: src/effects/Glitch.js:80
msgid "Glitch"
msgstr "தடுமாற்றம்"
#: src/effects/Hexagon.js:83
msgid "Hexagon"
msgstr "அறுகோண"
#: src/effects/Incinerate.js:126
msgid "Incinerate"
msgstr "எரியும்"
#: src/effects/Matrix.js:109
msgid "Matrix"
msgstr "அணி"
#: src/effects/Mushroom.js:124
msgid "Mushroom"
msgstr "நாய்க்குடை, காளான்"
#: src/effects/Mushroom.js:204
msgid "8Bit Plumber"
msgstr "8 பிட் பிளம்பர்"
#: src/effects/Mushroom.js:221
msgid "New Bros 2 🍄"
msgstr "புதிய சகோதரர்கள் 2 🍄"
#: src/effects/Mushroom.js:239
msgid "Red White and Blue 🇺🇸"
msgstr "சிவப்பு வெள்ளை மற்றும் நீலம் 🇺🇸"
#: src/effects/Mushroom.js:256
msgid "Rainbow 🌈"
msgstr "வானவில் 🌈"
#: src/effects/Mushroom.js:273
msgid "Cattuccino 😺"
msgstr "கட்டுச்சினோ 😺"
#: src/effects/Mushroom.js:291
msgid "Dracula 🦇"
msgstr "டிராகுலா 🦇"
#: src/effects/Mushroom.js:308
msgid "Sparkle ✨"
msgstr "ஒளி ✨"
#: src/effects/PaintBrush.js:101
msgid "Paint Brush"
msgstr "Paint மின்தொடி"
#: src/effects/Pixelate.js:74
msgid "Pixelate"
msgstr "பிக்சலேட்"
#: src/effects/PixelWheel.js:74
msgid "Pixel Wheel"
msgstr "படப்புள்ளி சக்கரம்"
#: src/effects/PixelWipe.js:100
msgid "Pixel Wipe"
msgstr "படப்புள்ளி துடைப்பது"
#: src/effects/Portal.js:82
msgid "Portal"
msgstr "போர்டல்"
#: src/effects/RGBWarp.js:77
msgid "RGB Warp"
msgstr "RGB வார்ப்"
#: src/effects/SnapOfDisintegration.js:110
msgid "Snap of Disintegration"
msgstr "சிதைவின் நொறுக்குதல்"
#: src/effects/TeamRocket.js:89
msgid "Team Rocket"
msgstr "குழு ராக்கெட்"
#: src/effects/TRexAttack.js:109
msgid "T-Rex Attack"
msgstr "டி-ரெக்ச் தாக்குதல்"
#: src/effects/TVEffect.js:73
msgid "TV Effect"
msgstr "டிவி விளைவு"
#: src/effects/TVGlitch.js:81
msgid "TV Glitch"
msgstr "டிவி தடுமாற்றம்"
#: src/effects/Wisps.js:85
msgid "Wisps"
msgstr "விருப்பங்கள்"
#: prefs.js:256
msgid "Preview this effect"
msgstr "இந்த விளைவை முன்னோட்டமிடுங்கள்"
#: prefs.js:333
msgid "Burn-My-Windows has been updated!"
msgstr "பர்ன்-மை-விண்டோச் புதுப்பிக்கப்பட்டுள்ளது!"
#: prefs.js:334 resources/ui/common/menus.ui:17
msgid "View Changelog"
msgstr "சேஞ்ச்லாக் காண்க"
#: prefs.js:516
msgid "Delete this Profile?"
msgstr "இந்த சுயவிவரத்தை நீக்கவா?"
#: prefs.js:517
msgid ""
"The current effect profile with all its effect settings will be permanently "
"lost."
msgstr ""
"அதன் அனைத்து விளைவு அமைப்புகளுடன் தற்போதைய விளைவு சுயவிவரம் நிரந்தரமாக இழக்கப்படும்."
#: prefs.js:520
msgid "Cancel"
msgstr "ரத்துசெய்"
#: prefs.js:525
msgid "Delete"
msgstr "நீக்கு"
#: prefs.js:757 resources/ui/adw/prefs.ui:103
msgid "Opening Windows"
msgstr "சன்னல்களைத் திறக்கிறது"
#: prefs.js:758 resources/ui/adw/prefs.ui:104
msgid "Closing Windows"
msgstr "சன்னல்களை மூடுவது"
#: prefs.js:759 resources/ui/adw/prefs.ui:118
msgid "Normal Windows"
msgstr "சாதாரண சாளரங்கள்"
#: prefs.js:760 resources/ui/adw/prefs.ui:119
msgid "Dialog Windows"
msgstr "உரையாடல் சாளரங்கள்"
#: prefs.js:761 resources/ui/adw/prefs.ui:133
msgid "Default Color Scheme"
msgstr "இயல்புநிலை வண்ணத் திட்டம்"
#: prefs.js:762 resources/ui/adw/prefs.ui:134
msgid "Dark Color Scheme"
msgstr "இருண்ட வண்ண திட்டம்"
#: prefs.js:763 resources/ui/adw/prefs.ui:148
msgid "On Battery"
msgstr "பேட்டரியில்"
#: prefs.js:764 resources/ui/adw/prefs.ui:149
msgid "Plugged In"
msgstr "செருகப்பட்டது"
#: prefs.js:765 resources/ui/adw/prefs.ui:163
msgid "Power-Saver Mode"
msgstr "பவர்-சேவர் பயன்முறை"
#: prefs.js:766 resources/ui/adw/prefs.ui:164
msgid "Balanced Mode"
msgstr "சீரான பயன்முறை"
#: prefs.js:767 resources/ui/adw/prefs.ui:165
msgid "Performance Mode"
msgstr "செயல்திறன் பயன்முறை"
#: prefs.js:768 resources/ui/adw/prefs.ui:166
msgid "Power Saver or Balanced"
msgstr "பவர் சேவர் அல்லது சீரான"
#: prefs.js:769 resources/ui/adw/prefs.ui:167
msgid "Balanced or Performance"
msgstr "சீரான அல்லது செயல்திறன்"
#: prefs.js:774 resources/ui/adw/prefs.ui:183
msgid "High Priority"
msgstr "அதிக முன்னுரிமை"
#: prefs.js:780
msgid "Standard Profile"
msgstr "நிலையான சுயவிவரம்"
#. Translators: %s will be replaced by the effect's name.
#: prefs.js:860
#, javascript-format
msgid "Preview for %s"
msgstr "%s க்கான முன்னோட்டம்"
#: prefs.js:879
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:25
msgid "View Donors Hall-of-Fame"
msgstr "நன்கொடையாளர்களைக் காண்க ஆல்-ஆஃப்-ஃபேம்"
#: resources/ui/common/menus.ui:31
msgid "Donate"
msgstr "நன்கொடை"
#: resources/ui/common/menus.ui:50
msgid "Report a Bug"
msgstr "ஒரு பிழையைப் புகாரளிக்கவும்"
#: resources/ui/common/menus.ui:54
msgid "Create an Effect"
msgstr "ஒரு விளைவை உருவாக்கவும்"
#: resources/ui/common/menus.ui:58
msgid "Translate"
msgstr "மொழிபெயர்த்திடு"
#: resources/ui/common/menus.ui:64
msgid "Open Effect-Profile Directory"
msgstr "திறந்த விளைவு-சுயவிவர அடைவு"
#: resources/ui/common/menus.ui:70
msgid "About Burn-My-Windows"
msgstr "எரியும்-என்-சாளரத்தைப் பற்றி"
#: resources/ui/common/menus.ui:81
msgid "Add New Profile..."
msgstr "புதிய சுயவிவரத்தைச் சேர்க்கவும் ..."
#: 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/rgbwarp.ui:17
#: resources/ui/adw/paint-brush.ui:14 resources/ui/adw/trex.ui:14
#: resources/ui/adw/wisps.ui:14 resources/ui/adw/aura-glow.ui:13
#: 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/team-rocket.ui:17 resources/ui/adw/pixel-wipe.ui:14
#: resources/ui/adw/snap.ui:14 resources/ui/adw/focus.ui:35
#: resources/ui/adw/mushroom.ui:17 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/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/rgbwarp.ui:42
#: resources/ui/adw/rgbwarp.ui:81 resources/ui/adw/rgbwarp.ui:118
#: resources/ui/adw/rgbwarp.ui:155 resources/ui/adw/rgbwarp.ui:192
#: 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/aura-glow.ui:35 resources/ui/adw/aura-glow.ui:58
#: resources/ui/adw/aura-glow.ui:92 resources/ui/adw/aura-glow.ui:125
#: resources/ui/adw/aura-glow.ui:158 resources/ui/adw/aura-glow.ui:191
#: resources/ui/adw/aura-glow.ui:224 resources/ui/adw/aura-glow.ui:257
#: 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/team-rocket.ui:42
#: resources/ui/adw/team-rocket.ui:80 resources/ui/adw/team-rocket.ui:102
#: resources/ui/adw/team-rocket.ui:139 resources/ui/adw/team-rocket.ui:176
#: resources/ui/adw/team-rocket.ui:214 resources/ui/adw/team-rocket.ui:251
#: 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/focus.ui:50
#: resources/ui/adw/focus.ui:76 resources/ui/adw/focus.ui:102
#: resources/ui/adw/mushroom.ui:42 resources/ui/adw/mushroom.ui:99
#: resources/ui/adw/mushroom.ui:137 resources/ui/adw/mushroom.ui:175
#: resources/ui/adw/mushroom.ui:209 resources/ui/adw/mushroom.ui:243
#: resources/ui/adw/mushroom.ui:281 resources/ui/adw/mushroom.ui:319
#: resources/ui/adw/mushroom.ui:357 resources/ui/adw/mushroom.ui:427
#: 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/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/adw/broken-glass.ui:81
msgid "Gravity"
msgstr "ஈர்ப்பு"
#: resources/ui/adw/broken-glass.ui:114
msgid "Blow Force"
msgstr "ஊதி ஆற்றல்"
#: resources/ui/adw/broken-glass.ui:147
msgid "Shatter From Pointer Location"
msgstr "சுட்டிக்காட்டி இருப்பிடத்திலிருந்து சிதறுங்கள்"
#: 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/adw/tv-glitch.ui:80 resources/ui/adw/glitch.ui:80
msgid "Strength"
msgstr "வலிமை"
#: resources/ui/adw/tv-glitch.ui:113 resources/ui/adw/glitch.ui:113
#: resources/ui/adw/aura-glow.ui:103 resources/ui/adw/fire.ui:96
msgid "Speed"
msgstr "வேகம்"
#: 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/adw/matrix.ui:80 resources/ui/adw/apparition.ui:48
msgid "Randomness"
msgstr "சீரற்ற தன்மை"
#: resources/ui/adw/matrix.ui:113
msgid "Vertical Overshooting"
msgstr "செங்குத்து ஓவர்சூட்டிங்"
#: resources/ui/adw/matrix.ui:146
msgid "Trail Color"
msgstr "பாதை நிறம்"
#: resources/ui/adw/matrix.ui:171
msgid "Tip Color"
msgstr "முனை நிறம்"
#: resources/ui/adw/doom.ui:47
msgid "Horizontal Scale"
msgstr "கிடைமட்ட அளவு"
#: resources/ui/adw/doom.ui:80
msgid "Vertical Scale"
msgstr "செங்குத்து அளவு"
#: 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/adw/rgbwarp.ui:55
msgid "Brightness"
msgstr "ஒளி"
#: resources/ui/adw/rgbwarp.ui:93
msgid "Red Speed"
msgstr "சிவப்பு விரைவு"
#: resources/ui/adw/rgbwarp.ui:130
msgid "Green Speed"
msgstr "பச்சை விரைவு"
#: resources/ui/adw/rgbwarp.ui:167
msgid "Blue Speed"
msgstr "நீல விரைவு"
#: resources/ui/adw/paint-brush.ui:47
msgid "Brush Size"
msgstr "தூரிகை அளவு"
#: resources/ui/adw/trex.ui:47
msgid "Claw Scratch Scale"
msgstr "நகம் கீறல் அளவு"
#: resources/ui/adw/trex.ui:80
msgid "Claw Scratch Count"
msgstr "நகம் கீறல் எண்ணிக்கை"
#: resources/ui/adw/trex.ui:113
msgid "Warp Effect"
msgstr "வார்ப் விளைவு"
#: resources/ui/adw/trex.ui:146
msgid "Flash Color"
msgstr "ஃபிளாச் நிறம்"
#: resources/ui/adw/aura-glow.ui:47
msgid "Random Color"
msgstr "சீரற்ற நிறம்"
#: resources/ui/adw/aura-glow.ui:69
msgid "Start Hue"
msgstr "சாயலைத் தொடங்கவும்"
#: resources/ui/adw/aura-glow.ui:136
msgid "Saturation"
msgstr "தெவிட்டல்"
#: resources/ui/adw/aura-glow.ui:169
msgid "Edge Size"
msgstr "விளிம்பு அளவு"
#: resources/ui/adw/aura-glow.ui:202
msgid "Edge Hardness"
msgstr "விளிம்பு கடினத்தன்மை"
#: resources/ui/adw/aura-glow.ui:235 resources/ui/adw/focus.ui:61
msgid "Blur Amount"
msgstr "மங்கலான தொகை"
#: resources/ui/adw/pixel-wheel.ui:47
msgid "Spoke Count"
msgstr "பேசப்பட்ட எண்ணிக்கை"
#: resources/ui/adw/glide.ui:80
msgid "Squish"
msgstr "ச்க்விச்"
#: resources/ui/adw/glide.ui:113
msgid "Tilt"
msgstr "சாய்"
#: resources/ui/adw/glide.ui:146
msgid "Shift"
msgstr "உயர்த்து"
#: resources/ui/adw/apparition.ui:81
msgid "Twirl Intensity"
msgstr "சுழல் தீவிரம்"
#: resources/ui/adw/apparition.ui:114
msgid "Shake Intensity"
msgstr "குலுக்கல் தீவிரம்"
#: resources/ui/adw/apparition.ui:147
msgid "Suction Intensity"
msgstr "உறிஞ்சும் தீவிரம்"
#: resources/ui/adw/portal.ui:47
msgid "Rotation Speed"
msgstr "சுழற்சி விரைவு"
#: resources/ui/adw/portal.ui:80
msgid "Whirling"
msgstr "சுழல்"
#: resources/ui/adw/portal.ui:113
msgid "Details"
msgstr "விவரங்கள்"
#: resources/ui/adw/incinerate.ui:80
msgid "Turbulence"
msgstr "(காற்றுக்)கொந்தளிப்பு"
#: resources/ui/adw/incinerate.ui:113
msgid "Start at Pointer"
msgstr "சுட்டிக்காட்டி தொடங்கவும்"
#: resources/ui/adw/incinerate.ui:114
msgid "If disabled, a random location will be chosen."
msgstr "முடக்கப்பட்டால், ஒரு சீரற்ற இடம் தேர்வு செய்யப்படும்."
#: resources/ui/adw/hexagon.ui:80
msgid "Mesh Line Width"
msgstr "கண்ணி வரி அகலம்"
#: resources/ui/adw/hexagon.ui:113
msgid "Line Color"
msgstr "வரி நிறம்"
#: resources/ui/adw/hexagon.ui:138
msgid "Glow Color"
msgstr "பளபளப்பான நிறம்"
#: resources/ui/adw/hexagon.ui:163
msgid "Additive Blending"
msgstr "சேர்க்கை கலத்தல்"
#: resources/ui/adw/hexagon.ui:164
msgid "You may want to enable this for dark window themes."
msgstr "இருண்ட சாளர கருப்பொருள்களுக்கு இதை இயக்க நீங்கள் விரும்பலாம்."
#: resources/ui/adw/fire.ui:14
msgid "Presets"
msgstr "முன்னமைவுகள்"
#: resources/ui/adw/fire.ui:19 resources/ui/adw/mushroom.ui:61
msgid "Choose a Preset"
msgstr "முன்னமைவைத் தேர்வுசெய்க"
#: resources/ui/adw/fire.ui:129
msgid "3D Noise"
msgstr "3 டி ஒலி"
#: resources/ui/adw/fire.ui:130
msgid "Creates a more dynamic fire but requires more GPU power."
msgstr ""
"மிகவும் மாறும் நெருப்பை உருவாக்குகிறது, ஆனால் அதிக சி.பீ.யூ ஆற்றல் தேவைப்படுகிறது."
#: resources/ui/adw/fire.ui:152
msgid "Gradient"
msgstr "சரிவு"
#: resources/ui/adw/team-rocket.ui:54
msgid "Animation Split"
msgstr "அனிமேசன் பிளவு"
#: resources/ui/adw/team-rocket.ui:91
msgid "Rotate Window"
msgstr "சாளரத்தை சுழற்று"
#: resources/ui/adw/team-rocket.ui:114
msgid "Horizontal Sparkle Position"
msgstr "கிடைமட்ட ஒளி நிலை"
#: resources/ui/adw/team-rocket.ui:151
msgid "Vertical Sparkle Position"
msgstr "செங்குத்து ஒளி நிலை"
#: resources/ui/adw/team-rocket.ui:189
msgid "Sparkle Size"
msgstr "பிரகாசிக்கும் அளவு"
#: resources/ui/adw/team-rocket.ui:226
msgid "Sparkle Rotation"
msgstr "பிரகாச சுழற்சி"
#: resources/ui/adw/focus.ui:87
msgid "Blur Quality"
msgstr "மங்கலான தகுதி"
#: resources/ui/adw/prefs.ui:65
msgid "Effect Profile Constraints"
msgstr "விளைவு சுயவிவரக் கட்டுப்பாடுகள்"
#: resources/ui/adw/prefs.ui:66
msgid "Define when the current effect settings should be used."
msgstr "தற்போதைய விளைவு அமைப்புகள் எப்போது பயன்படுத்தப்பட வேண்டும் என்பதை வரையறுக்கவும்."
#: resources/ui/adw/prefs.ui:70
msgid "Application"
msgstr "பயன்பாடு"
#: 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/adw/prefs.ui:98
msgid "Animation Type"
msgstr "அனிமேசன் வகை"
#: resources/ui/adw/prefs.ui:113
msgid "Window Type"
msgstr "சாளரம் வகை"
#: resources/ui/adw/prefs.ui:128
msgid "Color Scheme"
msgstr "வண்ணத் திட்டம்"
#: resources/ui/adw/prefs.ui:143
msgid "Power Mode"
msgstr "ஆற்றல் முறை"
#: resources/ui/adw/prefs.ui:158
msgid "Power Profile"
msgstr "ஆற்றல் சுயவிவரம்"
#: resources/ui/adw/prefs.ui:179
msgid "Advanced Profile Options"
msgstr "மேம்பட்ட சுயவிவர விருப்பங்கள்"
#: resources/ui/adw/prefs.ui:184
msgid "Use this profile even if there are better matching profiles."
msgstr "சிறந்த பொருந்தக்கூடிய சுயவிவரங்கள் இருந்தாலும் இந்த சுயவிவரத்தைப் பயன்படுத்தவும்."
#: resources/ui/adw/prefs.ui:204
msgid "Delete this Profile..."
msgstr "இந்த சுயவிவரத்தை நீக்கு ..."
#: resources/ui/adw/prefs.ui:223
msgid "Effect Selection"
msgstr "விளைவு தேர்வு"
#: resources/ui/adw/prefs.ui:224
msgid "If multiple are selected, one is chosen randomly."
msgstr "பல தேர்ந்தெடுக்கப்பட்டால், ஒன்று தோராயமாக தேர்ந்தெடுக்கப்படுகிறது."
#: resources/ui/adw/prefs.ui:235
msgid "Search..."
msgstr "தேடுங்கள் ..."
#: resources/ui/adw/prefs.ui:250
msgid "Enable All"
msgstr "அனைத்தையும் இயக்கு"
#: resources/ui/adw/prefs.ui:256
msgid "Disable All"
msgstr "அனைத்தையும் முடக்கு"
#: resources/ui/adw/mushroom.ui:55
msgid "Effect Presets"
msgstr "விளைவு முன்னமைவுகள்"
#: resources/ui/adw/mushroom.ui:73
msgid "Scale Style"
msgstr "அளவு நடை"
#: resources/ui/adw/mushroom.ui:74
msgid "8Bit --- Smooth"
msgstr "8 பிட் --- மென்மையானது"
#: resources/ui/adw/mushroom.ui:112
msgid "Spark Count"
msgstr "தீப்பொறி எண்ணிக்கை"
#: resources/ui/adw/mushroom.ui:150
msgid "Spark Rotation"
msgstr "தீப்பொறி சுழற்சி"
#: resources/ui/adw/mushroom.ui:188
msgid "Spark Color"
msgstr "தீப்பொறி நிறம்"
#: resources/ui/adw/mushroom.ui:222
msgid "Rays Color"
msgstr "கதிர்களின் நிறம்"
#: resources/ui/adw/mushroom.ui:256
msgid "Star Rings Count"
msgstr "நட்சத்திர மோதிர எண்ணிக்கை"
#: resources/ui/adw/mushroom.ui:294
msgid "Star Ring Rotation"
msgstr "நட்சத்திர மோதிரம் சுழற்சி"
#: resources/ui/adw/mushroom.ui:332
msgid "Stars Count Per Ring"
msgstr "ஒரு வளையத்திற்கு நட்சத்திரங்களின் எண்ணிக்கை"
#: resources/ui/adw/mushroom.ui:370
msgid "Star Gradient"
msgstr "நட்சத்திர சாய்வு"
#: resources/ui/adw/pixelate.ui:47
msgid "Noise"
msgstr "இரைச்சல்"
+387 -399
View File
File diff suppressed because it is too large Load Diff
+389 -410
View File
File diff suppressed because it is too large Load Diff
+387 -399
View File
File diff suppressed because it is too large Load Diff
-783
View File
@@ -1,783 +0,0 @@
# 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: 2025-02-17 20:23+0100\n"
"PO-Revision-Date: 2026-06-01 08:01+0000\n"
"Last-Translator: Alang Hsu <alang.hsu@gmail.com>\n"
"Language-Team: Chinese (Traditional Han script) <https://hosted.weblate.org/"
"projects/burn-my-windows/core/zh_Hant/>\n"
"Language: zh_Hant\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 2026.6\n"
#: src/effects/Apparition.js:80
msgid "Apparition"
msgstr "幽靈旋風"
#: src/effects/AuraGlow.js:89
msgid "Aura Glow"
msgstr "光暈光輝"
#: src/effects/BrokenGlass.js:138
msgid "Broken Glass"
msgstr "玻璃碎裂"
#: src/effects/Doom.js:87
msgid "Doom"
msgstr "毀滅戰士"
#: src/effects/EnergizeA.js:74
msgid "Energize A"
msgstr "碎片融解A"
#: src/effects/EnergizeB.js:75
msgid "Energize B"
msgstr "碎片融解B"
#: src/effects/Fire.js:96
msgid "Fire"
msgstr "烈火燃燒"
#: src/effects/Fire.js:150
msgid "Default Fire"
msgstr "預設烈火燃燒效果"
#: src/effects/Fire.js:160
msgid "Hell Fire"
msgstr "地獄之火"
#: src/effects/Fire.js:170
msgid "Dark and Smutty"
msgstr "暗黑之火"
#: src/effects/Fire.js:180
msgid "Cold Breeze"
msgstr "冰火之舞"
#: src/effects/Fire.js:190
msgid "Santa is Coming"
msgstr "聖誕節來臨"
#: src/effects/Fire.js:201
msgid "Nuclear ☢️"
msgstr "核子 ☢️"
#: src/effects/Focus.js:76
msgid "Focus"
msgstr "焦距模糊"
#: src/effects/Glide.js:78
msgid "Glide"
msgstr "滑翔"
#: src/effects/Glitch.js:80
msgid "Glitch"
msgstr "電子脈衝"
#: src/effects/Hexagon.js:83
msgid "Hexagon"
msgstr "蜂巢拼圖"
#: src/effects/Incinerate.js:126
msgid "Incinerate"
msgstr "燃燒蔓開"
#: src/effects/Matrix.js:109
msgid "Matrix"
msgstr "駭客任務"
#: src/effects/Mushroom.js:124
msgid "Mushroom"
msgstr "蘑菇爆炸"
#: src/effects/Mushroom.js:204
msgid "8Bit Plumber"
msgstr "8位元水管工"
#: src/effects/Mushroom.js:221
msgid "New Bros 2 🍄"
msgstr "新超級兄弟2 🍄"
#: src/effects/Mushroom.js:239
msgid "Red White and Blue 🇺🇸"
msgstr "紅白藍 🇺🇸"
#: src/effects/Mushroom.js:256
msgid "Rainbow 🌈"
msgstr "彩虹 🌈"
#: src/effects/Mushroom.js:273
msgid "Cattuccino 😺"
msgstr "貓咪奇諾 😺"
#: src/effects/Mushroom.js:291
msgid "Dracula 🦇"
msgstr "德古拉 🦇"
#: src/effects/Mushroom.js:308
msgid "Sparkle ✨"
msgstr "閃耀 ✨"
#: src/effects/PaintBrush.js:101
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:100
msgid "Pixel Wipe"
msgstr "像素清除"
#: src/effects/Portal.js:82
msgid "Portal"
msgstr "傳送門"
#: src/effects/RGBWarp.js:77
msgid "RGB Warp"
msgstr "RGB扭曲"
#: src/effects/SnapOfDisintegration.js:110
msgid "Snap of Disintegration"
msgstr "碎片掉落"
#: src/effects/TeamRocket.js:89
msgid "Team Rocket"
msgstr "火箭隊"
#: src/effects/TRexAttack.js:109
msgid "T-Rex Attack"
msgstr "霸王龍攻擊"
#: src/effects/TVEffect.js:73
msgid "TV Effect"
msgstr "電視效果"
#: src/effects/TVGlitch.js:81
msgid "TV Glitch"
msgstr "電視故障"
#: src/effects/Wisps.js:85
msgid "Wisps"
msgstr "精靈飛散"
#: prefs.js:256
msgid "Preview this effect"
msgstr "預覽此效果"
#: prefs.js:333
msgid "Burn-My-Windows has been updated!"
msgstr "Burn-My-Windows已更新!"
#: prefs.js:334 resources/ui/common/menus.ui:17
msgid "View Changelog"
msgstr "查看更新日誌"
#: prefs.js:516
msgid "Delete this Profile?"
msgstr "刪除此配置嗎?"
#: prefs.js:517
msgid ""
"The current effect profile with all its effect settings will be permanently "
"lost."
msgstr "目前效果設定檔設定的所有效果都將永久遺失。"
#: prefs.js:520
msgid "Cancel"
msgstr "取消"
#: prefs.js:525
msgid "Delete"
msgstr "刪除"
#: prefs.js:757 resources/ui/adw/prefs.ui:103
msgid "Opening Windows"
msgstr "打開視窗"
#: prefs.js:758 resources/ui/adw/prefs.ui:104
msgid "Closing Windows"
msgstr "關閉視窗"
#: prefs.js:759 resources/ui/adw/prefs.ui:118
msgid "Normal Windows"
msgstr "常規視窗"
#: prefs.js:760 resources/ui/adw/prefs.ui:119
msgid "Dialog Windows"
msgstr "對話視窗"
#: prefs.js:761 resources/ui/adw/prefs.ui:133
msgid "Default Color Scheme"
msgstr "預設色彩方案"
#: prefs.js:762 resources/ui/adw/prefs.ui:134
msgid "Dark Color Scheme"
msgstr "暗色色彩方案"
#: prefs.js:763 resources/ui/adw/prefs.ui:148
msgid "On Battery"
msgstr "使用電池時"
#: prefs.js:764 resources/ui/adw/prefs.ui:149
msgid "Plugged In"
msgstr "插入電源時"
#: prefs.js:765 resources/ui/adw/prefs.ui:163
msgid "Power-Saver Mode"
msgstr "節電模式"
#: prefs.js:766 resources/ui/adw/prefs.ui:164
msgid "Balanced Mode"
msgstr "平衡模式"
#: prefs.js:767 resources/ui/adw/prefs.ui:165
msgid "Performance Mode"
msgstr "性能模式"
#: prefs.js:768 resources/ui/adw/prefs.ui:166
msgid "Power Saver or Balanced"
msgstr "節電或平衡"
#: prefs.js:769 resources/ui/adw/prefs.ui:167
msgid "Balanced or Performance"
msgstr "平衡或效能"
#: prefs.js:774 resources/ui/adw/prefs.ui:183
msgid "High Priority"
msgstr "高優先級"
#: prefs.js:780
msgid "Standard Profile"
msgstr "標準參數"
#. Translators: %s will be replaced by the effect's name.
#: prefs.js:860
#, javascript-format
msgid "Preview for %s"
msgstr "%s 的預覽"
#: prefs.js:879
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:25
msgid "View Donors Hall-of-Fame"
msgstr "查看贊助名人堂"
#: resources/ui/common/menus.ui:31
msgid "Donate"
msgstr "捐贈"
#: resources/ui/common/menus.ui:50
msgid "Report a Bug"
msgstr "報告錯誤"
#: resources/ui/common/menus.ui:54
msgid "Create an Effect"
msgstr "創建特效"
#: resources/ui/common/menus.ui:58
msgid "Translate"
msgstr "翻譯"
#: resources/ui/common/menus.ui:64
msgid "Open Effect-Profile Directory"
msgstr "開啟效果設定檔目錄"
#: resources/ui/common/menus.ui:70
msgid "About Burn-My-Windows"
msgstr "關於 Burn-My-Windows"
#: resources/ui/common/menus.ui:81
msgid "Add New Profile..."
msgstr "新建配置…"
#: 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/rgbwarp.ui:17
#: resources/ui/adw/paint-brush.ui:14 resources/ui/adw/trex.ui:14
#: resources/ui/adw/wisps.ui:14 resources/ui/adw/aura-glow.ui:13
#: 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/team-rocket.ui:17 resources/ui/adw/pixel-wipe.ui:14
#: resources/ui/adw/snap.ui:14 resources/ui/adw/focus.ui:35
#: resources/ui/adw/mushroom.ui:17 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/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/rgbwarp.ui:42
#: resources/ui/adw/rgbwarp.ui:81 resources/ui/adw/rgbwarp.ui:118
#: resources/ui/adw/rgbwarp.ui:155 resources/ui/adw/rgbwarp.ui:192
#: 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/aura-glow.ui:35 resources/ui/adw/aura-glow.ui:58
#: resources/ui/adw/aura-glow.ui:92 resources/ui/adw/aura-glow.ui:125
#: resources/ui/adw/aura-glow.ui:158 resources/ui/adw/aura-glow.ui:191
#: resources/ui/adw/aura-glow.ui:224 resources/ui/adw/aura-glow.ui:257
#: 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/team-rocket.ui:42
#: resources/ui/adw/team-rocket.ui:80 resources/ui/adw/team-rocket.ui:102
#: resources/ui/adw/team-rocket.ui:139 resources/ui/adw/team-rocket.ui:176
#: resources/ui/adw/team-rocket.ui:214 resources/ui/adw/team-rocket.ui:251
#: 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/focus.ui:50
#: resources/ui/adw/focus.ui:76 resources/ui/adw/focus.ui:102
#: resources/ui/adw/mushroom.ui:42 resources/ui/adw/mushroom.ui:99
#: resources/ui/adw/mushroom.ui:137 resources/ui/adw/mushroom.ui:175
#: resources/ui/adw/mushroom.ui:209 resources/ui/adw/mushroom.ui:243
#: resources/ui/adw/mushroom.ui:281 resources/ui/adw/mushroom.ui:319
#: resources/ui/adw/mushroom.ui:357 resources/ui/adw/mushroom.ui:427
#: 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/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/adw/broken-glass.ui:81
msgid "Gravity"
msgstr "重力"
#: resources/ui/adw/broken-glass.ui:114
msgid "Blow Force"
msgstr "彈拉力度"
#: resources/ui/adw/broken-glass.ui:147
msgid "Shatter From Pointer Location"
msgstr "從遊標位置破碎"
#: 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/adw/tv-glitch.ui:80 resources/ui/adw/glitch.ui:80
msgid "Strength"
msgstr "強度"
#: resources/ui/adw/tv-glitch.ui:113 resources/ui/adw/glitch.ui:113
#: resources/ui/adw/aura-glow.ui:103 resources/ui/adw/fire.ui:96
msgid "Speed"
msgstr "速度"
#: 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/adw/matrix.ui:80 resources/ui/adw/apparition.ui:48
msgid "Randomness"
msgstr "隨機值"
#: resources/ui/adw/matrix.ui:113
msgid "Vertical Overshooting"
msgstr "超出垂直範圍"
#: resources/ui/adw/matrix.ui:146
msgid "Trail Color"
msgstr "尾跡顏色"
#: resources/ui/adw/matrix.ui:171
msgid "Tip Color"
msgstr "提示顏色"
#: resources/ui/adw/doom.ui:47
msgid "Horizontal Scale"
msgstr "水平比例"
#: resources/ui/adw/doom.ui:80
msgid "Vertical Scale"
msgstr "垂直比例"
#: 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/adw/rgbwarp.ui:55
msgid "Brightness"
msgstr "亮度"
#: resources/ui/adw/rgbwarp.ui:93
msgid "Red Speed"
msgstr "紅色速度"
#: resources/ui/adw/rgbwarp.ui:130
msgid "Green Speed"
msgstr "綠色速度"
#: resources/ui/adw/rgbwarp.ui:167
msgid "Blue Speed"
msgstr "藍色速度"
#: resources/ui/adw/paint-brush.ui:47
msgid "Brush Size"
msgstr "筆刷大小"
#: resources/ui/adw/trex.ui:47
msgid "Claw Scratch Scale"
msgstr "爪痕大小"
#: resources/ui/adw/trex.ui:80
msgid "Claw Scratch Count"
msgstr "爪痕數量"
#: resources/ui/adw/trex.ui:113
msgid "Warp Effect"
msgstr "扭曲效果"
#: resources/ui/adw/trex.ui:146
msgid "Flash Color"
msgstr "閃爍顏色"
#: resources/ui/adw/aura-glow.ui:47
msgid "Random Color"
msgstr "隨機顏色"
#: resources/ui/adw/aura-glow.ui:69
msgid "Start Hue"
msgstr "起始色相"
#: resources/ui/adw/aura-glow.ui:136
msgid "Saturation"
msgstr "飽和度"
#: resources/ui/adw/aura-glow.ui:169
msgid "Edge Size"
msgstr "邊緣大小"
#: resources/ui/adw/aura-glow.ui:202
msgid "Edge Hardness"
msgstr "邊緣硬度"
#: resources/ui/adw/aura-glow.ui:235 resources/ui/adw/focus.ui:61
msgid "Blur Amount"
msgstr "模糊程度"
#: resources/ui/adw/pixel-wheel.ui:47
msgid "Spoke Count"
msgstr "輻條數量"
#: resources/ui/adw/glide.ui:80
msgid "Squish"
msgstr "擠壓程度"
#: resources/ui/adw/glide.ui:113
msgid "Tilt"
msgstr "傾斜"
#: resources/ui/adw/glide.ui:146
msgid "Shift"
msgstr "偏移"
#: resources/ui/adw/apparition.ui:81
msgid "Twirl Intensity"
msgstr "扭曲力度"
#: resources/ui/adw/apparition.ui:114
msgid "Shake Intensity"
msgstr "晃動力度"
#: resources/ui/adw/apparition.ui:147
msgid "Suction Intensity"
msgstr "吸入力度"
#: resources/ui/adw/portal.ui:47
msgid "Rotation Speed"
msgstr "旋轉速度"
#: resources/ui/adw/portal.ui:80
msgid "Whirling"
msgstr "迴旋"
#: resources/ui/adw/portal.ui:113
msgid "Details"
msgstr "細節"
#: resources/ui/adw/incinerate.ui:80
msgid "Turbulence"
msgstr "擾動"
#: resources/ui/adw/incinerate.ui:113
msgid "Start at Pointer"
msgstr "從遊標位置開始"
#: resources/ui/adw/incinerate.ui:114
msgid "If disabled, a random location will be chosen."
msgstr "如果禁用,將從隨機位置開始。"
#: resources/ui/adw/hexagon.ui:80
msgid "Mesh Line Width"
msgstr "網格線寬"
#: resources/ui/adw/hexagon.ui:113
msgid "Line Color"
msgstr "線條顏色"
#: resources/ui/adw/hexagon.ui:138
msgid "Glow Color"
msgstr "光暈顏色"
#: resources/ui/adw/hexagon.ui:163
msgid "Additive Blending"
msgstr "疊加融合"
#: resources/ui/adw/hexagon.ui:164
msgid "You may want to enable this for dark window themes."
msgstr "在暗黑視窗主題中,您可能需要此特效。"
#: resources/ui/adw/fire.ui:14
msgid "Presets"
msgstr "預設"
#: resources/ui/adw/fire.ui:19 resources/ui/adw/mushroom.ui:61
msgid "Choose a Preset"
msgstr "選取預設配置"
#: resources/ui/adw/fire.ui:129
msgid "3D Noise"
msgstr "3D雜訊"
#: resources/ui/adw/fire.ui:130
msgid "Creates a more dynamic fire but requires more GPU power."
msgstr "創造更多動態火焰,但更耗費顯示卡資源。"
#: resources/ui/adw/fire.ui:152
msgid "Gradient"
msgstr "漸層色"
#: resources/ui/adw/team-rocket.ui:54
msgid "Animation Split"
msgstr "動畫分割"
#: resources/ui/adw/team-rocket.ui:91
msgid "Rotate Window"
msgstr "旋轉視窗"
#: resources/ui/adw/team-rocket.ui:114
msgid "Horizontal Sparkle Position"
msgstr "水平閃爍位置"
#: resources/ui/adw/team-rocket.ui:151
msgid "Vertical Sparkle Position"
msgstr "垂直閃爍位置"
#: resources/ui/adw/team-rocket.ui:189
msgid "Sparkle Size"
msgstr "閃爍大小"
#: resources/ui/adw/team-rocket.ui:226
msgid "Sparkle Rotation"
msgstr "閃爍旋轉"
#: resources/ui/adw/focus.ui:87
msgid "Blur Quality"
msgstr "模糊品質"
#: resources/ui/adw/prefs.ui:65
msgid "Effect Profile Constraints"
msgstr "效果配置限制"
#: resources/ui/adw/prefs.ui:66
msgid "Define when the current effect settings should be used."
msgstr "定義何時使用目前效果設定。"
#: resources/ui/adw/prefs.ui:70
msgid "Application"
msgstr "程式"
#: 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/adw/prefs.ui:98
msgid "Animation Type"
msgstr "動畫類型"
#: resources/ui/adw/prefs.ui:113
msgid "Window Type"
msgstr "視窗類型"
#: resources/ui/adw/prefs.ui:128
msgid "Color Scheme"
msgstr "色彩方案"
#: resources/ui/adw/prefs.ui:143
msgid "Power Mode"
msgstr "電池模式"
#: resources/ui/adw/prefs.ui:158
msgid "Power Profile"
msgstr "電源配置"
#: resources/ui/adw/prefs.ui:179
msgid "Advanced Profile Options"
msgstr "進階配置選項"
#: resources/ui/adw/prefs.ui:184
msgid "Use this profile even if there are better matching profiles."
msgstr "即使有更好匹配的配置文件,也使用此配置。"
#: resources/ui/adw/prefs.ui:204
msgid "Delete this Profile..."
msgstr "刪除此配置…"
#: resources/ui/adw/prefs.ui:223
msgid "Effect Selection"
msgstr "效果選擇"
#: resources/ui/adw/prefs.ui:224
msgid "If multiple are selected, one is chosen randomly."
msgstr "如果多選,則每次隨機。"
#: resources/ui/adw/prefs.ui:235
msgid "Search..."
msgstr "搜尋…"
#: resources/ui/adw/prefs.ui:250
msgid "Enable All"
msgstr "啟用全部"
#: resources/ui/adw/prefs.ui:256
msgid "Disable All"
msgstr "停用全部"
#: resources/ui/adw/mushroom.ui:55
msgid "Effect Presets"
msgstr "效果預設集"
#: resources/ui/adw/mushroom.ui:73
msgid "Scale Style"
msgstr "縮放樣式"
#: resources/ui/adw/mushroom.ui:74
msgid "8Bit --- Smooth"
msgstr "8位元 --- 平滑"
#: resources/ui/adw/mushroom.ui:112
msgid "Spark Count"
msgstr "火花數量"
#: resources/ui/adw/mushroom.ui:150
msgid "Spark Rotation"
msgstr "火花旋轉"
#: resources/ui/adw/mushroom.ui:188
msgid "Spark Color"
msgstr "火花顏色"
#: resources/ui/adw/mushroom.ui:222
msgid "Rays Color"
msgstr "光芒顏色"
#: resources/ui/adw/mushroom.ui:256
msgid "Star Rings Count"
msgstr "星環數量"
#: resources/ui/adw/mushroom.ui:294
msgid "Star Ring Rotation"
msgstr "星環旋轉"
#: resources/ui/adw/mushroom.ui:332
msgid "Stars Count Per Ring"
msgstr "每環星星數"
#: resources/ui/adw/mushroom.ui:370
msgid "Star Gradient"
msgstr "星星漸層"
#: resources/ui/adw/pixelate.ui:47
msgid "Noise"
msgstr "雜訊"
#~ msgid "Gold Sponsors"
#~ msgstr "金牌贊助商"
#~ msgid "Silver Sponsors"
#~ msgstr "銀牌贊助商"
#~ msgid "Bronze Sponsors"
#~ msgstr "銅牌贊助商"
#~ msgid "Past Sponsors"
#~ msgstr "往屆贊助商"
#~ msgid "All"
#~ msgstr "全部"
#~ msgid "None"
#~ msgstr "無"
+351 -175
View File
@@ -14,98 +14,97 @@
'use strict';
import Gio from 'gi://Gio';
import Gtk from 'gi://Gtk';
import GLib from 'gi://GLib';
import Gdk from 'gi://Gdk';
import Adw from 'gi://Adw';
const {Gio, Gtk, Gdk, GLib, GObject} = imports.gi;
import * as utils from './src/utils.js';
import {ProfileManager} from './src/ProfileManager.js';
import Apparition from './src/effects/Apparition.js';
import AuraGlow from './src/effects/AuraGlow.js';
import BrokenGlass from './src/effects/BrokenGlass.js';
import Doom from './src/effects/Doom.js';
import EnergizeA from './src/effects/EnergizeA.js';
import EnergizeB from './src/effects/EnergizeB.js';
import Fire from './src/effects/Fire.js';
import Focus from './src/effects/Focus.js';
import Glide from './src/effects/Glide.js';
import Glitch from './src/effects/Glitch.js';
import Hexagon from './src/effects/Hexagon.js';
import Incinerate from './src/effects/Incinerate.js';
import Matrix from './src/effects/Matrix.js';
import Mushroom from './src/effects/Mushroom.js';
import PaintBrush from './src/effects/PaintBrush.js';
import Pixelate from './src/effects/Pixelate.js';
import PixelWheel from './src/effects/PixelWheel.js';
import PixelWipe from './src/effects/PixelWipe.js';
import Portal from './src/effects/Portal.js';
import RGBWarp from './src/effects/RGBWarp.js';
import SnapOfDisintegration from './src/effects/SnapOfDisintegration.js';
import TeamRocket from './src/effects/TeamRocket.js';
import TRexAttack from './src/effects/TRexAttack.js';
import TVEffect from './src/effects/TVEffect.js';
import TVGlitch from './src/effects/TVGlitch.js';
import Wisps from './src/effects/Wisps.js';
import {ExtensionPreferences, gettext as _} from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
// Currently, the extension supports only one set of UI files. In the past, there were
// three different sets for GTK3, GTK4, and Adwaita. This method returns the name of the
// current UI directory. It's still here since it might be useful in the future.
function getUIDir() {
return 'adw';
// libadwaita is available starting with GNOME Shell 42.
let Adw = null;
try {
Adw = imports.gi.Adw;
} catch (e) {
// Nothing to do.
}
const _ = imports.gettext.domain('burn-my-windows').gettext;
const ExtensionUtils = imports.misc.extensionUtils;
const Me = imports.misc.extensionUtils.getCurrentExtension();
const utils = Me.imports.src.utils;
const ProfileManager = Me.imports.src.ProfileManager.ProfileManager;
//////////////////////////////////////////////////////////////////////////////////////////
// The preferences dialog is organized in pages, each of which is loaded from a //
// separate ui file. There's one page with general options, all other paged are loaded //
// from the respective effects. //
//////////////////////////////////////////////////////////////////////////////////////////
export default class BurnMyWindowsPreferences extends ExtensionPreferences {
var PreferencesDialog = class PreferencesDialog {
// ------------------------------------------------------------ constructor / destructor
fillPreferencesWindow(window) {
window.set_default_size(650, 750);
constructor() {
// New effects must be registered here and in extension.js.
this._ALL_EFFECTS = [
Apparition, AuraGlow, BrokenGlass,
Doom, EnergizeA, EnergizeB,
Fire, Focus, Glide,
Glitch, Hexagon, Incinerate,
Matrix, Mushroom, PaintBrush,
Pixelate, PixelWheel, PixelWipe,
Portal, RGBWarp, SnapOfDisintegration,
TeamRocket, TRexAttack, TVEffect,
TVGlitch, 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.MagicLamp.MagicLamp(),
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.
this._resources =
Gio.Resource.load(this.path + '/resources/burn-my-windows.gresource');
this._resources = Gio.Resource.load(Me.path + '/resources/burn-my-windows.gresource');
Gio.resources_register(this._resources);
// Load the CSS file for the settings dialog. If using libadwaita, we do not need an
// additional style sheet.
if (!utils.isADW()) {
const provider = Gtk.CssProvider.new();
if (utils.isGTK4()) {
provider.load_from_resource('/css/gtk4.css');
Gtk.StyleContext.add_provider_for_display(
Gdk.Display.get_default(), provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);
} else {
provider.load_from_resource('/css/gtk3.css');
Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(), provider,
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);
}
}
// Make sure custom icons are found.
if (utils.isGTK4()) {
Gtk.IconTheme.get_for_display(Gdk.Display.get_default()).add_resource_path('/img');
} else {
Gtk.IconTheme.get_default().add_resource_path('/img');
}
// Load the general user interface files.
this._builder = new Gtk.Builder();
this._builder.add_from_resource(`/ui/common/menus.ui`);
this._builder.add_from_resource(`/ui/${getUIDir()}/prefs.ui`);
this._builder.add_from_resource(`/ui/${utils.getUIDir()}/prefs.ui`);
// Store a reference to the general settings object.
this._settings = this.getSettings();
this._settings = ExtensionUtils.getSettings();
// This tracks all available effect profiles.
this._profileManager = new ProfileManager(this.metadata);
this._profileManager = new ProfileManager();
// This is used to track all connections to properties of the current effect profile.
// Whenever the current effect profile changes, all connections are disconnected.
@@ -130,10 +129,20 @@ export default class BurnMyWindowsPreferences extends ExtensionPreferences {
// Maybe the service is masked...
}
let powerProfileRow = this._builder.get_object('profile-power-profile');
if (!utils.isADW()) {
powerProfileRow = powerProfileRow.get_parent().get_parent();
}
powerProfileRow.set_visible(hasPowerProfiles);
// The global color scheme is only available starting with GNOME Shell 42. We hide the
// corresponding settings row on older versions.
let colorSchemeRow = this._builder.get_object('profile-color-scheme');
if (!utils.isADW()) {
colorSchemeRow = colorSchemeRow.get_parent().get_parent();
}
colorSchemeRow.set_visible(utils.shellVersionIsAtLeast(42, 0));
// Wire up the window picker of the profile editor. Whenever the app-chooser button is
// clicked, we call a method of the extension which will initiate the window picking.
this._builder.get_object('profile-choose-app-button').connect('clicked', () => {
@@ -170,6 +179,21 @@ export default class BurnMyWindowsPreferences extends ExtensionPreferences {
}
});
// If using libadwaita, the visibility of the profile-editor Adw.Flap is controlled
// using bindings in the ui file. On GTK3 and GTK4 we have to wire up this toggling
// here since we are using a Gtk.Stack instead of an Adw.Flap.
if (!utils.isADW()) {
const profileEditorButton = this._builder.get_object('edit-profile-button');
profileEditorButton.connect('toggled', b => {
if (b.active) {
this._builder.get_object('general-prefs')
.set_visible_child(this._builder.get_object('profile-editor'));
} else {
this._builder.get_object('general-prefs')
.set_visible_child(this._builder.get_object('effect-editor'));
}
});
}
// This is our top-level widget which we will return later.
this._widget = this._builder.get_object('general-prefs');
@@ -187,40 +211,6 @@ export default class BurnMyWindowsPreferences extends ExtensionPreferences {
});
});
// search for effect feature
this._searchEntry = this._builder.get_object('search_entry');
this._searchEntry.connect('search-changed', () => {
const query = this._searchEntry.get_text().toLowerCase();
// If only one effect is left, we will expand it automatically.
let lastRow = null;
let numRows = 0;
this._effectRows.forEach(row => {
row.set_expanded(false);
if (query === '') {
row.show(); // Show all effects if query is empty
} else {
// Show or hide each effect based on query match
const showEffect = row.name.toLowerCase().includes(query);
if (showEffect) {
row.show();
lastRow = row;
numRows++;
} else {
row.hide();
}
}
});
// If only one effect is left, we expand it automatically.
if (numRows === 1) {
lastRow.set_expanded(true);
}
});
// Then add a preferences group for the effect expander rows.
const group = this._builder.get_object('effects-group');
@@ -228,12 +218,31 @@ export default class BurnMyWindowsPreferences extends ExtensionPreferences {
// accordion-like behavior of the effect settings.
this._effectRows = [];
if (!utils.isADW()) {
group.connect('row-activated', (g, row) => {
this._effectRows.forEach(r => {
if (r == row) {
if (r._revealer.get_reveal_child()) {
r._revealer.set_reveal_child(false);
r._arrow.get_style_context().remove_class('revealed');
} else {
r._revealer.set_reveal_child(true);
r._arrow.get_style_context().add_class('revealed');
}
} else {
r._revealer.set_reveal_child(false);
r._arrow.get_style_context().remove_class('revealed');
}
});
});
}
// Now add all the rows.
this._ALL_EFFECTS.forEach(effect => {
const [minMajor, minMinor] = effect.getMinShellVersion();
if (utils.shellVersionIsAtLeast(minMajor, minMinor)) {
const uiFile = `/ui/${getUIDir()}/${effect.getNick()}.ui`;
const uiFile = `/ui/${utils.getUIDir()}/${effect.getNick()}.ui`;
// Is there a better way to test for the existence of a resource file?
let hasPrefs = false;
@@ -250,7 +259,12 @@ export default class BurnMyWindowsPreferences extends ExtensionPreferences {
}
// The preview button.
let previewButton = Gtk.Button.new_from_icon_name('bmw-preview-symbolic');
let previewButton;
if (utils.isGTK4()) {
previewButton = Gtk.Button.new_from_icon_name('bmw-preview-symbolic');
} else {
previewButton = Gtk.Button.new_from_icon_name('bmw-preview-symbolic', 1);
}
previewButton.get_style_context().add_class('circular');
previewButton.get_style_context().add_class('flat');
previewButton.set_tooltip_text(_('Preview this effect'));
@@ -264,12 +278,14 @@ export default class BurnMyWindowsPreferences extends ExtensionPreferences {
button.set_valign(Gtk.Align.CENTER);
this._builder.expose_object(`${effect.getNick()}-enable-effect`, button);
if (utils.isADW()) {
let row;
if (hasPrefs) {
// Add the effect's preferences (if any).
row = this._builder.get_object(`${effect.getNick()}-prefs`);
} else {
} else if (utils.isADW()) {
row = Adw.ActionRow.new();
}
@@ -282,10 +298,6 @@ export default class BurnMyWindowsPreferences extends ExtensionPreferences {
row.set_title(effect.getLabel());
}
// this is the fix for the merge issue when an effect doesn't have a discription
row.name = effect.getLabel();
// Un-expand any previously expanded effect row. This way we ensure that there
// is only one expanded row at any time.
if (hasPrefs) {
@@ -307,17 +319,60 @@ export default class BurnMyWindowsPreferences extends ExtensionPreferences {
row.add_prefix(previewButton);
group.add(row);
} else {
const row = new Gtk.ListBoxRow();
row.get_style_context().add_class('effect-row');
const container = new Gtk.Box({orientation: Gtk.Orientation.VERTICAL});
const header = new Gtk.Box({spacing: 12});
header.get_style_context().add_class('effect-row-header');
const label = new Gtk.Label(
{label: effect.getLabel(), hexpand: true, halign: Gtk.Align.START});
label.get_style_context().add_class('heading');
this.gtkBoxAppend(header, previewButton);
this.gtkBoxAppend(header, label);
this.gtkBoxAppend(header, button);
this.gtkBoxAppend(container, header);
if (hasPrefs) {
const revealer = this._builder.get_object(`${effect.getNick()}-prefs`);
const arrow = new Gtk.Image({icon_name: 'go-down-symbolic'});
arrow.get_style_context().add_class('revealer-arrow');
this.gtkBoxAppend(header, arrow);
this.gtkBoxAppend(container, revealer);
row._revealer = revealer;
row._arrow = arrow;
row.set_activatable(true);
this._effectRows.push(row);
} else {
row.set_activatable(false);
}
if (utils.isGTK4()) {
row.set_child(container);
group.append(row);
} else {
row.add(container);
group.add(row);
}
}
}
});
// Some things can only be done once the widget is shown as we do not have access to
// the toplevel widget before.
this._widget.connect('realize', (widget) => {
const window = widget.get_root();
const window = utils.isGTK4() ? widget.get_root() : widget.get_toplevel();
// Show the version number in the title bar.
window.set_title(`Burn-My-Windows ${this.metadata.version}`);
window.set_title(`Burn-My-Windows ${Me.metadata.version}`);
this._loadActiveProfile();
this._updateProfileMenu();
@@ -325,11 +380,12 @@ export default class BurnMyWindowsPreferences extends ExtensionPreferences {
// Show an Adw.Toast or a Gtk.InfoBar whenever Burn-My-Windows was updated. We use a
// small timeout so that it is not shown instantaneously.
const lastVersion = this._settings.get_int('last-prefs-version');
if (lastVersion < this.metadata.version) {
if (lastVersion < Me.metadata.version) {
this._showUpdateInfoTimeout =
GLib.timeout_add(GLib.PRIORITY_DEFAULT, 2000, () => {
this._showUpdateInfoTimeout = 0;
if (utils.isADW()) {
const toast = Adw.Toast.new(_('Burn-My-Windows has been updated!'));
toast.set_button_label(_('View Changelog'));
toast.set_action_name('prefs.changelog');
@@ -337,9 +393,17 @@ export default class BurnMyWindowsPreferences extends ExtensionPreferences {
toast.connect(
'dismissed',
() => this._settings.set_int('last-prefs-version', this.metadata.version));
() => this._settings.set_int('last-prefs-version', Me.metadata.version));
window.add_toast(toast);
} else {
const infoBar = this._builder.get_object('update-info');
infoBar.connect('response', i => {
this._settings.set_int('last-prefs-version', Me.metadata.version);
i.set_revealed(false);
});
infoBar.set_revealed(true);
}
return false;
});
@@ -386,7 +450,11 @@ GitHub: <a href='https://github.com/sponsors/schneegans'>https://github.com/spon
}
]);
if (utils.isGTK4()) {
dialog.show();
} else {
dialog.show_all();
}
}
});
@@ -401,6 +469,7 @@ GitHub: <a href='https://github.com/sponsors/schneegans'>https://github.com/spon
// Starting with GNOME Shell 42, we have to hack our way through the widget tree
// of the Adw.PreferencesWindow...
if (utils.isADW()) {
const header = this._findWidgetByType(window.get_content(), Adw.HeaderBar);
header.pack_start(menu);
header.set_title_widget(this._builder.get_object('profile-button'));
@@ -424,6 +493,16 @@ GitHub: <a href='https://github.com/sponsors/schneegans'>https://github.com/spon
flap.set_content(scrolledWindow);
} else if (utils.isGTK4()) {
window.get_titlebar().pack_start(menu);
window.get_titlebar().set_title_widget(
this._builder.get_object('profile-button'));
} else {
window.get_titlebar().pack_start(menu);
window.get_titlebar().set_custom_title(
this._builder.get_object('profile-button'));
}
const addURIAction = (name, uri) => {
const action = Gio.SimpleAction.new(name, null);
action.connect('activate', () => Gtk.show_uri(null, uri, Gdk.CURRENT_TIME));
@@ -438,8 +517,6 @@ GitHub: <a href='https://github.com/sponsors/schneegans'>https://github.com/spon
addURIAction('donate-kofi', 'https://ko-fi.com/schneegans');
addURIAction('donate-github', 'https://github.com/sponsors/Schneegans');
addURIAction('donate-paypal', 'https://www.paypal.me/simonschneegans');
addURIAction('donate-crypto', 'https://schneegans.cb.id');
addURIAction('show-sponsors', 'https://schneegans.github.io/sponsors');
addURIAction('wallpapers', 'https://github.com/Schneegans/ai-wallpapers');
addURIAction('profile-dir', `file://${GLib.get_user_config_dir()}/burn-my-windows/profiles`);
// clang-format on
@@ -455,7 +532,7 @@ GitHub: <a href='https://github.com/sponsors/schneegans'>https://github.com/spon
null,
'https://github.com/Schneegans/Burn-My-Windows/blob/main/docs/changelog.md',
Gdk.CURRENT_TIME);
this._settings.set_int('last-prefs-version', this.metadata.version)
this._settings.set_int('last-prefs-version', Me.metadata.version)
});
group.add_action(changelogAction);
@@ -467,22 +544,90 @@ GitHub: <a href='https://github.com/sponsors/schneegans'>https://github.com/spon
const translators = new Set();
this._getJSONResource('/credits/translators.json').forEach(i => {
for (const j of Object.values(i)) {
j.forEach(k => translators.add(k.full_name));
j.forEach(k => translators.add(k[1]));
}
});
const dialog = new Adw.AboutWindow({transient_for: window, modal: true});
const sponsors = this._getJSONResource('/credits/sponsors.json');
let dialog;
// We try to use the special Adw.AboutWindow if it is available.
if (utils.isADW() && Adw.AboutWindow) {
let formatSponsors = (sponsors) => {
return sponsors.map(s => {
if (s.url == '')
return s.name;
else
return `${s.name} ${s.url}`;
});
};
dialog = new Adw.AboutWindow({transient_for: window, modal: true});
dialog.set_application_icon('burn-my-windows-symbolic');
dialog.set_application_name('Burn-My-Windows');
dialog.set_version(`${this.metadata.version}`);
dialog.set_version(`${Me.metadata.version}`);
dialog.set_developer_name('Simon Schneegans');
dialog.set_issue_url('https://github.com/Schneegans/Burn-My-Windows/issues');
if (sponsors.gold.length > 0) {
dialog.add_credit_section(_('Gold Sponsors'),
formatSponsors(sponsors.gold));
}
if (sponsors.silver.length > 0) {
dialog.add_credit_section(_('Silver Sponsors'),
formatSponsors(sponsors.silver));
}
if (sponsors.bronze.length > 0) {
dialog.add_credit_section(_('Bronze Sponsors'),
formatSponsors(sponsors.bronze));
}
if (sponsors.past.length > 0) {
dialog.add_credit_section(_('Past Sponsors'),
formatSponsors(sponsors.past));
}
} else {
let formatSponsors = (sponsors) => {
return sponsors.map(s => {
if (s.url == '')
return s.name;
else
return `<a href="${s.url}">${s.name}</a>`;
});
};
dialog = new Gtk.AboutDialog({transient_for: window, modal: true});
dialog.set_logo_icon_name('burn-my-windows-symbolic');
dialog.set_program_name(`Burn-My-Windows ${Me.metadata.version}`);
dialog.set_authors(['Simon Schneegans']);
if (sponsors.gold.length > 0) {
dialog.add_credit_section(_('Gold Sponsors'),
formatSponsors(sponsors.gold));
}
if (sponsors.silver.length > 0) {
dialog.add_credit_section(_('Silver Sponsors'),
formatSponsors(sponsors.silver));
}
if (sponsors.bronze.length > 0) {
dialog.add_credit_section(_('Bronze Sponsors'),
formatSponsors(sponsors.bronze));
}
if (sponsors.past.length > 0) {
dialog.add_credit_section(_('Past Sponsors'),
formatSponsors(sponsors.past));
}
}
dialog.set_translator_credits([...translators].join('\n'));
dialog.set_copyright('© 2023 Simon Schneegans');
dialog.set_copyright('© 2022 Simon Schneegans');
dialog.set_website('https://github.com/Schneegans/Burn-My-Windows');
dialog.set_license_type(Gtk.License.GPL_3_0);
if (utils.isGTK4()) {
dialog.show();
} else {
dialog.show_all();
}
});
group.add_action(aboutAction);
@@ -567,7 +712,10 @@ GitHub: <a href='https://github.com/sponsors/schneegans'>https://github.com/spon
}
});
window.add(this._widget);
// Show the widgets on GTK3.
if (!utils.isGTK4()) {
this._widget.show_all();
}
}
// -------------------------------------------------------------------- public interface
@@ -583,6 +731,11 @@ GitHub: <a href='https://github.com/sponsors/schneegans'>https://github.com/spon
return this._activeProfile.settings;
}
// Returns the widget used for the settings of this extension.
getWidget() {
return this._widget;
}
// Connects an Adw.ComboRow (or anything else which has an 'selected' property) to a
// settings key. It also binds the corresponding reset button.
bindComboRow(settingsKey) {
@@ -648,6 +801,17 @@ GitHub: <a href='https://github.com/sponsors/schneegans'>https://github.com/spon
this._bindResetButton(settingsKey);
}
// ----------------------------------------------------------------- GTK3 / GTK4 helpers
// Appends the given child widget to the given Gtk.Box.
gtkBoxAppend(box, child) {
if (utils.isGTK4()) {
box.append(child);
} else {
box.pack_start(child, false, true, 0);
}
}
// ----------------------------------------------------------------------- private stuff
// This loads all settings from the profile given in the settings key 'active-profile'.
@@ -686,11 +850,20 @@ GitHub: <a href='https://github.com/sponsors/schneegans'>https://github.com/spon
updateProfileButtonMenuIfChanged('profile-high-priority');
this.bindEntry('profile-app');
if (utils.isADW()) {
this.bindComboRow('profile-animation-type');
this.bindComboRow('profile-window-type');
this.bindComboRow('profile-color-scheme');
this.bindComboRow('profile-power-mode');
this.bindComboRow('profile-power-profile');
} else {
this.bindComboBox('profile-animation-type');
this.bindComboBox('profile-window-type');
this.bindComboBox('profile-color-scheme');
this.bindComboBox('profile-power-mode');
this.bindComboBox('profile-power-profile');
}
this.bindSwitch('profile-high-priority');
// Connect all effect settings.
@@ -711,7 +884,7 @@ GitHub: <a href='https://github.com/sponsors/schneegans'>https://github.com/spon
// configuration option of the profile is changed.
_updateProfileButton() {
this._builder.get_object('choose-profile-button').label =
this._getProfileName(this.getProfileSettings());
this._profileManager.getProfileName(this.getProfileSettings());
}
// This updates the list of available profiles in the dropdown of the profile-selection
@@ -725,7 +898,7 @@ GitHub: <a href='https://github.com/sponsors/schneegans'>https://github.com/spon
// Then add an entry for each available profile.
this._profileManager.getProfiles().forEach(profile => {
const label = this._getProfileName(profile.settings);
const label = this._profileManager.getProfileName(profile.settings);
const item = Gio.MenuItem.new(label, 'prefs.active-profile');
item.set_action_and_target_value('prefs.active-profile',
GLib.Variant.new_string(profile.path));
@@ -733,58 +906,6 @@ GitHub: <a href='https://github.com/sponsors/schneegans'>https://github.com/spon
});
}
// Profiles are named according to their configuration. This method returns a localized
// string describing the settings of the profile.
_getProfileName(settings) {
let items = [];
// If an app is configured, use it as first component for the profile's name.
const app = settings.get_string('profile-app');
if (app != '') {
items.push(app);
}
// Now add components to the name for each non-default profile option. Make sure that
// these are the same strings as used in the UI files!
const addComponent = (settingsKey, options) => {
const option = settings.get_int(settingsKey);
if (option > 0) {
items.push(options[option - 1]);
}
};
// clang-format off
addComponent('profile-animation-type', [_('Opening Windows'),
_('Closing Windows')]);
addComponent('profile-window-type', [_('Normal Windows'),
_('Dialog Windows')]);
addComponent('profile-color-scheme', [_('Default Color Scheme'),
_('Dark Color Scheme')]);
addComponent('profile-power-mode', [_('On Battery'),
_('Plugged In')]);
addComponent('profile-power-profile', [_('Power-Saver Mode'),
_('Balanced Mode'),
_('Performance Mode'),
_('Power Saver or Balanced'),
_('Balanced or Performance')]);
// clang-format on
// If the profile is a high-priority profile, also add this..
if (settings.get_boolean('profile-high-priority')) {
items.push(_('High Priority'));
}
let name = '';
if (items.length == 0) {
name = _('Standard Profile');
} else {
name = items.join(' · ');
}
return name;
}
// This wrapper connects a given callback to a profile settings key. Use this instead of
// the direct connect() call on the profile settings to make sure that the callback is
// disconnected when the active profile changes.
@@ -861,12 +982,15 @@ GitHub: <a href='https://github.com/sponsors/schneegans'>https://github.com/spon
default_width: 800,
default_height: 450,
modal: true,
transient_for: this._widget.get_root()
transient_for: utils.isGTK4() ? this._widget.get_root() :
this._widget.get_toplevel()
});
// Add a header bar to the window.
if (utils.isGTK4()) {
const header = Gtk.HeaderBar.new();
window.set_titlebar(header);
}
const box = new Gtk.Box({
orientation: Gtk.Orientation.VERTICAL,
@@ -886,11 +1010,16 @@ GitHub: <a href='https://github.com/sponsors/schneegans'>https://github.com/spon
pixel_size: 128,
});
box.append(image);
box.append(label);
this.gtkBoxAppend(box, image);
this.gtkBoxAppend(box, label);
if (utils.isGTK4()) {
window.set_child(box);
window.show();
} else {
window.add(box);
window.show_all();
}
}
// Helper function to show a message dialog. The dialog is modal and has a title, a
@@ -899,7 +1028,10 @@ GitHub: <a href='https://github.com/sponsors/schneegans'>https://github.com/spon
// called when the button is clicked.
// This method works on GTK3, GTK4, and libadwaita.
_createMessageDialog(title, message, window, buttons) {
let dialog = new Adw.MessageDialog({
let dialog;
if (utils.isADW() && Adw.MessageDialog) {
dialog = new Adw.MessageDialog({
heading: title,
body: message,
body_use_markup: true,
@@ -920,7 +1052,29 @@ GitHub: <a href='https://github.com/sponsors/schneegans'>https://github.com/spon
}
});
} else {
dialog = new Gtk.MessageDialog({
text: title,
secondary_text: message,
secondary_use_markup: true,
modal: true,
title: '',
});
buttons.forEach((button, i) => {
dialog.add_button(button.label, i);
if (button.default) {
dialog.set_default_response(i);
}
});
}
if (utils.isGTK4()) {
dialog.set_hide_on_close(true);
}
dialog.set_transient_for(window);
// If the dialog is closed or a button is clicked, we hide the dialog and call the
@@ -939,3 +1093,25 @@ GitHub: <a href='https://github.com/sponsors/schneegans'>https://github.com/spon
return dialog;
}
}
// This is used for setting up the translations.
function init() {
ExtensionUtils.initTranslations();
}
// This function is called when the preferences window is created to build and return a
// Gtk widget. We create a new instance of the PreferencesDialog class each time this
// method is called. This way we can actually open multiple settings windows and interact
// with all of them properly.
function buildPrefsWidget() {
var dialog = new PreferencesDialog();
return dialog.getWidget();
}
// If using libadwaita, this method is called. In this case, the primary widget of the
// preferences dialog is an Adw.PreferencesPage, which we directly add to the window.
function fillPreferencesWindow(window) {
window.set_default_size(650, 750);
var dialog = new PreferencesDialog();
window.add(dialog.getWidget());
}
+86
View File
@@ -0,0 +1,86 @@
{
"gold": [
{
"name": "D3vil0p3r",
"url": "https://github.com/D3vil0p3r"
},
{
"name": "Maxence Sebald",
"url": ""
}
],
"silver": [
{
"name": "@danielheadbang",
"url": "https://github.com/danielheadbang"
},
{
"name": "Jorge Castro",
"url": "https://github.com/castrojo"
}
],
"bronze": [
{
"name": "@SubOptimal",
"url": "https://github.com/SubOptimal"
},
{
"name": "@vlazic",
"url": "https://github.com/vlazic"
}
],
"past": [
{
"name": "Dennis ten Hoove",
"url": "https://github.com/dennis1248"
},
{
"name": "@MRR-dev",
"url": "https://github.com/MRR-dev"
},
{
"name": "Angel Brielez",
"url": "https://github.com/AngelBrielez"
},
{
"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"
}
]
}
+407 -487
View File
@@ -1,524 +1,444 @@
[
{
"Arabic": [
{
"email": "fawaz27000@hotmail.com",
"full_name": "fawaz006",
"change_count": 64
},
{
"email": "dabsantamer@yahoo.com",
"full_name": "tamer dab",
"change_count": 7
},
{
"email": "yamen.malik2@gmail.com",
"full_name": "Yamen Malik",
"change_count": 7
},
{
"email": "hamzah.abusamak@gmail.com",
"full_name": "bonbonboi",
"change_count": 5
}
"Turkish": [
[
"tcreeper.earth@gmail.com",
"TCr3",
24
],
[
"muhaaliss@pm.me",
"Muha Aliss",
52
],
[
"libreajans@gmail.com",
"Sabri \u00dcnal",
70
]
},
{
"Azerbaijani": [
{
"email": "xxmn77@gmail.com",
"full_name": "X\u0259yyam Qocayev",
"change_count": 63
}
]
},
{
"Chinese (Simplified Han script)": [
{
"email": "aerowolf_sn@qq.com",
"full_name": "aerowolf",
"change_count": 101
},
{
"email": "poonsters6@gmail.com",
"full_name": "merelymyself",
"change_count": 32
},
{
"email": "lyuutau@outlook.com",
"full_name": "\u5218\u97ec",
"change_count": 30
},
{
"email": "coelacanthushex@gmail.com",
"full_name": "Celeste Liu",
"change_count": 3
}
]
},
{
"Chinese (Traditional Han script)": [
{
"email": "ghost20090105@gmail.com",
"full_name": "GholtsMxv",
"change_count": 120
}
]
},
{
"Czech": [
{
"email": "6325410@seznam.cz",
"full_name": "Miraficus",
"change_count": 77
},
{
"email": "jiri.doubravsky@gmail.com",
"full_name": "Ji\u0159\u00ed Doubravsk\u00fd",
"change_count": 60
},
{
"email": "jose1711@gmail.com",
"full_name": "Jose Riha",
"change_count": 4
},
{
"email": "yuridm@gmail.com",
"full_name": "\u042e\u0440\u0456\u0439 \u0414\u043c\u0438\u0442\u0440\u0435\u043d\u043a\u043e",
"change_count": 1
}
]
},
{
"Danish": [
{
"email": "symmetricalmegalomania@gmail.com",
"full_name": "symegac",
"change_count": 129
}
]
},
{
"Dutch": [
{
"email": "vistausss@fastmail.com",
"full_name": "Heimen Stoffels",
"change_count": 122
},
{
"email": "philip.goto@gmail.com",
"full_name": "Philip Goto",
"change_count": 5
},
{
"email": "code@simonschneegans.de",
"full_name": "Simon Schneegans",
"change_count": 1
}
]
},
{
"English": [
{
"email": "softexpert@gmail.com",
"full_name": "SoftExpert",
"change_count": 1
}
]
},
{
"Esperanto": [
{
"email": "phlostically@mailinator.com",
"full_name": "phlostically",
"change_count": 68
}
]
},
{
"Finnish": [
{
"email": "jiri.gronroos@iki.fi",
"full_name": "Jiri Gr\u00f6nroos",
"change_count": 43
},
{
"email": "jouko.tiilikainen@gmail.com",
"full_name": "Tinde (Joke)",
"change_count": 3
}
]
},
{
"French": [
{
"email": "softexpert@gmail.com",
"full_name": "SoftExpert",
"change_count": 52
},
{
"email": "bonnemainsnathan@gmail.com",
"full_name": "Nathan",
"change_count": 38
},
{
"email": "mathieu.bousquet2@gmail.com",
"full_name": "Mathieu B.",
"change_count": 26
},
{
"email": "theo.remon+weblate@uswery.eu",
"full_name": "Th\u00e9o Remon",
"change_count": 22
},
{
"email": "redxxiii@zaclys.net",
"full_name": "Reda",
"change_count": 6
},
{
"email": "brice.laurencin@gmail.com",
"full_name": "Brice Laurencin",
"change_count": 5
},
{
"email": "matshot03@gmail.com",
"full_name": "Mathis Chabrier",
"change_count": 2
}
]
},
{
"German": [
{
"email": "code@simonschneegans.de",
"full_name": "Simon Schneegans",
"change_count": 123
},
{
"email": "atalanttore@googlemail.com",
"full_name": "Ettore Atalan",
"change_count": 3
}
]
},
{
"Hebrew": [
{
"email": "hvusvvnkl12345@gmail.com",
"full_name": "\u05d9\u05d4\u05d5\u05d3\u05d4 \u05d0\u05dc\u05d9\u05e1\u05e3",
"change_count": 33
}
]
},
{
"Hindi": [
{
"email": "weblate.scrambled777@simplelogin.com",
"full_name": "Scrambled777",
"change_count": 154
}
]
},
{
"Hungarian": [
{
"email": "atomkapa@gmail.com",
"full_name": "atomkapa atomkapa",
"change_count": 87
},
{
"email": "superh552@gmail.com",
"full_name": "KinteLiX",
"change_count": 75
}
]
},
{
"Indonesian": [
{
"email": "randompsyduck@duck.com",
"full_name": "Sir-Ivysaur",
"change_count": 71
},
{
"email": "rezaalmanda27@gmail.com",
"full_name": "Reza Almanda",
"change_count": 56
}
]
},
{
"Italian": [
{
"email": "albano_battistella@hotmail.com",
"full_name": "albanobattistella",
"change_count": 131
},
{
"email": "mceyes@protonmail.com",
"full_name": "Frankie McEyes",
"change_count": 2
},
{ "email": "mario03@gmail.com", "full_name": "Mario", "change_count": 1 }
]
},
{
"Japanese": [
{
"email": "ryuichi.ya220@gmail.com",
"full_name": "Ryan Y",
"change_count": 75
}
]
},
{
"Korean": [
{
"email": "darkcircle.0426@gmail.com",
"full_name": "Seong-ho Cho",
"change_count": 128
}
]
},
{
"Lithuanian": [
{ "email": "hazap@hotmail.com", "full_name": "Moo", "change_count": 79 }
[
"hazap@hotmail.com",
"Moo",
43
]
},
{
"Norwegian Bokm\u00e5l": [
{
"email": "epost@anotheragency.no",
"full_name": "Allan Nordh\u00f8y",
"change_count": 40
},
{
"email": "code@simonschneegans.de",
"full_name": "Simon Schneegans",
"change_count": 1
}
]
},
{
"Persian": [
{
"email": "lijeyol367@nickolis.com",
"full_name": "lijeyol367",
"change_count": 80
},
{
"email": "eshagh094@gmail.com",
"full_name": "Eshagh shahidani",
"change_count": 61
},
{
"email": "dani.behzi@ubuntu.com",
"full_name": "Danial Behzadi",
"change_count": 39
}
]
},
{
"Polish": [
{
"email": "pwrzonca@gmail.com",
"full_name": "Pawe\u0142 Rzo\u0144ca",
"change_count": 73
},
{ "email": "sto@tutanota.de", "full_name": "WaldiS", "change_count": 38 },
{
"email": "gnu.ewm@protonmail.com",
"full_name": "Eryk Michalak",
"change_count": 10
},
{
"email": "krzys.chorzempa@gmail.com",
"full_name": "Krzysztof Chorzempa",
"change_count": 4
}
]
},
{
"Portuguese": [
{
"email": "pedro.hvn.2018@gmail.com",
"full_name": "KrulesExGamer",
"change_count": 65
},
{ "email": "ssantos@web.de", "full_name": "ssantos", "change_count": 55 },
{
"email": "dyegoaurelio@gmail.com",
"full_name": "dyegoaurelio",
"change_count": 8
}
]
},
{
"Portuguese (Brazil)": [
{
"email": "mr-isaac@ig.com.br",
"full_name": "Isaac Dias",
"change_count": 89
},
{
"email": "fefehex12@gmail.com",
"full_name": "Fernando Lopes",
"change_count": 49
},
{
"email": "gutojusto22@gmail.com",
"full_name": "Gustavo",
"change_count": 24
}
[
"mr-isaac@ig.com.br",
"Isaac Dias",
93
]
]
},
{
"Romanian": [
"German": [
[
"atalanttore@googlemail.com",
"Ettore Atalan",
1
],
[
"code@simonschneegans.de",
"Simon Schneegans",
119
]
]
},
{
"email": "softexpert@gmail.com",
"full_name": "SoftExpert",
"change_count": 126
}
"Esperanto": [
[
"phlostically@mailinator.com",
"phlostically",
72
]
]
},
{
"Russian": [
{
"email": "lenemter@gmail.com",
"full_name": "lenemter",
"change_count": 49
},
{
"email": "franigoyt@gmail.com",
"full_name": "ANIGO R. (AR)",
"change_count": 45
},
{
"email": "eg.ermakov2016@yandex.ru",
"full_name": "\u0415\u0433\u043e\u0440 \u0415\u0440\u043c\u0430\u043a\u043e\u0432",
"change_count": 33
},
{
"email": "ddaudix@gmail.com",
"full_name": "David Lapshin",
"change_count": 31
},
{
"email": "sergei@racingrebel.com",
"full_name": "\u041c\u0438\u0441\u0442\u0435\u0440 \u041f\u0435\u0440\u0435\u0432\u043e\u0434",
"change_count": 11
}
[
"sergei@racingrebel.com",
"\u041c\u0438\u0441\u0442\u0435\u0440 \u041f\u0435\u0440\u0435\u0432\u043e\u0434",
11
],
[
"ddaudix@gmail.com",
"Daudix UFO",
31
],
[
"eg.ermakov2016@yandex.ru",
"\u0415\u0433\u043e\u0440 \u0415\u0440\u043c\u0430\u043a\u043e\u0432",
33
],
[
"franigoyt@gmail.com",
"ANIGO R. (AR)",
49
],
[
"lenemter@gmail.com",
"lenemter",
50
]
]
},
{
"Slovak": [
{
"email": "jose1711@gmail.com",
"full_name": "Jose Riha",
"change_count": 124
},
{
"email": "salka.milan@googlemail.com",
"full_name": "Milan \u0160alka",
"change_count": 10
}
"Romanian": [
[
"softexpert@gmail.com",
"SoftExpert",
127
]
},
{
"Spanish": [
{
"email": "oscfdezdz@tuta.io",
"full_name": "\u00d3scar Fern\u00e1ndez D\u00edaz",
"change_count": 59
},
{
"email": "hasecilu@tuta.io",
"full_name": "Ulices",
"change_count": 35
},
{
"email": "fran-carro@hotmail.es",
"full_name": "gallegonovato",
"change_count": 25
},
{
"email": "andres.segarra.aparicio@gmail.com",
"full_name": "Andres Segarra",
"change_count": 10
},
{
"email": "fitojb@ubuntu.com",
"full_name": "Adolfo Jayme Barrientos",
"change_count": 7
},
{
"email": "jorgec2005@gmail.com",
"full_name": "Jorge C",
"change_count": 4
}
]
},
{
"Swedish": [
{
"email": "swedishsailfishosuser@tutanota.com",
"full_name": "Kristoffer Grundstr\u00f6m",
"change_count": 46
},
{
"email": "droidbittin@gmail.com",
"full_name": "Luna Jernberg",
"change_count": 9
},
{
"email": "obslsessed@duck.com",
"full_name": "obslsessed",
"change_count": 5
}
]
},
{
"Turkish": [
{
"email": "noreply+13144@weblate.org",
"full_name": "Deleted User",
"change_count": 72
},
{
"email": "muhaaliss@pm.me",
"full_name": "Muha Aliss",
"change_count": 48
},
{
"email": "tcreeper.earth@gmail.com",
"full_name": "TCr3",
"change_count": 24
}
]
},
{
"Ukrainian": [
{
"email": "yuridm@gmail.com",
"full_name": "\u042e\u0440\u0456\u0439 \u0414\u043c\u0438\u0442\u0440\u0435\u043d\u043a\u043e",
"change_count": 44
[
"cakestwix1@gmail.com",
"CakesTwix",
36
],
[
"911us@duck.com",
"Petro S.",
44
],
[
"yuridm@gmail.com",
"\u042e\u0440\u0456\u0439 \u0414\u043c\u0438\u0442\u0440\u0435\u043d\u043a\u043e",
48
]
]
},
{
"email": "911us@duck.com",
"full_name": "Petro S.",
"change_count": 44
"Japanese": [
[
"ryuichi.ya220@gmail.com",
"Ryan Y",
79
]
]
},
{
"email": "cakestwix1@gmail.com",
"full_name": "CakesTwix",
"change_count": 35
"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",
60
]
]
},
{
"email": "sergiy.goncharuk.1@gmail.com",
"full_name": "\u0421\u0435\u0440\u0433\u0456\u0439",
"change_count": 4
}
"Portuguese": [
[
"ssantos@web.de",
"ssantos",
1
],
[
"dyegoaurelio@gmail.com",
"dyegoaurelio",
8
],
[
"pedro.hvn.2018@gmail.com",
"KrulesExGamer",
70
]
]
},
{
"Hungarian": [
[
"superh552@gmail.com",
"KinteLiX",
79
]
]
},
{
"Hebrew": [
[
"hvusvvnkl12345@gmail.com",
"\u05d9\u05d4\u05d5\u05d3\u05d4 \u05d0\u05dc\u05d9\u05e1\u05e3",
37
]
]
},
{
"Polish": [
[
"gnu.ewm@protonmail.com",
"Eryk Michalak",
10
],
[
"sto@tutanota.de",
"WaldiS",
39
],
[
"pwrzonca@gmail.com",
"Pawe\u0142 Rzo\u0144ca",
77
]
]
},
{
"Italian": [
[
"mario03@gmail.com",
"Mario",
1
],
[
"albano_battistella@hotmail.com",
"albanobattistella",
127
]
]
},
{
"Arabic": [
[
"hamzah.abusamak@gmail.com",
"bonbonboi",
5
],
[
"dabsantamer@yahoo.com",
"tamer dab",
7
],
[
"yamen.malik2@gmail.com",
"Yamen Malik",
7
],
[
"fawaz27000@hotmail.com",
"fawaz006",
68
]
]
},
{
"Azerbaijani": [
[
"xxmn77@gmail.com",
"X\u0259yyam Qocayev",
67
]
]
},
{
"Indonesian": [
[
"rezaalmanda27@gmail.com",
"Reza Almanda",
52
],
[
"randompsyduck@duck.com",
"Sir-Ivysaur",
75
]
]
},
{
"Dutch": [
[
"philip.goto@gmail.com",
"Philip Goto",
1
],
[
"code@simonschneegans.de",
"Simon Schneegans",
1
],
[
"vistausss@fastmail.com",
"Heimen Stoffels",
127
]
]
},
{
"Spanish": [
[
"jorgec2005@gmail.com",
"Jorge C",
5
],
[
"fitojb@ubuntu.com",
"Adolfo Jayme Barrientos",
7
],
[
"andres.segarra.aparicio@gmail.com",
"Andres Segarra",
10
],
[
"fran-carro@hotmail.es",
"gallegonovato",
14
],
[
"dev.n47os@aleeas.com",
"Ulices",
40
],
[
"oscfdezdz@tuta.io",
"\u00d3scar Fern\u00e1ndez D\u00edaz",
60
]
]
},
{
"French": [
[
"matshot03@gmail.com",
"Mathis Chabrier",
2
],
[
"redxxiii@zaclys.net",
"Reda",
10
],
[
"theo.remon+weblate@uswery.eu",
"Th\u00e9o Remon",
22
],
[
"mathieu.bousquet2@gmail.com",
"Mathieu B.",
26
],
[
"bonnemainsnathan@gmail.com",
"Nathan",
38
],
[
"softexpert@gmail.com",
"SoftExpert",
52
]
]
},
{
"Swedish": [
[
"obslsessed@duck.com",
"obslsessed",
5
],
[
"droidbittin@gmail.com",
"Luna Jernberg",
9
],
[
"swedishsailfishosuser@tutanota.com",
"Kristoffer Grundstr\u00f6m",
48
]
]
},
{
"Persian": [
[
"eshagh094@gmail.com",
"Eshagh shahidani",
65
]
]
},
{
"Finnish": [
[
"jiri.gronroos@iki.fi",
"Jiri Gr\u00f6nroos",
47
]
]
},
{
"Korean": [
[
"darkcircle.0426@gmail.com",
"Seong-ho Cho",
129
]
]
},
{
"Slovak": [
[
"jose1711@gmail.com",
"Jose Riha",
129
]
]
},
{
"Chinese (Simplified)": [
[
"coelacanthushex@gmail.com",
"Celeste Liu",
3
],
[
"lyuutau@outlook.com",
"\u5218\u97ec",
34
],
[
"poonsters6@gmail.com",
"merelymyself",
38
],
[
"aerowolf@tom.com",
"aerowolf",
98
]
]
},
{
"Norwegian Bokm\u00e5l": [
[
"code@simonschneegans.de",
"Simon Schneegans",
1
],
[
"epost@anotheragency.no",
"Allan Nordh\u00f8y",
44
]
]
}
]
+23
View File
@@ -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;
}
+26
View File
@@ -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);
}
-117
View File
@@ -1,117 +0,0 @@
//////////////////////////////////////////////////////////////////////////////////////////
// ) ( //
// ( /( ( ( ) ( ( ( ( )\ ) ( ( //
// )\()) ))\ )( ( ( )\ ) )\))( )\ ( (()/( ( )\))( ( //
// ((_)\ /((_|()\ )\ ) )\ '(()/( ((_)()((_) )\ ) ((_)))\((_)()\ )\ //
// | |(_|_))( ((_)_(_/( _((_)) )(_)) _(()((_|_)_(_/( _| |((_)(()((_|(_) //
// | '_ \ || | '_| ' \)) | ' \()| || | \ V V / | ' \)) _` / _ \ V V (_-< //
// |_.__/\_,_|_| |_||_| |_|_|_| \_, | \_/\_/|_|_||_|\__,_\___/\_/\_//__/ //
// |__/ //
//////////////////////////////////////////////////////////////////////////////////////////
// SPDX-FileCopyrightText: Justin Garza <JGarza9788@gmail.com>
// 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. This
// provides the standard input:
// 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:
// vec4 getInputColor(vec2 coords)
// void setOutputColor(vec4 outColor)
uniform float uSpeed;
uniform bool uRandomColor;
uniform float uStartHue;
uniform float uSaturation;
uniform float uBlur;
uniform vec2 uSeed;
uniform float uEdgeSize;
uniform float uEdgeHardness;
void main() {
// We simply inverse the progress for opening windows.
float progress = uForOpening ? uProgress : 1.0 - uProgress;
// Map UV to window content (without the shadow padding).
vec2 uv = (iTexCoord.st - 0.5) * uSize / (vec2(1.0) - vec2(uPadding * 2.0) / uSize);
uv = uv / uSize + 0.5;
// We want the shapes of the masks at the end of the animation to have a 1:1 aspect
// ratio. For this, we scale the UV coordinates based on the aspect ratio of the window
// and later blend between the original UV and the 1:1 UV based on the progress.
vec2 oneToOneUV = uv;
oneToOneUV -= 0.5;
if (uSize.x > uSize.y) {
oneToOneUV.y *= uSize.y / uSize.x;
} else {
oneToOneUV.x *= uSize.x / uSize.y;
}
oneToOneUV += 0.5;
uv = mix(oneToOneUV, uv, progress);
// This blends between a square-shaped gradient towards the window edges and a circular
// gradient.
float shape = mix(2.0, 100.0, pow(progress, 5.0));
float gradient = pow(abs(uv.x - 0.5) * 2.0, shape) + pow(abs(uv.y - 0.5) * 2.0, shape);
gradient += simplex2D((iTexCoord + uSeed)) * 0.5;
// This mask is used for the color overlay.
float glowMask = (progress - gradient) / (uEdgeSize + 0.1);
glowMask = 1.0 - clamp(glowMask, 0.0, 1.0);
// Quickly fade out the glow mask at the end of the animation.
glowMask *= easeOutSine(min(1.0, (1.0 - progress) * 4.0));
// Get the color from the window texture. We gradually blur the input color based on
// the progress of the animation. We also slightly scale the UV coordinates to make
// the window scale up during the animation.
vec2 windowUV = (iTexCoord.st - 0.5) * mix(1.1, 1.0, easeOutCubic(progress)) + 0.5;
vec4 windowColor;
if (uBlur > 0.0) {
windowColor = getBlurredInputColor(windowUV, (1.0 - progress) * uBlur, 3.0);
} else {
windowColor = getInputColor(windowUV);
}
glowMask *= windowColor.a;
vec3 glowColor = cos(progress * uSpeed + uv.xyx + vec3(0, 2, 4)).xyz;
float colorOffset = (uRandomColor) ? hash12(uSeed) : uStartHue;
glowColor = offsetHue(glowColor, colorOffset + 0.1);
glowColor = clamp(glowColor * uSaturation, vec3(0.0), vec3(1.0));
windowColor.rgb += glowColor * glowMask;
// To make this look better on light themes, we also add some color non-additively.
windowColor = alphaOver(windowColor, vec4(glowColor, glowMask * 0.2));
// A mask which will crop the window gradually into a circle.
float softCrop = 1.0 - smoothstep(progress - 0.5, progress + 0.5, gradient);
float hardCrop = 1.0 - smoothstep(progress - 0.05, progress + 0.05, gradient);
float cropMask = mix(softCrop, hardCrop, uEdgeHardness);
// Quickly fade in the alpha mask at the beginning of the animation.
cropMask *= easeInSine(min(1.0, progress * 2.0));
// Quickly fade out the alpha mask at the end of the animation.
cropMask = max(cropMask, 1.0 - easeOutSine(min(1.0, (1.0 - progress) * 4.0)));
windowColor.a *= cropMask;
setOutputColor(windowColor);
}
+1 -286
View File
@@ -42,10 +42,6 @@ uniform float uDuration;
#if defined(KWIN) // --------------------------------------------------------------------
#if defined(PLASMA6)
#include "colormanagement.glsl"
#endif
uniform sampler2D sampler;
uniform int textureWidth;
uniform int textureHeight;
@@ -68,29 +64,11 @@ 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);
#if defined(PLASMA6)
fragColor = sourceEncodingToNitsInDestinationColorspace(fragColor);
fragColor = nitsToDestinationEncoding(fragColor);
#endif
}
#elif defined(KWIN_LEGACY) // -----------------------------------------------------------
#if defined(PLASMA6)
#include "colormanagement.glsl"
#endif
uniform sampler2D sampler;
uniform int textureWidth;
uniform int textureHeight;
@@ -112,20 +90,7 @@ 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);
#if defined(PLASMA6)
fragColor = sourceEncodingToNitsInDestinationColorspace(fragColor);
fragColor = nitsToDestinationEncoding(fragColor);
#endif
}
#else // GNOME --------------------------------------------------------------------------
@@ -153,35 +118,6 @@ void setOutputColor(vec4 outColor) { cogl_color_out = outColor; }
#endif // -------------------------------------------------------------------------------
// A simple blur function
vec4 getBlurredInputColor(vec2 uv, float radius, float samples) {
// Initialize the color accumulator to zero.
vec4 color = vec4(0.0);
// Define a constant for 2 * PI (tau), which represents a full circle in radians.
const float tau = 6.28318530718;
// Number of directions for sampling around the circle.
const float directions = 15.0;
// Outer loop iterates over multiple directions evenly spaced around a circle.
for (float d = 0.0; d < tau; d += tau / directions) {
// Inner loop samples along each direction, with decreasing intensity.
for (float s = 0.0; s < 1.0; s += 1.0 / samples) {
// Calculate the offset for this sample based on direction, radius, and step.
// The (1.0 - s) term ensures more sampling occurs closer to the center.
vec2 offset = vec2(cos(d), sin(d)) * radius * (1.0 - s) / uSize;
// Add the sampled color at the offset position to the accumulator.
color += getInputColor(uv + offset);
}
}
// Normalize the accumulated color by dividing by the total number of samples
// and directions to ensure the result is averaged.
return color / samples / directions;
}
// ----------------------------------------------------------------- compositing operators
// The Shell.GLSLEffect uses straight alpha blending. This helper method allows
@@ -214,54 +150,6 @@ vec3 darken(vec3 color, float fac) { return color * (1.0 - fac); }
// color will be white.
vec3 lighten(vec3 color, float fac) { return color + (vec3(1.0) - color) * fac; }
// change the color based on an offset amount
vec3 offsetHue(vec3 color, float hueOffset) {
// Convert RGB to HSV
float maxC = max(max(color.r, color.g), color.b);
float minC = min(min(color.r, color.g), color.b);
float delta = maxC - minC;
float hue = 0.0;
if (delta > 0.0) {
if (maxC == color.r) {
hue = mod((color.g - color.b) / delta, 6.0);
} else if (maxC == color.g) {
hue = (color.b - color.r) / delta + 2.0;
} else {
hue = (color.r - color.g) / delta + 4.0;
}
}
hue /= 6.0;
float saturation = (maxC > 0.0) ? (delta / maxC) : 0.0;
float value = maxC;
// Offset the hue
hue = mod(hue + hueOffset, 1.0);
// Convert HSV back to RGB
float c = value * saturation;
float x = c * (1.0 - abs(mod(hue * 6.0, 2.0) - 1.0));
float m = value - c;
vec3 rgb;
if (hue < 1.0 / 6.0) {
rgb = vec3(c, x, 0.0);
} else if (hue < 2.0 / 6.0) {
rgb = vec3(x, c, 0.0);
} else if (hue < 3.0 / 6.0) {
rgb = vec3(0.0, c, x);
} else if (hue < 4.0 / 6.0) {
rgb = vec3(0.0, x, c);
} else if (hue < 5.0 / 6.0) {
rgb = vec3(x, 0.0, c);
} else {
rgb = vec3(c, 0.0, x);
}
return rgb + m;
}
// ---------------------------------------------------------------------- easing functions
// Here are some basic easing function. More can be added if required!
@@ -279,121 +167,6 @@ float easeOutBack(float x, float e) {
return p * p * ((e + 1.0) * p + e) + 1.0;
}
// https://easings.net/
/*
Easing functions define the rate of change of a parameter over time, commonly used in
animations, UI transitions, and game development. They provide a way to make movements
more natural or visually appealing rather than linear and mechanical. Popular categories
of easing functions include:
Linear: Constant speed from start to finish.
Quadratic (Ease In, Ease Out, Ease In Out): Changes at varying rates, with smoother starts
or stops. Cubic: Similar to quadratic but allows for even more nuanced transitions.
Exponential: Drastic changes at the start or end, often used for dramatic effects.
Bounce: Mimics a bouncing object with oscillations.
Elastic: Simulates the behavior of a spring, with overshooting and oscillations.
Below are text-based "graphs" of some easing functions, where the horizontal axis
represents time and the vertical axis represents progress.
*/
// Quadratic Easing
// Smooth acceleration and deceleration using quadratic (t^2) curves.
float easeInOutQuad(float t) {
// Accelerates for the first half, decelerates for the second half.
return t < 0.5 ? 2.0 * t * t : -1.0 + (4.0 - 2.0 * t) * t;
}
// Cubic Easing
// Smoother transitions compared to quadratic easing using cubic (t^3) curves.
float easeInCubic(float t) {
// Starts slow and accelerates as t increases.
return t * t * t;
}
float easeOutCubic(float t) {
// Starts fast and decelerates as t approaches 1.0.
float f = t - 1.0;
return f * f * f + 1.0;
}
float easeInOutCubic(float t) {
// Combines easeIn and easeOut cubic behavior for smooth transitions.
return t < 0.5 ? 4.0 * t * t * t : (t - 1.0) * (2.0 * t - 2.0) * (2.0 * t - 2.0) + 1.0;
}
// Quartic Easing
// Even smoother transitions than cubic, using quartic (t^4) curves.
float easeInQuart(float t) {
// Starts very slow and accelerates steeply.
return t * t * t * t;
}
float easeOutQuart(float t) {
// Starts steeply and slows down dramatically.
float f = t - 1.0;
return 1.0 - f * f * f * f;
}
float easeInOutQuart(float t) {
// Combines easeIn and easeOut quartic behavior for very smooth transitions.
return t < 0.5 ? 8.0 * t * t * t * t
: 1.0 - 8.0 * (t - 1.0) * (t - 1.0) * (t - 1.0) * (t - 1.0);
}
// Sine Easing
// Smooth, wave-like acceleration and deceleration using sine curves.
float easeInSine(float t) {
// Starts very slow, following a sine wave curve.
return 1.0 - cos((t * 3.141592653589793) / 2.0);
}
float easeOutSine(float t) {
// Starts fast and slows down following a sine wave curve.
return sin((t * 3.141592653589793) / 2.0);
}
float easeInOutSine(float t) {
// Smooth start and end, mimicking half a sine wave.
return -0.5 * (cos(3.141592653589793 * t) - 1.0);
}
// Exponential Easing
// Sharp transitions with rapid acceleration and deceleration.
float easeInExpo(float t) {
// Very slow start, accelerates exponentially.
return t == 0.0 ? 0.0 : pow(2.0, 10.0 * (t - 1.0));
}
float easeOutExpo(float t) {
// Starts fast and slows down exponentially.
return t == 1.0 ? 1.0 : 1.0 - pow(2.0, -10.0 * t);
}
float easeInOutExpo(float t) {
// Combines easeIn and easeOut exponential for sharp transitions.
if (t == 0.0) return 0.0;
if (t == 1.0) return 1.0;
return t < 0.5 ? 0.5 * pow(2.0, 20.0 * t - 10.0)
: 1.0 - 0.5 * pow(2.0, -20.0 * t + 10.0);
}
// Back Easing
// Creates an overshooting effect for more dynamic animations.
float easeInOutBack(float t) {
// Uses constants to define the overshooting magnitude.
const float c1 = 1.70158;
const float c2 = c1 * 1.525;
return t < 0.5
? (pow(2.0 * t, 2.0) * ((c2 + 1.0) * 2.0 * t - c2)) / 2.0
: (pow(2.0 * t - 2.0, 2.0) * ((c2 + 1.0) * (t * 2.0 - 2.0) + c2) + 2.0) / 2.0;
}
// --------------------------------------------------------------------- edge mask helpers
// This method returns a mask which smoothly transitions towards zero when approaching
@@ -417,7 +190,7 @@ float getEdgeMask(vec2 uv, vec2 maxUV, float fadeWidth) {
// the fade zone is given in pixels. This uses the standard uniforms uSize and uPadding.
// This means that the fading zone is not actually at the actors boundaries but at the
// position of the window border in the texture.
// The offset parameter controls whether the fading is placed inside the window borders
// The offset paramter controls whether the fading is placed inside the window borders
// (offset = 0), ontop the window borders (offset = 0.5) or outside the window borders
// (offset = 1).
float getAbsoluteEdgeMask(float fadePixels, float offset) {
@@ -461,12 +234,6 @@ vec2 rotate(vec2 a, float angle) {
return vec2(a.x * cos(angle) - a.y * sin(angle), a.x * sin(angle) + a.y * cos(angle));
}
// rotates a given 2d vector, around a given center (angle is in radians)
vec2 rotate(vec2 a, float angle, vec2 center) {
return vec2(cos(angle) * (a.x - center.x) + sin(angle) * (a.y - center.y) + center.x,
cos(angle) * (a.y - center.y) - sin(angle) * (a.x - center.x) + center.y);
}
// --------------------------------------------------------------------------------- noise
// These noise algorithms are based on implementations by various authors from
@@ -668,55 +435,3 @@ float simplex3DFractal(vec3 m) {
return 0.5333333 * simplex3D(m * rot1) + 0.2666667 * simplex3D(2.0 * m * rot2) +
0.1333333 * simplex3D(4.0 * m * rot3) + 0.0666667 * simplex3D(8.0 * m);
}
// --------------------------------------------------------------------------------- remap
/*
These functions remap a given value from one range to another.
The remap operation is particularly useful in shader programming
to scale or normalize data, ensuring compatibility across various
input ranges. Each version of the remap function supports a
different data type:
1. float: Remap a single scalar value.
2. vec2: Remap a 2D vector.
3. vec3: Remap a 3D vector.
4. vec4: Remap a 4D vector.
The general formula used is:
newMin + (value - oldMin) * (newMax - newMin) / (oldMax - oldMin)
This ensures a linear transformation from the old range to the new range.
*/
// Remap for float
// Maps a float value from one range [oldMin, oldMax] to another range [newMin, newMax].
// This is useful for normalizing or scaling scalar values to fit within a desired range.
float remap(float value, float oldMin, float oldMax, float newMin, float newMax) {
return clamp(newMin + (value - oldMin) * (newMax - newMin) / (oldMax - oldMin), newMin,
newMax);
}
// Remap for vec2
// Maps a 2D vector (vec2) from one range [oldMin, oldMax] to another range [newMin,
// newMax]. Each component of the vec2 is individually scaled and transformed.
vec2 remap(vec2 value, vec2 oldMin, vec2 oldMax, vec2 newMin, vec2 newMax) {
return clamp(newMin + (value - oldMin) * (newMax - newMin) / (oldMax - oldMin), newMin,
newMax);
}
// Remap for vec3
// Maps a 3D vector (vec3) from one range [oldMin, oldMax] to another range [newMin,
// newMax]. Each component of the vec3 is individually scaled and transformed.
vec3 remap(vec3 value, vec3 oldMin, vec3 oldMax, vec3 newMin, vec3 newMax) {
return clamp(newMin + (value - oldMin) * (newMax - newMin) / (oldMax - oldMin), newMin,
newMax);
}
// Remap for vec4
// Maps a 4D vector (vec4) from one range [oldMin, oldMax] to another range [newMin,
// newMax]. Each component of the vec4 is individually scaled and transformed.
vec4 remap(vec4 value, vec4 oldMin, vec4 oldMax, vec4 newMin, vec4 newMax) {
return clamp(newMin + (value - oldMin) * (newMax - newMin) / (oldMax - oldMin), newMin,
newMax);
}
+7 -27
View File
@@ -22,8 +22,6 @@ uniform vec4 uGradient2;
uniform vec4 uGradient3;
uniform vec4 uGradient4;
uniform vec4 uGradient5;
uniform bool uRandomColor;
uniform float uSeed;
// These may be configurable in the future.
const float EDGE_FADE = 70.0;
@@ -31,7 +29,7 @@ const float FADE_WIDTH = 0.1;
const float HIDE_TIME = 0.4;
// This maps the input value from [0..1] to a color from the gradient.
vec4 getFireColor(float v, vec4 c0, vec4 c1, vec4 c2, vec4 c3, vec4 c4) {
vec4 getFireColor(float v) {
float steps[5];
steps[0] = 0.0;
steps[1] = 0.2;
@@ -40,11 +38,11 @@ vec4 getFireColor(float v, vec4 c0, vec4 c1, vec4 c2, vec4 c3, vec4 c4) {
steps[4] = 0.8;
vec4 colors[5];
colors[0] = c0;
colors[1] = c1;
colors[2] = c2;
colors[3] = c3;
colors[4] = c4;
colors[0] = uGradient1;
colors[1] = uGradient2;
colors[2] = uGradient3;
colors[3] = uGradient4;
colors[4] = uGradient5;
if (v < steps[0]) {
return colors[0];
@@ -116,25 +114,7 @@ void main() {
noise *= effectMask.y;
// Map noise value to color.
vec4 fire = vec4(0.0);
if (uRandomColor) {
vec3 baseColor0 = offsetHue(vec3(1.0, 0.0, 0.0), hash11(uSeed));
vec3 baseColor1 = offsetHue(baseColor0, 0.1);
vec3 baseColor2 = offsetHue(baseColor1, 0.1);
// Hardcoding some alpha values.
vec4 c0 = vec4(baseColor0, 0.0);
vec4 c1 = vec4(baseColor0, 0.5);
vec4 c2 = vec4(baseColor1, 0.8);
vec4 c3 = vec4(baseColor1, 0.9);
vec4 c4 = vec4(baseColor2, 1.0);
fire = getFireColor(noise, c0, c1, c2, c3, c4);
} else {
fire =
getFireColor(noise, uGradient1, uGradient2, uGradient3, uGradient4, uGradient5);
}
vec4 fire = getFireColor(noise);
// Get the window texture.
vec4 oColor = getInputColor(iTexCoord.st);
-67
View File
@@ -1,67 +0,0 @@
//////////////////////////////////////////////////////////////////////////////////////////
// ) ( //
// ( /( ( ( ) ( ( ( ( )\ ) ( ( //
// )\()) ))\ )( ( ( )\ ) )\))( )\ ( (()/( ( )\))( ( //
// ((_)\ /((_|()\ )\ ) )\ '(()/( ((_)()((_) )\ ) ((_)))\((_)()\ )\ //
// | |(_|_))( ((_)_(_/( _((_)) )(_)) _(()((_|_)_(_/( _| |((_)(()((_|(_) //
// | '_ \ || | '_| ' \)) | ' \()| || | \ V V / | ' \)) _` / _ \ V V (_-< //
// |_.__/\_,_|_| |_||_| |_|_|_| \_, | \_/\_/|_|_||_|\__,_\___/\_/\_//__/ //
// |__/ //
//////////////////////////////////////////////////////////////////////////////////////////
// SPDX-FileCopyrightText: Justin Garza JGarza9788@gmail.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:
// 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:
// vec4 getInputColor(vec2 coords)
// void setOutputColor(vec4 outColor)
// The width of the fading effect is loaded from the settings.
uniform float uBlurAmount;
uniform float uBlurQuality;
void main() {
// Calculate the progression value based on the animation direction.
// If opening, use uProgress as-is; if closing, invert the progression.
float progl = uForOpening ? uProgress : 1.0 - uProgress;
// Apply easing functions to the progression value:
// - easedProgressBlur: Used for controlling the blur effect smoothly.
// - easedProgressAlpha: Used for controlling the alpha (opacity) transition.
float easedProgressBlur = easeInOutSine(progl); // Sine-based smooth easing for blur.
float easedProgressAlpha = easeInOutCubic(progl); // Cubic-based smooth easing for alpha.
// Calculate the blur amount by interpolating (mixing) between the maximum blur (uBlurAmount)
// and zero blur based on the eased progression value.
float blurAmount = mix(uBlurAmount, 0.0, easedProgressBlur);
// Apply the calculated blur effect to the texture at the current texture coordinates.
// The blur function uses the blur amount and quality (uBlurQuality) for sampling.
vec4 texColor = getBlurredInputColor(iTexCoord.st, blurAmount, uBlurQuality);
// Calculate the alpha value for the transition using eased progress.
// This determines how transparent the final color will appear.
float alpha = easedProgressAlpha;
// Apply the alpha transition to the final texture color.
// Multiply the texture's alpha channel by the computed alpha value.
texColor.a *= alpha;
// Output the final color with the applied blur and alpha transition.
setOutputColor(texColor);
}
+1 -1
View File
@@ -78,7 +78,7 @@ void main() {
// Now we compute a 2D gradient in [0..1] which covers the entire window. The dark
// regions will be burned first, the bright regions in the end. We mix a radial gradient
// with some noise. The center of the radial gradient is positioned at uStartPos.
float circle = length((iTexCoord - uStartPos) * (uSize.xy / max(uSize.x, uSize.y)));
float circle = length(iTexCoord - uStartPos);
vec2 uv = iTexCoord / uScale * uSize / 1.5;
float smokeNoise =
+69
View File
@@ -0,0 +1,69 @@
//////////////////////////////////////////////////////////////////////////////////////////
// ) ( //
// ( /( ( ( ) ( ( ( ( )\ ) ( ( //
// )\()) ))\ )( ( ( )\ ) )\))( )\ ( (()/( ( )\))( ( //
// ((_)\ /((_|()\ )\ ) )\ '(()/( ((_)()((_) )\ ) ((_)))\((_)()\ )\ //
// | |(_|_))( ((_)_(_/( _((_)) )(_)) _(()((_|_)_(_/( _| |((_)(()((_|(_) //
// | '_ \ || | '_| ' \)) | ' \()| || | \ 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.
uniform vec2 uActorScale;
uniform vec2 uInitialPointerPos;
uniform vec2 uCurrentPointerPos;
uniform vec2 uControlPointA;
uniform vec2 uControlPointB;
vec2 threeWayMix(float fac, vec2 a, vec2 b, vec2 c) {
if (fac < 0.5) {
return mix(a, b, smoothstep(0.0, 1.0, fac * 2.0));
}
return mix(b, c, smoothstep(0.0, 1.0, fac * 2.0 - 1.0));
}
void main() {
vec2 texcoord = iTexCoord.st;
texcoord = texcoord * uActorScale + 0.5 - uActorScale * 0.5;
float circle = length((texcoord - uCurrentPointerPos) / uActorScale * 2.0);
float progress = uForOpening ? 1.0 - uProgress : uProgress;
progress = clamp(mix(max(0.0, uProgress*2.0 - circle), 2.0 * uProgress, uProgress), 0.0, 1.0);
// progress = smoothstep(0.0, 1.0, pow(2.0 * progress - circle, 0.5));
vec2 warpA = (texcoord - uControlPointA) * uProgress * progress / (1.0 - uProgress);
vec2 warpB = (texcoord - uControlPointB) * uProgress * progress / (1.0 - uProgress);
vec2 warpC = (texcoord - uCurrentPointerPos) * uProgress * progress / (1.0 - uProgress);
vec2 warp = threeWayMix(progress, warpA, warpB, warpC);
// vec2 warp = (warpA + warpB + warpC) / (progressA + progressB + progressC);
vec4 oColor = getInputColor(texcoord + warp);
// oColor = vec4(tritone(progress, vec3(1.0, 0.0, 0.0), vec3(0.0, 1.0, 0.0), vec3(0.0, 0.0, 1.0)), 1.0);
// if (length(texcoord - uInitialPointerPos) < 0.02) {
// oColor = vec4(1.0);
// }
// if (length(texcoord - uCurrentPointerPos) < 0.02) {
// oColor = vec4(1.0, 0.0, 0.0, 1.0);
// }
// if (length(texcoord - uControlPointA) < 0.02) {
// oColor = vec4(0.0, 1.0, 0.0, 1.0);
// }
// if (length(texcoord - uControlPointB) < 0.02) {
// oColor = vec4(0.0, 0.0, 1.0, 1.0);
// }
setOutputColor(oColor);
}
-403
View File
@@ -1,403 +0,0 @@
//////////////////////////////////////////////////////////////////////////////////////////
// ) ( //
// ( /( ( ( ) ( ( ( ( )\ ) ( ( //
// )\()) ))\ )( ( ( )\ ) )\))( )\ ( (()/( ( )\))( ( //
// ((_)\ /((_|()\ )\ ) )\ '(()/( ((_)()((_) )\ ) ((_)))\((_)()\ )\ //
// | |(_|_))( ((_)_(_/( _((_)) )(_)) _(()((_|_)_(_/( _| |((_)(()((_|(_) //
// | '_ \ || | '_| ' \)) | ' \()| || | \ V V / | ' \)) _` / _ \ V V (_-< //
// |_.__/\_,_|_| |_||_| |_|_|_| \_, | \_/\_/|_|_||_|\__,_\___/\_/\_//__/ //
// |__/ //
//////////////////////////////////////////////////////////////////////////////////////////
// SPDX-FileCopyrightText: Justin Garza JGarza9788@gmail.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:
// 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:
// vec4 getInputColor(vec2 coords)
// void setOutputColor(vec4 outColor)
// The width of the fading effect is loaded from the settings.
// use 8BitStyle or not (sliding scale)
uniform float uScaleStyle;
// these are for the sparks
uniform float uSparkCount;
uniform vec4 uSparkColor;
uniform float uSparkRotation;
// these are for the Rays
uniform vec4 uRaysColor;
// these are for the stars
uniform float uRingCount;
uniform float uRingRotation;
uniform float uStarCount;
// and the colors they change over time
uniform vec4 uStarColor0;
uniform vec4 uStarColor1;
uniform vec4 uStarColor2;
uniform vec4 uStarColor3;
uniform vec4 uStarColor4;
uniform vec4 uStarColor5;
// seed
uniform vec2 uSeed;
// helps to find the angle
vec3 getPosByAngle(float angle) { return vec3(cos(angle), sin(angle), 0); }
// gets the mask of a Star
float getStar(vec2 uv, vec2 center, float npoints, float radiusRatio, float size,
float rotation) {
float radiusMax = 1.0;
float radiusMin = radiusMax * radiusRatio;
float PI = 3.1415926;
float starangle = 2.0 * PI / npoints; // Angle between points on the star
// Offset rotation to ensure one point is always up when rotation = 0
rotation += PI / 2.0 - starangle / 1.0;
// Define the positions for the outer and inner points of the star's initial angle,
// rotated by `rotation`
vec3 p0 =
(radiusMax * size) * getPosByAngle(rotation); // Outer point, rotated by `rotation`
vec3 p1 = (radiusMin * size) *
getPosByAngle(starangle + rotation); // Inner point, also rotated
// Calculate the position of the current fragment relative to the star's center
vec2 curPosuv =
(uv - center); // Center UV coordinates, then scale to fit the star size
float curRadius = length(curPosuv); // Radius from center, no need to scale further
float curPosAngle =
atan(curPosuv.y, curPosuv.x) - rotation; // Calculate angle and adjust by `rotation`
// Determine the fractional position within the current star segment
float a =
fract(curPosAngle / starangle); // Fractional angle position within one segment
if (a >= 0.5)
a = 1.0 - a; // Ensure we are within the first half of the segment (symmetry)
// Calculate the current point on the star segment, applying rotation
a = a * starangle; // Actual angle for this position on the segment
vec3 curPos = curRadius * getPosByAngle(a + rotation); // Final position, rotated
// Calculate directions for edge detection using cross product
vec3 dir0 = p1 - p0; // Vector from outer to inner point
vec3 dir1 = curPos - p0; // Vector from outer point to current position
// Use cross product to determine if `curPos` is inside the star's edge
return step(0.0,
cross(dir0, dir1).z); // Returns 1.0 if inside, 0.0 if outside (solid edge)
}
// use to scale the window
vec2 scaleUV(vec2 uv, vec2 scale) {
// Put texture coordinate origin to center of window.
uv = uv * 2.0 - 1.0;
// scale
uv /= mix(vec2(1.0, 1.0), vec2(0.0, 0.0), scale);
// scale from center
uv = uv * 0.5 + 0.5;
return uv;
}
// this returns the Spark
float getSpark(vec2 uv, vec2 center, float brightness, float size, float rotation) {
brightness = clamp(brightness, 0.001, 1.0);
size = clamp(size, 0.001, 1.0);
float bn = mix(0.0, 0.07, brightness); // recalculate size
uv = (uv + vec2(0.5));
uv = (uv - center); // Center UV coordinates, then scale to fit the star size
uv = scaleUV(uv, vec2(1.0 - size));
uv = rotate(uv, rotation, vec2(0.5)); // rotate the UV
// this is basically the brightness
float p = mix(-1.0, 1000.0, easeInExpo(bn));
float m =
mix(0.0, 1.0,
clamp(pow(abs(uv.x - 0.5) * 2.0, p) + pow(abs(uv.y - 0.5) * 2.0, p), 0.0, 1.0));
float mask = easeInSine(1.0 - (m - bn)) - 0.004;
mask = clamp(mask, 0.0, 1.0);
return mask;
}
// returns the star's color
vec4 getStarColor(float v, float alpha) {
// Clamp v to ensure it's in [0.0, 1.0]
v = clamp(v, 0.0, 1.0);
// Define steps for color interpolation
float steps[6];
steps[0] = 0.0;
steps[1] = 0.1666;
steps[2] = 0.3332;
steps[3] = 0.4998;
steps[4] = 0.6664;
steps[5] = 0.8330;
// Define color values
vec4 colors[6];
colors[0] = uStarColor0;
colors[1] = uStarColor1;
colors[2] = uStarColor2;
colors[3] = uStarColor3;
colors[4] = uStarColor4;
colors[5] = uStarColor5;
// Assign alpha values
for (int i = 0; i < 6; ++i) {
colors[i].a = alpha * colors[i].a;
}
// Handle edge cases
if (v <= steps[0]) {
return colors[0];
}
if (v >= steps[5]) {
return colors[5];
}
// Find the correct interpolation segment
for (int i = 0; i < 5; ++i) {
if (v <= steps[i + 1]) {
float t = (v - steps[i]) / (steps[i + 1] - steps[i]);
return mix(colors[i], colors[i + 1], t);
}
}
// Fallback (should never be reached)
return vec4(0.0, 0.0, 0.0, 1.0);
}
// 1| __________
// | / \
// | / \
// | / \
// |/ \
// 0|0.................1
/*
graph above ... where t is close to 0, or 1 the result will fade to zero
i.e. this is just the function of power(x,p) shifted
where x is time, and p is 2.0,4.0,8.0,10.0 ... or any positive even number
*/
float zeroStartEnd(float t, float max_size, float power) {
float s = -1.0 * pow((t - 0.5) / (0.5), power) + 1.0;
s = clamp(s, 0.0, 1.0) * max_size;
return s;
}
// this gives us the jerky 8bit growth effect.
float eightBitScale(float progress) {
float scale = 1.0;
if (progress <= 0.1) {
scale = 0.25;
} else if (progress <= 0.2) {
scale = 0.5;
} else if (progress <= 0.3) {
scale = 0.25;
} else if (progress <= 0.4) {
scale = 0.5;
} else if (progress <= 0.5) {
scale = 0.25;
} else if (progress <= 0.6) {
scale = 0.5;
} else if (progress <= 0.7) {
scale = 1.0;
} else if (progress <= 0.8) {
scale = 0.25;
} else if (progress <= 0.9) {
scale = 0.5;
}
return scale;
}
// gets all the sparks
vec4 getSparks(float progress) {
// the UV for this function
float aspect = uSize.x / uSize.y;
vec2 uv = iTexCoord.st * vec2(aspect, 1.0);
// this will be the result to return
vec4 result = vec4(0.0);
// 0 at the edges
float xEdge = -1.0 * pow((uv.x - (aspect * 0.5)) / (aspect * 0.5), 8.0) + 1.0;
xEdge = clamp(xEdge, 0.0, 1.0);
// declare some variables before the loop
vec2 h = vec2(0.0);
float y = 0.0;
float x = 0.0;
// loop for each spart
for (float xusp = 0.0; xusp < uSparkCount; ++xusp) {
// calculate some variables
h = hash21(xusp + uSeed.x);
y = mix(0.0 - h.y, 1.0 + (1.0 - h.y), progress);
y = clamp(y, 0.0, 1.0);
x = 0.66 * sin(h.x * 6.28);
x += 0.5 * aspect;
// here we get the mask for the spark
float a4ps = getSpark(uv, vec2(x, y), // position (x, y)
zeroStartEnd(y, 1.0, 4.0) * xEdge, // Brightness
zeroStartEnd(y, 0.5, 4.0) * xEdge, // Size
progress * 6.28 * float(uSparkRotation) // rotation
);
// set it to the results
result = alphaOver(
result, vec4(uSparkColor.r, uSparkColor.g, uSparkColor.b, uSparkColor.a * a4ps));
}
// and we are returning the result
return result;
}
// gets the Rays
vec4 getRays(float progress) {
// create the UV for it
vec2 rayUV = iTexCoord.st;
rayUV *= vec2(10.0, 0.5);
rayUV.y += progress * -1.0;
rayUV.x += uSeed.y;
// gets the ray
float ray = simplex2D(rayUV);
// 0 around the edges
ray *= zeroStartEnd(iTexCoord.t, 1.0, 8.0);
ray *= zeroStartEnd(iTexCoord.s, 1.0, 8.0);
// 0 at the begining and end of the animation
ray *= zeroStartEnd(progress, 1.0, 8.0);
// adjust the numbers and clamp
ray = remap(ray * 1.10, 0.0, 1.0, -5.0, 1.0);
float alpha = clamp(uRaysColor.a * ray, 0.0, 1.0);
// return
return vec4(uRaysColor.r, uRaysColor.g, uRaysColor.b, alpha);
}
// returns the stars
vec4 getStars(vec2 starUV, float aspect, float progress, float oColorAlpha) {
// this will be the result to return
vec4 result = vec4(0.0);
vec2 h = vec2(0.0);
float y = 0.0;
// for each ring
for (float r = 0.0; r < uRingCount; ++r) {
float spread = r * (1.0 / uRingCount);
y = mix(0.0 - spread, 1.0 + (1.0 - spread), 1.0 - progress);
y = clamp(y, 0.00001, 0.99999);
// each star in each ring
for (float s = 0.0; s < uStarCount; ++s) {
// this returns a Star
float a5ps =
getStar(starUV,
vec2(sin(progress * uRingRotation * 6.28 + (s * (6.28 / uStarCount))) *
aspect * 0.33,
y), // position (x, y)
5.0, // nPoints
0.5, // radiusRatio
zeroStartEnd(y, 0.1, 2.0), // Size
0.0 // rotation
);
a5ps = clamp(a5ps, 0.0, 1.0);
// //put the star in back or the front of the window
float depth = cos(progress * uRingRotation * 6.28 + (s * (6.28 / uStarCount)));
// if we want the star behind or infront of the window
if (depth < 0.0) {
result = alphaOver(result, getStarColor(y, a5ps));
} else {
result = alphaOver(getStarColor(y, a5ps) * (1.0 - oColorAlpha), result);
}
}
}
// and we are returning the result
return result;
}
void main() {
// Calculate the animation progress, flipping direction if opening
// 'uProgress' varies from 0 to 1, depending on the animation phase
float progress = uForOpening ? 1.0 - uProgress : uProgress;
// Initialize the output color to fully transparent black
vec4 oColor = vec4(0.0, 0.0, 0.0, 0.0);
// get scales
float scale8bit = eightBitScale(progress);
vec2 scaleV2 = vec2(easeInOutSine(progress), easeInQuad(progress));
vec2 fscale = mix(vec2(scale8bit), scaleV2, uScaleStyle);
// Fetch the color based on the scaled texture coordinates
oColor = getInputColor(scaleUV(iTexCoord.st, fscale));
// Store the alpha value of the fetched color for later use
float oColorAlpha = oColor.a;
// Calculate the aspect ratio of the render area
float aspect = uSize.x / uSize.y;
// Transform UV coordinates for star effects
// starUV.x [-0.5 , 0.5]
// starUV.y [1.0 , 0.0]
vec2 starUV = vec2(iTexCoord.s - 0.5, 1.0 - iTexCoord.t) * vec2(aspect, 1.0);
// If four-point stars are enabled, overlay them on the current color
if (uSparkCount > 0.0) {
oColor = alphaOver(oColor, getSparks(progress));
}
// If rays are enabled, overlay them on the current color
if (uRaysColor.a > 0.0) {
oColor = alphaOver(oColor, getRays(progress));
}
// If five-point stars are enabled, overlay them using stored alpha
if (uRingCount > 0.0 && uStarCount > 0.0) {
oColor = alphaOver(oColor, getStars(starUV, aspect, progress, oColorAlpha));
}
// Set the final output color to the computed value
setOutputColor(oColor);
}
-74
View File
@@ -1,74 +0,0 @@
//////////////////////////////////////////////////////////////////////////////////////////
// ) ( //
// ( /( ( ( ) ( ( ( ( )\ ) ( ( //
// )\()) ))\ )( ( ( )\ ) )\))( )\ ( (()/( ( )\))( ( //
// ((_)\ /((_|()\ )\ ) )\ '(()/( ((_)()((_) )\ ) ((_)))\((_)()\ )\ //
// | |(_|_))( ((_)_(_/( _((_)) )(_)) _(()((_|_)_(_/( _| |((_)(()((_|(_) //
// | '_ \ || | '_| ' \)) | ' \()| || | \ V V / | ' \)) _` / _ \ V V (_-< //
// |_.__/\_,_|_| |_||_| |_|_|_| \_, | \_/\_/|_|_||_|\__,_\___/\_/\_//__/ //
// |__/ //
//////////////////////////////////////////////////////////////////////////////////////////
// SPDX-FileCopyrightText: Justin Garza JGarza9788@gmail.com
// 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. This
// provides the standard input:
// 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:
// vec4 getInputColor(vec2 coords)
// void setOutputColor(vec4 outColor)
uniform float uBrightness;
uniform float uSpeedR;
uniform float uSpeedG;
uniform float uSpeedB;
float FadeInOut(float t, float power) {
float s = -1.0 * pow((t - 0.5) / (0.5), power) + 1.0;
s = clamp(s, 0.0, 1.0);
return s;
}
void main() {
// Calculate the progression value based on the animation direction.
float progress = uForOpening ? 1.0 - uProgress : uProgress;
// Percentage of the progress time which is spent until all pixels start moving up.
float minSpeed = min(uSpeedR, min(uSpeedG, uSpeedB));
float waveTime = mix(0.1, 0.9, minSpeed);
float waveProgress = progress / waveTime;
// Gradient from top to bottom (0 at top, 1 at bottom).
float t = iTexCoord.t;
// Calculate the vertical wave offset.
float offset = max(waveProgress - t, 0.0);
offset /= (1.0 / waveTime) - 1.0;
offset *= (1.0 - waveTime);
vec4 colorR = getInputColor(iTexCoord + vec2(0.0, offset * (uSpeedR - minSpeed + 1.0)));
vec4 colorG = getInputColor(iTexCoord + vec2(0.0, offset * (uSpeedG - minSpeed + 1.0)));
vec4 colorB = getInputColor(iTexCoord + vec2(0.0, offset * (uSpeedB - minSpeed + 1.0)));
vec4 oColor =
vec4(colorR.r, colorG.g, colorB.b, (colorR.a + colorG.a + colorB.a) / 3.0);
oColor.rgb *= mix(1.0, uBrightness, FadeInOut(progress, 4));
oColor.a *= getAbsoluteEdgeMask(30.0, 1.0);
setOutputColor(oColor);
}
-163
View File
@@ -1,163 +0,0 @@
//////////////////////////////////////////////////////////////////////////////////////////
// ) ( //
// ( /( ( ( ) ( ( ( ( )\ ) ( ( //
// )\()) ))\ )( ( ( )\ ) )\))( )\ ( (()/( ( )\))( ( //
// ((_)\ /((_|()\ )\ ) )\ '(()/( ((_)()((_) )\ ) ((_)))\((_)()\ )\ //
// | |(_|_))( ((_)_(_/( _((_)) )(_)) _(()((_|_)_(_/( _| |((_)(()((_|(_) //
// | '_ \ || | '_| ' \)) | ' \()| || | \ V V / | ' \)) _` / _ \ V V (_-< //
// |_.__/\_,_|_| |_||_| |_|_|_| \_, | \_/\_/|_|_||_|\__,_\___/\_/\_//__/ //
// |__/ //
//////////////////////////////////////////////////////////////////////////////////////////
// SPDX-FileCopyrightText: Justin Garza JGarza9788@gmail.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:
// 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:
// vec4 getInputColor(vec2 coords)
// void setOutputColor(vec4 outColor)
// window time ... how we split the time between the window and the sparkle/star
uniform float uAnimationSplit;
uniform float uHorizontalSparklePosition; // the Xposition of the star
uniform float uVerticalSparklePosition; // the Yposition of the star
uniform float uSparkleRot; // the rotation of the star
uniform float uSparkleSize; // the size of the star
uniform bool uWindowRotation; // window rotation... but it's more of a warp
uniform vec2 uSeed; // and random numbers
// Used to scale the window.
vec2 scaleUV(vec2 uv, vec2 scale, vec2 centerOffset) {
// Put texture coordinate origin to center of window.
uv -= centerOffset;
uv = uv * 2.0 - 1.0;
// scale
uv /= mix(vec2(1.0, 1.0), vec2(0.0, 0.0), scale);
// scale from center
uv = uv * 0.5 + 0.5;
return uv;
}
// This returns the Spark.
float getSpark(vec2 uv, vec2 center, float brightness, float size, float rotation) {
brightness = clamp(brightness, 0.001, 1.0);
size = clamp(size, 0.001, 1.0);
float bn = mix(0.0, 0.07, brightness); // recalculate size
uv = (uv + vec2(0.5)); // set center
uv = (uv - center); // Center UV coordinates, then scale to fit the star size
uv = scaleUV(uv, vec2(1.0 - size), vec2(0.0));
uv = rotate(uv, rotation, vec2(0.5)); // rotate the UV
// this is basically the brightness
float p = mix(-1.0, 1000.0, easeInExpo(bn));
float m =
mix(0.0, 1.0,
clamp(pow(abs(uv.x - 0.5) * 2.0, p) + pow(abs(uv.y - 0.5) * 2.0, p), 0.0, 1.0));
// calcuate and return this mask
float mask = easeInSine(1.0 - (m - bn)) - 0.004;
mask = clamp(mask, 0.0, 1.0);
return mask;
}
// fades out at 0 and 1 ...based on the power
// 1| __________
// | / \
// | / \
// | / \
// | / \
// 0| 0.................1
/*
graph above ... where t is close to 0, or 1 the result will fade to zero
i.e. this is just the function of power(x,p) shifted
where x is time, and p is 2.0,4.0,8.0,10.0 ... or any positive even number
*/
float fadeInOut(float t, float power) {
float s = -1.0 * pow((t - 0.5) / (0.5), power) + 1.0;
s = clamp(s, 0.0, 1.0);
return s;
}
// 2x pi ... don't think too much about it
float TAU = 6.28;
void main() {
// Calculate the progression value based on the animation direction.
// If opening, use uProgress as-is; if closing, invert the progression.
float progress = uForOpening ? 1.0 - uProgress : uProgress;
// Scale progress ... the first half of the animation.
float scalep = remap(progress, 0.0, uAnimationSplit + 0.1, 0.0, 1.0);
scalep = easeOutQuad(scalep);
// Sparkle progress ... the second half of the animation.
float sparkp = remap(progress, uAnimationSplit - 0.1, 1.0, 0.0, 1.0);
sparkp = easeInOutSine(sparkp);
// This is the offset of the window... don't let them go too far each way.
vec2 offset = vec2(uHorizontalSparklePosition, uVerticalSparklePosition * -1.0) * 0.20;
vec2 scaleOffset =
mix(vec2(0.0),
vec2(uHorizontalSparklePosition, uVerticalSparklePosition * -1.0) * 0.50, scalep);
// the UV for this function
float aspect = uSize.x / uSize.y;
vec2 uv = iTexCoord.st * vec2(aspect, 1.0);
// get and adjust
vec2 uv2 = iTexCoord.st;
uv2 = uv2 * 2.0 - 1.0;
uv2 -= (scaleOffset / vec2(aspect, 1.0)) * scalep;
uv2 /= 1.0 - scalep;
// Rotation and if we are gonna rotate or not.
vec3 rot = vec3(0.0);
if (uWindowRotation) {
rot = hash32(uSeed);
rot *= 2.0;
rot -= 1.0;
rot *= 0.1;
}
// Rotate around x, y , and z.
uv2.x /= mix(1.0, rot.x * TAU * uv2.y, scalep);
uv2.y /= mix(1.0, rot.y * TAU * uv2.x, scalep);
uv2 = rotate(uv2, rot.z * TAU * scalep);
// re-center
uv2 = uv2 * 0.5 + 0.5;
// Get the sparkle.
float size = mix(25.0, 50.0, uSparkleSize);
float sparkle =
getSpark(uv, offset + vec2(0.5 * aspect, 0.5), fadeInOut(sparkp, 2) * uSparkleSize,
fadeInOut(sparkp, 2) * size, sparkp * TAU * float(uSparkleRot));
// Fade out at the edges.
sparkle *= fadeInOut(iTexCoord.t, 8);
sparkle *= fadeInOut(iTexCoord.s, 8);
// Combine the final color.
vec4 oColor = getInputColor(uv2);
oColor = alphaOver(oColor, vec4(1.0, 1.0, 1.0, sparkle));
setOutputColor(oColor);
}
+8 -13
View File
@@ -15,10 +15,8 @@
// 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;
@@ -30,7 +28,7 @@ const float SCALING = 0.9;
// Returns a grid of randomly moving points. Each grid cell contains one point which
// moves on an ellipse.
vec4 getWisps(vec2 texCoords, float gridSize, vec2 seed) {
float 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;
@@ -58,16 +56,13 @@ vec4 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) {
float alpha = min(5.0, 0.01 / pow(dist, 2.0));
return vec4(color * alpha, alpha);
return min(5.0, 0.01 / pow(dist, 2.0));
}
return vec4(0.0);
return 0.0;
}
void main() {
@@ -83,9 +78,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;
vec4 wisps = vec4(0.0);
float wisps = 0.0;
for (float i = 0.0; i < WISPS_LAYERS; ++i) {
wisps = alphaOver(wisps, getWisps(uv * 0.3, WISPS_SPACING, uSeed * (i + 1.0)));
wisps += getWisps(uv * 0.3, WISPS_SPACING, uSeed * (i + 1.0));
}
// Compute shrinking edge mask.
@@ -105,8 +100,8 @@ void main() {
oColor.a *= windowMask * mask;
// Add the wisps.
wisps.a *= min(wispsIn, 1.0 - wispsOut) * mask;
oColor = alphaOver(oColor, wisps);
vec4 wispColor = wisps * vec4(uColor, min(wispsIn, 1.0 - wispsOut) * mask);
oColor = alphaOver(oColor, wispColor);
// These are pretty useful for understanding how this works.
// oColor = vec4(vec3(windowMask), 1.0);
+1 -1
View File
@@ -22,7 +22,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
<property name="width-request">300</property>
<property name="adjustment">
<object class="GtkAdjustment" id="apparition-animation-time">
<property name="upper">3000</property>
<property name="upper">2000</property>
<property name="lower">100</property>
<property name="step-increment">10</property>
<property name="page-increment">100</property>
-277
View File
@@ -1,277 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
SPDX-FileCopyrightText: Justin Garza <JGarza9788@gmail.com>
SPDX-License-Identifier: GPL-3.0-or-later
-->
<interface domain="burn-my-windows">
<object class="AdwExpanderRow" id="aura-glow-prefs">
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">Animation Time [ms]</property>
<child>
<object class="GtkScale">
<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">
<object class="GtkAdjustment" id="aura-glow-animation-time">
<property name="upper">3000</property>
<property name="lower">100</property>
<property name="step-increment">10</property>
<property name="page-increment">100</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkButton" id="reset-aura-glow-animation-time">
<property name="icon-name">edit-clear-symbolic</property>
<property name="valign">center</property>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
<style>
<class name="flat" />
</style>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">Random Color</property>
<property name="activatable-widget">aura-glow-random-color</property>
<child>
<object class="GtkSwitch" id="aura-glow-random-color">
<property name="valign">center</property>
</object>
</child>
<child>
<object class="GtkButton" id="reset-aura-glow-random-color">
<property name="icon-name">edit-clear-symbolic</property>
<property name="valign">center</property>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
<style>
<class name="flat" />
</style>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="aura-glow-action-row">
<property name="title" translatable="yes">Start Hue</property>
<child>
<object class="GtkDrawingArea" id="aura-glow-hue-preview">
<property name="valign">3</property>
<property name="halign">2</property>
<property name="hexpand">true</property>
<property name="vexpand">true</property>
<property name="height-request">16</property>
<property name="width-request">16</property>
</object>
</child>
<child>
<object class="GtkScale" id="aura-glow-start-hue-slider">
<property name="valign">center</property>
<property name="draw-value">1</property>
<property name="digits">2</property>
<property name="value-pos">left</property>
<property name="width-request">300</property>
<property name="adjustment">
<object class="GtkAdjustment" id="aura-glow-start-hue">
<property name="upper">1.0</property>
<property name="lower">0.0</property>
<property name="step-increment">0.1</property>
<property name="page-increment">0.33</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkButton" id="reset-aura-glow-start-hue">
<property name="icon-name">edit-clear-symbolic</property>
<property name="valign">center</property>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
<style>
<class name="flat" />
</style>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">Speed</property>
<child>
<object class="GtkScale">
<property name="valign">center</property>
<property name="draw-value">1</property>
<property name="digits">2</property>
<property name="value-pos">left</property>
<property name="width-request">300</property>
<property name="adjustment">
<object class="GtkAdjustment" id="aura-glow-speed">
<property name="upper">5.0</property>
<property name="lower">-5.0</property>
<property name="step-increment">0.25</property>
<property name="page-increment">1.0</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkButton" id="reset-aura-glow-speed">
<property name="icon-name">edit-clear-symbolic</property>
<property name="valign">center</property>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
<style>
<class name="flat" />
</style>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">Saturation</property>
<child>
<object class="GtkScale" id="aura-glow-saturation-slider">
<property name="valign">center</property>
<property name="draw-value">1</property>
<property name="digits">2</property>
<property name="value-pos">left</property>
<property name="width-request">300</property>
<property name="adjustment">
<object class="GtkAdjustment" id="aura-glow-saturation">
<property name="upper">1.0</property>
<property name="lower">0.0</property>
<property name="step-increment">0.10</property>
<property name="page-increment">0.25</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkButton" id="reset-aura-glow-saturation">
<property name="icon-name">edit-clear-symbolic</property>
<property name="valign">center</property>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
<style>
<class name="flat" />
</style>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">Edge Size</property>
<child>
<object class="GtkScale">
<property name="valign">center</property>
<property name="draw-value">1</property>
<property name="digits">2</property>
<property name="value-pos">left</property>
<property name="width-request">300</property>
<property name="adjustment">
<object class="GtkAdjustment" id="aura-glow-edge-size">
<property name="upper">1.0</property>
<property name="lower">0.0</property>
<property name="step-increment">0.05</property>
<property name="page-increment">0.10</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkButton" id="reset-aura-glow-edge-size">
<property name="icon-name">edit-clear-symbolic</property>
<property name="valign">center</property>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
<style>
<class name="flat" />
</style>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">Edge Hardness</property>
<child>
<object class="GtkScale">
<property name="valign">center</property>
<property name="draw-value">1</property>
<property name="digits">2</property>
<property name="value-pos">left</property>
<property name="width-request">300</property>
<property name="adjustment">
<object class="GtkAdjustment" id="aura-glow-edge-hardness">
<property name="upper">1.0</property>
<property name="lower">0.0</property>
<property name="step-increment">0.10</property>
<property name="page-increment">0.25</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkButton" id="reset-aura-glow-edge-hardness">
<property name="icon-name">edit-clear-symbolic</property>
<property name="valign">center</property>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
<style>
<class name="flat" />
</style>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">Blur Amount</property>
<child>
<object class="GtkScale">
<property name="valign">center</property>
<property name="draw-value">1</property>
<property name="digits">2</property>
<property name="value-pos">left</property>
<property name="width-request">300</property>
<property name="adjustment">
<object class="GtkAdjustment" id="aura-glow-blur">
<property name="upper">30.0</property>
<property name="lower">0.0</property>
<property name="step-increment">0.50</property>
<property name="page-increment">1.00</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkButton" id="reset-aura-glow-blur">
<property name="icon-name">edit-clear-symbolic</property>
<property name="valign">center</property>
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
<style>
<class name="flat" />
</style>
</object>
</child>
</object>
</child>
</object>
</interface>
+1 -1
View File
@@ -22,7 +22,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
<property name="width-request">300</property>
<property name="adjustment">
<object class="GtkAdjustment" id="broken-glass-animation-time">
<property name="upper">3000</property>
<property name="upper">10000</property>
<property name="lower">100</property>
<property name="step-increment">1</property>
<property name="page-increment">100</property>

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