Compare commits

...

370 Commits

Author SHA1 Message Date
Simon Schneegans d782bc27f0 🎉 Bump version number
Deploy / Bundle GNOME Shell Extension (push) Has been cancelled
Deploy / Bundle KWin Effect (push) Has been cancelled
2025-08-25 09:17:07 +02:00
Simon Schneegans 81b81ed76f Merge pull request #533 from weblate/weblate-burn-my-windows-core
Translations update from Hosted Weblate
2025-08-25 09:12:35 +02:00
rainy_sunset 9ea068531b 🌐 Translated using Weblate (Japanese) 2025-08-19 04:01:58 +00:00
Simon Schneegans 921e1ecbc4 Merge pull request #531 from Schneegans/feature/gnome-49 2025-08-15 13:05:33 +02:00
Simon Schneegans b6e5647d7b ✨ Apply clang-format 2025-08-15 12:55:00 +02:00
Simon Schneegans 3d9ef361d0 📝 Add changelog entry 2025-08-15 12:44:19 +02:00
Simon Schneegans 4f6ea2353c Merge pull request #529 from weblate/weblate-burn-my-windows-core
Translations update from Hosted Weblate
2025-08-15 12:14:39 +02:00
Simon Schneegans 7d3ceff956 🔧 Use new is_maximized method 2025-08-15 11:02:41 +02:00
Simon Schneegans ed6883bace 🎉 Claim support for GNOME 49 2025-08-15 10:16:18 +02:00
Philip Goto 635c0092a3 🌐 Translated using Weblate (Dutch) 2025-08-04 12:02:00 +02:00
Danial Behzadi 3c290cd70f 🌐 Translated using Weblate (Persian) 2025-07-27 13:03:46 +00:00
Simon Schneegans c38f7d73fd Merge pull request #523 from weblate/weblate-burn-my-windows-core 2025-06-23 21:02:25 +02:00
Philip Goto b3b80b965b 🌐 Translated using Weblate (Dutch) 2025-06-05 22:21:38 +02:00
Simon Schneegans b774eced82 Merge pull request #518 from weblate/weblate-burn-my-windows-core
Translations update from Hosted Weblate
2025-05-31 20:01:39 +02:00
ButterflyOfFire 48132c6658 🌐 Translated using Weblate (Kabyle) 2025-05-26 13:01:46 +02:00
ButterflyOfFire a87c40186f 🌐 Added translation using Weblate (Kabyle) 2025-05-25 12:13:45 +02:00
cris b 539a8a6d7a 🌐 Translated using Weblate (Greek) 2025-05-25 12:03:10 +02:00
cris b 39326486cd 🌐 Added translation using Weblate (Greek) 2025-05-24 10:57:04 +02:00
Sergey Ponomarev d813c8d71a 🌐 Translated using Weblate (Russian) 2025-05-12 11:03:13 +02:00
Francisco Serrador 1dbd2f1586 🌐 Translated using Weblate (Spanish) 2025-04-23 22:01:47 +00:00
Francisco Serrador 5aa4d09e06 🌐 Translated using Weblate (Spanish) 2025-04-18 14:04:52 +02:00
Simon Schneegans f662546f88 📝 Add changelog entry 2025-03-27 20:09:14 +01:00
Simon Schneegans 173d6d1975 🔧 Use GTK for color conversion 2025-03-27 20:07:01 +01:00
Simon Schneegans e292c822d9 Merge pull request #512 from lstrsrt/hue-preview 2025-03-27 20:04:38 +01:00
Simon Schneegans e1da16b339 Merge pull request #514 from weblate/weblate-burn-my-windows-core
Translations update from Hosted Weblate
2025-03-27 19:49:39 +01:00
wen han 76a1f31cc9 🌐 Translated using Weblate (Chinese (Simplified Han script)) 2025-03-27 13:12:56 +01:00
lstrsrt f4fbe3b64f 💄 Add hue preview circle to Aura Glow preferences 2025-03-20 14:58:14 +01:00
Simon Schneegans 18d22e1b11 🎉 Set release date
Deploy / Bundle GNOME Shell Extension (push) Has been cancelled
Deploy / Bundle KWin Effect (push) Has been cancelled
2025-03-09 12:30:26 +01:00
Simon Schneegans fa37873169 📝 Add changelog entry 2025-03-09 11:33:29 +01:00
Simon Schneegans 2c873810fa Merge pull request #510 from Schneegans/feature/random-fire
Random Fire
2025-03-09 11:31:14 +01:00
Simon Schneegans 60c96c03d7 🔧 Port random fire option to KWin 2025-03-09 11:18:31 +01:00
Simon Schneegans ee1b49269a 🔧 Use more opaque alpha values for the random fire colors 2025-03-09 11:07:35 +01:00
Simon Schneegans cb2db00d59 📝 Add changelog entry 2025-03-09 11:02:37 +01:00
Simon Schneegans b5ad70a2a4 ✨ Apply clang-format 2025-03-09 11:01:32 +01:00
Simon Schneegans 87ac8b401a ♻️ Remove duplicated code 2025-03-09 11:01:21 +01:00
Simon Schneegans 98769fd61b Merge pull request #509 from jgarza9788/main
🔀🔥 (again)
2025-03-09 10:58:37 +01:00
Justin Garza 18d1e3f6f6 Update Fire.js 2025-03-08 11:53:38 -05:00
Justin Garza 845c765843 resync and updated 2025-03-08 11:45:31 -05:00
Simon Schneegans db955d5af8 Merge pull request #508 from Schneegans/fix/gnome-48
Fix #507
2025-03-08 13:58:58 +01:00
Simon Schneegans ceb32a3da3 📝 Add changelog entry 2025-03-08 13:57:26 +01:00
Simon Schneegans 72475d8f6f ✨ Apply clang-format 2025-03-08 13:35:26 +01:00
Simon Schneegans 84cf784080 🪲 Fix some effects on GNOME 48 2025-03-08 13:30:50 +01:00
Simon Schneegans 410fd32052 Merge pull request #504 from weblate/weblate-burn-my-windows-core
Translations update from Hosted Weblate
2025-03-08 13:04:37 +01:00
albanobattistella 04656de38c 🌐 Translated using Weblate (Italian) 2025-03-02 17:20:14 +01:00
symegac f82c64e568 🌐 Translated using Weblate (Danish) 2025-02-27 17:01:55 +01:00
Ricky Tigg c075f4e763 🌐 Translated using Weblate (Finnish) 2025-02-27 17:01:54 +01:00
Philipp Kiemle ceb2c68484 🌐 Translated using Weblate (German) 2025-02-27 17:01:53 +01:00
Philipp Kiemle d160e63e8a 🌐 Translated using Weblate (German) 2025-02-26 16:45:38 +01:00
Seong-ho Cho 5ac174a966 🌐 Translated using Weblate (Korean) 2025-02-24 23:09:26 +01:00
Simon Schneegans 1812b3dbb9 Merge pull request #501 from weblate/weblate-burn-my-windows-core
Translations update from Hosted Weblate
2025-02-22 12:11:35 +01:00
Cassian f7d268d371 🌐 Translated using Weblate (Chinese (Simplified Han script)) 2025-02-22 06:13:46 +01:00
Simon Schneegans 4ea0fcd4ac 🔥 Remove unused entry from .gitignore 2025-02-22 06:13:37 +01:00
Simon Schneegans 0bf264f84e Merge pull request #502 from Schneegans/fix/ci
Fix CI
2025-02-22 06:11:48 +01:00
Simon Schneegans 558079adf7 🎉 Bump version number 2025-02-22 06:02:56 +01:00
Simon Schneegans e6c7e50879 🔧 Run tests again on ubuntu-latest 2025-02-22 06:02:44 +01:00
Simon Schneegans 3e6f749dc6 🔧 Run tests again on 22.04 2025-02-22 05:49:50 +01:00
Simon Schneegans 3bafdd4c5f 📝 Add KDE Store links 2025-02-22 05:41:16 +01:00
Simon Schneegans 957166ce5d 🔧 Install missing dependencies on ubuntu-latest
Deploy / Bundle GNOME Shell Extension (push) Has been cancelled
Deploy / Bundle KWin Effect (push) Has been cancelled
2025-02-21 21:07:03 +01:00
Simon Schneegans 2783a2d4bf Merge pull request #500 from Schneegans/feature/install-dependencies
Install missing dependencies on ubuntu-latest
2025-02-21 21:02:37 +01:00
Simon Schneegans 97f17c2f56 🔧 Install missing dependencies on ubuntu-latest 2025-02-21 20:54:52 +01:00
Simon Schneegans 45af9b9f68 🎉 Set release date 2025-02-21 20:47:52 +01:00
Simon Schneegans 843fbb4660 🪲 Fix blurry edges of RGB Warp effect 2025-02-20 21:28:54 +01:00
Simon Schneegans eeb93f7d7e Merge pull request #495 from weblate/weblate-burn-my-windows-core
Translations update from Hosted Weblate
2025-02-18 17:28:08 +01:00
Philip Goto 5c42f21eb9 🌐 Translated using Weblate (Dutch) 2025-02-18 09:17:13 +01:00
Максим Горпиніч 004603ce2e 🌐 Translated using Weblate (Ukrainian) 2025-02-18 06:45:41 +01:00
Hosted Weblate 9a1b887af4 🌐 Update translation files 2025-02-17 19:46:44 +00:00
Максим Горпиніч 62bcce999c 🌐 Translated using Weblate (Ukrainian) 2025-02-17 19:46:43 +00:00
albanobattistella 280a71deb9 🌐 Translated using Weblate (Italian) 2025-02-17 19:46:42 +00:00
Ettore Atalan a6e538825b 🌐 Translated using Weblate (German) 2025-02-17 19:46:41 +00:00
Hosted Weblate f22e2c0514 🌐 Update translation files 2025-02-17 19:46:41 +00:00
Simon Schneegans c8439bcd4f 🪲 Fix fire preset menu 2025-02-17 20:46:29 +01:00
Simon Schneegans 6d0d56a7ce ✨ Fix formatting 2025-02-17 20:46:16 +01:00
Simon Schneegans cbcfc9d0dd 🌐 Update translation template 2025-02-17 20:23:29 +01:00
Simon Schneegans 76f1b32901 🔀 Merge pull request #497 from Schneegans/feature/kde-port 2025-02-16 07:43:18 +01:00
Simon Schneegans d9057adb13 💚 Update references 2025-02-16 07:25:30 +01:00
Simon Schneegans 4cf7b029c6 🔀 Merge pull request #496 from Schneegans/feature/gnome-48 2025-02-16 07:10:35 +01:00
Simon Schneegans cef340ea51 📝 Update effect support matrix 2025-02-16 07:04:07 +01:00
Simon Schneegans b4418a71c6 ✨ Apply clang-format 2025-02-16 07:03:13 +01:00
Simon Schneegans bf379e4f57 ©️ Add SPDX tags 2025-02-16 07:02:41 +01:00
Simon Schneegans 2a1e5f2b22 ♻️ Use more consistent key names 2025-02-16 07:01:46 +01:00
Simon Schneegans 293fbf1d0f 🔧 Port Aura Glow effect to KDE 2025-02-15 21:11:49 +01:00
Simon Schneegans 951342e917 🔧 Port Team Rocket effect to KDE 2025-02-15 20:51:16 +01:00
Simon Schneegans e67fd1ee2c 🔥 Remove unused settings key 2025-02-15 20:25:07 +01:00
Simon Schneegans 537963f28f 🔧 Port RGB Warp effect to KDE 2025-02-15 20:22:41 +01:00
Simon Schneegans 79101847e1 📝 Add changelog entry 2025-02-15 17:32:37 +01:00
Simon Schneegans b6dc234d3f ✨ Apply clang-format 2025-02-15 16:59:17 +01:00
Simon Schneegans 15ac37f746 🔧 Use Cogl.SnippetHook on GNOME 48 2025-02-15 16:55:44 +01:00
Simon Schneegans 7ace136e4f 🔧 Use global.compositor.enable_unredirect on GNOME 48 2025-02-15 16:55:20 +01:00
Simon Schneegans b466710ca0 Merge branch 'main' into feature/gnome-48 2025-02-15 16:54:23 +01:00
Simon Schneegans 5bdd7bdbce 🪲 Do not use deprecated Clutter.Image 2025-02-15 16:52:15 +01:00
Simon Schneegans 34e18c885c 🌐 Update translation template 2025-02-15 16:49:59 +01:00
Simon Schneegans ea7977090e 🪲 Fix line breaks 2025-02-15 16:48:33 +01:00
Simon Schneegans 5195cb6981 🎉 Claim support for GNOME 48 2025-02-15 16:29:00 +01:00
Simon Schneegans baaccea92c 🔀 Merge pull request #493 from Schneegans/feature/new-effects 2025-02-15 06:45:09 +01:00
Simon Schneegans 67096edadf 💚 Disable rawhide tests 2025-02-12 16:41:43 +01:00
Simon Schneegans e58d8e768c 🔧 Update references 2025-02-12 16:41:03 +01:00
Simon Schneegans cc497bba0c ✨ Apply clang-format 2025-02-12 16:34:38 +01:00
Simon Schneegans 72d8189179 🔧 Update test scripts 2025-02-12 16:30:31 +01:00
Simon Schneegans 5950d4a391 📝 Add changelog entries 2025-02-12 16:27:45 +01:00
Simon Schneegans 22dab71aaf Merge pull request #492 from Schneegans/fix/#480
Remove deprecated use of Clutter.Image
2025-02-12 16:18:26 +01:00
Simon Schneegans 6ba109c7e4 📝 Fix some comments 2025-02-12 16:17:57 +01:00
Simon Schneegans 9a8f7d5efe 🎨 Update gifs 2025-02-12 16:13:03 +01:00
Simon Schneegans 645d2dafff 🔥 Remove deprecated use of Clutter.Image 2025-02-12 14:06:10 +01:00
Simon Schneegans 8b4b256231 🔧 Streamline Aura Glow effect 2025-02-12 12:52:16 +01:00
Simon Schneegans 87b9f5eab8 ♻️ Make blur a common method 2025-02-09 20:26:41 +01:00
Simon Schneegans 96e79b3265 🔧 Fix version number 2025-02-09 20:26:11 +01:00
Simon Schneegans 91789d3617 ✨ Apply clang-format 2025-02-09 08:19:00 +01:00
Simon Schneegans 3ab1ffbc15 🔧 Streamline RGB warp effect 2025-02-09 08:00:49 +01:00
Simon Schneegans 00d6f9089d ✨ Fix formatting 2025-02-09 08:00:26 +01:00
Simon Schneegans 3602f07dae 🔧 Streamline team-rocket effect config ui 2025-02-09 05:59:33 +01:00
Simon Schneegans 86caa88f54 🔧 Streamline team-rocket effect 2025-02-09 05:55:14 +01:00
Simon Schneegans ba8284a99a 📝 Update effect support table 2025-02-09 05:54:39 +01:00
Simon Schneegans 7d1b329c62 📝 Add changelog entry 2025-02-09 05:25:31 +01:00
Simon Schneegans 38e2db5b54 🔧 Only expand the last remaining row after filtering 2025-02-09 05:24:10 +01:00
Simon Schneegans b00389142d Merge pull request #488 from jgarza9788/newMain 2025-02-08 07:14:37 +01:00
Simon Schneegans 17c49022fb Merge pull request #491 from weblate/weblate-burn-my-windows-core
Translations update from Hosted Weblate
2025-02-05 20:15:48 +01:00
Priit Jõerüüt 604da949fd 🌐 Translated using Weblate (Estonian) 2025-02-04 13:01:59 +01:00
Justin Garza cbd364c49d Update aura-glow.frag
solved the delay issue
2025-01-24 19:03:27 -05:00
Justin Garza 4b8124c5bb 👍
# Aura Glow
Looks really cool! I think the defaults could be a bit more "spectacular". More color speed (5?) and less saturation (0.5?) looks much better in my opinion.
There is a significant delay when closing a window before the animation starts. Can this be removed?
Is a saturation > 1 useful?

✅ Color Speed = 5
✅ Saturation at 0.5
❓ the delay ...
i think this was caused by the padding
i tried to get rid of it in the shader (see "//adjust for gnome" in the shader).
maybe you know a better way .
✅ Is a saturation > 1 useful?
... i guess not 😀

# Mushroom
Aweome!
Only complaint: The preset dropdown says "8Bit Plumber (default)" but the default is actually "New Bros 2".

✅ fixed, i'll just take the word "default" out

# RGB Warp
The defaults look great!
I would rename it to "RGB Warp" instead of "RGB Warp Effect" to be consistent with the other effects.
All the settings in the UI could use some spaces.
Is the Wave Size parameter useful? Any other values than 1 look pretty weird.

✅
✅
✅ wavesize ... it was more useful in shadertoy, when it was there, removed.

# TeamRocket
The best one in my opinion!
I would call it "Team Rocket" instead of "TeamRocket" to be consistent with the other effects.
I would enable window rotation per default and set the Y value to a value other than 0, maybe 0.5. This makes it a bit more organic!

✅
✅

# UnicornFart
Here I have severe performance issues. On my machine, the effect is not usable. Even with only 10 stars and sparks, I only get a few FPS. What shall we do about this? I think we either need to optimize this or think about a different effect. I liked your initial idea with the wobbly rgb noise as well...
Anyways, great work! I am really looking forward to this! Let me know what you think about these points, and then I'll soon have a look at the individual effect implementations.

ok, i'll take this out and try something else.
...maybe i shouldn't have used the blur on it.
👍👍👍
2025-01-24 18:50:15 -05:00
Justin Garza dd49880638 Merge branch 'main' into newMain 2025-01-22 18:56:26 -05:00
Justin Garza e90353b0c5 using clang-format-16
and a bit more comments
and a minor adjustment
2025-01-21 19:46:15 -05:00
Justin Garza 29978ea87f i didn't touch these files, but they were changed ... maybe by clangformat ? 2025-01-20 15:52:00 -05:00
Justin Garza 68cef3e672 20250120
resync with master ... hoping it works
2025-01-20 15:41:31 -05:00
Justin Garza c58ef894b4 removing some blank lines 2025-01-19 19:20:42 -05:00
Justin Garza 99c398b77c removed this piece of code we are not using 2025-01-19 18:57:00 -05:00
Justin Garza 2e49494c0d clang! 2025-01-19 18:34:47 -05:00
Justin Garza 7fb129d046 Merge branch 'main' of https://github.com/jgarza9788/Burn-My-Windows 2025-01-19 18:14:44 -05:00
Justin Garza 3c3ee4a998 20250119 2025-01-19 18:14:37 -05:00
Simon Schneegans 2dd37ed5c0 Merge pull request #482 from weblate/weblate-burn-my-windows-core
Translations update from Hosted Weblate
2025-01-16 07:36:47 +01:00
Sabri Ünal e85a2e4684 🌐 Translated using Weblate (Turkish) 2025-01-15 16:00:51 +01:00
Justin Garza 56e253c1a4 Merge branch 'main' of https://github.com/jgarza9788/Burn-My-Windows 2025-01-14 05:29:43 -05:00
Justin Garza c05746aabf 20250113
autoexpand! - after search
2025-01-13 20:22:18 -05:00
Justin Garza b2f0ed58f2 Merge pull request #3 from jgarza9788/UnicornFart
Unicorn fart
2025-01-13 19:58:53 -05:00
Justin Garza 28112c83c2 Merge branch 'main' into UnicornFart 2025-01-13 19:58:33 -05:00
Justin Garza a89eef0599 Update UnicornFart.js 2025-01-12 20:27:16 -05:00
Justin Garza 56dbc7265c 20250112 2025-01-12 20:22:59 -05:00
Milan Šalka 169b49158a 🌐 Translated using Weblate (Slovak) 2025-01-12 07:24:25 +01:00
Justin Garza fc6aa44204 20250105 2025-01-05 14:28:56 -05:00
Justin Garza 95bde46e39 20250104 2025-01-04 19:06:05 -05:00
Justin Garza 2be4275bf5 Update Fire.js 2025-01-02 20:06:54 -05:00
Justin Garza b1d58048e2 Update how-to-create-new-effects.md 2025-01-02 05:38:02 -05:00
Justin Garza 5e48141753 Update how-to-create-new-effects.md 2025-01-01 16:32:43 -05:00
Justin Garza 7fcda0b22d 20250101 2025-01-01 13:07:57 -05:00
Justin Garza e77d3725ce Update org.gnome.shell.extensions.burn-my-windows-profile.gschema.xml 2024-12-30 22:08:33 -05:00
Justin Garza fb0c66127a Update README.md 2024-12-30 20:45:12 -05:00
Justin Garza c91af83e39 20241230 2024-12-30 20:34:41 -05:00
atomkapa atomkapa b5dc1e6a71 🌐 Translated using Weblate (Hungarian) 2024-12-30 20:06:05 +00:00
Justin Garza 11befb44af 20241229 2024-12-29 18:33:20 -05:00
Danial Behzadi a93719b0de 🌐 Translated using Weblate (Persian) 2024-12-29 14:00:53 +01:00
Justin Garza 6e67bbac74 updated the readme 2024-12-26 19:37:09 -05:00
Justin Garza 7f02f445e5 20241225 2024-12-25 23:12:38 -05:00
Максим Горпиніч 880ce1c933 🌐 Translated using Weblate (Ukrainian) 2024-12-21 19:00:30 +01:00
Justin Garza 020516e0da a little polishing 2024-12-17 20:34:49 -05:00
symegac c0cc0a4ccc 🌐 Translated using Weblate (Danish) 2024-12-14 08:00:23 +00:00
Justin Garza 002e7258f6 Update mushroom.ui
changed the label
2024-12-12 21:53:10 -05:00
Justin Garza 48eb33eacf added muchroom and more 2024-12-12 21:40:59 -05:00
தமிழ்நேரம் 632ce39aa1 🌐 Translated using Weblate (Tamil) 2024-12-12 22:00:31 +01:00
தமிழ்நேரம் bff7b75ce0 🌐 Added translation using Weblate (Tamil) 2024-12-10 20:20:05 +01:00
Philip Goto ee44c8bcab 🌐 Translated using Weblate (Dutch) 2024-12-10 20:19:51 +01:00
Justin Garza fa4d4eeaff adjust the Gif 2024-12-08 21:03:03 -05:00
Justin Garza 39a60d704b 🎉 🎉 Mushroom and AuraGlow ... in my main
placed both the Mushroom and AuraGlow in my main
2024-12-08 19:21:08 -05:00
Milan Šalka 7c039fbdc4 🌐 Translated using Weblate (Slovak) 2024-12-04 23:00:25 +00:00
Simon Schneegans 5b6ccdc732 🔀 Merge pull request #474 from weblate/weblate-burn-my-windows-core 2024-11-19 17:13:50 +01:00
Priit Jõerüüt 0ef89853c3 🌐 Translated using Weblate (Estonian) 2024-11-19 15:56:26 +00:00
Simon Schneegans 65bb27d962 🔧 Update references 2024-11-19 16:55:55 +01:00
Simon Schneegans 01961253f1 📝 Add changelog entry 2024-11-19 16:52:47 +01:00
Simon Schneegans f1fc8ae51e 🔀 Merge pull request #476 from rcmz/main 2024-11-19 16:48:26 +01:00
rcmz 5b33766a06 🪲 Fixes the incinerate effect to be circular instead of the aspect ratio of the window 2024-11-18 22:58:55 +01:00
Simon Schneegans 2a45c81312 🔀 Merge pull request #473 from weblate/weblate-burn-my-windows-core 2024-11-11 19:28:01 +01:00
Priit Jõerüüt d6c8cc3e7f 🌐 Added translation using Weblate (Estonian) 2024-11-11 18:44:29 +01:00
Simon Schneegans 1e03be8e75 🔀 Merge pull request #472 from weblate/weblate-burn-my-windows-core 2024-11-11 09:11:15 +01:00
Moo 4e4d283483 🌐 Translated using Weblate (Lithuanian) 2024-11-10 23:00:36 +00:00
Simon Schneegans 4538ff32b1 🔀 Merge pull request #471 from weblate/weblate-burn-my-windows-core 2024-11-08 15:13:16 +01:00
J Janz c068a5159c 🌐 Translated using Weblate (Portuguese (Brazil)) 2024-11-08 15:00:25 +01:00
J Janz 7d4b0d4390 🌐 Translated using Weblate (Portuguese) 2024-11-08 15:00:25 +01:00
Simon Schneegans 1d522a40e0 📝 Add link to video 2024-11-06 16:38:49 +01:00
Simon Schneegans 44c2724390 🎉 Bump version number 2024-11-06 16:17:59 +01:00
Simon Schneegans 30ffe9f0b0 📝 Add KDE Focus effect links 2024-11-06 16:15:44 +01:00
Simon Schneegans 8b77be9502 Update deploy workflow to set prerelease flag for artifact uploads 2024-11-06 15:46:57 +01:00
Simon Schneegans a76378625c 🎉 Set release date
Deploy / Bundle GNOME Shell Extension (push) Has been cancelled
Deploy / Bundle KWin Effect (push) Has been cancelled
2024-11-06 15:42:47 +01:00
Simon Schneegans c51ed532ff 🔀 Merge pull request #469 from Schneegans/feature/more-tests 2024-11-06 10:14:04 +01:00
Simon Schneegans b2a1c4080d 📝 Add changelog entry 2024-11-06 10:08:10 +01:00
Simon Schneegans fbd3ac0e3a 🔧 Run tests only on X11 but on GNOME 46 and 47 2024-11-06 10:05:25 +01:00
Simon Schneegans 74b7b51b19 🔧 Upload only generated references 2024-11-06 09:57:07 +01:00
Simon Schneegans 5b728087be 🔥 Remove capability 2024-11-06 09:39:40 +01:00
Simon Schneegans 5ba9312448 🔧 Generate references in parallel 2024-11-06 09:35:16 +01:00
Simon Schneegans 75a364186b 🔀 Merge pull request #468 from Schneegans/feature/fix-ci 2024-11-06 08:38:00 +01:00
Simon Schneegans 67f2a89924 💞 Update credits 2024-11-06 08:30:29 +01:00
Simon Schneegans 52e87b421a ⬆️ Upgrade action versions 2024-11-06 08:26:57 +01:00
Simon Schneegans 30c943ec08 🔧 Stop using deprecate dep5 format 2024-11-06 08:26:44 +01:00
Simon Schneegans 49b88c5235 💚 Fix CI build 2024-11-06 08:24:13 +01:00
Simon Schneegans d500f09803 📝 Fix changelog entry 2024-11-06 06:06:54 +01:00
Simon Schneegans 91191c630b 📝 Add changelog entry 2024-11-06 06:01:35 +01:00
Simon Schneegans 97dc383877 🔧 Only run generate-references on workflow dispatch 2024-11-06 06:00:50 +01:00
Simon Schneegans f6c86b884c 🔧 Add focus effect to test suite [generate-references] 2024-11-06 05:45:39 +01:00
Simon Schneegans 819d800d9e 🔀 Merge pull request #467 from weblate/weblate-burn-my-windows-core 2024-11-05 21:00:06 +01:00
albanobattistella 8bf7c6dcf4 🌐 Translated using Weblate (Italian) 2024-11-05 19:42:11 +01:00
gallegonovato 3c7e2e1127 🌐 Translated using Weblate (Spanish) 2024-11-05 19:42:10 +01:00
Simon Schneegans 062d2c620f 🌐 Translated using Weblate (German) 2024-11-05 19:42:09 +01:00
Hosted Weblate 589d0da795 🌐 Update translation files 2024-11-05 19:42:08 +01:00
Simon Schneegans 29e0780bd5 🎨 Use new wallpaper for Focus effect preview 2024-11-05 19:41:53 +01:00
Simon Schneegans 676433752e 🎉 Bump version number 2024-11-03 09:20:58 +01:00
Simon Schneegans 2fa47488e1 📝 Add contribution attribution 2024-11-03 09:17:59 +01:00
Simon Schneegans 68c55e811e 🌐 Update translation template 2024-11-03 09:14:04 +01:00
Simon Schneegans 416e63346c 📝 Add changelog entry 2024-11-03 09:11:59 +01:00
Simon Schneegans 46874043d7 🔧 Streamline settings ui file 2024-11-03 09:11:02 +01:00
Justin Garza b3d5e06a00 🎉 Add effect search 2024-11-03 09:06:26 +01:00
Simon Schneegans 3b4435e254 🔧 Reduce allowed range of animation durations (resolves issue #444) 2024-10-30 20:25:59 +01:00
Simon Schneegans c88f127985 📝 Update KWin installation docs 2024-10-29 21:18:00 +01:00
Simon Schneegans 26ee4b83c1 💚 Make shellcheck happy 2024-10-29 21:10:55 +01:00
Simon Schneegans f4372b314a 📝 Add changelog entries 2024-10-29 21:05:43 +01:00
Simon Schneegans 5386887d29 🔧 Use color management only on plasma 6 2024-10-29 21:03:01 +01:00
Simon Schneegans e0be4d85f0 🎉 Build different effect packages for plasma5 and plasma6 2024-10-29 21:02:34 +01:00
Justin Garza 4114d0379f Merge pull request #1 from jgarza9788/searchfeature
search for effects
2024-10-27 18:57:10 -04:00
Justin Garza 2e54d0002b search for effects
i'll keep this and if the owner wants it i'll submit a PR.
but i really did this to see if i could.
2024-10-27 11:31:07 -04:00
Simon Schneegans 1034b46b27 🪲 Fix color conversion for ICC profiles on Plasma 6 2024-10-27 14:17:17 +01:00
Simon Schneegans f3e6c2aa65 🎉 Port Focus effect to KDE 2024-10-27 14:01:49 +01:00
Simon Schneegans 6ae4bfb63d 📝 Tweak effect tagline 2024-10-27 14:01:30 +01:00
Simon Schneegans 3658837f00 🔧 Reduce default focus blur quality 2024-10-27 13:47:29 +01:00
Simon Schneegans d6ac84f589 🔧 Use integer steps for focus blur quality 2024-10-27 13:46:45 +01:00
Simon Schneegans 4f6a1bf3a9 📝 Add changelog entry 2024-10-27 13:28:07 +01:00
Simon Schneegans d52f59d8b7 🔀 Merge pull request #461 from jgarza9788/main 2024-10-27 13:17:46 +01:00
Justin Garza d0d592e274 Update focus.gif
using a web-tool to trim/convert/edit the video... and i ran out of free tries.
need to find a free linux tool for this
2024-10-26 16:24:15 -04:00
Justin Garza a393d3cddb 🎉 Focus - again 2024-10-26 16:04:24 -04:00
Simon Schneegans 6f9b56a69a 🔀 Merge pull request #459 from weblate/weblate-burn-my-windows-core 2024-10-26 13:46:29 +02:00
Moo 50654a7a41 🌐 Translated using Weblate (Lithuanian) 2024-10-25 13:16:27 +02:00
GholtsMxv 789b112f51 🌐 Translated using Weblate (Chinese (Traditional Han script)) 2024-09-20 08:49:13 +02:00
GholtsMxv cff33a018a 🌐 Added translation using Weblate (Chinese (Traditional Han script)) 2024-09-20 08:49:13 +02:00
symegac cb25dbad9d 🌐 Translated using Weblate (Danish) 2024-09-20 08:49:13 +02:00
symegac 2c57dc4d38 🌐 Translated using Weblate (Danish) 2024-09-04 18:29:49 +02:00
Simon Schneegans 61f07336a4 ⬆️ Use newer version of upload action
Deploy / Bundle GNOME Shell Extension (push) Has been cancelled
Deploy / Bundle KWin Effect (push) Has been cancelled
2024-08-23 07:52:40 +02:00
Simon Schneegans 1867739b57 📝 Fix release date 2024-08-23 07:35:19 +02:00
Simon Schneegans 10e272e3f1 🎉 Set release date 2024-08-23 07:33:47 +02:00
Simon Schneegans d5ebd1c046 📝 Add changelog entry 2024-08-23 07:32:59 +02:00
Simon Schneegans 4cea22a1a5 🔀 Merge pull request #448 from Schneegans/feature/gnome-47 2024-08-23 07:30:28 +02:00
Simon Schneegans 46cc12aba1 💚 Disable rawhide checks for now 2024-08-23 07:20:55 +02:00
Simon Schneegans 3611bfb48c 💚 Fix image version 2024-08-23 07:15:26 +02:00
atomkapa atomkapa ca8ed84129 🌐 Translated using Weblate (Hungarian) 2024-08-18 19:55:44 +02:00
atomkapa atomkapa 207da763bc 🌐 Translated using Weblate (Hungarian) 2024-08-18 19:55:44 +02:00
symegac d201e91abc 🌐 Translated using Weblate (Danish) 2024-08-18 19:55:44 +02:00
symegac c8431af8d8 🌐 Added translation using Weblate (Danish) 2024-08-18 19:55:44 +02:00
Tinde (Joke) 4a896bd2ed 🌐 Translated using Weblate (Finnish) 2024-08-18 19:55:44 +02:00
Simon Schneegans b01a53da95 🔥 Remove duplicated code 2024-08-01 05:57:04 +02:00
Simon Schneegans a30d10bab6 🐛 Fix color parsing on GNOME 47 2024-08-01 05:46:20 +02:00
Simon Schneegans b99d2fa310 📝 Add changelog entry 2024-07-31 21:12:36 +02:00
Simon Schneegans 6b74f464af 🪲 Fix syntax error 2024-07-31 21:11:20 +02:00
Simon Schneegans c5e5b4b43f 🎉 Bump version number 2024-07-31 21:05:04 +02:00
Simon Schneegans 0bd8b5988f ✨ Apply clang-format 2024-07-31 08:04:10 +02:00
Simon Schneegans 00882e1898 🎉 Add support for GNOME Shell 47 2024-07-31 07:54:47 +02:00
Scrambled777 d3d88383f7 🌐 Translated using Weblate (Hindi) 2024-05-25 20:34:24 +02:00
Simon Schneegans 342a9d5dbc 🔀 Merge pull request #440 from Schneegans/fix/ci 2024-05-25 20:13:55 +02:00
Simon Schneegans 09a63b1eab 🔧 Update references 2024-05-25 20:05:13 +02:00
Simon Schneegans e4fb518d8e 🔧 Update references 2024-05-25 20:02:55 +02:00
Simon Schneegans 932403c742 📝 Add changelog entry 2024-05-25 19:51:17 +02:00
Simon Schneegans 7ab61b955a 🔀 Merge pull request #438 from nask0/patch-1 2024-05-25 19:48:17 +02:00
nask0 853578ad27 Make "EanbledByDefault" boolean in metadata.json.in
Making "EnabledByDefault" boolean instead of string, because newer versions of KWin complains about this. It should be backwards-compatible tho.
2024-05-21 15:45:02 +03:00
Simon Schneegans 37e0b5cf50 📝 Use color theme for sponsors list 2024-04-03 05:51:08 +02:00
Scrambled777 1666809a52 🌐 Translated using Weblate (Hindi) 2024-03-29 06:20:48 +01:00
Simon Schneegans 421af687e7 📝 Add links to Plasma 6 effects 2024-03-21 09:05:07 +01:00
Simon Schneegans e005cdd54b 🎉 Set release date
Deploy / Bundle GNOME Shell Extension (push) Has been cancelled
Deploy / Bundle KWin Effect (push) Has been cancelled
2024-02-27 21:37:24 +01:00
Simon Schneegans d59fda27cc 🔀 Merge pull request #427 from Schneegans/feature/rawhide 2024-02-27 08:37:51 +01:00
Simon Schneegans 84262192fb 🔧 Update references 2024-02-27 08:29:36 +01:00
Simon Schneegans 8b6208c60e 🔧 Update references 2024-02-27 07:54:17 +01:00
Simon Schneegans 24da559f90 🔥 Remove references job again 2024-02-27 07:43:52 +01:00
Simon Schneegans 39574c5a91 🔧 Update references 2024-02-27 07:43:15 +01:00
Simon Schneegans 4a9f2c9ffb 🔧 Re-add manual reference generation [generate-references] 2024-02-26 21:41:13 +01:00
Simon Schneegans 97c11312f0 🔧 Create separate workflow for reference generation 2024-02-26 21:24:55 +01:00
Simon Schneegans b0719775d0 🔧 Add manual wait 2024-02-26 21:02:11 +01:00
Simon Schneegans b705daac97 📝 Add changelog entries 2024-02-26 20:45:35 +01:00
Scrambled777 abfa57af7d 🌐 Translated using Weblate (Hindi) 2024-02-26 13:01:07 +01:00
Simon Schneegans 6ae4d06955 🔧 Add manual wait 2024-02-25 07:03:19 +01:00
Simon Schneegans 17fce87997 🎉 Claim support for GNOME 46 2024-02-25 07:02:53 +01:00
Simon Schneegans fecfe79a43 ✅ Add rawhide workflow again 2024-02-25 06:45:37 +01:00
Simon Schneegans fed64f0b3b 💞 Update credits 2024-02-25 06:42:54 +01:00
Miraficus 92fd68cb4f 🌐 Translated using Weblate (Czech) 2024-02-25 05:40:59 +01:00
Scrambled777 57eb99ccd0 🌐 Added translation using Weblate (Hindi) 2024-02-24 13:28:31 +01:00
Kristoffer Grundström ef9b9de3f5 🌐 Translated using Weblate (Swedish) 2024-02-24 13:28:31 +01:00
Danial Behzadi 2e7172932f 🌐 Translated using Weblate (Persian) 2024-02-22 10:09:19 +01:00
Miraficus b06d691197 🌐 Translated using Weblate (Czech) 2024-02-12 06:06:54 +01:00
aerowolf e56cc7daea 🌐 Translated using Weblate (Chinese (Simplified)) 2024-02-02 12:23:17 +01:00
Сергій 568218d51e 🌐 Translated using Weblate (Ukrainian) 2024-01-07 20:25:38 +01:00
Simon Schneegans ab20c2df75 🔀 Merge pull request #411 from Schneegans/fix/#406 2024-01-02 20:43:31 +01:00
Simon Schneegans 5597c5c6b0 💞 Update credits 2024-01-02 20:42:53 +01:00
Simon Schneegans 0fcf75150d 📝 Add changelog entry 2024-01-02 20:38:58 +01:00
Simon Schneegans 518962a810 🐛 Fix invisible settings button on Plasma 6 2024-01-02 20:32:05 +01:00
ssantos 63acf623a3 🌐 Translated using Weblate (Portuguese) 2023-12-18 21:19:15 +01:00
SoftExpert d2a98baa1f 🌐 Translated using Weblate (Romanian) 2023-12-05 09:44:29 +01:00
Simon Schneegans 219d4f9458 💞 Update credits 2023-11-22 06:54:43 +01:00
Simon Schneegans b5f31f4745 🔀 Merge pull request #403 from Schneegans/fix/ci 2023-11-22 06:51:41 +01:00
Simon Schneegans ebb965bc1b 🔧 Update references 2023-11-21 22:44:35 +01:00
Simon Schneegans 2b5c4fbc24 🔧 Regenerate references [generate-references] 2023-11-21 22:02:21 +01:00
Simon Schneegans 605db5ff5d 🔧 Give a bit more time to the tests 2023-11-21 21:35:27 +01:00
Simon Schneegans 6b135aa2b1 🔧 Temporarily disable checks on rawhide 2023-11-21 21:06:07 +01:00
Simon Schneegans 571662133c 📝 Add changelog entries 2023-11-21 18:24:09 +01:00
Simon Schneegans 51f6b93641 🔀 Merge pull request #405 from Schneegans/fix/#404 2023-11-21 18:18:34 +01:00
Simon Schneegans 5216e460cb 📝 Add changelog entries 2023-11-21 18:09:53 +01:00
Simon Schneegans 3ba27f383f 🪲 Fix issue #404 2023-11-21 18:08:39 +01:00
Simon Schneegans f43af678c0 📝 Add changelog entry 2023-11-20 21:03:46 +01:00
Simon Schneegans 400b88b52d 🔧 Add references 2023-11-20 21:03:03 +01:00
Simon Schneegans 3bd025a283 🔧 Run tests on GNOME 45 2023-11-20 20:50:01 +01:00
Simon Schneegans 9c872f9f02 🔧 Run tests on GNOME 45 2023-11-20 20:49:16 +01:00
Simon Schneegans 028daa724a 🔧 Wait slightly longer after opening prefs in tests 2023-11-20 20:48:24 +01:00
Simon Schneegans 111d29140c 📝 Add changelog entry 2023-11-20 20:42:37 +01:00
Simon Schneegans 53b40f4897 🔀 Merge pull request #402 from CoelacanthusHex/fix-plasma-6 2023-11-20 20:40:27 +01:00
Coelacanthus eb933572f5 Fix compatibility with Plasma 6
resolve #401

Signed-off-by: Coelacanthus <CoelacanthusHex@gmail.com>
2023-11-19 20:54:56 +08:00
Gustavo 6d7d6326b4 🌐 Translated using Weblate (Portuguese (Brazil)) 2023-11-13 17:21:06 +01:00
Simon Schneegans f6107452ef 📝 Remove obsolete characters 2023-11-09 20:48:05 +01:00
Simon Schneegans 35ef7f09f4 🎉 Bump version number 2023-10-26 05:55:50 +02:00
Simon Schneegans 8a8f33beb4 📝 Add changelog entry 2023-10-26 05:55:36 +02:00
Simon Schneegans c387ac9a5a 🎉 Set release date
Deploy / Bundle GNOME Shell Extension (push) Has been cancelled
Deploy / Bundle KWin Effect (push) Has been cancelled
2023-10-26 05:43:02 +02:00
Simon Schneegans c83756f8be 🔀 Merge pull request #393 from Schneegans/fix/#384 2023-10-25 20:14:19 +02:00
Simon Schneegans 30f2d221a3 🔀 Merge branch 'main' into fix/#384 2023-10-25 20:09:12 +02:00
Simon Schneegans 6b8ad4bfd6 📝 Add changelog entry 2023-10-25 20:07:54 +02:00
Simon Schneegans 5b07c1e22b 💞 Update credits 2023-10-25 19:56:22 +02:00
Simon Schneegans a92de7db3a 📝 Add changelog entry 2023-10-25 17:02:56 +02:00
Simon Schneegans 4b3f135229 📝 Add comment 2023-10-25 17:00:22 +02:00
Simon Schneegans eac0686ecd 🔧 Do not apply effects to windows which are on all desktops and have no decoration 2023-10-25 16:58:36 +02:00
Simon Schneegans 33dd2c07c4 🐛 Fix #356 for GNOME 45 2023-10-25 16:56:10 +02:00
Simon Schneegans 52bfafb15a ⬆️ Update version of dynamic-badges-action 2023-10-24 19:56:33 +02:00
Simon Schneegans 98ac9af09f 🎉 Add crypto donation link 2023-10-24 06:07:55 +02:00
Simon Schneegans 0437de8d5b 🔀 Merge pull request #390 from Schneegans/fix/#389 2023-10-24 06:02:11 +02:00
Simon Schneegans dbf026237d 📝 Add changelog entry 2023-10-24 06:01:09 +02:00
Simon Schneegans 8e89017cb7 🪲 Create proper gzip archives for KWin 2023-10-24 05:52:33 +02:00
Frankie McEyes 2f5f567145 🌐 Translated using Weblate (Italian) 2023-10-19 07:47:54 +02:00
Simon Schneegans 4e00c4d7d9 📝 Update funding links 2023-10-15 13:11:23 +02:00
Simon Schneegans b64dd2a969 📝 Tweak badges 2023-10-15 13:04:45 +02:00
Simon Schneegans b0a56fb0e9 📝 Add donation badges 2023-10-15 12:51:48 +02:00
Simon Schneegans ea981e714d 📝 Use new info boxes 2023-10-10 05:30:31 +02:00
Simon Schneegans 02b089fd4d 📝 Add new sponsors badge 2023-10-10 05:30:17 +02:00
Milan Šalka c56ed0739d 🌐 Translated using Weblate (Slovak) 2023-10-07 12:46:21 +02:00
Simon Schneegans 278c89981b 🎉 Add link to sponsors list to the main menu 2023-09-21 19:28:55 +02:00
Simon Schneegans 80ca2b9af0 📝 Add new sponsors list 2023-09-20 20:15:13 +02:00
Krzysztof Chorzempa 098cd784c7 🌐 Translated using Weblate (Polish) 2023-09-11 06:54:18 +02:00
lijeyol367 0b5247cbb2 🌐 Translated using Weblate (Persian) 2023-09-11 06:54:18 +02:00
albanobattistella 72a2e71cef 🌐 Translated using Weblate (Italian) 2023-09-11 06:54:18 +02:00
Simon Schneegans bb3249b8e0 🎉 Bump version number 2023-09-09 12:59:25 +02:00
Simon Schneegans 8d6ee48e59 📝 Add another branch hint
Deploy / Bundle GNOME Shell Extension (push) Has been cancelled
Deploy / Bundle KWin Effect (push) Has been cancelled
2023-09-09 12:49:38 +02:00
Simon Schneegans 6aef7536bc 🔀 Merge pull request #373 from Schneegans/feature/esm-modules 2023-09-09 12:42:56 +02:00
Simon Schneegans 9fba8f2186 Merge branch 'main' into feature/esm-modules 2023-09-09 12:35:13 +02:00
Simon Schneegans d6120de2b9 ✨ Format README 2023-09-09 12:34:35 +02:00
Simon Schneegans 8ec804bc86 🎉 Set release date 2023-09-09 12:33:59 +02:00
Simon Schneegans e62a9cdf85 📝 Add branch hint 2023-09-09 12:33:34 +02:00
Simon Schneegans cf57261165 🔥 Remove unused method 2023-09-09 06:55:32 +02:00
Simon Schneegans 734530fdab 🔧 Use dynamic imports for gettext 2023-09-09 06:46:09 +02:00
Simon Schneegans 0ccbb31d06 ♻️ Use more dynamic imports 2023-09-09 06:17:58 +02:00
Simon Schneegans 34a64e10fe 🪲 Fix fire presets 2023-09-09 06:09:40 +02:00
Simon Schneegans 767035e313 ♻️ Use utility method to import module in Shell process only 2023-09-09 06:05:15 +02:00
Simon Schneegans 006cc593a3 🔧 Add missing method inputs 2023-09-09 05:52:39 +02:00
Simon Schneegans 15560abad7 🪲 Fix Doom effect 2023-09-09 05:52:15 +02:00
Simon Schneegans 14cd1db7e9 🔧 Do not import the ShaderFactory in the preferences process 2023-09-08 20:45:58 +02:00
Simon Schneegans 3f05c946ec 📝 Tweak changelog entry 2023-09-05 08:02:36 +02:00
Simon Schneegans 9ae7f9c042 ♻️ Use glob import for utils 2023-09-02 10:21:40 +02:00
Simon Schneegans e9ef77617f 🔧 Use console.log instead of log 2023-09-02 10:21:21 +02:00
Simon Schneegans 27220c95f8 🔧 Only run tests on rawhide for GNOME 45 2023-08-31 07:39:56 +02:00
Simon Schneegans 5cc260ad39 Merge branch 'main' into feature/esm-modules 2023-08-31 07:37:42 +02:00
Simon Schneegans bf068e24da 🔧 Only run tests on rawhide 2023-08-19 08:02:24 +02:00
Simon Schneegans 45dd8d992d 🔧 Do not add compiled schemas 2023-08-19 08:01:46 +02:00
Simon Schneegans a8466a16f7 📝 Update effect creation guide 2023-08-19 08:00:54 +02:00
Simon Schneegans 44ce1a4825 🔧 Revert to old debug method behavior 2023-08-19 07:21:46 +02:00
Simon Schneegans c515e495f3 📝 Add changelog entry 2023-08-19 07:20:17 +02:00
Simon Schneegans f5e0a92cec Merge branch 'main' into feature/esm-modules 2023-08-18 08:28:42 +02:00
Simon Schneegans 8147edfa06 🪲 Fix config import 2023-08-18 06:13:39 +02:00
Simon Schneegans 15b0d78c01 Merge branch 'main' into feature/esm-modules 2023-08-18 05:47:31 +02:00
Simon Schneegans ee41968e17 📝 Fix comment 2023-08-07 13:58:22 +02:00
Simon Schneegans f2768216db 🔥 Remove backwards compatibility code 2023-08-07 13:21:50 +02:00
Simon Schneegans d1cddb129d 🔧 Port to ESM 2023-08-07 12:57:38 +02:00
Simon Schneegans 505289376e Merge branch 'main' into feature/esm-modules 2023-08-06 20:10:18 +02:00
Simon Schneegans 3a9b1cb8a8 Merge branch 'main' into feature/esm-modules 2023-08-06 19:31:12 +02:00
Simon Schneegans 7b90fd70bc 🚧 Continue port to ESM 2023-07-12 11:44:43 +02:00
Simon Schneegans 8a0c29a52f 🚧 Start port to ESM 2023-07-12 09:59:53 +02:00
928 changed files with 23627 additions and 22844 deletions
+5 -10
View File
@@ -1,15 +1,10 @@
# 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
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"]
custom:
[
"https://www.paypal.com/donate/?hosted_button_id=3F7UFL8KLVPXE",
https://schneegans.cb.id,
]
+3 -3
View File
@@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
uses: actions/checkout@v4
- 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.3.0
uses: schneegans/dynamic-badges-action@v1.7.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.3.0
uses: schneegans/dynamic-badges-action@v1.7.0
with:
auth: ${{ secrets.GIST_SECRET }}
gistID: 8cf45f23253ff09b21196e7271378762
+13 -42
View File
@@ -17,11 +17,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Download Clang-Format
run: |
sudo apt update -qq
sudo apt install clang-format -qq
uses: actions/checkout@v4
- name: Run Clang-Format
run: scripts/clang-format.sh
- name: Compare Results
@@ -33,9 +29,9 @@ jobs:
name: Check Compliance with REUSE Specification
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: REUSE Compliance Check
uses: fsfe/reuse-action@v1
uses: fsfe/reuse-action@v4
comment_percentage:
name: Check Comment Percentage
@@ -43,12 +39,12 @@ jobs:
if: github.event_name == 'pull_request'
steps:
- name: Checkout Current Repository
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
path: current
ref: ${{ github.ref }}
- name: Checkout Base Repository
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
path: base
ref: ${{ github.base_ref }}
@@ -74,34 +70,14 @@ jobs:
name: Run ShellCheck
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- 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-22.04
runs-on: ubuntu-latest
if: >
github.event_name == 'pull_request' ||
( contains(github.ref, 'main') && !contains(github.event.head_commit.message, '[no-ci]') ) ||
@@ -110,27 +86,22 @@ jobs:
fail-fast: false
matrix:
version:
- "32"
- "33"
- "34"
- "35"
- "36"
- "37"
- "38"
- "39"
- "40"
- "41"
session:
- "gnome-xsession"
- "gnome-wayland-nested"
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Download Dependencies
run: |
sudo apt update -qq
sudo apt install gettext imagemagick -qq
sudo apt install gettext imagemagick libglib2.0-dev -qq
- name: Build Burn-My-Windows
run: make
- name: Test Burn-My-Windows
run: sudo $GITHUB_WORKSPACE/tests/run-test.sh -v ${{ matrix.version }} -s ${{ matrix.session }}
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
if: failure()
with:
name: result_${{ matrix.version }}_${{ matrix.session }}
+36 -34
View File
@@ -6,48 +6,50 @@ name: Deploy
on:
push:
tags:
- '**'
- "**"
jobs:
gnome_bundle:
name: Bundle GNOME Shell Extension
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Install Dependencies
run: |
sudo apt-get update -q
sudo apt-get install gettext
- name: Create Release
run: |
make zip
- name: Upload Release
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
- name: Checkout Repository
uses: actions/checkout@v4
- name: Install Dependencies
run: |
sudo apt-get update -q
sudo apt-get install gettext libglib2.0-dev
- name: Create Release
run: |
make zip
- name: Upload Release
uses: svenstaro/upload-release-action@2.9.0
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@v2
- name: Install Dependencies
run: |
sudo apt-get update -q
sudo apt-get install gettext clang-format
- name: Create Release
run: |
./kwin/build.sh
- name: Upload Release
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
- name: Checkout Repository
uses: actions/checkout@v4
- name: Install Dependencies
run: |
sudo apt-get update -q
sudo apt-get install gettext clang-format
- name: Create Release
run: |
./kwin/build.sh
- name: Upload Release
uses: svenstaro/upload-release-action@2.9.0
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: kwin/*.tar.gz
tag: ${{ github.ref }}
overwrite: true
file_glob: true
prerelease: true
+36
View File
@@ -0,0 +1,36 @@
# 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
+1 -1
View File
@@ -11,4 +11,4 @@
/resources/burn-my-windows.gresource
/resources/burn-my-windows.gresource.xml
kwin/_build
kwin/*.tar.gz
kwin/*.tar.gz
-33
View File
@@ -1,33 +0,0 @@
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
+1 -28
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 \
schemas/gschemas.compiled metadata.json LICENSE
metadata.json LICENSE
# These seven recipes can be invoked by the user.
.PHONY: zip install uninstall pot clean test references
@@ -46,28 +46,6 @@ 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 ; 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 ; 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) \
@@ -92,11 +70,6 @@ $(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..."
+144 -133
View File
@@ -13,41 +13,49 @@ 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="LICENSE"><img src="https://img.shields.io/badge/License-GPLv3-blue.svg?labelColor=303030" /></a>
<a href="https://schneegans.github.io/sponsors/"><img src="https://gist.githubusercontent.com/Schneegans/2d06edf0937c480951feb86b9e719304/raw/weekly.svg" /></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" />
**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)
| 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) |
## ✅ Supported Versions
@@ -57,77 +65,55 @@ Below is a table which summarizes the current availability for all effects.
<table width="100%">
<tr>
<td></td>
<td colspan="3"><strong>GNOME</strong></td>
<td colspan="4"><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+</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>
<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>
</table>
## 💞 Show that you love Burn-My-Windows!
## 💞 These People _love_ this Extension
[![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)
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.
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.
<h3 align="center">🥇 Current Gold Sponsors</h3>
<p align="center">
<a href="https://github.com/D3vil0p3r">D3vil0p3r</a><br>
Maxence Sebald<br>
</p>
**These awesome people have already donated to the development of my open-source projects:**
<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/)!
<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>
## ⬇️ Installation (GNOME)
@@ -157,7 +143,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
@@ -173,6 +159,12 @@ 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.
@@ -182,40 +174,47 @@ 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).
:warning: **You need at least KWin 5.25.0 for the Burn-My-Windows effects.**
> [!IMPORTANT]
> You need at least KWin 5.25.0 for the Burn-My-Windows effects.
: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, ...).**
> [!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, ...).
### 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:
* [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)
| 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) |
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...".
@@ -225,19 +224,27 @@ Just go to your System Settings, then "Workspace Behavior", and "Desktop Effects
Execute this command to download the latest stable release:
```bash
wget https://github.com/Schneegans/Burn-My-Windows/releases/latest/download/burn_my_windows_kwin4.tar.gz
# 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
```
Install it by executing the following commands.
```bash
mkdir -p ~/.local/share/kwin/effects
tar -xf burn_my_windows_kwin4.tar.gz -C ~/.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
```
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.
@@ -252,36 +259,40 @@ 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
tar -xf kwin/burn_my_windows_kwin4.tar.gz -C ~/.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
```
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/)?
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
@@ -0,0 +1,52 @@
# 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"
+136
View File
@@ -5,6 +5,142 @@ SPDX-License-Identifier: CC-BY-4.0
# Changelog of the Burn-My-Windows Extension
## [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
+78 -300
View File
@@ -38,7 +38,7 @@ journalctl -f -o cat | grep -E 'burn-my-windows|'
For the sake of this tutorial, we will create a **"Simple Fade"** effect.
Of course, you can replace any occurrence of this name and its nick `simple-fade` with your custom effect name.
Three simple steps are required to create a new effect.
Three simple steps are required to create a new effect.
You will have to ...
1. add preferences keys for enabling the effect,
@@ -103,13 +103,14 @@ Please study this code carefully, all of it is explained with inline comments.
// 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 uForOpening: True if a window-open animation is ongoing, false otherwise.
// float uProgress: A value which transitions from 0 to 1 during the animation.
// float uDuration: The duration of the current animation in seconds.
// vec2 uSize: The size of uTexture in pixels.
// float uPadding: The empty area around the actual window (e.g. where the shadow
// is drawn). For now, this will only be set on GNOME.
// vec2 iTexCoord: Texture coordinates for retrieving the window input color.
// bool uIsFullscreen: True if the window is maximized or in fullscreen mode.
// bool uForOpening: True if a window-open animation is ongoing, false otherwise.
// float uProgress: A value which transitions from 0 to 1 during the animation.
// float uDuration: The duration of the current animation in seconds.
// vec2 uSize: The size of uTexture in pixels.
// float uPadding: The empty area around the actual window (e.g. where the shadow
// is drawn). For now, this will only be set on GNOME.
// Furthermore, there are two global methods for reading the window input color and
// setting the shader output color. Both methods assume straight alpha:
@@ -162,16 +163,16 @@ void main() {
// SPDX-FileCopyrightText: Your Name <your@email.com>
// SPDX-License-Identifier: GPL-3.0-or-later
'use strict';
"use strict";
const GObject = imports.gi.GObject;
import * as utils from "../utils.js";
const _ = imports.gettext.domain('burn-my-windows').gettext;
// 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 ExtensionUtils = imports.misc.extensionUtils;
const Me = imports.misc.extensionUtils.getCurrentExtension();
const utils = Me.imports.src.utils;
const ShaderFactory = Me.imports.src.ShaderFactory.ShaderFactory;
const _ = await utils.importGettext();
//////////////////////////////////////////////////////////////////////////////////////////
// This effect ... //
@@ -181,21 +182,21 @@ const ShaderFactory = Me.imports.src.ShaderFactory.ShaderFactory;
// 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.
var SimpleFade = class {
export default class Effect {
// 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(this.getNick(), (shader) => {
this.shaderFactory = new ShaderFactory(Effect.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"),
]);
});
});
}
@@ -203,7 +204,7 @@ var SimpleFade = class {
// ---------------------------------------------------------------------------- metadata
// The effect is available on all GNOME Shell versions supported by this extension.
getMinShellVersion() {
static getMinShellVersion() {
return [3, 36];
}
@@ -212,21 +213,21 @@ var SimpleFade = class {
// effect is enabled currently (e.g. '*-enable-effect'), and its animation time
// (e.g. '*-animation-time'). Also, the shader file and the settings UI files should be
// named likes this.
getNick() {
return 'simple-fade';
static 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.
getLabel() {
return _('Simple Fade Effect');
static 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.
bindPreferences(dialog) {
static bindPreferences(dialog) {
// Empty for now... Code is added here later in the tutorial!
}
@@ -235,8 +236,8 @@ var SimpleFade = class {
// 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+.
getActorScale(settings) {
return {x: 1.0, y: 1.0};
static getActorScale(settings, forOpening, actor) {
return { x: 1.0, y: 1.0 };
}
}
```
@@ -250,15 +251,17 @@ 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 Me.imports.src.effects.SimpleFade.SimpleFade(),
new 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>.
@@ -274,18 +277,11 @@ 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.
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.
Just save the code below to `resources/ui/adw/simple-fade.ui`.
Remember to replace any occurrence of `simple-fade` with your effect's nick-name!
<details>
<summary>Expand this to show the GTK3 code.</summary>
<summary>Expand this to show the UI code.</summary>
```xml
<?xml version="1.0" encoding="UTF-8"?>
@@ -298,261 +294,7 @@ 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">
<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="upper">3000</property>
<property name="lower">100</property>
<property name="step-increment">10</property>
<property name="page-increment">100</property>
@@ -628,10 +370,10 @@ SPDX-License-Identifier: GPL-3.0-or-later
### Loading the Preferences Page
In order to load the above `*.ui` files, add the following code to your effect's `bindPreferences()` method.
In order to load the above `*.ui` file, add the following code to your effect's `bindPreferences()` method.
```javascript
bindPreferences(dialog) {
static 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');
@@ -651,4 +393,40 @@ 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!
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
```
+10 -1
View File
@@ -4,4 +4,13 @@ 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.

After

Width:  |  Height:  |  Size: 422 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 490 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 567 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 KiB

+116 -135
View File
@@ -14,26 +14,46 @@
'use strict';
const {Clutter, Gio, Meta} = imports.gi;
import Gio from 'gi://Gio';
import Meta from 'gi://Meta';
const Main = imports.ui.main;
const Workspace = imports.ui.workspace.Workspace;
const WindowManager = imports.ui.windowManager.WindowManager;
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';
// 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.
}
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';
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 //
@@ -44,7 +64,7 @@ const WindowPicker = Me.imports.src.WindowPicker.WindowPicker;
// to get this working. For more details, read the other comments in this file... //
//////////////////////////////////////////////////////////////////////////////////////////
class Extension {
export default class BurnMyWindows extends Extension {
// ------------------------------------------------------------------------ public stuff
@@ -54,46 +74,33 @@ class Extension {
// New effects must be registered here and in prefs.js.
this._ALL_EFFECTS = [
new Me.imports.src.effects.Apparition.Apparition(),
new Me.imports.src.effects.BrokenGlass.BrokenGlass(),
new Me.imports.src.effects.Doom.Doom(),
new Me.imports.src.effects.EnergizeA.EnergizeA(),
new Me.imports.src.effects.EnergizeB.EnergizeB(),
new Me.imports.src.effects.Fire.Fire(),
new Me.imports.src.effects.Glide.Glide(),
new Me.imports.src.effects.Glitch.Glitch(),
new Me.imports.src.effects.Hexagon.Hexagon(),
new Me.imports.src.effects.Incinerate.Incinerate(),
new Me.imports.src.effects.Matrix.Matrix(),
new Me.imports.src.effects.PaintBrush.PaintBrush(),
new Me.imports.src.effects.Pixelate.Pixelate(),
new Me.imports.src.effects.PixelWheel.PixelWheel(),
new Me.imports.src.effects.PixelWipe.PixelWipe(),
new Me.imports.src.effects.Portal.Portal(),
new Me.imports.src.effects.SnapOfDisintegration.SnapOfDisintegration(),
new Me.imports.src.effects.TRexAttack.TRexAttack(),
new Me.imports.src.effects.TVEffect.TVEffect(),
new Me.imports.src.effects.TVGlitch.TVGlitch(),
new Me.imports.src.effects.Wisps.Wisps(),
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()
];
// Load all of our resources.
this._resources = Gio.Resource.load(Me.path + '/resources/burn-my-windows.gresource');
this._resources =
Gio.Resource.load(this.path + '/resources/burn-my-windows.gresource');
Gio.resources_register(this._resources);
// Store a reference to the settings object.
this._settings = ExtensionUtils.getSettings();
this._settings = this.getSettings();
// Now we check whether the extension settings need to be migrated from a previous
// version. If this is the case, we defer the profile loading until this is finished.
const lastVersion = this._settings.get_int('last-extension-version');
if (lastVersion < Me.metadata.version) {
if (lastVersion < this.metadata.version) {
if (lastVersion <= 26) {
// If the profile migration fails for some reason, the callback will create a
// default profile instead.
migrate.fromVersion26().finally(() => {
fromVersion26().finally(() => {
this._loadProfiles();
this._settings.set_int('last-extension-version', Me.metadata.version);
this._settings.set_int('last-extension-version', this.metadata.version);
});
} else {
this._loadProfiles();
@@ -234,21 +241,9 @@ class Extension {
// of the actor. However, if we are in the overview, we have to enlarge the clone of
// the window as well.
Workspace.prototype._addWindowClone = function(...params) {
const clone = extensionThis._origAddWindowClone.apply(this, params);
// 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();
}
const clone = extensionThis._origAddWindowClone.apply(this, params);
const container = clone.window_container;
const 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
@@ -262,16 +257,6 @@ class 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;
};
@@ -301,53 +286,50 @@ class Extension {
};
// With the code below, we hide the window-overlay (icon, label, close button) in the
// 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) {
// overview once the close-animation is running.
// We will monkey-patch these methods.
this._origDeleteAll = WindowPreview.prototype._deleteAll;
this._origRestack = WindowPreview.prototype._restack;
this._origInit = WindowPreview.prototype._init;
// We will monkey-patch these methods.
this._origDeleteAll = WindowPreview.prototype._deleteAll;
this._origRestack = WindowPreview.prototype._restack;
this._origInit = WindowPreview.prototype._init;
// Whenever a WindowPreview is created, we connect to the referenced Meta.Window's
// 'unmanaged' signal to hide the overlay.
WindowPreview.prototype._init = function(...params) {
extensionThis._origInit.apply(this, params);
// Whenever a WindowPreview is created, we connect to the referenced Meta.Window's
// 'unmanaged' signal to hide the overlay.
WindowPreview.prototype._init = function(...params) {
extensionThis._origInit.apply(this, params);
// Hide the window's icon, name, and close button.
const connectionID = this.metaWindow.connect('unmanaged', () => {
if (this.window_container) {
this.overlayEnabled = false;
this._icon.visible = false;
}
});
// Make sure to not call the callback above if the Meta.Window was not unmanaged
// before leaving the overview.
this.connect('destroy', () => {
this.metaWindow.disconnect(connectionID);
});
};
// The _deleteAll is called when the user clicks the X in the overview. We should
// not attempt to close windows twice. Due to the animation in the overview, the
// close button can be clicked twice which normally would lead to a crash.
WindowPreview.prototype._deleteAll = function() {
if (!this._closeRequested) {
extensionThis._origDeleteAll.apply(this);
// Hide the window's icon, name, and close button.
const connectionID = this.metaWindow.connect('unmanaged', () => {
if (this.window_container) {
this.overlayEnabled = false;
this._icon.visible = false;
}
};
});
// This is required, else WindowPreview's _restack() which is called by the
// "this.overlayEnabled = false", sometimes tries to access an already delete
// WindowPreview.
WindowPreview.prototype._restack = function() {
if (!this._closeRequested) {
extensionThis._origRestack.apply(this);
}
};
}
// Make sure to not call the callback above if the Meta.Window was not unmanaged
// before leaving the overview.
this.connect('destroy', () => {
this.metaWindow.disconnect(connectionID);
});
};
// The _deleteAll is called when the user clicks the X in the overview. We should
// not attempt to close windows twice. Due to the animation in the overview, the
// close button can be clicked twice which normally would lead to a crash.
WindowPreview.prototype._deleteAll = function() {
if (!this._closeRequested) {
extensionThis._origDeleteAll.apply(this);
}
};
// This is required, else WindowPreview's _restack() which is called by the
// "this.overlayEnabled = false", sometimes tries to access an already delete
// WindowPreview.
WindowPreview.prototype._restack = function() {
if (!this._closeRequested) {
extensionThis._origRestack.apply(this);
}
};
}
// This function could be called after the extension is uninstalled, disabled in GNOME
@@ -372,11 +354,9 @@ class 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;
}
WindowPreview.prototype._deleteAll = this._origDeleteAll;
WindowPreview.prototype._restack = this._origRestack;
WindowPreview.prototype._init = this._origInit;
this._settings = null;
}
@@ -392,7 +372,7 @@ class Extension {
_loadProfiles() {
// Get all currently available profiles.
const profileManager = new ProfileManager();
const profileManager = new ProfileManager(this.metadata);
this._profiles = profileManager.getProfiles();
// Whenever the properties of a profile is changed in the settings, we may have to
@@ -448,7 +428,8 @@ class Extension {
if (previewNick != '') {
const activeProfile = this._settings.get_string('active-profile');
effect = this._ALL_EFFECTS.find(effect => effect.getNick() == previewNick);
effect =
this._ALL_EFFECTS.find(effect => effect.constructor.getNick() == previewNick);
profile = this._profiles.find(p => p.path == activeProfile);
// Only preview the effect until the preview window is closed.
@@ -501,7 +482,7 @@ class Extension {
}
// If the profile is still matching, we also check the color scheme.
if (matches && profileColorScheme != 0 && utils.shellVersionIsAtLeast(42, 0)) {
if (matches && profileColorScheme != 0) {
const colorScheme = this._shellSettings.get_string('color-scheme');
matches &= (profileColorScheme == 1 && colorScheme == 'default') ||
(profileColorScheme == 2 && colorScheme == 'prefer-dark');
@@ -531,7 +512,8 @@ class Extension {
// Create a list of all enabled effects of this profile.
const enabled = this._ALL_EFFECTS.filter(effect => {
return profile.settings.get_boolean(`${effect.getNick()}-enable-effect`);
return profile.settings.get_boolean(
`${effect.constructor.getNick()}-enable-effect`);
});
// And then choose a random effect.
@@ -569,7 +551,8 @@ class Extension {
// windows are faded in / out scaled up / down slightly by GNOME Shell. Here, we tweak
// the transitions so that nothing changes. The window stays opaque and is scaled to
// actorScale.
const actorScale = effect.getActorScale(profile.settings, forOpening, actor);
const actorScale =
effect.constructor.getActorScale(profile.settings, forOpening, actor);
// All scaling is relative to the window's center.
actor.set_pivot_point(0.5, 0.5);
@@ -580,7 +563,7 @@ class 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 && utils.shellVersionIsAtLeast(3, 38)) {
if (actor._bmwOverviewClone) {
actor._bmwOverviewClone.overlayEnabled = false;
actor._bmwOverviewCloneContainer.set_pivot_point(0.5, 0.5);
actor._bmwOverviewCloneContainer.scale_x = actorScale.x;
@@ -597,12 +580,16 @@ class Extension {
const endID = shader.connect('end-animation', () => {
shader.disconnect(endID);
if (actor._bmwOverviewClone && utils.shellVersionIsAtLeast(3, 38)) {
if (actor._bmwOverviewClone) {
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();
@@ -618,10 +605,11 @@ class Extension {
}
});
// To make things deterministic during testing, we set the effect duration to 5
// To make things deterministic during testing, we set the effect duration to 8
// seconds.
const duration =
testMode ? 5000 : profile.settings.get_int(effect.getNick() + '-animation-time');
const duration = testMode ?
8000 :
profile.settings.get_int(effect.constructor.getNick() + '-animation-time');
// Finally start the animation!
shader.beginAnimation(profile.settings, forOpening, testMode, duration, actor);
@@ -635,16 +623,9 @@ class Extension {
return true;
}
// 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');
const actor = workspace._windows[index]._windowActor;
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
@@ -0,0 +1,210 @@
<?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
@@ -0,0 +1,36 @@
<?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
@@ -0,0 +1,8 @@
// 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
@@ -0,0 +1,15 @@
// 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));
+30 -4
View File
@@ -38,14 +38,24 @@ for file in ../po/*.po; do
msgfmt "$file" -o "$BUILD_DIR/locale/$lang/LC_MESSAGES/burn-my-windows.mo"
done
# This method is called one for each effect. The parameters are as follows:
# This method is called once 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="kwin4_effect_$(echo "$1" | tr '-' '_')"
DIR_NAME="${4}_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"
@@ -106,6 +116,11 @@ generate() {
{
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 ""
@@ -115,6 +130,11 @@ generate() {
{
echo "#define KWIN_LEGACY"
if [ "$4" == "kwin6" ]; then
echo "#define PLASMA6"
fi
echo ""
echo "// This file is automatically generated during the build process."
echo ""
@@ -130,14 +150,16 @@ generate() {
# Create an archive which can be uploaded to https://store.kde.org.
# shellcheck disable=SC2046
tar -cjf "$DIR_NAME.tar.gz" -C "$BUILD_DIR/$DIR_NAME" $(ls "$BUILD_DIR/$DIR_NAME")
tar -czf "$DIR_NAME.tar.gz" -C "$BUILD_DIR/$DIR_NAME" $(ls "$BUILD_DIR/$DIR_NAME")
}
# Now run the above method for all supported effects.
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"
@@ -146,10 +168,14 @@ 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
tar -cjf "burn_my_windows_kwin4.tar.gz" -C "$BUILD_DIR" $(ls "$BUILD_DIR")
cd "$BUILD_DIR"
tar -czf "../burn_my_windows_kwin5.tar.gz" kwin5*
tar -czf "../burn_my_windows_kwin6.tar.gz" kwin6*
+147 -140
View File
@@ -6,145 +6,152 @@ 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="4" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Gradient</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="1">
<widget class="QDoubleSpinBox" name="kcfg_Scale">
<property name="minimum">
<double>0.100000000000000</double>
</property>
<property name="maximum">
<double>10.000000000000000</double>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Speed</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QDoubleSpinBox" name="kcfg_MovementSpeed">
<property name="minimum">
<double>-5.000000000000000</double>
</property>
<property name="maximum">
<double>5.000000000000000</double>
</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::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="4" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="KColorButton" name="kcfg_Gradient1">
<property name="alphaChannelEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="KColorButton" name="kcfg_Gradient2">
<property name="alphaChannelEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="KColorButton" name="kcfg_Gradient3">
<property name="alphaChannelEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="KColorButton" name="kcfg_Gradient4">
<property name="alphaChannelEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="KColorButton" name="kcfg_Gradient5">
<property name="alphaChannelEnabled">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item row="7" column="1">
<widget class="QCheckBox" name="kcfg_3DNoise">
<property name="text">
<string>3D Noise</string>
</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::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
<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>
<customwidgets>
<customwidget>
<class>KColorButton</class>
<extends>QPushButton</extends>
<header>kcolorbutton.h</header>
</customwidget>
</customwidgets>
<resources />
<connections />
</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>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">
<double>0.100000000000000</double>
</property>
<property name="maximum">
<double>10.000000000000000</double>
</property>
</widget>
</item>
<item row="2" 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>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QDoubleSpinBox" name="kcfg_MovementSpeed">
<property name="minimum">
<double>-5.000000000000000</double>
</property>
<property name="maximum">
<double>5.000000000000000</double>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Gradient</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="KColorButton" name="kcfg_Gradient1">
<property name="alphaChannelEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="KColorButton" name="kcfg_Gradient2">
<property name="alphaChannelEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="KColorButton" name="kcfg_Gradient3">
<property name="alphaChannelEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="KColorButton" name="kcfg_Gradient4">
<property name="alphaChannelEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="KColorButton" name="kcfg_Gradient5">
<property name="alphaChannelEnabled">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item row="4" 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">
<property name="text">
<string>Use Random Color</string>
</property>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>KColorButton</class>
<extends>QPushButton</extends>
<header>kcolorbutton.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>
+3
View File
@@ -36,5 +36,8 @@ 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
@@ -0,0 +1,8 @@
// 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
View File
@@ -8,6 +8,8 @@
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, 'uRandomColor',
effect.readConfig('RandomColor', 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, 'uGradient1', this.readRGBAConfig('Gradient1'));
+93
View File
@@ -0,0 +1,93 @@
<?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
@@ -0,0 +1,21 @@
<?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
@@ -0,0 +1,9 @@
// 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));
+6
View File
@@ -80,6 +80,12 @@ class %EFFECT_CLASS% {
return window.hasDecoration;
}
// This is primarily to avoid animating the AltTab popup.
// See https://github.com/Schneegans/Burn-My-Windows/issues/384 for details.
if (!window.hasDecoration && window.onAllDesktops) {
return false
}
if (blacklist.indexOf(window.windowClass) != -1) {
return false;
}
+3 -1
View File
@@ -1,4 +1,5 @@
{
"KPackageStructure": "KWin/Effect",
"KPlugin": {
"Name": "%NAME%",
"Description": "%DESCRIPTION%",
@@ -12,13 +13,14 @@
"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
@@ -0,0 +1,148 @@
<?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
@@ -0,0 +1,27 @@
<?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
@@ -0,0 +1,11 @@
// 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
@@ -0,0 +1,185 @@
<?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
@@ -0,0 +1,33 @@
<?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
@@ -0,0 +1,8 @@
// 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
@@ -0,0 +1,17 @@
// 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));
+14 -22
View File
@@ -1,23 +1,15 @@
{
"uuid": "burn-my-windows@schneegans.github.com",
"description": "Disintegrate your windows with style.",
"name": "Burn My Windows",
"donations": {
"kofi": "schneegans",
"github": "schneegans",
"paypal": "simonschneegans"
},
"gettext-domain": "burn-my-windows",
"settings-schema": "org.gnome.shell.extensions.burn-my-windows",
"shell-version": [
"3.36",
"3.38",
"40",
"41",
"42",
"43",
"44"
],
"url": "https://github.com/Schneegans/Burn-My-Windows",
"version": 38
}
"uuid": "burn-my-windows@schneegans.github.com",
"description": "Disintegrate your windows with style.",
"name": "Burn My Windows",
"donations": {
"kofi": "schneegans",
"github": "schneegans",
"paypal": "simonschneegans"
},
"gettext-domain": "burn-my-windows",
"settings-schema": "org.gnome.shell.extensions.burn-my-windows",
"shell-version": ["45", "46", "47", "48", "49"],
"url": "https://github.com/Schneegans/Burn-My-Windows",
"version": 47
}
+374 -372
View File
File diff suppressed because it is too large Load Diff
+374 -372
View File
File diff suppressed because it is too large Load Diff
+360 -370
View File
File diff suppressed because it is too large Load Diff
+438 -427
View File
File diff suppressed because it is too large Load Diff
+795
View File
@@ -0,0 +1,795 @@
# 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"
+391 -377
View File
File diff suppressed because it is too large Load Diff
+769
View File
@@ -0,0 +1,769 @@
# 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 "Θόρυβος"
+374 -372
View File
File diff suppressed because it is too large Load Diff
+390 -377
View File
File diff suppressed because it is too large Load Diff
+766
View File
@@ -0,0 +1,766 @@
# 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 ""
+444 -435
View File
File diff suppressed because it is too large Load Diff
+408 -406
View File
File diff suppressed because it is too large Load Diff
+382 -374
View File
File diff suppressed because it is too large Load Diff
+372 -370
View File
File diff suppressed because it is too large Load Diff
+784
View File
@@ -0,0 +1,784 @@
# 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 "कोई नहीं"
+431 -420
View File
File diff suppressed because it is too large Load Diff
+382 -374
View File
File diff suppressed because it is too large Load Diff
+397 -380
View File
File diff suppressed because it is too large Load Diff
+383 -380
View File
File diff suppressed because it is too large Load Diff
+765
View File
@@ -0,0 +1,765 @@
# 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 -376
View File
File diff suppressed because it is too large Load Diff
+411 -402
View File
File diff suppressed because it is too large Load Diff
+374 -372
View File
File diff suppressed because it is too large Load Diff
+385 -377
View File
File diff suppressed because it is too large Load Diff
+387 -379
View File
File diff suppressed because it is too large Load Diff
+420 -410
View File
File diff suppressed because it is too large Load Diff
+394 -387
View File
File diff suppressed because it is too large Load Diff
+387 -379
View File
File diff suppressed because it is too large Load Diff
+387 -385
View File
File diff suppressed because it is too large Load Diff
+388 -380
View File
File diff suppressed because it is too large Load Diff
+376 -374
View File
File diff suppressed because it is too large Load Diff
+768
View File
@@ -0,0 +1,768 @@
# 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-12-12 21:00+0000\n"
"Last-Translator: தமிழ்நேரம் <anishprabu.t@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 5.9-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 "இயல்புநிலை 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 ""
#: 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 "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 ""
#: 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 ""
#: 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 "இரைச்சல்"
+385 -377
View File
File diff suppressed because it is too large Load Diff
+403 -386
View File
File diff suppressed because it is too large Load Diff
+392 -384
View File
File diff suppressed because it is too large Load Diff
+783
View File
@@ -0,0 +1,783 @@
# 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-09-18 04:09+0000\n"
"Last-Translator: GholtsMxv <ghost20090105@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 5.8-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 "碎片融解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 "霸王龍攻擊"
#: 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 ""
#: 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 "無"
+270 -445
View File
@@ -14,96 +14,98 @@
'use strict';
const {Gio, Gtk, Gdk, GLib, GObject} = imports.gi;
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';
// libadwaita is available starting with GNOME Shell 42.
let Adw = null;
try {
Adw = imports.gi.Adw;
} catch (e) {
// Nothing to do.
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';
}
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. //
//////////////////////////////////////////////////////////////////////////////////////////
var PreferencesDialog = class PreferencesDialog {
export default class BurnMyWindowsPreferences extends ExtensionPreferences {
// ------------------------------------------------------------ constructor / destructor
constructor() {
fillPreferencesWindow(window) {
window.set_default_size(650, 750);
// New effects must be registered here and in extension.js.
this._ALL_EFFECTS = [
new Me.imports.src.effects.Apparition.Apparition(),
new Me.imports.src.effects.BrokenGlass.BrokenGlass(),
new Me.imports.src.effects.Doom.Doom(),
new Me.imports.src.effects.EnergizeA.EnergizeA(),
new Me.imports.src.effects.EnergizeB.EnergizeB(),
new Me.imports.src.effects.Fire.Fire(),
new Me.imports.src.effects.Glide.Glide(),
new Me.imports.src.effects.Glitch.Glitch(),
new Me.imports.src.effects.Hexagon.Hexagon(),
new Me.imports.src.effects.Incinerate.Incinerate(),
new Me.imports.src.effects.Matrix.Matrix(),
new Me.imports.src.effects.PaintBrush.PaintBrush(),
new Me.imports.src.effects.Pixelate.Pixelate(),
new Me.imports.src.effects.PixelWheel.PixelWheel(),
new Me.imports.src.effects.PixelWipe.PixelWipe(),
new Me.imports.src.effects.Portal.Portal(),
new Me.imports.src.effects.SnapOfDisintegration.SnapOfDisintegration(),
new Me.imports.src.effects.TRexAttack.TRexAttack(),
new Me.imports.src.effects.TVEffect.TVEffect(),
new Me.imports.src.effects.TVGlitch.TVGlitch(),
new Me.imports.src.effects.Wisps.Wisps(),
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,
];
// Load all of our resources.
this._resources = Gio.Resource.load(Me.path + '/resources/burn-my-windows.gresource');
this._resources =
Gio.Resource.load(this.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');
}
Gtk.IconTheme.get_for_display(Gdk.Display.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/${utils.getUIDir()}/prefs.ui`);
this._builder.add_from_resource(`/ui/${getUIDir()}/prefs.ui`);
// Store a reference to the general settings object.
this._settings = ExtensionUtils.getSettings();
this._settings = this.getSettings();
// This tracks all available effect profiles.
this._profileManager = new ProfileManager();
this._profileManager = new ProfileManager(this.metadata);
// This is used to track all connections to properties of the current effect profile.
// Whenever the current effect profile changes, all connections are disconnected.
@@ -128,19 +130,9 @@ var PreferencesDialog = class PreferencesDialog {
// 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));
let powerProfileRow = this._builder.get_object('profile-power-profile');
powerProfileRow.set_visible(hasPowerProfiles);
// 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.
@@ -178,21 +170,6 @@ var PreferencesDialog = class PreferencesDialog {
}
});
// 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');
@@ -210,6 +187,40 @@ var PreferencesDialog = class PreferencesDialog {
});
});
// 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');
@@ -217,31 +228,12 @@ var PreferencesDialog = class PreferencesDialog {
// 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/${utils.getUIDir()}/${effect.getNick()}.ui`;
const uiFile = `/ui/${getUIDir()}/${effect.getNick()}.ui`;
// Is there a better way to test for the existence of a resource file?
let hasPrefs = false;
@@ -258,12 +250,7 @@ var PreferencesDialog = class PreferencesDialog {
}
// The preview button.
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);
}
let previewButton = Gtk.Button.new_from_icon_name('bmw-preview-symbolic');
previewButton.get_style_context().add_class('circular');
previewButton.get_style_context().add_class('flat');
previewButton.set_tooltip_text(_('Preview this effect'));
@@ -277,101 +264,60 @@ var PreferencesDialog = class PreferencesDialog {
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 if (utils.isADW()) {
row = Adw.ActionRow.new();
}
// On older versions of Adw (e.g. on GNOME Shell <43), the set_use_markup() does
// not yet exist.
if (row.set_use_markup) {
row.set_title('<b>' + effect.getLabel() + '</b>');
row.set_use_markup(true);
} else {
row.set_title(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) {
row.connect('notify::expanded', currentRow => {
if (currentRow.get_expanded()) {
this._effectRows.forEach(row => {
if (row != currentRow) {
row.set_expanded(false);
}
});
}
});
this._effectRows.push(row);
row.add_action(button);
} else {
row.add_suffix(button);
}
row.add_prefix(previewButton);
group.add(row);
let row;
if (hasPrefs) {
// Add the effect's preferences (if any).
row = this._builder.get_object(`${effect.getNick()}-prefs`);
} 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);
}
row = Adw.ActionRow.new();
}
// On older versions of Adw (e.g. on GNOME Shell <43), the set_use_markup() does
// not yet exist.
if (row.set_use_markup) {
row.set_title('<b>' + effect.getLabel() + '</b>');
row.set_use_markup(true);
} else {
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) {
row.connect('notify::expanded', currentRow => {
if (currentRow.get_expanded()) {
this._effectRows.forEach(row => {
if (row != currentRow) {
row.set_expanded(false);
}
});
}
});
this._effectRows.push(row);
row.add_action(button);
} else {
row.add_suffix(button);
}
row.add_prefix(previewButton);
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 = utils.isGTK4() ? widget.get_root() : widget.get_toplevel();
const window = widget.get_root();
// Show the version number in the title bar.
window.set_title(`Burn-My-Windows ${Me.metadata.version}`);
window.set_title(`Burn-My-Windows ${this.metadata.version}`);
this._loadActiveProfile();
this._updateProfileMenu();
@@ -379,30 +325,21 @@ var PreferencesDialog = class PreferencesDialog {
// 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 < Me.metadata.version) {
if (lastVersion < this.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');
toast.set_timeout(0);
const toast = Adw.Toast.new(_('Burn-My-Windows has been updated!'));
toast.set_button_label(_('View Changelog'));
toast.set_action_name('prefs.changelog');
toast.set_timeout(0);
toast.connect(
'dismissed',
() => this._settings.set_int('last-prefs-version', Me.metadata.version));
toast.connect(
'dismissed',
() => this._settings.set_int('last-prefs-version', this.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);
}
window.add_toast(toast);
return false;
});
@@ -449,11 +386,7 @@ GitHub: <a href='https://github.com/sponsors/schneegans'>https://github.com/spon
}
]);
if (utils.isGTK4()) {
dialog.show();
} else {
dialog.show_all();
}
dialog.show();
}
});
@@ -468,39 +401,28 @@ 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'));
const header = this._findWidgetByType(window.get_content(), Adw.HeaderBar);
header.pack_start(menu);
header.set_title_widget(this._builder.get_object('profile-button'));
// GNOME Shell extensions are forced to use a AdwPreferencesWindow. This already
// includes a Gtk.ScrolledWindow as well as an Adw.Clamp. For the profile
// editing, we want to use an Adw.Flap which reveals itself from the top. This
// needs to be inserted in the widget hierarchy above the Adw.Clamp, else it
// would look ugly. Therefore, we fiddle around with the internal widgets...
const flap = this._builder.get_object('profile-editor-flap');
const clamp = this._findWidgetByType(window.get_content(), Adw.Clamp);
const viewport = clamp.get_parent();
viewport.get_parent().set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.NEVER);
viewport.set_child(flap);
// GNOME Shell extensions are forced to use a AdwPreferencesWindow. This already
// includes a Gtk.ScrolledWindow as well as an Adw.Clamp. For the profile
// editing, we want to use an Adw.Flap which reveals itself from the top. This
// needs to be inserted in the widget hierarchy above the Adw.Clamp, else it
// would look ugly. Therefore, we fiddle around with the internal widgets...
const flap = this._builder.get_object('profile-editor-flap');
const clamp = this._findWidgetByType(window.get_content(), Adw.Clamp);
const viewport = clamp.get_parent();
viewport.get_parent().set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.NEVER);
viewport.set_child(flap);
const scrolledWindow = Gtk.ScrolledWindow.new();
scrolledWindow.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
scrolledWindow.set_propagate_natural_height(true);
scrolledWindow.set_vexpand(true);
scrolledWindow.set_child(clamp);
const scrolledWindow = Gtk.ScrolledWindow.new();
scrolledWindow.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
scrolledWindow.set_propagate_natural_height(true);
scrolledWindow.set_vexpand(true);
scrolledWindow.set_child(clamp);
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'));
}
flap.set_content(scrolledWindow);
const addURIAction = (name, uri) => {
const action = Gio.SimpleAction.new(name, null);
@@ -516,6 +438,8 @@ 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
@@ -531,7 +455,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', Me.metadata.version)
this._settings.set_int('last-prefs-version', this.metadata.version)
});
group.add_action(changelogAction);
@@ -543,90 +467,22 @@ 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[1]));
j.forEach(k => translators.add(k.full_name));
}
});
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(`${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));
}
}
const 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_developer_name('Simon Schneegans');
dialog.set_issue_url('https://github.com/Schneegans/Burn-My-Windows/issues');
dialog.set_translator_credits([...translators].join('\n'));
dialog.set_copyright('© 2022 Simon Schneegans');
dialog.set_copyright('© 2023 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();
}
dialog.show();
});
group.add_action(aboutAction);
@@ -711,10 +567,7 @@ GitHub: <a href='https://github.com/sponsors/schneegans'>https://github.com/spon
}
});
// Show the widgets on GTK3.
if (!utils.isGTK4()) {
this._widget.show_all();
}
window.add(this._widget);
}
// -------------------------------------------------------------------- public interface
@@ -730,11 +583,6 @@ 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) {
@@ -800,17 +648,6 @@ 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'.
@@ -849,20 +686,11 @@ 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.bindComboRow('profile-animation-type');
this.bindComboRow('profile-window-type');
this.bindComboRow('profile-color-scheme');
this.bindComboRow('profile-power-mode');
this.bindComboRow('profile-power-profile');
this.bindSwitch('profile-high-priority');
// Connect all effect settings.
@@ -883,7 +711,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._profileManager.getProfileName(this.getProfileSettings());
this._getProfileName(this.getProfileSettings());
}
// This updates the list of available profiles in the dropdown of the profile-selection
@@ -897,7 +725,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._profileManager.getProfileName(profile.settings);
const label = this._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));
@@ -905,6 +733,58 @@ 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.
@@ -981,15 +861,12 @@ GitHub: <a href='https://github.com/sponsors/schneegans'>https://github.com/spon
default_width: 800,
default_height: 450,
modal: true,
transient_for: utils.isGTK4() ? this._widget.get_root() :
this._widget.get_toplevel()
transient_for: this._widget.get_root()
});
// Add a header bar to the window.
if (utils.isGTK4()) {
const header = Gtk.HeaderBar.new();
window.set_titlebar(header);
}
const header = Gtk.HeaderBar.new();
window.set_titlebar(header);
const box = new Gtk.Box({
orientation: Gtk.Orientation.VERTICAL,
@@ -1009,16 +886,11 @@ GitHub: <a href='https://github.com/sponsors/schneegans'>https://github.com/spon
pixel_size: 128,
});
this.gtkBoxAppend(box, image);
this.gtkBoxAppend(box, label);
box.append(image);
box.append(label);
if (utils.isGTK4()) {
window.set_child(box);
window.show();
} else {
window.add(box);
window.show_all();
}
window.set_child(box);
window.show();
}
// Helper function to show a message dialog. The dialog is modal and has a title, a
@@ -1027,53 +899,28 @@ 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;
let dialog = new Adw.MessageDialog({
heading: title,
body: message,
body_use_markup: true,
modal: true,
});
if (utils.isADW() && Adw.MessageDialog) {
dialog = new Adw.MessageDialog({
heading: title,
body: message,
body_use_markup: true,
modal: true,
});
buttons.forEach((button, i) => {
const response = i.toString();
dialog.add_response(response, button.label);
buttons.forEach((button, i) => {
const response = i.toString();
dialog.add_response(response, button.label);
if (button.default) {
dialog.set_default_response(response);
dialog.set_close_response(response);
}
if (button.default) {
dialog.set_default_response(response);
dialog.set_close_response(response);
}
if (button.destructive) {
dialog.set_response_appearance(response, Adw.ResponseAppearance.DESTRUCTIVE);
}
});
} 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);
}
if (button.destructive) {
dialog.set_response_appearance(response, Adw.ResponseAppearance.DESTRUCTIVE);
}
});
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
@@ -1092,25 +939,3 @@ 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
@@ -1,86 +0,0 @@
{
"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"
}
]
}
+508 -433
View File
@@ -1,449 +1,524 @@
[
{
"Korean": [
[
"darkcircle.0426@gmail.com",
"Seong-ho Cho",
128
]
]
},
{
"Persian": [
[
"eshagh094@gmail.com",
"Eshagh shahidani",
65
]
]
},
{
"Polish": [
[
"gnu.ewm@protonmail.com",
"Eryk Michalak",
10
],
[
"sto@tutanota.de",
"WaldiS",
38
],
[
"pwrzonca@gmail.com",
"Pawe\u0142 Rzo\u0144ca",
77
]
]
},
{
"Turkish": [
[
"tcreeper.earth@gmail.com",
"TCr3",
24
],
[
"muhaaliss@pm.me",
"Muha Aliss",
52
],
[
"libreajans@gmail.com",
"Sabri \u00dcnal",
68
]
]
},
{
"Chinese (Simplified)": [
[
"coelacanthushex@gmail.com",
"Celeste Liu",
3
],
[
"lyuutau@outlook.com",
"\u5218\u97ec",
34
],
[
"poonsters6@gmail.com",
"merelymyself",
38
],
[
"aerowolf@tom.com",
"aerowolf",
97
]
]
},
{
"Swedish": [
[
"obslsessed@duck.com",
"obslsessed",
5
],
[
"droidbittin@gmail.com",
"Luna Jernberg",
9
],
[
"swedishsailfishosuser@tutanota.com",
"Kristoffer Grundstr\u00f6m",
48
]
]
},
{
"Slovak": [
[
"salka.milan@googlemail.com",
"Milan \u0160alka",
4
],
[
"jose1711@gmail.com",
"Jose Riha",
128
]
]
},
{
"German": [
[
"atalanttore@googlemail.com",
"Ettore Atalan",
3
],
[
"code@simonschneegans.de",
"Simon Schneegans",
122
]
]
},
{
"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",
51
]
]
},
{
"Finnish": [
[
"jiri.gronroos@iki.fi",
"Jiri Gr\u00f6nroos",
47
]
]
},
{
"Russian": [
[
"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",
49
]
]
},
{
"Ukrainian": [
[
"cakestwix1@gmail.com",
"CakesTwix",
35
],
[
"911us@duck.com",
"Petro S.",
44
],
[
"yuridm@gmail.com",
"\u042e\u0440\u0456\u0439 \u0414\u043c\u0438\u0442\u0440\u0435\u043d\u043a\u043e",
48
]
]
},
{
"Indonesian": [
[
"rezaalmanda27@gmail.com",
"Reza Almanda",
53
],
[
"randompsyduck@duck.com",
"Sir-Ivysaur",
75
]
]
},
{
"Dutch": [
[
"code@simonschneegans.de",
"Simon Schneegans",
1
],
[
"philip.goto@gmail.com",
"Philip Goto",
7
],
[
"vistausss@fastmail.com",
"Heimen Stoffels",
126
]
]
},
{
"Norwegian Bokm\u00e5l": [
[
"code@simonschneegans.de",
"Simon Schneegans",
1
],
[
"epost@anotheragency.no",
"Allan Nordh\u00f8y",
44
]
]
},
{
"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
]
]
},
{
"Portuguese": [
[
"ssantos@web.de",
"ssantos",
1
],
[
"dyegoaurelio@gmail.com",
"dyegoaurelio",
8
],
[
"pedro.hvn.2018@gmail.com",
"KrulesExGamer",
70
]
]
},
{
"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",
20
],
[
"dev.n47os@aleeas.com",
"Ulices",
39
],
[
"oscfdezdz@tuta.io",
"\u00d3scar Fern\u00e1ndez D\u00edaz",
60
]
]
},
{
"Italian": [
[
"mario03@gmail.com",
"Mario",
1
],
[
"albano_battistella@hotmail.com",
"albanobattistella",
128
]
]
},
{
"Hebrew": [
[
"hvusvvnkl12345@gmail.com",
"\u05d9\u05d4\u05d5\u05d3\u05d4 \u05d0\u05dc\u05d9\u05e1\u05e3",
37
]
]
},
{
"Japanese": [
[
"ryuichi.ya220@gmail.com",
"Ryan Y",
79
]
]
},
{
"Hungarian": [
[
"superh552@gmail.com",
"KinteLiX",
79
]
]
},
{
"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
]
]
},
{
"Lithuanian": [
[
"hazap@hotmail.com",
"Moo",
43
]
]
},
{
"Portuguese (Brazil)": [
[
"mr-isaac@ig.com.br",
"Isaac Dias",
93
]
{
"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
}
]
},
{
"Azerbaijani": [
[
"xxmn77@gmail.com",
"X\u0259yyam Qocayev",
67
]
{
"email": "xxmn77@gmail.com",
"full_name": "X\u0259yyam Qocayev",
"change_count": 63
}
]
},
{
"Romanian": [
[
"softexpert@gmail.com",
"SoftExpert",
126
]
"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": [
[
"phlostically@mailinator.com",
"phlostically",
72
]
{
"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 }
]
},
{
"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
}
]
},
{
"Romanian": [
{
"email": "softexpert@gmail.com",
"full_name": "SoftExpert",
"change_count": 126
}
]
},
{
"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
}
]
},
{
"Slovak": [
{
"email": "jose1711@gmail.com",
"full_name": "Jose Riha",
"change_count": 124
},
{
"email": "salka.milan@googlemail.com",
"full_name": "Milan \u0160alka",
"change_count": 10
}
]
},
{
"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
},
{
"email": "911us@duck.com",
"full_name": "Petro S.",
"change_count": 44
},
{
"email": "cakestwix1@gmail.com",
"full_name": "CakesTwix",
"change_count": 35
},
{
"email": "sergiy.goncharuk.1@gmail.com",
"full_name": "\u0421\u0435\u0440\u0433\u0456\u0439",
"change_count": 4
}
]
}
]
]
-23
View File
@@ -1,23 +0,0 @@
/*
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
@@ -1,26 +0,0 @@
/*
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
@@ -0,0 +1,117 @@
//////////////////////////////////////////////////////////////////////////////////////////
// ) ( //
// ( /( ( ( ) ( ( ( ( )\ ) ( ( //
// )\()) ))\ )( ( ( )\ ) )\))( )\ ( (()/( ( )\))( ( //
// ((_)\ /((_|()\ )\ ) )\ '(()/( ((_)()((_) )\ ) ((_)))\((_)()\ )\ //
// | |(_|_))( ((_)_(_/( _((_)) )(_)) _(()((_|_)_(_/( _| |((_)(()((_|(_) //
// | '_ \ || | '_| ' \)) | ' \()| || | \ 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);
}
+269 -1
View File
@@ -42,6 +42,10 @@ uniform float uDuration;
#if defined(KWIN) // --------------------------------------------------------------------
#if defined(PLASMA6)
#include "colormanagement.glsl"
#endif
uniform sampler2D sampler;
uniform int textureWidth;
uniform int textureHeight;
@@ -74,10 +78,19 @@ void setOutputColor(vec4 outColor) {
}
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;
@@ -108,6 +121,11 @@ void setOutputColor(vec4 outColor) {
}
gl_FragColor = vec4(outColor.rgb * outColor.a, outColor.a);
#if defined(PLASMA6)
fragColor = sourceEncodingToNitsInDestinationColorspace(fragColor);
fragColor = nitsToDestinationEncoding(fragColor);
#endif
}
#else // GNOME --------------------------------------------------------------------------
@@ -135,6 +153,35 @@ 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
@@ -167,6 +214,54 @@ 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!
@@ -184,6 +279,121 @@ 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
@@ -207,7 +417,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 paramter controls whether the fading is placed inside the window borders
// The offset parameter 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) {
@@ -251,6 +461,12 @@ 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
@@ -452,3 +668,55 @@ 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);
}
+28 -8
View File
@@ -22,6 +22,8 @@ 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;
@@ -29,7 +31,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 getFireColor(float v, vec4 c0, vec4 c1, vec4 c2, vec4 c3, vec4 c4) {
float steps[5];
steps[0] = 0.0;
steps[1] = 0.2;
@@ -38,11 +40,11 @@ vec4 getFireColor(float v) {
steps[4] = 0.8;
vec4 colors[5];
colors[0] = uGradient1;
colors[1] = uGradient2;
colors[2] = uGradient3;
colors[3] = uGradient4;
colors[4] = uGradient5;
colors[0] = c0;
colors[1] = c1;
colors[2] = c2;
colors[3] = c3;
colors[4] = c4;
if (v < steps[0]) {
return colors[0];
@@ -114,7 +116,25 @@ void main() {
noise *= effectMask.y;
// Map noise value to color.
vec4 fire = getFireColor(noise);
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);
}
// Get the window texture.
vec4 oColor = getInputColor(iTexCoord.st);
@@ -131,4 +151,4 @@ void main() {
// oColor = vec4(vec3(effectMask.y), 1);
setOutputColor(oColor);
}
}
+67
View File
@@ -0,0 +1,67 @@
//////////////////////////////////////////////////////////////////////////////////////////
// ) ( //
// ( /( ( ( ) ( ( ( ( )\ ) ( ( //
// )\()) ))\ )( ( ( )\ ) )\))( )\ ( (()/( ( )\))( ( //
// ((_)\ /((_|()\ )\ ) )\ '(()/( ((_)()((_) )\ ) ((_)))\((_)()\ )\ //
// | |(_|_))( ((_)_(_/( _((_)) )(_)) _(()((_|_)_(_/( _| |((_)(()((_|(_) //
// | '_ \ || | '_| ' \)) | ' \()| || | \ 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);
float circle = length((iTexCoord - uStartPos) * (uSize.xy / max(uSize.x, uSize.y)));
vec2 uv = iTexCoord / uScale * uSize / 1.5;
float smokeNoise =
+403
View File
@@ -0,0 +1,403 @@
//////////////////////////////////////////////////////////////////////////////////////////
// ) ( //
// ( /( ( ( ) ( ( ( ( )\ ) ( ( //
// )\()) ))\ )( ( ( )\ ) )\))( )\ ( (()/( ( )\))( ( //
// ((_)\ /((_|()\ )\ ) )\ '(()/( ((_)()((_) )\ ) ((_)))\((_)()\ )\ //
// | |(_|_))( ((_)_(_/( _((_)) )(_)) _(()((_|_)_(_/( _| |((_)(()((_|(_) //
// | '_ \ || | '_| ' \)) | ' \()| || | \ 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
@@ -0,0 +1,74 @@
//////////////////////////////////////////////////////////////////////////////////////////
// ) ( //
// ( /( ( ( ) ( ( ( ( )\ ) ( ( //
// )\()) ))\ )( ( ( )\ ) )\))( )\ ( (()/( ( )\))( ( //
// ((_)\ /((_|()\ )\ ) )\ '(()/( ((_)()((_) )\ ) ((_)))\((_)()\ )\ //
// | |(_|_))( ((_)_(_/( _((_)) )(_)) _(()((_|_)_(_/( _| |((_)(()((_|(_) //
// | '_ \ || | '_| ' \)) | ' \()| || | \ 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
@@ -0,0 +1,163 @@
//////////////////////////////////////////////////////////////////////////////////////////
// ) ( //
// ( /( ( ( ) ( ( ( ( )\ ) ( ( //
// )\()) ))\ )( ( ( )\ ) )\))( )\ ( (()/( ( )\))( ( //
// ((_)\ /((_|()\ )\ ) )\ '(()/( ((_)()((_) )\ ) ((_)))\((_)()\ )\ //
// | |(_|_))( ((_)_(_/( _((_)) )(_)) _(()((_|_)_(_/( _| |((_)(()((_|(_) //
// | '_ \ || | '_| ' \)) | ' \()| || | \ 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);
}
+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">2000</property>
<property name="upper">3000</property>
<property name="lower">100</property>
<property name="step-increment">10</property>
<property name="page-increment">100</property>
+277
View File
@@ -0,0 +1,277 @@
<?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">10000</property>
<property name="upper">3000</property>
<property name="lower">100</property>
<property name="step-increment">1</property>
<property name="page-increment">100</property>
+1 -1
View File
@@ -21,7 +21,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
<property name="width-request">300</property>
<property name="adjustment">
<object class="GtkAdjustment" id="doom-animation-time">
<property name="upper">10000</property>
<property name="upper">3000</property>
<property name="lower">100</property>
<property name="step-increment">1</property>
<property name="page-increment">100</property>
+1 -1
View File
@@ -21,7 +21,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
<property name="width-request">300</property>
<property name="adjustment">
<object class="GtkAdjustment" id="energize-a-animation-time">
<property name="upper">10000</property>
<property name="upper">3000</property>
<property name="lower">100</property>
<property name="step-increment">1</property>
<property name="page-increment">100</property>
+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="energize-b-animation-time">
<property name="upper">10000</property>
<property name="upper">3000</property>
<property name="lower">100</property>
<property name="step-increment">1</property>
<property name="page-increment">100</property>
+24 -2
View File
@@ -37,7 +37,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
<property name="width-request">300</property>
<property name="adjustment">
<object class="GtkAdjustment" id="fire-animation-time">
<property name="upper">10000</property>
<property name="upper">3000</property>
<property name="lower">100</property>
<property name="step-increment">1</property>
<property name="page-increment">100</property>
@@ -147,6 +147,28 @@ SPDX-License-Identifier: GPL-3.0-or-later
</object>
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">Use Random Color</property>
<property name="activatable-widget">fire-random-color</property>
<child>
<object class="GtkSwitch" id="fire-random-color">
<property name="valign">center</property>
</object>
</child>
<child>
<object class="GtkButton" id="reset-fire-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">
<property name="title" translatable="yes">Gradient</property>
@@ -206,4 +228,4 @@ SPDX-License-Identifier: GPL-3.0-or-later
</child>
</object>
</interface>
</interface>
+114
View File
@@ -0,0 +1,114 @@
<?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="focus-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>
<object class="GtkAdjustment" id="focus-blur-amount">
<property name="upper">100</property>
<property name="lower">0</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="focus-blur-quality">
<property name="upper">10</property>
<property name="lower">1</property>
<property name="step-increment">1</property>
<property name="page-increment">5</property>
</object>
<object class="AdwExpanderRow" id="focus-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">focus-animation-time</property>
</object>
</child>
<child>
<object class="GtkButton" id="reset-focus-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">Blur Amount</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">focus-blur-amount</property>
</object>
</child>
<child>
<object class="GtkButton" id="reset-focus-blur-amount">
<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 Quality</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">focus-blur-quality</property>
</object>
</child>
<child>
<object class="GtkButton" id="reset-focus-blur-quality">
<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>

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