Compare commits

...

415 Commits

Author SHA1 Message Date
Ly-sec
74ba883dd8 initial commit 2025-11-22 13:51:58 +01:00
Lysec
01a26fd910 Merge pull request #827 from notiant/patch-1
LockScreen: make 'hibernate' optional
2025-11-22 13:14:53 +01:00
notiant
0293b8c8dd LockScreen: make 'hibernate' optional 2025-11-22 13:04:44 +01:00
Lysec
3914c32c96 Merge pull request #823 from acdcbyl/main
Matugen: Add Telegram's Theme
2025-11-22 13:04:29 +01:00
Lysec
4652691c4c Merge pull request #825 from lonerOrz/fix/tray
Fix inconsistent tray drawer behavior for different mouse buttons
2025-11-22 12:54:30 +01:00
Lysec
679fd5c40e Merge pull request #826 from art0rz/fix/recording-button
Add screen recording loading feedback
2025-11-22 12:49:32 +01:00
Ly-sec
48c5435cef SetupWizard: ensure setuoCompleted is always being saved 2025-11-22 12:46:22 +01:00
loner
880ae9c7b9 fix: Fix inconsistent tray drawer behavior for different mouse buttons 2025-11-22 18:03:33 +08:00
Aiser
0f650b36f7 Matugen: Add Telegram's Theme 2025-11-22 14:52:38 +08:00
ItsLemmy
823042b245 Panels: properly animate height with vertical bar + Bluetooth sizing refinement. 2025-11-22 00:33:42 -05:00
ItsLemmy
9c550af64e UpdateService: fix wrong changelog when updating from 3.2.0-dev to 3.2.0-git 2025-11-21 23:25:22 -05:00
ItsLemmy
1bf54de99c UpdateService: Remove potential -dev 2025-11-21 16:40:48 -05:00
ItsLemmy
7a68030f69 Notifications: ensure they are not sandwitched between panels
+ Always access lockScreen via panel service and removed deprecation
notice.
2025-11-21 15:18:38 -05:00
ItsLemmy
f46915d2c3 UpdateService: cleanup and use -git suffix instead of -dev. 2025-11-21 13:54:00 -05:00
ItsLemmy
50ebc77513 UpdateService: proper revert 2025-11-21 13:43:09 -05:00
ItsLemmy
522e7e4352 Default settings: update 2025-11-21 13:41:23 -05:00
ItsLemmy
9f9e1341fd Reapply "UpdateService: renamed "-dev" to "-git" for clarity."
This reverts commit c919c54a32.
2025-11-21 13:38:38 -05:00
ItsLemmy
c919c54a32 Revert "UpdateService: renamed "-dev" to "-git" for clarity."
This reverts commit 6387dcc6d4.
2025-11-21 13:38:29 -05:00
ItsLemmy
6387dcc6d4 UpdateService: renamed "-dev" to "-git" for clarity. 2025-11-21 13:28:42 -05:00
ItsLemmy
455014a39b Brightness: scroll-wheel was bypassing available control check. 2025-11-21 13:28:12 -05:00
ItsLemmy
a884f012d8 i18n + autoformat 2025-11-21 13:18:02 -05:00
Lemmy
c5b23cc291 Merge pull request #804 from Vortelf/feat/vpn-widget
VPN: Widget Implementation
2025-11-21 13:12:50 -05:00
Lemmy
04e46815f8 Merge pull request #808 from EmmetZ/brightness-panel
feat: add brightness panel for bar brightness widget
2025-11-21 13:11:05 -05:00
Lemmy
f3d1e1f3d1 Merge pull request #813 from alaughlin/dock-border-radius
Dock: make border radius configurable
2025-11-21 12:05:25 -05:00
Lemmy
e2aa4ca2f8 Merge pull request #807 from lonerOrz/feat/custombutton
Enhance custom button
2025-11-21 12:02:57 -05:00
Lemmy
d6edc55d16 Merge pull request #817 from MrDowntempo/feat/smarter_shader_compiler
shaders-compile.sh supports file list arguments
2025-11-21 11:57:05 -05:00
ItsLemmy
e5912760ca WiFi Panel: improved the layout with proper multiple sections and proper height calculation. 2025-11-21 11:46:14 -05:00
MrDowntempo
7d981fb55b Merge branch 'main' into feat/smarter_shader_compiler 2025-11-21 11:45:19 -05:00
Corey Woodworth
e97c46e96c shaders-compile.sh supports file list arguments 2025-11-21 11:36:51 -05:00
Lysec
c1afa199e3 Merge pull request #816 from LionHeartP/main
revert: 'Matugen/Discord: fix inbox alignment'
2025-11-21 17:23:28 +01:00
LionHeartP
530992a14b revert: 'Matugen/Discord: fix inbox alignment' 2025-11-21 18:13:13 +02:00
Lysec
5d9cfeb9d0 Merge pull request #815 from lonerOrz/fix/about-version
fix: Fix latestVersion on the about page
2025-11-21 16:27:20 +01:00
loner
8cb4711629 fix: Fix latestVersion on the about page 2025-11-21 23:06:36 +08:00
Ly-sec
2d856882d2 Changelog: remove changelogs.json 2025-11-21 15:58:34 +01:00
art0rz
f181bdf21c Add screen recording loading feedback 2025-11-21 15:52:29 +01:00
Lysec
665aa84f70 Merge pull request #814 from lonerOrz/fix/about
fix: Fix the rich text display on the About page
2025-11-21 15:45:17 +01:00
Ly-sec
b84452e04d Changelogs: overhaul 2025-11-21 15:44:41 +01:00
Ly-sec
d3c200f50c SchemeDownloader: download schemes to ~/.config/noctalia/colorschemes/
ColorSchemeService: check said folder for theming
TemplateProcessor: check said folder for theming
2025-11-21 15:32:02 +01:00
loner
a39fbb5639 fix: Fix the rich text display on the About page 2025-11-21 22:14:57 +08:00
Ly-sec
fe40758d4e SchemeDownloader: fix logger warning 2025-11-21 15:02:38 +01:00
Ly-sec
63331c1018 WidgetSetting: fixes not being able to type when opening settings through context menu 2025-11-21 14:02:24 +01:00
Ly-sec
9c955cdd39 Services/systemd: small update 2025-11-21 13:58:50 +01:00
Adam Laughlin
d9e0f2fc10 Dock: make border radius configurable 2025-11-21 07:45:37 -05:00
Georgi Velev
1cbc793087 VPN: Widget Implementation 2025-11-21 14:32:39 +02:00
Ly-sec
1a2ddbb9e3 Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell 2025-11-21 13:27:13 +01:00
Ly-sec
e46c9cdf0e Battery: add visual indicator for low battery (same as SysMon) 2025-11-21 13:27:03 +01:00
Lysec
43cdc4494d Merge pull request #786 from lonerOrz/feat/clip
Add clipboard preview
2025-11-21 13:19:42 +01:00
Ly-sec
5ed4c97ee5 Tooltip: fix newline detection 2025-11-21 13:02:50 +01:00
Lysec
ddd3ae364c Merge pull request #812 from bokicoder/patch-1
i18n: improve chinese translation
2025-11-21 12:21:32 +01:00
bokicoder
3b793add39 i18n: improve chinese translation 2025-11-21 19:15:19 +08:00
Ly-sec
71f4a8eb49 NText: add optional RichText (default false) to fix calendar with specific languages 2025-11-21 11:09:03 +01:00
Ly-sec
2f735eda81 ChangelogPanel: nice formatting for changelogs
AboutTab: update version connection
GitHubService: cleanup, move changelog logic to UpdateService
UpdateService: use new changelog host
2025-11-21 11:01:59 +01:00
loner
ee33da8348 i18n: fix: Add translations for custom button wheel actions 2025-11-21 13:14:57 +08:00
loner
f7d7d7ac15 fix: Stabilize custom button wheel command settings UI layout 2025-11-21 12:38:50 +08:00
ItsLemmy
972ac47c1b Bluetooth: smaller font for section name, similar to wifi. 2025-11-20 23:08:42 -05:00
ItsLemmy
0b0860a446 WiFi: improved classification and sorting 2025-11-20 23:06:56 -05:00
loner
e8a27acb63 fix: Left click behavior should only depend on left click settings 2025-11-21 11:06:51 +08:00
loner
694fefeebd feat: Custom buttons now support wheel actions 2025-11-21 10:58:15 +08:00
ItsLemmy
088431b20d Autoformatting + translations 2025-11-20 21:38:00 -05:00
ItsLemmy
63940703f8 TaskbarGrouped: Fixes, cleanup and improvements. 2025-11-20 21:37:02 -05:00
EmmetZ
e3c171840f feat: add brightness panel for bar brightness widget 2025-11-21 10:23:23 +08:00
loner
857d1dbbb6 feat: Update translation files for maxTextLength feature 2025-11-21 09:07:39 +08:00
loner
516fc47b68 feat: Replace hideTextInVerticalBar with maxTextLength object
- Replace boolean hideTextInVerticalBar with maxTextLength object that has
  separate horizontal and vertical properties for more flexible text length control
- Add NSpinBox controls in settings UI to configure both horizontal and
  vertical max text length independently
- Update CustomButton widget to use new maxTextLength structure and
  implement text scrolling based on direction-specific limits
- Set default values to 10 for both horizontal and vertical (was 20/0)
- Update translations and widget registry metadata accordingly
- When vertical maxTextLength is 0, text is completely hidden (preserving
  original hideTextInVerticalBar: true behavior)

This allows users to set different text length limits for horizontal and
vertical bar orientations, providing more granular control over text display.
2025-11-21 09:07:30 +08:00
loner
e549cfcb78 feat: Use maxTextLength to Limit Custom Button Text Length 2025-11-21 08:31:15 +08:00
loner
6a840769ed Fix(BarPillVertical): Improve vertical text positioning and spacing 2025-11-21 08:31:00 +08:00
loner
ec92295a98 Enhance custom tooltip parsing 2025-11-21 08:30:46 +08:00
Ly-sec
60d37576e0 LocationTab: properly trim whitespaces from first day of the week 2025-11-20 21:08:07 +01:00
Ly-sec
067bbf20bc ColorScheme/Rosepine: fix colors 2025-11-20 20:54:43 +01:00
Ly-sec
49aab3c487 Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell 2025-11-20 20:45:25 +01:00
Ly-sec
868b14bbc3 AudioCard: fix elide 2025-11-20 20:45:21 +01:00
Lysec
b435d1f588 Merge pull request #806 from bokicoder/main
Nix: cleaner code
2025-11-20 20:19:34 +01:00
Ly-sec
1fc1fa36aa Matugen/Discord: fix inbox alignment (thanks @LionHeartP) 2025-11-20 19:56:18 +01:00
wxlyyy
04311f191f Nix: cleaner code 2025-11-21 02:28:56 +08:00
Ly-sec
0726e6b92f LockScreen: adjust button width depending on text length 2025-11-20 17:55:45 +01:00
Ly-sec
9a3d04249f Set version to dev 2025-11-20 17:42:59 +01:00
Ly-sec
edd4ba1b15 LockScreen: make digital font bigger 2025-11-20 17:39:01 +01:00
Ly-sec
c50776eeee Release v3.2.0 2025-11-20 15:56:32 +01:00
Ly-sec
e9114297d1 ChangelogPanel: save lastSeenVersion to cacheDir 2025-11-20 14:50:00 +01:00
Ly-sec
fbfdf787de ChangelogPanel: fix width issues 2025-11-20 13:17:17 +01:00
Ly-sec
3976a21dc7 Settings: remove forceShowNextStart 2025-11-20 11:54:50 +01:00
Ly-sec
c735eef75d Merge branch 'changelog' 2025-11-20 11:54:33 +01:00
ItsLemmy
1ceb97c08f NText: Dont RichText by default as it does not elide properly.
Was breaking the bar section editor.
2025-11-20 00:11:51 -05:00
ItsLemmy
42e2ba09ff MediaCard: don't show the disc icon if there is Cava activity. 2025-11-19 21:46:07 -05:00
Ly-sec
074da9069c OSD: add overdrive display
Volume/Microphone: allow overdrive, clamp to 100/150% max
AudioService: properly clamp to 100/150% (not only visually)
2025-11-19 23:27:42 +01:00
Ly-sec
19672a3d46 SchemeDownloader: display proper errors 2025-11-19 23:11:30 +01:00
ItsLemmy
da8fa306a1 NText: richText by default as it is used in a few legacy places. 2025-11-19 16:18:22 -05:00
ItsLemmy
d74f1feece Merge branch 'main' of github.com:noctalia-dev/noctalia-shell 2025-11-19 16:01:21 -05:00
ItsLemmy
6df39604c5 NText: RichText or StyledText (no plainText) 2025-11-19 16:01:18 -05:00
Lemmy
4d45b330b0 Merge pull request #799 from bokicoder/main
Nix: remove quickshell flake input & add overlays & ...
2025-11-19 11:59:39 -05:00
wxlyyy
b7c50f4c23 Nix: remove quickshell flake input & add overlays & ... 2025-11-20 00:20:15 +08:00
ItsLemmy
0a6c06b092 OSD: another stab at a simplified approach to avoid start-up OSD notifications and separating UI from logic. 2025-11-19 10:20:18 -05:00
Lysec
9080a584a2 Merge pull request #798 from art0rz/main
Disable capitalization of username in ControlCenter
2025-11-19 15:56:15 +01:00
art0rz
110917359c Disable capitalization of username in ControlCenter 2025-11-19 15:16:56 +01:00
ItsLemmy
5275ccf0d7 Autofmt 2025-11-19 08:29:02 -05:00
ItsLemmy
d641eadf75 Audio: added a settings to choose your favorite external audio mixer (ex: pavucontrol, ...) 2025-11-19 08:28:51 -05:00
Ly-sec
a9ccb4c133 Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell 2025-11-19 14:06:27 +01:00
Ly-sec
16a79c7d5b OSD: another possible fix for initial in/output OSD 2025-11-19 14:06:21 +01:00
ItsLemmy
1b4cd35504 Weather: Made the weather effects conditional with a new setting. 2025-11-19 08:05:33 -05:00
Ly-sec
17810d1d2f SchemeDownloader: make schemes look more similar to ColorSchemeTab ones 2025-11-19 13:42:29 +01:00
Ly-sec
64f5d99a48 OSD: possible fix for initial in/output OSD 2025-11-19 12:01:30 +01:00
loner
e4e3b1b85c qml format 2025-11-19 16:07:08 +08:00
loner
4a0c2b7ef3 feat(i18n): Add clip preview translations for Simplified Chinese (zh-CN) 2025-11-19 16:07:07 +08:00
loner
5e2f8c1462 feat(i18n): Add clip preview translations for Ukrainian (uk-UA) 2025-11-19 16:07:07 +08:00
loner
97ba831cb4 feat(i18n): Add clip preview translations for Turkish (tr) 2025-11-19 16:07:07 +08:00
loner
5ade827a4c feat(i18n): Add clip preview translations for Russian (ru) 2025-11-19 16:07:07 +08:00
loner
03554120be feat(i18n): Add clip preview translations for Portuguese (pt) 2025-11-19 16:07:07 +08:00
loner
2917f02621 feat(i18n): Add clip preview translations for Dutch (nl) 2025-11-19 16:07:07 +08:00
loner
a18be7927c feat(i18n): Add clip preview translations for French (fr) 2025-11-19 16:07:07 +08:00
loner
9bf8fd16d6 feat(i18n): Add clip preview translations for Spanish (es) 2025-11-19 16:07:07 +08:00
loner
948c3c7e18 feat(i18n): Add clip preview translations for German (de) 2025-11-19 16:07:07 +08:00
loner
b2978113c5 feat(launcher): Integrate TextFormatter for enhanced preview UI 2025-11-19 16:07:07 +08:00
loner
87f62b288b feat(launcher): UI improvements for clipboard preview window 2025-11-19 16:07:07 +08:00
loner
ed373df99d feat(launcher): Add toggle for clip plugin preview 2025-11-19 16:07:07 +08:00
loner
529869f796 fix: External clipboard preview panel positioning and styling 2025-11-19 16:07:07 +08:00
loner
12766e411d widget: new fillMode and smt 2025-11-19 16:07:07 +08:00
loner
79f79e0cff feat: Add image preview logic 2025-11-19 16:07:07 +08:00
loner
ca89a0dc35 fix: Fix the proportions of the list and the preview 2025-11-19 16:07:07 +08:00
loner
6eaffb0e65 feat: implement full content preview with async loading in ClipboardPreview 2025-11-19 16:07:07 +08:00
loner
455ef3449e feat: clip preview 2025-11-19 16:07:07 +08:00
ItsLemmy
fef8535384 Weather: rain and snow shaders. 2025-11-19 00:16:54 -05:00
ItsLemmy
770c667794 Shader script: full path to QSB 2025-11-18 23:14:17 -05:00
ItsLemmy
9b805ef1c4 MediaCard: some more tweaks 2025-11-18 21:42:54 -05:00
ItsLemmy
260cb34c96 DimDesktop: Lowered default dimmerOpacity from 0.8 to 0.6 2025-11-18 19:55:16 -05:00
ItsLemmy
592e261eb8 DropShadow: on the media card + some cleanup 2025-11-18 19:51:54 -05:00
ItsLemmy
8242b0d97d Fix a bunch of hardcoded borders + autofmt 2025-11-18 19:17:25 -05:00
ItsLemmy
aa218e153d Missing translations 2025-11-18 19:11:06 -05:00
Lemmy
af4ec4c694 Merge pull request #794 from lonerOrz/feat/custombutton
feat: Tooltip supports rich text parsing
2025-11-18 18:49:52 -05:00
Lemmy
7e43f3b0d6 Merge pull request #793 from notiant/patch-22
WeatherCard: add more left spacing to current weather
2025-11-18 18:49:43 -05:00
Lemmy
9a76b54ce8 Merge pull request #795 from MrDowntempo/fix/BetterRadioButtonWidth
Fix/better radio button width
2025-11-18 18:41:25 -05:00
ItsLemmy
9170ece8d2 Changed some info logger to debug 2025-11-18 17:15:06 -05:00
Corey Woodworth
27dd8fd036 Removed my commented out unnecessary code 2025-11-18 17:00:22 -05:00
Corey Woodworth
74b6e86835 NRadioButton now includes it's NText when calculating it's implicit width 2025-11-18 16:56:55 -05:00
loner
1a4f151bbc Enhanced rich text parsing for specific plain text content 2025-11-19 05:11:27 +08:00
loner
4b507fa238 feat: Tooltip supports rich text parsing 2025-11-19 05:10:26 +08:00
Ly-sec
7262b7b00f PR_TEMPLATE: add comment about colorscheme repo 2025-11-18 20:55:47 +01:00
Ly-sec
3264b59d54 Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell 2025-11-18 20:41:20 +01:00
Ly-sec
c3b73f02b3 ColorSchemeTab: add download button
SchemeDownloader: fetch available color schemes from noctalia-colorscheme repo
ColorSchemes: move multiple schemes to the colorscheme repo
i18n: add translations to SchemeDownloader
ColorSchemeTab: move into own folder (+ SchemeDownloader)
2025-11-18 20:39:10 +01:00
notiant
ece5b95fb4 WeatherCard: add more left spacing to current weather 2025-11-18 20:10:19 +01:00
Lysec
956a33a148 Merge pull request #792 from bokicoder/main
Nix: add quickshell to dev shell
2025-11-18 20:02:47 +01:00
wxlyyy
6655e96204 Nix: add quickshell to dev shell 2025-11-19 02:52:17 +08:00
Lysec
78698fa546 Merge pull request #790 from notiant/patch-21
Remove double bottom spacing in panels & hide scrollbar in NScrollView if not necessary
2025-11-18 15:25:53 +01:00
ItsLemmy
6b6517cac3 TaskBar: added right click contextual menu 2025-11-18 09:09:31 -05:00
ItsLemmy
1d200e84a1 TaskBarGrouped: added right click contextual menu 2025-11-18 09:03:23 -05:00
Lemmy
653d3b3cb2 Merge pull request #787 from a-usr/nix-sync-flake
Nix: Sync Flake.lock
2025-11-18 08:52:27 -05:00
Lemmy
0428dd1b50 Merge pull request #688 from bokicoder/main
Nix: refactor & improve home-module
2025-11-18 08:27:12 -05:00
Lemmy
6df544d560 Merge pull request #791 from bokicoder/patch-1
Nix: default to using nixpkgs' quickshell
2025-11-18 08:26:46 -05:00
notiant
6d032e5159 Remove double bottom spacing in panels & hide scrollbar in NScrollView if not necessary 2025-11-18 10:12:44 +01:00
bokicoder
02e7588bca Nix: default to using nixpkgs' quickshell 2025-11-18 16:42:29 +08:00
ItsLemmy
c407edb4e9 BarWidgets: All the right click contextual menus. Fix #541 2025-11-17 22:47:17 -05:00
ItsLemmy
f3207b526f Tooltip: Update position on text content change, take 2 2025-11-17 22:10:58 -05:00
ItsLemmy
103bd91da8 Tooltip: recalculate position when text content changes. 2025-11-17 22:07:10 -05:00
ItsLemmy
66770625dd Tooltip: no longer needed to pass a screen explicitely 2025-11-17 22:02:10 -05:00
ItsLemmy
81c0c302d4 BarWidgets: open widget settings 2025-11-17 21:03:59 -05:00
ItsLemmy
3283aacf9b BarWidgets: First pass on contextual widget menu accessible from right-click.
Testing on volume widget for now.
2025-11-17 20:35:45 -05:00
ItsLemmy
1b114a0c5f Autoformatting 2025-11-17 19:53:17 -05:00
ItsLemmy
0b4a7b2bcd BarSysMon: fixed anchoring warning 2025-11-17 19:52:49 -05:00
ItsLemmy
f15c2a1e49 Settings: removed battery charging mode 2025-11-17 19:49:57 -05:00
Ly-sec
226213457f ChangelogPanel: update layout
shell: remove UpdateService
i18n: update ChangelogPanel text
2025-11-18 01:08:19 +01:00
Ly-sec
836029b567 Settings: move things to UpdateService & cleanup 2025-11-18 00:58:57 +01:00
Ly-sec
8034297fb7 ChangelogService: merge into UpdateService 2025-11-18 00:52:17 +01:00
Ly-sec
01b893c6e6 SimpleToast: follow notification transparency 2025-11-18 00:35:32 +01:00
Ly-sec
bc22bcac82 SimpleToast: adjust width to match notification width 2025-11-18 00:22:28 +01:00
Ly-sec
e36461acd2 SimpleToast: follow transparency slider 2025-11-18 00:05:52 +01:00
Lysec
069859828c Merge pull request #783 from MrDowntempo/fix/NoOverflowNSpinBox
Fix vertical centering and overflow of NSpinBox
2025-11-17 22:47:13 +01:00
Lysec
1ba73c6fcb Merge pull request #788 from ThatOneCalculator/fix/qt6-qmlformat
fix: only use qt6 qmlformat
2025-11-17 22:04:26 +01:00
Kainoa Kanter
63f1404598 package name 2025-11-17 12:59:02 -08:00
Kainoa Kanter
4a9cea1d84 fix: only use qt6 qmlformat 2025-11-17 12:57:32 -08:00
Corey Woodworth
8bca19f3f0 Add the ability to click and hold to speed up adjustments 2025-11-17 15:26:21 -05:00
ItsLemmy
3bb8d8a7c2 Fix: UserInterfaceTab accessing a non existing setting. 2025-11-17 15:15:43 -05:00
Lemmy
7b926b68af Merge pull request #782 from MrDowntempo/fix/BetterColorPicker
ColorCovert refactoring
2025-11-17 15:00:30 -05:00
ItsLemmy
5e398d387e BarSysMon: added tooltip to show mountpoint 2025-11-17 14:55:39 -05:00
ItsLemmy
f1d714ad9a Cleanup: replaced a bunch of Screen by their proper "screen" 2025-11-17 14:53:47 -05:00
John
7453a7c5d3 Nix: Sync Flake.lock 2025-11-17 20:46:17 +01:00
ItsLemmy
2ae5aa90c9 BarSysMon: you can now select which disk mount point to monitor storage. 2025-11-17 14:29:32 -05:00
ItsLemmy
ca5f5cd506 BarPill: always prioritize hover color even if force open is true 2025-11-17 14:05:08 -05:00
ItsLemmy
2bf4b8ee71 BarPill: fix Text hover color to ensure readability. 2025-11-17 13:55:22 -05:00
ItsLemmy
ca64c4b436 BarTab: Use a regular NLabel for capsule opacity. 2025-11-17 13:45:56 -05:00
Corey Woodworth
4da1b08e19 Fix vertical centering and overflow of NSpinBox 2025-11-17 13:09:29 -05:00
Corey Woodworth
22fefb3a8b Refactor ColorsConvert.js 2025-11-17 11:42:32 -05:00
Corey Woodworth
c223737fd7 Move javascript color conversion functions to ColorsConvert.js 2025-11-17 11:11:25 -05:00
Ly-sec
bb8107727c initial commit 2025-11-17 16:35:22 +01:00
Ly-sec
595ad0bb20 Taskbar: fix color 2025-11-17 16:27:25 +01:00
Ly-sec
28e6fcdfe4 Taskbar: adjust height to match other widgets 2025-11-17 15:51:30 +01:00
ItsLemmy
063ca70c57 Autoformat 2025-11-17 08:16:18 -05:00
Lysec
48fb52dfe4 Merge pull request #781 from lonerOrz/ipc/dock
feat: Add IPC command to toggle dock visibility
2025-11-17 14:12:34 +01:00
Lemmy
a7aa38fe1c Merge pull request #778 from lonerOrz/feat/bar
Feature: Add capsule opacity setting with conditional UI
2025-11-17 08:10:54 -05:00
Ly-sec
0d478fc998 AudioService: rework 2025-11-17 13:54:58 +01:00
Ly-sec
d4fb4f5889 qmlfmt: add user info to install package 2025-11-17 13:31:08 +01:00
Ly-sec
d06f111c9a Taskbar: fix height 2025-11-17 13:21:01 +01:00
loner
cd10f16b61 feat: Add IPC command to toggle dock visibility 2025-11-17 19:52:23 +08:00
loner
b2bfb71a91 fix: DarkMode widget to use unified Style.capsuleColor 2025-11-17 11:05:58 +08:00
loner
b79ce196a6 Unify the tray background color 2025-11-17 11:05:58 +08:00
loner
24b8eeb1f4 feat: Optimize capsule color computation by using Style.qml property 2025-11-17 11:05:58 +08:00
loner
a201b8a2c8 fix: Fix overlapping opacity in BarPill components 2025-11-17 11:05:58 +08:00
loner
609c9900f7 Add Chinese translation for capsule opacity setting 2025-11-17 11:05:58 +08:00
loner
f2ffed74be Add Turkish translation for capsule opacity setting 2025-11-17 11:05:57 +08:00
loner
660287c7a1 Add Ukrainian translation for capsule opacity setting 2025-11-17 11:05:57 +08:00
loner
ada3d7abf2 Add Russian translation for capsule opacity setting 2025-11-17 11:05:57 +08:00
loner
89a5efe6d1 Add Portuguese translation for capsule opacity setting 2025-11-17 11:05:57 +08:00
loner
83edb704a1 Add Dutch translation for capsule opacity setting 2025-11-17 11:05:57 +08:00
loner
1f5b7ab3a1 Add Spanish translation for capsule opacity setting 2025-11-17 11:05:57 +08:00
loner
8f6d1e06d2 Add German translation for capsule opacity setting 2025-11-17 11:05:57 +08:00
loner
aee415e82e Add French translation for capsule opacity setting 2025-11-17 11:05:57 +08:00
loner
a46c76b9d5 feat(bar): Add capsule opacity setting with conditional slider in bar settings 2025-11-17 11:05:57 +08:00
ItsLemmy
4f0bf28f06 MediaMini: showArtistFirst i18n 2025-11-16 21:04:58 -05:00
ItsLemmy
474598ccae MediaMini: showArtistFirst by default 2025-11-16 20:57:25 -05:00
ItsLemmy
0426918be6 Autoformat 2025-11-16 20:56:58 -05:00
Lemmy
792c6848c4 Merge pull request #761 from alaughlin/media_manager_toggle_artist_first
MediaMini: Support showing artist first
2025-11-16 20:56:20 -05:00
Lemmy
40f68c5325 Merge branch 'main' into media_manager_toggle_artist_first 2025-11-16 20:55:59 -05:00
Lemmy
dddd934f06 Merge pull request #777 from MrDowntempo/fix/BetterWorkspaceWidget
Fix/better workspace widget and TaskbarGrouped
2025-11-16 20:50:32 -05:00
ItsLemmy
dc08751ec2 Multi-Monitors: new setting to explicitely disable panels to appear on screen without bar.
On my setup this saves about 130MB per 1080p monitor where the bar is
not shown. I only interact with noctalia on my main screen.
2025-11-16 20:49:56 -05:00
Corey Woodworth
1f0485dff2 Bugfixes. Better Vertical Bar Support 2025-11-16 20:09:14 -05:00
Corey Woodworth
064b894fbc Bugfixes. Wrong setting label, and better vertical bar support 2025-11-16 19:55:19 -05:00
Corey Woodworth
8ec6040c29 A little visual cleanup to TasbarGrouped, and added Name+Index option to Workspace widget too. 2025-11-16 19:42:30 -05:00
ItsLemmy
df37511089 Panels: code simplification 2025-11-16 19:40:51 -05:00
Lemmy
202d974a82 Merge pull request #776 from MrDowntempo/fix/OneLessToggle
Simplified TaskbarGrouped settings by removing unneeded toggle
2025-11-16 18:01:18 -05:00
MrDowntempo
8e18f79acd Merge branch 'main' into fix/OneLessToggle 2025-11-16 17:53:47 -05:00
Corey Woodworth
d6de45275f Simplified TaskbarGrouped settings by removing unneeded toggle and adding its functionality to the combobox. 2025-11-16 17:32:18 -05:00
ItsLemmy
39fd2517c3 BatteryManager: removed due to limited compatibility.
Might be reintroduced later if we decice on a proper back-end.
2025-11-16 17:27:11 -05:00
ItsLemmy
d8adaf4d4b Deleted SystemTrayService. 2025-11-16 17:08:08 -05:00
ItsLemmy
3ff5b7639f Switched to qmlformat. 2025-11-16 17:07:03 -05:00
ItsLemmy
32905224b9 Preparing the switch to qmlformat. 2025-11-16 16:44:47 -05:00
ItsLemmy
9919e0419e OSD: fix exclusion mode. 2025-11-16 15:53:14 -05:00
ItsLemmy
57b8be1504 Color and Style: readonly everywhere and simplification, reducing the number of bindings. 2025-11-16 15:52:16 -05:00
Ly-sec
0706285048 OSD: possible solution for #774 2025-11-16 19:38:28 +01:00
Adam Laughlin
4fa6696a1c whoops 2025-11-16 13:31:41 -05:00
Adam Laughlin
a6aa162db6 ugh 2025-11-16 13:31:41 -05:00
Adam Laughlin
36e0ef91bc MediaMini: Support showing artist first 2025-11-16 13:31:41 -05:00
Ly-sec
c09bf13c58 Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell 2025-11-16 19:00:24 +01:00
Ly-sec
7280d827db i18n: preserve full locale for regional formatting (en_GB vs en_US) 2025-11-16 19:00:18 +01:00
ItsLemmy
9e454bd608 qmlfmt: dont fallback to qmlformat. 2025-11-16 11:52:47 -05:00
ItsLemmy
13532cc479 TaskbarGrouped: fixed translations. Replaced number(s) by label(s) 2025-11-16 11:51:20 -05:00
Lemmy
31a93fb211 Merge pull request #757 from Sighthesia/fix_active_window_layout_gap
BarWidgetLoader: Remove layout space left by hidden widgets
2025-11-16 10:46:41 -05:00
Ly-sec
01b44e0b28 WallHaven: use sort by relevance as default 2025-11-16 16:31:49 +01:00
Lysec
de200a929c Merge pull request #773 from bokicoder/patch-2
Fix indentation for quickshell input in flake.nix
2025-11-16 15:45:44 +01:00
bokicoder
1a38c6d665 Fix indentation for quickshell input in flake.nix 2025-11-16 22:44:42 +08:00
Ly-sec
8af9643577 flake: update commit hash 2025-11-16 15:30:21 +01:00
ItsLemmy
9d3dbd33b2 NixOS: pin Quickshell to release 0.2.1 2025-11-16 07:18:43 -05:00
Ly-sec
8e36b68789 WallpaperPanel: wallhaven respects file name toggle 2025-11-16 12:27:10 +01:00
Ly-sec
78919bcc13 i18n: update wallhaven page translation 2025-11-16 12:25:56 +01:00
Ly-sec
8ed927ab0a MainScreen: hide dimming while window close animation instead of afterwards 2025-11-16 11:57:20 +01:00
Lysec
6c80fd3740 Merge pull request #770 from notiant/patch-20
Hide scrollbar in NListView if it's not necessary
2025-11-16 11:54:43 +01:00
notiant
ef1b7cfd89 Hide scrollbar in NListView if not necessary 2025-11-16 11:05:25 +01:00
Ly-sec
098e7f5645 SessionMenuTab: disabling entries works again (fixes #769) 2025-11-16 10:20:43 +01:00
Ly-sec
a8787aa241 WallhavenSettingsPopup: layout fixes 2025-11-16 10:11:14 +01:00
ItsLemmy
6494aec955 WallpaperPanel: give focus to the gridview when clicking in it, so we can use keyboard 2025-11-15 21:59:20 -05:00
ItsLemmy
2735a489b5 WallpaperPanel: Made Wallhaven wallpapers work with multiple monitor selective apply + streamlined UI. 2025-11-15 21:53:52 -05:00
ItsLemmy
b120af43fe Back to -dev 2025-11-15 21:05:43 -05:00
ItsLemmy
f520466063 v3.1.1 2025-11-15 21:04:12 -05:00
ItsLemmy
ead2b82680 Tray: reverted all the mitigation now that the real issue has been fixed in Quickshell. 2025-11-15 21:01:48 -05:00
ItsLemmy
3f1bcf1ae8 TrayMenu: tweaks 2025-11-15 19:56:18 -05:00
ItsLemmy
f9192f0424 TrayMenu: added debouncer to increase robustness. 2025-11-15 19:31:06 -05:00
ItsLemmy
cea0739a5e Tray: Fix Steam lock-up. 2025-11-15 19:07:34 -05:00
Ly-sec
1826d6a00d Release v3.1.0 2025-11-15 23:43:55 +01:00
Ly-sec
ab8e14d0f5 TrayMenu: more cleanup 2025-11-15 22:57:45 +01:00
Ly-sec
5121d73a43 TrayMenu: more cleanup 2025-11-15 22:57:26 +01:00
Ly-sec
fc033081bd TrayMenu: cleanup 2025-11-15 22:54:39 +01:00
Ly-sec
e129da8f46 TrayMenu: close with single outside click 2025-11-15 22:51:32 +01:00
Ly-sec
07f8bd62b4 TrayMenu: reset shouldLoadMenu properly 2025-11-15 22:46:49 +01:00
Ly-sec
53d04df75d Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell 2025-11-15 22:32:49 +01:00
Ly-sec
ebe50561a8 TrayMenu: fix tray menu allocation per tray item 2025-11-15 22:32:40 +01:00
ItsLemmy
04abff2ee4 Default settings 2025-11-15 16:25:18 -05:00
ItsLemmy
91f098071d TrayMenuWindow: no relative path 2025-11-15 16:25:12 -05:00
Ly-sec
f28452a258 TrayMenu: defer opener.children access to prevent init freeze 2025-11-15 22:23:23 +01:00
ItsLemmy
131d3a095e autofmt 2025-11-15 15:57:05 -05:00
ItsLemmy
3685b8c9f7 TrayMenu: commented out until we figure why it does not work with the latest quickshell-git commits 2025-11-15 15:55:59 -05:00
Ly-sec
c730ac4f34 WallhavenSettingsPopup: fix apply button clickthrough 2025-11-15 19:52:08 +01:00
Ly-sec
0314d2445e WallpaperPanel: add settings popup for wallhaveb
WallhavenSettingsPopup: move all settings in here
WallhavenService: adjust some things
2025-11-15 19:48:19 +01:00
Ly-sec
8010b32c29 Settings: fix migration 2025-11-15 18:36:04 +01:00
Ly-sec
34e845d8fd Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell 2025-11-15 18:03:50 +01:00
Ly-sec
9576daf70a WallpaperPanel: add wallhaven support 2025-11-15 18:03:26 +01:00
ItsLemmy
adfe4817e0 Bar-SessionMenu: added setting to pick your favorite color. 2025-11-15 10:17:20 -05:00
ItsLemmy
2b5010f477 Settings-default and translations 2025-11-15 10:01:10 -05:00
Ly-sec
6b92d2d4c2 UserInterfaceTab: remove dimDesktop toggle, only use dimming slider
Settings: add migration for dimDesktop -> dimmerOpacity
Autoformat
2025-11-15 15:46:29 +01:00
Lysec
e1e6f36cea Merge pull request #759 from dmolin/dimmer-opacity
Add desktop dimmer opacity slider when "Dim Desktop" is toggled ON.
2025-11-15 15:36:36 +01:00
Lysec
df2faf3267 Merge pull request #760 from DrWeb56/main
Update ru.json
2025-11-15 15:30:49 +01:00
DrWeb56
c635f84eba Update ru.json
Translated a few lines that weren’t translated before.
2025-11-15 19:26:25 +05:00
Lysec
adfc8d033d Merge pull request #758 from Aerosnail/fix/efivarfs-audio-stutter
SystemStatService: don't report efivarfs usage% to avoid stutters
2025-11-15 15:26:23 +01:00
ItsLemmy
267bc00097 SmartPanels: improving Hyprland focus issues. 2025-11-15 09:17:21 -05:00
Davide
996935af2b Add desktop dimmer opacity slider 2025-11-15 13:24:11 +00:00
Aerosnail
049d313d51 SystemStatService: skip efivarfs to avoid stutters 2025-11-15 13:55:43 +01:00
Ly-sec
a81cbb587e Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell 2025-11-15 13:48:42 +01:00
Ly-sec
7176e890af SessionMenuTab: add per entry countdown toggle (implements #746
)
2025-11-15 13:48:39 +01:00
Lysec
23962d9290 Merge pull request #755 from mochouaaaaa/main
fix(qmlfmt): Add compatibility for qmlformat command
2025-11-15 13:05:33 +01:00
Lysec
e7d373f2cc Merge pull request #756 from notiant/patch-19
Add wallpaper selector to settings
2025-11-15 13:04:37 +01:00
Ly-sec
79b079a436 LockScreen: PAM always uses USER env var instead of displayName 2025-11-15 13:01:47 +01:00
notiant
810efe6ad3 Add wallpaper selector to settings 2025-11-15 10:47:18 +01:00
Sighthesia
4ca358b5ba ActiveWindow: fix layout gap left by hidden active window widget 2025-11-15 17:38:39 +08:00
mochou
b692275c31 fix(qmlfmt): Add compatibility for qmlformat command
- Modifies Bin/dev/qmlfmt.sh to check for both 'qmlfmt' and 'qmlformat' executables.
- Uses 'qmlfmt' with its original arguments if found.
- If 'qmlfmt' is not found, uses 'qmlformat' with arguments for 2-space indentation and essential semicolons.
- Exits with an error if neither command is available.
- This makes the QML formatting pre-commit hook more robust.
2025-11-15 17:17:03 +08:00
Ly-sec
6da74a800f Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell 2025-11-15 03:51:30 +01:00
Ly-sec
33eb71f0d8 ColorSchemeTab: properly check for discord/code 2025-11-15 03:51:03 +01:00
ItsLemmy
edef856895 MainScreen+SmartPanel: Allow click on the bar when a panel is open. 2025-11-14 20:26:05 -05:00
ItsLemmy
312d1b6d22 Default settings + auto-formatting 2025-11-14 20:02:28 -05:00
ItsLemmy
02d77ff445 MainScreen: removed unecessary mouse area 2025-11-14 20:01:54 -05:00
ItsLemmy
d2bd621abe Revert "SmartPanel: Tighter sizing by using the minimum size."
This reverts commit 0eb82bce98.
2025-11-14 19:57:04 -05:00
Ly-sec
42f12e8d56 Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell 2025-11-14 22:33:42 +01:00
Ly-sec
faaf5b7464 AudioService: possible fix for misbehaviour 2025-11-14 22:33:37 +01:00
ItsLemmy
51940a9fc0 Formatting 2025-11-14 14:20:03 -05:00
ItsLemmy
c6fcfffbe6 i18n update 2025-11-14 14:16:40 -05:00
Lemmy
867abc6dc8 Merge pull request #729 from Sighthesia/system_monitor_high_pressure_highlight
SystemMonitor: add visual highlights for high-pressure metrics
2025-11-14 14:04:05 -05:00
Lemmy
b1dfcb58ba Merge branch 'main' into system_monitor_high_pressure_highlight 2025-11-14 14:03:56 -05:00
Lemmy
9890174aeb Merge pull request #742 from atheeq-rhxn/main
MangoWC support
2025-11-14 14:02:57 -05:00
Lemmy
dd4cf6e422 Merge pull request #747 from oluijks/user-display-name
HostService: add user display name and use it in UI
2025-11-14 14:02:13 -05:00
Lemmy
6cb45d5d08 Merge pull request #749 from oluijks/bar-hide-tooltip-while-adjusting
Bar/Widgets: hide volume tooltips while adjusting
2025-11-14 14:01:28 -05:00
ItsLemmy
7bb27b6c29 Settings: remove double sessionMenu tab 2025-11-14 13:51:51 -05:00
atheeq-rhxn
c0e649b7fe Merge with noctalia main 2025-11-14 20:52:01 +05:30
atheeq-rhxn
73269047ca fix: show empty workspaces when hideUnoccupied enabled 2025-11-14 20:48:46 +05:30
ItsLemmy
a0dcd97aa6 TrayMenu: minimal fade-in animation when appearing. 2025-11-14 10:11:57 -05:00
ItsLemmy
d3a98ca1d6 Merge branch 'main' of github.com:noctalia-dev/noctalia-shell 2025-11-14 10:00:29 -05:00
ItsLemmy
0eb82bce98 SmartPanel: Tighter sizing by using the minimum size. 2025-11-14 10:00:20 -05:00
Ly-sec
9451b18a3d Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell 2025-11-14 15:40:31 +01:00
Ly-sec
717ea441b0 Settings: cleanup 2025-11-14 15:40:26 +01:00
ItsLemmy
a32d999e46 SmartPaneWindow: unload when not in use 2025-11-14 09:26:17 -05:00
Sighthesia
26d30bdaa5 i18n: add ai translations for system monitor custom threshold highlight color settings 2025-11-14 22:03:38 +08:00
Sighthesia
96c750b2bb SystemMonitorCard: apply threshold highlight for mertrics in control center 2025-11-14 21:32:41 +08:00
Ly-sec
4129b47559 OSD: fix output OSD logic 2025-11-14 14:00:12 +01:00
Ly-sec
f64a2fae4e OSD: fix initial output volume osd 2025-11-14 13:54:59 +01:00
Ly-sec
1573b5f128 OSD: fix initial input volume osd 2025-11-14 13:31:41 +01:00
Ly-sec
4088c13eec AudioService: preserve input value (fixes 0% volume after suspend... hopefully)
autoformat
2025-11-14 13:27:54 +01:00
Sighthesia
f1576a61a5 SystemMonitor: add custom color settings for system monitor threshold settings 2025-11-14 20:20:52 +08:00
atheeq-rhxn
95d252a949 fix: single monitor support by conditional -o usage 2025-11-14 17:05:34 +05:30
atheeq-rhxn
ee22bb9e21 feat: add multi-monitor support 2025-11-14 15:29:46 +05:30
Olaf Luijks
545e72c256 Bar/Widgets: hide volume tooltips while adjusting 2025-11-14 10:56:39 +01:00
Sighthesia
ea8ddcaef8 i18n: add ai translations for system monitor threshold settings 2025-11-14 17:18:52 +08:00
Sighthesia
4b2e8b6ef0 SystemMonitor: transfer system monitor threshold settings to gloabal setting tab 2025-11-14 17:18:23 +08:00
atheeq-rhxn
15e8d76a90 Merge with noctalia main 2025-11-14 14:14:21 +05:30
Ly-sec
68e83f4d63 Matugen/Discord: fix Vencord again 2025-11-14 08:21:54 +01:00
Ly-sec
5bd844ec51 Matugen/Discord: fix Vencord path 2025-11-14 08:18:05 +01:00
Ly-sec
2d99a2c233 Matugen/Code: fix VSCodium support 2025-11-14 07:56:20 +01:00
Ly-sec
96ae2c0d6f Matugen/Code: add VSCodium support 2025-11-14 07:40:15 +01:00
Olaf Luijks
2c5c462aaa HostService: add user display name and use it in UI
- Add username/envRealName/realName and displayName to HostService
- Resolve real name from `getent passwd $USER` with NOCTALIA_REALNAME override
- Use HostService.displayName on the lock screen and in the Control Center profile card
2025-11-14 04:15:55 +01:00
Sighthesia
d51dbb295b Merge remote-tracking branch 'upstream' into system_monitor_high_pressure_highlight 2025-11-14 09:33:01 +08:00
ItsLemmy
04fcb94ebc Revert "Wallpaper: improved image switching to avoid main thread micro freeze."
This reverts commit 6e368601b4.
2025-11-13 15:45:46 -05:00
Ly-sec
aa0a6c2cdd Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell 2025-11-13 21:01:15 +01:00
Ly-sec
aace0a8ada TaskbarGrouped: add scroll support
TaskbarGroupoedSettings: add colorize, hide when unoccupied, name display settings
2025-11-13 21:00:12 +01:00
ItsLemmy
6004807776 AllBackgrounds: centralize panel background color computation. 2025-11-13 14:43:14 -05:00
ItsLemmy
0ab9aa1c0e Tray: fix screen access that does not exists on first load. 2025-11-13 14:42:42 -05:00
ItsLemmy
17ff97f8c5 WLR Layer Name: noctalia-screen-* changed to noctalia-background-* 2025-11-13 13:28:47 -05:00
atheeq-rhxn
06007549a3 fix: resolve active window detection 2025-11-13 22:56:23 +05:30
ItsLemmy
6e368601b4 Wallpaper: improved image switching to avoid main thread micro freeze. 2025-11-13 12:00:15 -05:00
atheeq-rhxn
a49f4ba009 fix: resolve MangoService window parsing scope and add KeyboardLayoutService import 2025-11-13 22:06:06 +05:30
Ly-sec
80493adaed Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell 2025-11-13 16:54:50 +01:00
Ly-sec
e1f692be04 SettingsWindow: reorder SideBar 2025-11-13 16:54:45 +01:00
atheeq-rhxn
3a80389ca4 fix(workspace): use tag command instead of view to prevent window moving 2025-11-13 21:21:15 +05:30
Ly-sec
52071efc08 SettingsWindow make SideBar more compact 2025-11-13 16:50:24 +01:00
ItsLemmy
3d81d445a3 Network: support for ethernet-off icon even tho the logic is not in yet. 2025-11-13 10:26:51 -05:00
Lemmy
889bbfcb4f Merge pull request #739 from notiant/patch-17
NetworkService: re-add improved internet connectivity check
2025-11-13 10:06:44 -05:00
atheeq-rhxn
8ba0a0a51f refactor: Improve MangoWC implementation 2025-11-13 20:27:40 +05:30
ItsLemmy
9b2abd313d Tray: fix drawer toggle/caret theming in light theme. 2025-11-13 09:52:29 -05:00
Ly-sec
e98f01faa1 Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell 2025-11-13 15:41:52 +01:00
Ly-sec
4fd5865978 DistroService: rename to HostService 2025-11-13 15:41:46 +01:00
Lysec
c2e56fcd36 Merge pull request #738 from bokicoder/patch-1
SessionMenu: add hibernate option
2025-11-13 15:23:29 +01:00
Lemmy
6178c34ec0 Merge pull request #740 from notiant/patch-18
small fix for German translation
2025-11-13 09:19:29 -05:00
ItsLemmy
1288924f87 Dragging: removed a lot of dead code since we no longer support panel dragging. 2025-11-13 09:16:52 -05:00
ItsLemmy
278fbb7f76 Settings: SystemMonitor tab, hidden for now, until it gets content. 2025-11-13 09:13:03 -05:00
notiant
fcc8394e07 small fix for German translation 2025-11-13 15:12:07 +01:00
ItsLemmy
8b0c615322 Launcher: restore Tab/BackTab navigation. Fix #737 2025-11-13 08:58:40 -05:00
notiant
ac9e316f56 NetworkService: re-add improved internet connectivity check
Added internet connectivity check process and timer.
2025-11-13 14:58:31 +01:00
ItsLemmy
205e73e8e8 Cava: fix activation logic due to new panel structure. 2025-11-13 08:43:02 -05:00
ItsLemmy
04439699ae Keyboard Shortcuts: replaced and fixed shiftTab to backTab. 2025-11-13 08:28:28 -05:00
ItsLemmy
7021653764 OSD: Autoformatting - removing all those semicolons 2025-11-13 08:24:45 -05:00
ItsLemmy
454733d80e Typography: Semi-Bold NHeader and NLabel 2025-11-13 08:16:17 -05:00
wxlyyy
14b0ef320a SessionMenu: add hibernate option 2025-11-13 18:30:47 +08:00
atheeq-rhxn
e814ba5827 feat: Add MangoWC compositor support 2025-11-13 14:48:20 +05:30
Lysec
d044562016 Merge pull request #736 from mochouaaaaa/main
Add OSD background opacity setting
2025-11-13 09:29:25 +01:00
Sheri Downs
9a92fa0802 Merge branch 'noctalia-dev:main' into main 2025-11-13 13:52:14 +08:00
mochou
36d4c10202 feat: Add OSD background opacity setting
- Add `OSD` background transparency
- Add `OSD` background transparency translation
2025-11-13 13:50:13 +08:00
ItsLemmy
e4ef05f58f Tray: warning fix 2025-11-12 23:48:09 -05:00
ItsLemmy
6083d8242b TrayMenu: improved positionning 2025-11-12 23:43:44 -05:00
ItsLemmy
aca82f810c TrayMenu: Fixed potential glitch of submenus by replacing hover by click + improved submenu positionnig logic. 2025-11-12 23:16:59 -05:00
Sighthesia
58ee164792 SystemMonitor: unify highlight colors, change warning color to mTertiary 2025-11-13 12:00:29 +08:00
ItsLemmy
7bf3601a52 Back to -dev 2025-11-12 21:42:55 -05:00
ItsLemmy
e1ce5a6b7c v3.0.11 2025-11-12 21:41:58 -05:00
ItsLemmy
632280a470 i18n: update 2025-11-12 21:34:56 -05:00
ItsLemmy
f6eb76aa74 Wallpapers: hide filenames should default to false 2025-11-12 21:34:50 -05:00
Lemmy
4ce2fb5324 Merge pull request #733 from onelocked/main
WallpaperSettings: Add a Hide Filename toggle
2025-11-12 21:33:35 -05:00
ItsLemmy
5e567bfcca MediaCard: update wallpaper dynamically. Fix #734 2025-11-12 21:28:38 -05:00
Sighthesia
f067d585b5 SystemMonitor: align the height of horizontal bar highlight rectangles with the pill of the Workspace 2025-11-13 10:26:00 +08:00
ItsLemmy
b9d3040786 NCircleStat: repaint on fillcolor change
+ removed gradient which does not work on an Arc anyways.
2025-11-12 21:22:33 -05:00
Sighthesia
12a4fe2653 SystemMonitor: change metrics highlighting method on vertical bar to text highlighting 2025-11-13 10:18:57 +08:00
ItsLemmy
337a830cf1 Panel: Cleaned keyboard shorcuts. 2025-11-12 20:51:32 -05:00
ItsLemmy
2eb59bed4a Keyboard: Cleaned keyboard shortcuts dispatch
+ SetupWizard cleanup (NImageCached can NOT be invisible)
2025-11-12 20:46:15 -05:00
ItsLemmy
39784134af Panels: proper focus management with the new architecture. 2025-11-12 18:45:15 -05:00
ItsLemmy
81e9bd55fa Merge branch 'panel-content' 2025-11-12 18:34:18 -05:00
onelocked
e4e63e1f45 WallpaperSettings: Add a Hide Filename toggle
Added a 'Hide Filename' toggle that hides the filenames of wallpapers
for a more aesthetic look
2025-11-12 22:22:35 +00:00
Ly-sec
0db78a0abe UserInterface: add universal opacity slider (except for bar)
LauncherTab: remove opacity slider
Settings: add migration
i18n: add opacity slider translation
2025-11-12 20:32:11 +01:00
Ly-sec
88a968aa21 Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell 2025-11-12 19:47:26 +01:00
Ly-sec
dbedf6c25c SessionMenuTab: added tab & SessionMenu settings
SessionMenu: hook up settings, update height calculation
i18n: add translations
2025-11-12 19:46:19 +01:00
ItsLemmy
1e5d82b615 Merge branch 'main' of github.com:noctalia-dev/noctalia-shell 2025-11-12 13:14:43 -05:00
ItsLemmy
cc08bc320e Bar: Fix potential blurry icons due to half pixel misalignment. 2025-11-12 13:14:38 -05:00
Lemmy
4f6ed4335a Merge pull request #680 from kurrycat2004/main
feat(custom button): Add option to refresh CustomButton text on click
2025-11-12 12:05:16 -05:00
kurrycat
7be6ea57a5 don't open settings when clicking on empty command custom button with update-text enabled 2025-11-12 16:51:37 +01:00
Ly-sec
37d19a3290 Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell 2025-11-12 16:40:31 +01:00
Ly-sec
437fe0f9e8 LockScreen: update keyboardLayout usage 2025-11-12 16:40:27 +01:00
wxlyyy
55addb651c Nix: refactor & improve home-module 2025-11-12 22:49:06 +08:00
ItsLemmy
9215df3fcb Tray: Close drawer when a tray item is actioned. 2025-11-12 09:12:04 -05:00
ItsLemmy
f15e900a21 Default settings update 2025-11-12 09:11:49 -05:00
ItsLemmy
9b2b4b4bd1 TrayDrawer: proper auto sizing when elements are added or removed. 2025-11-12 08:38:30 -05:00
ItsLemmy
875aca2a36 Wi-Fi + BT: Right clicking icons on the bar or control center to enable/disable the feature immediately. 2025-11-12 08:28:02 -05:00
ItsLemmy
d781f52e1a NIconButton: add missing wheel signal argument. 2025-11-12 08:21:22 -05:00
ItsLemmy
e67f27f58d SmartPanel: added exclusiveKeyboard flag. Should fix launcher focus on hyprland. 2025-11-12 08:00:59 -05:00
Lysec
e35239d512 Merge pull request #731 from bokicoder/patch-2
Calendar: add missing import
2025-11-12 13:27:44 +01:00
bokicoder
772fb1da7d Calendar: add missing import 2025-11-12 20:24:28 +08:00
Sighthesia
be780971d6 SystemMonitor: ensure critical thresholds are not less than warning thresholds 2025-11-12 13:28:17 +08:00
Sighthesia
fa880e8390 SystemMonitor: restore metrics' icon color 2025-11-12 13:22:29 +08:00
ItsLemmy
b3fbe7eff3 Panels: splitted bg and content for improved perfs. 2025-11-11 22:53:01 -05:00
Sighthesia
f616aa64c5 i18n: add ai translations for system monitor threshold highlighting
- Added threshold settings for visual indicators in German, English, Spanish, French, Portuguese, Russian, Turkish, Ukrainian, and Chinese.
2025-11-12 11:07:07 +08:00
Sighthesia
ccbfa926dd SystemMonitor: add configurable thresholds for system monitor widget 2025-11-12 11:05:41 +08:00
ItsLemmy
3d6e1dc7d9 Back to -dev 2025-11-11 21:04:23 -05:00
kurrycat
b717baf4ba allow update-text toggle without command + disable update-text toggle in
text stream mode
2025-11-12 00:16:35 +01:00
kurrycat
4ea011b72a disable update-text toggle by default 2025-11-11 23:57:40 +01:00
kurrycat
c2278bdd2d add missing import 2025-11-11 23:57:40 +01:00
kurrycat
fb126cc86c add option to refresh CustomButton text on click 2025-11-11 23:57:40 +01:00
Sighthesia
84e413f316 SystemMonitor: add warning and critical state indicators for disk usage 2025-11-12 01:08:26 +08:00
Sighthesia
952e5ecbde SystemMonitor: add warning and critical state indicators for CPU, temperature, and memory 2025-11-11 23:25:41 +08:00
352 changed files with 25627 additions and 15102 deletions

View File

@@ -1,5 +1,7 @@
# Pull Request
<!-- If this is a color scheme PR, please create it in https://github.com/noctalia-dev/noctalia-colorschemes instead -->
## Motivation
Provide a clear and concise explanation of what this PR does and why it is needed.

View File

@@ -1,38 +0,0 @@
{
"dark": {
"mPrimary": "#C4A82E",
"mOnPrimary": "#0E1015",
"mSecondary": "#D14358",
"mOnSecondary": "#0E1015",
"mTertiary": "#00A66C",
"mOnTertiary": "#0E1015",
"mError": "#B32D2D",
"mOnError": "#0E1015",
"mSurface": "#0C1017",
"mOnSurface": "#5C8AC4",
"mSurfaceVariant": "#11151D",
"mOnSurfaceVariant": "#9B6BC1",
"mOutline": "#45A0D6",
"mShadow": "#090D13",
"mHover": "#00A66C",
"mOnHover": "#0E1015"
},
"light": {
"mPrimary": "#00B8B3",
"mOnPrimary": "#1A1914",
"mSecondary": "#D957A0",
"mOnSecondary": "#1A1914",
"mTertiary": "#45D395",
"mOnTertiary": "#1A1914",
"mError": "#E63E5D",
"mOnError": "#1A1914",
"mSurface": "#DAE6E8",
"mOnSurface": "#1A1914",
"mSurfaceVariant": "#C8DEE6",
"mOnSurfaceVariant": "#1A1914",
"mOutline": "#7B52AB",
"mShadow": "#B8D4E6",
"mHover": "#45D395",
"mOnHover": "#1A1914"
}
}

View File

@@ -1,33 +0,0 @@
# Colors (Cyberpunk)
[colors.bright]
black = '#2b314a'
blue = '#4f8fff'
cyan = '#43c9ff'
green = '#89d36a'
magenta = '#9d6dff'
red = '#e64572'
white = '#d8e0ff'
yellow = '#d7a23a'
[colors.cursor]
cursor = '#d8e0ff'
text = '#0a0d14'
[colors.normal]
black = '#0c0e14'
blue = '#4f8fff'
cyan = '#43c9ff'
green = '#89d36a'
magenta = '#9d6dff'
red = '#e64572'
white = '#b7c4f2'
yellow = '#d7a23a'
[colors.primary]
background = '#0a0d14'
foreground = '#d8e0ff'
[colors.selection]
background = '#d8e0ff'
text = '#0a0d14'

View File

@@ -1,33 +0,0 @@
# Colors (Cyberpunk Light)
[colors.bright]
black = '#a1a6c5'
blue = '#2e7de9'
cyan = '#007197'
green = '#587539'
magenta = '#9854f1'
red = '#f52a65'
white = '#3760bf'
yellow = '#8c6c3e'
[colors.cursor]
cursor = '#3760bf'
text = '#e1e2e7'
[colors.normal]
black = '#e9e9ed'
blue = '#2e7de9'
cyan = '#007197'
green = '#587539'
magenta = '#9854f1'
red = '#f52a65'
white = '#6172b0'
yellow = '#8c6c3e'
[colors.primary]
background = '#e1e2e7'
foreground = '#3760bf'
[colors.selection]
background = '#99a7df'
text = '#3760bf'

View File

@@ -1,27 +0,0 @@
[cursor]
color=0a0d14 d8e0ff
[colors]
foreground=d8e0ff
background=0a0d14
regular0=0c0e14
regular1=e64572
regular2=89d36a
regular3=d7a23a
regular4=4f8fff
regular5=9d6dff
regular6=43c9ff
regular7=b7c4f2
bright0=2b314a
bright1=e64572
bright2=89d36a
bright3=d7a23a
bright4=4f8fff
bright5=9d6dff
bright6=43c9ff
bright7=d8e0ff
selection-foreground=0a0d14
selection-background=d8e0ff

View File

@@ -1,22 +0,0 @@
[colors]
foreground=3760bf
background=e1e2e7
regular0=e9e9ed
regular1=f52a65
regular2=587539
regular3=8c6c3e
regular4=2e7de9
regular5=9854f1
regular6=007197
regular7=6172b0
bright0=a1a6c5
bright1=f52a65
bright2=587539
bright3=8c6c3e
bright4=2e7de9
bright5=9854f1
bright6=007197
bright7=3760bf
selection-foreground=3760bf
selection-background=99a7df
cursor=e1e2e7 3760bf

View File

@@ -1,23 +0,0 @@
palette = 0=#0c0e14
palette = 1=#e64572
palette = 2=#89d36a
palette = 3=#d7a23a
palette = 4=#4f8fff
palette = 5=#9d6dff
palette = 6=#43c9ff
palette = 7=#b7c4f2
palette = 8=#2b314a
palette = 9=#e64572
palette = 10=#89d36a
palette = 11=#d7a23a
palette = 12=#4f8fff
palette = 13=#9d6dff
palette = 14=#43c9ff
palette = 15=#d8e0ff
background = #0a0d14
foreground = #d8e0ff
cursor-color = #d8e0ff
cursor-text = #0a0d14
selection-background = #d8e0ff
selection-foreground = #0a0d14

View File

@@ -1,22 +0,0 @@
palette = 0=#e9e9ed
palette = 1=#f52a65
palette = 2=#587539
palette = 3=#8c6c3e
palette = 4=#2e7de9
palette = 5=#9854f1
palette = 6=#007197
palette = 7=#6172b0
palette = 8=#a1a6c5
palette = 9=#f52a65
palette = 10=#587539
palette = 11=#8c6c3e
palette = 12=#2e7de9
palette = 13=#9854f1
palette = 14=#007197
palette = 15=#3760bf
background = #e1e2e7
foreground = #3760bf
cursor-color = #3760bf
cursor-text = #e1e2e7
selection-background = #99a7df
selection-foreground = #3760bf

View File

@@ -1,23 +0,0 @@
color0 #0c0e14
color1 #e64572
color2 #89d36a
color3 #d7a23a
color4 #4f8fff
color5 #9d6dff
color6 #43c9ff
color7 #b7c4f2
color8 #2b314a
color9 #e64572
color10 #89d36a
color11 #d7a23a
color12 #4f8fff
color13 #9d6dff
color14 #43c9ff
color15 #d8e0ff
background #0a0d14
selection_foreground #0a0d14
cursor #d8e0ff
cursor_text_color #0a0d14
foreground #d8e0ff
selection_background #d8e0ff

View File

@@ -1,22 +0,0 @@
color0 #e9e9ed
color1 #f52a65
color2 #587539
color3 #8c6c3e
color4 #2e7de9
color5 #9854f1
color6 #007197
color7 #6172b0
color8 #a1a6c5
color9 #f52a65
color10 #587539
color11 #8c6c3e
color12 #2e7de9
color13 #9854f1
color14 #007197
color15 #3760bf
background #e1e2e7
selection_foreground #e1e2e7
cursor #3760bf
cursor_text_color #e1e2e7
foreground #3760bf
selection_background #3760bf

View File

@@ -1,31 +0,0 @@
[colors]
ansi = [
"#0c0e14",
"#e64572",
"#89d36a",
"#d7a23a",
"#4f8fff",
"#9d6dff",
"#43c9ff",
"#b7c4f2",
]
background = "#0a0d14"
brights = [
"#2b314a",
"#e64572",
"#89d36a",
"#d7a23a",
"#4f8fff",
"#9d6dff",
"#43c9ff",
"#d8e0ff",
]
cursor_bg = "#d8e0ff"
cursor_border = "#d8e0ff"
cursor_fg = "#0a0d14"
foreground = "#d8e0ff"
selection_bg = "#d8e0ff"
selection_fg = "#0a0d14"
[metadata]
name = "Noctalia"

View File

@@ -1,31 +0,0 @@
[colors]
ansi = [
"#e9e9ed",
"#f52a65",
"#587539",
"#8c6c3e",
"#2e7de9",
"#9854f1",
"#007197",
"#6172b0",
]
background = "#e1e2e7"
brights = [
"#a1a6c5",
"#f52a65",
"#587539",
"#8c6c3e",
"#2e7de9",
"#9854f1",
"#007197",
"#3760bf",
]
cursor_bg = "#3760bf"
cursor_border = "#3760bf"
cursor_fg = "#e1e2e7"
foreground = "#3760bf"
selection_bg = "#3760bf"
selection_fg = "#e1e2e7"
[metadata]
name = "Noctalia"

View File

@@ -1,38 +0,0 @@
{
"dark": {
"mPrimary": "#D3C6AA",
"mOnPrimary": "#232A2E",
"mSecondary": "#D3C6AA",
"mOnSecondary": "#232A2E",
"mTertiary": "#9DA9A0",
"mOnTertiary": "#232A2E",
"mError": "#E67E80",
"mOnError": "#232A2E",
"mSurface": "#232A2E",
"mOnSurface": "#859289",
"mSurfaceVariant": "#2D353B",
"mOnSurfaceVariant": "#D3C6AA",
"mOutline": "#D3C6AA",
"mShadow": "#475258",
"mHover": "#9DA9A0",
"mOnHover": "#232A2E"
},
"light": {
"mPrimary": "#434F55",
"mOnPrimary": "#D3C6AA",
"mSecondary": "#232a2e",
"mOnSecondary": "#D3C6AA",
"mTertiary": "#333c43",
"mOnTertiary": "#9DA9A0",
"mError": "#E66868",
"mOnError": "#9DA9A0",
"mSurface": "#9DA9A0",
"mOnSurface": "#232A2E",
"mSurfaceVariant": "#BEC5B2",
"mOnSurfaceVariant": "#333C43",
"mOutline": "#232A2E",
"mShadow": "#ECF5ED",
"mHover": "#333c43",
"mOnHover": "#9DA9A0"
}
}

View File

@@ -1,33 +0,0 @@
# Colors (Everforest Dark Hard)
[colors.bright]
black = '#a6b0a0'
blue = '#3a94c5'
cyan = '#35a77c'
green = '#8da101'
magenta = '#df69ba'
red = '#f85552'
white = '#fffbef'
yellow = '#dfa000'
[colors.cursor]
cursor = '#e69875'
text = '#4c3743'
[colors.normal]
black = '#7a8478'
blue = '#7fbbb3'
cyan = '#83c092'
green = '#a7c080'
magenta = '#d699b6'
red = '#e67e80'
white = '#f2efdf'
yellow = '#dbbc7f'
[colors.primary]
background = '#1e2326'
foreground = '#d3c6aa'
[colors.selection]
background = '#4c3743'
text = '#d3c6aa'

View File

@@ -1,33 +0,0 @@
# Colors (Everforest Light Med)
[colors.bright]
black = '#a6b0a0'
blue = '#3a94c5'
cyan = '#35a77c'
green = '#8da101'
magenta = '#df69ba'
red = '#f85552'
white = '#fffbef'
yellow = '#dfa000'
[colors.cursor]
cursor = '#f57d26'
text = '#eaedc8'
[colors.normal]
black = '#7a8478'
blue = '#7fbbb3'
cyan = '#83c092'
green = '#9ab373'
magenta = '#d699b6'
red = '#e67e80'
white = '#b2af9f'
yellow = '#c1a266'
[colors.primary]
background = '#efebd4'
foreground = '#5c6a72'
[colors.selection]
background = '#eaedc8'
text = '#5c6a72'

View File

@@ -1,22 +0,0 @@
[colors]
foreground=d3c6aa
background=1e2326
regular0=7a8478
regular1=e67e80
regular2=a7c080
regular3=dbbc7f
regular4=7fbbb3
regular5=d699b6
regular6=83c092
regular7=f2efdf
bright0=a6b0a0
bright1=f85552
bright2=8da101
bright3=dfa000
bright4=3a94c5
bright5=df69ba
bright6=35a77c
bright7=fffbef
selection-foreground=d3c6aa
selection-background=4c3743
cursor=4c3743 e69875

View File

@@ -1,22 +0,0 @@
[colors]
foreground=5c6a72
background=efebd4
regular0=7a8478
regular1=e67e80
regular2=9ab373
regular3=c1a266
regular4=7fbbb3
regular5=d699b6
regular6=83c092
regular7=b2af9f
bright0=a6b0a0
bright1=f85552
bright2=8da101
bright3=dfa000
bright4=3a94c5
bright5=df69ba
bright6=35a77c
bright7=fffbef
selection-foreground=5c6a72
selection-background=eaedc8
cursor=eaedc8 f57d26

View File

@@ -1,22 +0,0 @@
palette = 0=#7a8478
palette = 1=#e67e80
palette = 2=#a7c080
palette = 3=#dbbc7f
palette = 4=#7fbbb3
palette = 5=#d699b6
palette = 6=#83c092
palette = 7=#f2efdf
palette = 8=#a6b0a0
palette = 9=#f85552
palette = 10=#8da101
palette = 11=#dfa000
palette = 12=#3a94c5
palette = 13=#df69ba
palette = 14=#35a77c
palette = 15=#fffbef
background = #1e2326
foreground = #d3c6aa
cursor-color = #e69875
cursor-text = #4c3743
selection-background = #4c3743
selection-foreground = #d3c6aa

View File

@@ -1,22 +0,0 @@
palette = 0=#7a8478
palette = 1=#e67e80
palette = 2=#9ab373
palette = 3=#c1a266
palette = 4=#7fbbb3
palette = 5=#d699b6
palette = 6=#83c092
palette = 7=#b2af9f
palette = 8=#a6b0a0
palette = 9=#f85552
palette = 10=#8da101
palette = 11=#dfa000
palette = 12=#3a94c5
palette = 13=#df69ba
palette = 14=#35a77c
palette = 15=#fffbef
background = #efebd4
foreground = #5c6a72
cursor-color = #f57d26
cursor-text = #eaedc8
selection-background = #eaedc8
selection-foreground = #5c6a72

View File

@@ -1,22 +0,0 @@
color0 #7a8478
color1 #e67e80
color2 #a7c080
color3 #dbbc7f
color4 #7fbbb3
color5 #d699b6
color6 #83c092
color7 #f2efdf
color8 #a6b0a0
color9 #f85552
color10 #8da101
color11 #dfa000
color12 #3a94c5
color13 #df69ba
color14 #35a77c
color15 #fffbef
background #1e2326
selection_foreground #1e2326
cursor #e69875
cursor_text_color #4c3743
foreground #d3c6aa
selection_background #d3c6aa

View File

@@ -1,22 +0,0 @@
color0 #7a8478
color1 #e67e80
color2 #9ab373
color3 #c1a266
color4 #7fbbb3
color5 #d699b6
color6 #83c092
color7 #b2af9f
color8 #a6b0a0
color9 #f85552
color10 #8da101
color11 #dfa000
color12 #3a94c5
color13 #df69ba
color14 #35a77c
color15 #fffbef
background #efebd4
selection_foreground #efebd4
cursor #f57d26
cursor_text_color #eaedc8
foreground #5c6a72
selection_background #5c6a72

View File

@@ -1,33 +0,0 @@
[colors]
ansi = [
"#4b565c",
"#e67e80",
"#a7c080",
"#dbbc7f",
"#7fbbb3",
"#d699b6",
"#83c092",
"#d3c6aa",
]
background = "#2d353b"
brights = [
"#5c6a72",
"#f85552",
"#8da101",
"#dfa000",
"#3a94c5",
"#df69ba",
"#35a77c",
"#dfddc8",
]
cursor_bg = "#d3c6aa"
cursor_border = "#d3c6aa"
cursor_fg = "#2d353b"
foreground = "#d3c6aa"
[colors.indexed]
[metadata]
name = "Noctalia"

View File

@@ -1,31 +0,0 @@
[colors]
ansi = [
"#5c6a72",
"#f85552",
"#8da101",
"#dfa000",
"#3a94c5",
"#df69ba",
"#35a77c",
"#dfddc8",
]
background = "#fdf6e3"
brights = [
"#4b565c",
"#e67e80",
"#a7c080",
"#dbbc7f",
"#7fbbb3",
"#d699b6",
"#83c092",
"#d3c6aa",
]
cursor_bg = "#5c6a72"
cursor_border = "#5c6a72"
cursor_fg = "#fdf6e3"
foreground = "#5c6a72"
[colors.indexed]
[metadata]
name = "Noctalia"

View File

@@ -1,38 +0,0 @@
{
"dark": {
"mPrimary": "#aaaaaa",
"mOnPrimary": "#111111",
"mSecondary": "#a7a7a7",
"mOnSecondary": "#111111",
"mTertiary": "#cccccc",
"mOnTertiary": "#111111",
"mError": "#dddddd",
"mOnError": "#111111",
"mSurface": "#111111",
"mOnSurface": "#828282",
"mSurfaceVariant": "#191919",
"mOnSurfaceVariant": "#5d5d5d",
"mOutline": "#3c3c3c",
"mShadow": "#000000",
"mHover": "#cccccc",
"mOnHover": "#111111"
},
"light": {
"mPrimary": "#555555",
"mOnPrimary": "#eeeeee",
"mSecondary": "#505058",
"mOnSecondary": "#eeeeee",
"mTertiary": "#333333",
"mOnTertiary": "#eeeeee",
"mError": "#222222",
"mOnError": "#efefef",
"mSurface": "#d4d4d4",
"mOnSurface": "#696969",
"mSurfaceVariant": "#e8e8e8",
"mOnSurfaceVariant": "#9e9e9e",
"mOutline": "#c3c3c3",
"mShadow": "#fafafa",
"mHover": "#333333",
"mOnHover": "#eeeeee"
}
}

View File

@@ -1,33 +0,0 @@
# Colors (Monochrome)
[colors.bright]
black = '#3c3c3c'
blue = '#a7a7a7'
cyan = '#cccccc'
green = '#cccccc'
magenta = '#dddddd'
red = '#dddddd'
white = '#ffffff'
yellow = '#aaaaaa'
[colors.cursor]
cursor = '#aaaaaa'
text = '#111111'
[colors.normal]
black = '#191919'
blue = '#a7a7a7'
cyan = '#cccccc'
green = '#cccccc'
magenta = '#dddddd'
red = '#dddddd'
white = '#828282'
yellow = '#aaaaaa'
[colors.primary]
background = '#111111'
foreground = '#828282'
[colors.selection]
background = '#828282'
text = '#111111'

View File

@@ -1,33 +0,0 @@
# Colors (Monochrome Light)
[colors.bright]
black = '#c3c3c3'
blue = '#505058'
cyan = '#333333'
green = '#333333'
magenta = '#222222'
red = '#222222'
white = '#000000'
yellow = '#555555'
[colors.cursor]
cursor = '#555555'
text = '#d4d4d4'
[colors.normal]
black = '#e8e8e8'
blue = '#505058'
cyan = '#333333'
green = '#333333'
magenta = '#222222'
red = '#222222'
white = '#696969'
yellow = '#555555'
[colors.primary]
background = '#d4d4d4'
foreground = '#696969'
[colors.selection]
background = '#696969'
text = '#d4d4d4'

View File

@@ -1,22 +0,0 @@
[colors]
foreground=828282
background=111111
regular0=191919
regular1=dddddd
regular2=cccccc
regular3=aaaaaa
regular4=a7a7a7
regular5=dddddd
regular6=cccccc
regular7=828282
bright0=3c3c3c
bright1=dddddd
bright2=cccccc
bright3=aaaaaa
bright4=a7a7a7
bright5=dddddd
bright6=cccccc
bright7=ffffff
selection-foreground=111111
selection-background=828282
cursor=111111 aaaaaa

View File

@@ -1,22 +0,0 @@
[colors]
foreground=696969
background=d4d4d4
regular0=e8e8e8
regular1=222222
regular2=333333
regular3=555555
regular4=505058
regular5=222222
regular6=333333
regular7=696969
bright0=c3c3c3
bright1=222222
bright2=333333
bright3=555555
bright4=505058
bright5=222222
bright6=333333
bright7=000000
selection-foreground=d4d4d4
selection-background=696969
cursor=d4d4d4 555555

View File

@@ -1,22 +0,0 @@
palette = 0=#191919
palette = 1=#dddddd
palette = 2=#cccccc
palette = 3=#aaaaaa
palette = 4=#a7a7a7
palette = 5=#dddddd
palette = 6=#cccccc
palette = 7=#828282
palette = 8=#3c3c3c
palette = 9=#dddddd
palette = 10=#cccccc
palette = 11=#aaaaaa
palette = 12=#a7a7a7
palette = 13=#dddddd
palette = 14=#cccccc
palette = 15=#ffffff
background = #111111
foreground = #828282
cursor-color = #aaaaaa
cursor-text = #111111
selection-background = #828282
selection-foreground = #111111

View File

@@ -1,22 +0,0 @@
palette = 0=#e8e8e8
palette = 1=#222222
palette = 2=#333333
palette = 3=#555555
palette = 4=#505058
palette = 5=#222222
palette = 6=#333333
palette = 7=#696969
palette = 8=#c3c3c3
palette = 9=#222222
palette = 10=#333333
palette = 11=#555555
palette = 12=#505058
palette = 13=#222222
palette = 14=#333333
palette = 15=#000000
background = #d4d4d4
foreground = #696969
cursor-color = #555555
cursor-text = #d4d4d4
selection-background = #696969
selection-foreground = #d4d4d4

View File

@@ -1,22 +0,0 @@
color0 #191919
color1 #dddddd
color2 #cccccc
color3 #aaaaaa
color4 #a7a7a7
color5 #dddddd
color6 #cccccc
color7 #828282
color8 #3c3c3c
color9 #dddddd
color10 #cccccc
color11 #aaaaaa
color12 #a7a7a7
color13 #dddddd
color14 #cccccc
color15 #ffffff
background #111111
selection_foreground #111111
cursor #aaaaaa
cursor_text_color #111111
foreground #828282
selection_background #828282

View File

@@ -1,22 +0,0 @@
color0 #e8e8e8
color1 #222222
color2 #333333
color3 #555555
color4 #505058
color5 #222222
color6 #333333
color7 #696969
color8 #c3c3c3
color9 #222222
color10 #333333
color11 #555555
color12 #505058
color13 #222222
color14 #333333
color15 #000000
background #d4d4d4
selection_foreground #d4d4d4
cursor #555555
cursor_text_color #d4d4d4
foreground #696969
selection_background #696969

View File

@@ -1,31 +0,0 @@
[colors]
ansi = [
"#191919",
"#dddddd",
"#cccccc",
"#aaaaaa",
"#a7a7a7",
"#dddddd",
"#cccccc",
"#828282",
]
background = "#111111"
brights = [
"#3c3c3c",
"#dddddd",
"#cccccc",
"#aaaaaa",
"#a7a7a7",
"#dddddd",
"#cccccc",
"#ffffff",
]
cursor_bg = "#aaaaaa"
cursor_border = "#aaaaaa"
cursor_fg = "#111111"
foreground = "#828282"
selection_bg = "#828282"
selection_fg = "#111111"
[metadata]
name = "Noctalia"

View File

@@ -1,31 +0,0 @@
[colors]
ansi = [
"#e8e8e8",
"#222222",
"#333333",
"#555555",
"#505058",
"#222222",
"#333333",
"#696969",
]
background = "#d4d4d4"
brights = [
"#c3c3c3",
"#222222",
"#333333",
"#555555",
"#505058",
"#222222",
"#333333",
"#000000",
]
cursor_bg = "#555555"
cursor_border = "#555555"
cursor_fg = "#d4d4d4"
foreground = "#696969"
selection_bg = "#696969"
selection_fg = "#d4d4d4"
[metadata]
name = "Noctalia"

View File

@@ -1,38 +0,0 @@
{
"dark": {
"mPrimary": "#c7a1d8",
"mOnPrimary": "#1a151f",
"mSecondary": "#a984c4",
"mOnSecondary": "#f3edf7",
"mTertiary": "#e0b7c9",
"mOnTertiary": "#20161f",
"mError": "#e9899d",
"mOnError": "#1e1418",
"mSurface": "#1c1822",
"mOnSurface": "#e9e4f0",
"mSurfaceVariant": "#262130",
"mOnSurfaceVariant": "#a79ab0",
"mOutline": "#3e364e",
"mShadow": "#120f18",
"mHover": "#e0b7c9",
"mOnHover": "#20161f"
},
"light": {
"mPrimary": "#9b59ba",
"mOnPrimary": "#ffffff",
"mSecondary": "#784999",
"mOnSecondary": "#ffffff",
"mTertiary": "#c17093",
"mOnTertiary": "#ffffff",
"mError": "#e9899d",
"mOnError": "#1e1418",
"mSurface": "#f5f1fa",
"mOnSurface": "#1c1822",
"mSurfaceVariant": "#e7dfee",
"mOnSurfaceVariant": "#4a3d59",
"mOutline": "#cebedc",
"mShadow": "#ffffff",
"mHover": "#c17093",
"mOnHover": "#ffffff"
}
}

View File

@@ -1,33 +0,0 @@
# Colors (Noctalia Legacy)
[colors.bright]
black = '#3e364e'
blue = '#a984c4'
cyan = '#e0b7c9'
green = '#e0b7c9'
magenta = '#e9899d'
red = '#e9899d'
white = '#ffffff'
yellow = '#c7a1d8'
[colors.cursor]
cursor = '#c7a1d8'
text = '#1c1822'
[colors.normal]
black = '#262130'
blue = '#a984c4'
cyan = '#e0b7c9'
green = '#e0b7c9'
magenta = '#e9899d'
red = '#e9899d'
white = '#e9e4f0'
yellow = '#c7a1d8'
[colors.primary]
background = '#1c1822'
foreground = '#e9e4f0'
[colors.selection]
background = '#e9e4f0'
text = '#1c1822'

View File

@@ -1,33 +0,0 @@
# Colors (Noctalia Legacy Light)
[colors.bright]
black = '#cebedc'
blue = '#784999'
cyan = '#c17093'
green = '#c17093'
magenta = '#e9899d'
red = '#e9899d'
white = '#1c1822'
yellow = '#9b59ba'
[colors.cursor]
cursor = '#9b59ba'
text = '#f5f1fa'
[colors.normal]
black = '#e7dfee'
blue = '#784999'
cyan = '#c17093'
green = '#c17093'
magenta = '#e9899d'
red = '#e9899d'
white = '#1c1822'
yellow = '#9b59ba'
[colors.primary]
background = '#f5f1fa'
foreground = '#1c1822'
[colors.selection]
background = '#1c1822'
text = '#f5f1fa'

View File

@@ -1,22 +0,0 @@
[colors]
foreground=e9e4f0
background=1c1822
regular0=262130
regular1=e9899d
regular2=e0b7c9
regular3=c7a1d8
regular4=a984c4
regular5=e9899d
regular6=e0b7c9
regular7=e9e4f0
bright0=3e364e
bright1=e9899d
bright2=e0b7c9
bright3=c7a1d8
bright4=a984c4
bright5=e9899d
bright6=e0b7c9
bright7=ffffff
selection-foreground=1c1822
selection-background=e9e4f0
cursor=1c1822 c7a1d8

View File

@@ -1,22 +0,0 @@
[colors]
foreground=1c1822
background=f5f1fa
regular0=e7dfee
regular1=e9899d
regular2=c17093
regular3=9b59ba
regular4=784999
regular5=e9899d
regular6=c17093
regular7=1c1822
bright0=cebedc
bright1=e9899d
bright2=c17093
bright3=9b59ba
bright4=784999
bright5=e9899d
bright6=c17093
bright7=1c1822
selection-foreground=f5f1fa
selection-background=1c1822
cursor=f5f1fa 9b59ba

View File

@@ -1,22 +0,0 @@
palette = 0=#262130
palette = 1=#e9899d
palette = 2=#e0b7c9
palette = 3=#c7a1d8
palette = 4=#a984c4
palette = 5=#e9899d
palette = 6=#e0b7c9
palette = 7=#e9e4f0
palette = 8=#3e364e
palette = 9=#e9899d
palette = 10=#e0b7c9
palette = 11=#c7a1d8
palette = 12=#a984c4
palette = 13=#e9899d
palette = 14=#e0b7c9
palette = 15=#ffffff
background = #1c1822
foreground = #e9e4f0
cursor-color = #c7a1d8
cursor-text = #1c1822
selection-background = #e9e4f0
selection-foreground = #1c1822

View File

@@ -1,22 +0,0 @@
palette = 0=#e7dfee
palette = 1=#e9899d
palette = 2=#c17093
palette = 3=#9b59ba
palette = 4=#784999
palette = 5=#e9899d
palette = 6=#c17093
palette = 7=#1c1822
palette = 8=#cebedc
palette = 9=#e9899d
palette = 10=#c17093
palette = 11=#9b59ba
palette = 12=#784999
palette = 13=#e9899d
palette = 14=#c17093
palette = 15=#1c1822
background = #f5f1fa
foreground = #1c1822
cursor-color = #9b59ba
cursor-text = #f5f1fa
selection-background = #1c1822
selection-foreground = #f5f1fa

View File

@@ -1,22 +0,0 @@
color0 #262130
color1 #e9899d
color2 #e0b7c9
color3 #c7a1d8
color4 #a984c4
color5 #e9899d
color6 #e0b7c9
color7 #e9e4f0
color8 #3e364e
color9 #e9899d
color10 #e0b7c9
color11 #c7a1d8
color12 #a984c4
color13 #e9899d
color14 #e0b7c9
color15 #ffffff
background #1c1822
selection_foreground #1c1822
cursor #c7a1d8
cursor_text_color #1c1822
foreground #e9e4f0
selection_background #e9e4f0

View File

@@ -1,22 +0,0 @@
color0 #e7dfee
color1 #e9899d
color2 #c17093
color3 #9b59ba
color4 #784999
color5 #e9899d
color6 #c17093
color7 #1c1822
color8 #cebedc
color9 #e9899d
color10 #c17093
color11 #9b59ba
color12 #784999
color13 #e9899d
color14 #c17093
color15 #1c1822
background #f5f1fa
selection_foreground #f5f1fa
cursor #9b59ba
cursor_text_color #f5f1fa
foreground #1c1822
selection_background #1c1822

View File

@@ -1,31 +0,0 @@
[colors]
ansi = [
"#262130",
"#e9899d",
"#e0b7c9",
"#c7a1d8",
"#a984c4",
"#e9899d",
"#e0b7c9",
"#e9e4f0",
]
background = "#1c1822"
brights = [
"#3e364e",
"#e9899d",
"#e0b7c9",
"#c7a1d8",
"#a984c4",
"#e9899d",
"#e0b7c9",
"#ffffff",
]
cursor_bg = "#c7a1d8"
cursor_border = "#c7a1d8"
cursor_fg = "#1c1822"
foreground = "#e9e4f0"
selection_bg = "#e9e4f0"
selection_fg = "#1c1822"
[metadata]
name = "Noctalia"

View File

@@ -1,31 +0,0 @@
[colors]
ansi = [
"#e7dfee",
"#e9899d",
"#c17093",
"#9b59ba",
"#784999",
"#e9899d",
"#c17093",
"#1c1822",
]
background = "#f5f1fa"
brights = [
"#cebedc",
"#e9899d",
"#c17093",
"#9b59ba",
"#784999",
"#e9899d",
"#c17093",
"#1c1822",
]
cursor_bg = "#9b59ba"
cursor_border = "#9b59ba"
cursor_fg = "#f5f1fa"
foreground = "#1c1822"
selection_bg = "#1c1822"
selection_fg = "#f5f1fa"
[metadata]
name = "Noctalia"

View File

@@ -1,38 +0,0 @@
{
"dark": {
"mPrimary": "#1E9177",
"mOnPrimary": "#B8C8C4",
"mSecondary": "#167A63",
"mOnSecondary": "#B8C8C4",
"mTertiary": "#26A589",
"mOnTertiary": "#B8C8C4",
"mError": "#933636",
"mOnError": "#B8C8C4",
"mSurface": "#081512",
"mOnSurface": "#A6B5B1",
"mSurfaceVariant": "#0F251F",
"mOnSurfaceVariant": "#99A8A4",
"mOutline": "#1B6352",
"mShadow": "#040A09",
"mHover": "#26A589",
"mOnHover": "#B8C8C4"
},
"light": {
"mPrimary": "#3B7561",
"mOnPrimary": "#D8E5DB",
"mSecondary": "#526E4A",
"mOnSecondary": "#D8E5DB",
"mTertiary": "#4A8069",
"mOnTertiary": "#D8E5DB",
"mError": "#854145",
"mOnError": "#D8E5DB",
"mSurface": "#AEC2B4",
"mOnSurface": "#2C3D35",
"mSurfaceVariant": "#95AD9C",
"mOnSurfaceVariant": "#263731",
"mOutline": "#5C7A6A",
"mShadow": "#8A9E90",
"mHover": "#4A8069",
"mOnHover": "#D8E5DB"
}
}

View File

@@ -1,33 +0,0 @@
# Colors (Osaka Jade)
[colors.bright]
black = '#464e50'
blue = '#71baf2'
cyan = '#67cbe7'
green = '#96d988'
magenta = '#ce89df'
red = '#ef7e7e'
white = '#bdc3c2'
yellow = '#f4d67a'
[colors.cursor]
cursor = '#dadada'
text = '#141b1e'
[colors.normal]
black = '#232a2d'
blue = '#67b0e8'
cyan = '#6cbfbf'
green = '#8ccf7e'
magenta = '#c47fd5'
red = '#e57474'
white = '#b3b9b8'
yellow = '#e5c76b'
[colors.primary]
background = '#141b1e'
foreground = '#dadada'
[colors.selection]
background = '#141b1e'
text = '#dadada'

View File

@@ -1,33 +0,0 @@
# Colors (Osaka Jade Light)
[colors.bright]
black = '#a6b0a0'
blue = '#3a94c5'
cyan = '#35a77c'
green = '#8da101'
magenta = '#df69ba'
red = '#f85552'
white = '#fffbef'
yellow = '#dfa000'
[colors.cursor]
cursor = '#f57d26'
text = '#eaedc8'
[colors.normal]
black = '#7a8478'
blue = '#7fbbb3'
cyan = '#83c092'
green = '#9ab373'
magenta = '#d699b6'
red = '#e67e80'
white = '#b2af9f'
yellow = '#c1a266'
[colors.primary]
background = '#efebd4'
foreground = '#5c6a72'
[colors.selection]
background = '#eaedc8'
text = '#5c6a72'

View File

@@ -1,25 +0,0 @@
[cursor]
color=141b1e dadada
[colors]
foreground=dadada
background=141b1e
regular0=232a2d
regular1=e57474
regular2=8ccf7e
regular3=e5c76b
regular4=67b0e8
regular5=c47fd5
regular6=6cbfbf
regular7=b3b9b8
bright0=464e50
bright1=ef7e7e
bright2=96d988
bright3=f4d67a
bright4=71baf2
bright5=ce89df
bright6=67cbe7
bright7=bdc3c2
selection-foreground=dadada
selection-background=141b1e

View File

@@ -1,22 +0,0 @@
[colors]
foreground=5c6a72
background=efebd4
regular0=7a8478
regular1=e67e80
regular2=9ab373
regular3=c1a266
regular4=7fbbb3
regular5=d699b6
regular6=83c092
regular7=b2af9f
bright0=a6b0a0
bright1=f85552
bright2=8da101
bright3=dfa000
bright4=3a94c5
bright5=df69ba
bright6=35a77c
bright7=fffbef
selection-foreground=5c6a72
selection-background=eaedc8
cursor=eaedc8 f57d26

View File

@@ -1,22 +0,0 @@
palette = 0=#232a2d
palette = 1=#e57474
palette = 2=#8ccf7e
palette = 3=#e5c76b
palette = 4=#67b0e8
palette = 5=#c47fd5
palette = 6=#6cbfbf
palette = 7=#b3b9b8
palette = 8=#464e50
palette = 9=#ef7e7e
palette = 10=#96d988
palette = 11=#f4d67a
palette = 12=#71baf2
palette = 13=#ce89df
palette = 14=#67cbe7
palette = 15=#bdc3c2
background = #141b1e
foreground = #dadada
cursor-color = #dadada
cursor-text = #141b1e
selection-background = #141b1e
selection-foreground = #dadada

View File

@@ -1,22 +0,0 @@
palette = 0=#7a8478
palette = 1=#e67e80
palette = 2=#9ab373
palette = 3=#c1a266
palette = 4=#7fbbb3
palette = 5=#d699b6
palette = 6=#83c092
palette = 7=#b2af9f
palette = 8=#a6b0a0
palette = 9=#f85552
palette = 10=#8da101
palette = 11=#dfa000
palette = 12=#3a94c5
palette = 13=#df69ba
palette = 14=#35a77c
palette = 15=#fffbef
background = #efebd4
foreground = #5c6a72
cursor-color = #f57d26
cursor-text = #eaedc8
selection-background = #eaedc8
selection-foreground = #5c6a72

View File

@@ -1,22 +0,0 @@
color0 #232a2d
color1 #e57474
color2 #8ccf7e
color3 #e5c76b
color4 #67b0e8
color5 #c47fd5
color6 #6cbfbf
color7 #b3b9b8
color8 #464e50
color9 #ef7e7e
color10 #96d988
color11 #f4d67a
color12 #71baf2
color13 #ce89df
color14 #67cbe7
color15 #bdc3c2
background #141b1e
selection_foreground #141b1e
cursor #dadada
cursor_text_color #141b1e
foreground #dadada
selection_background #dadada

View File

@@ -1,22 +0,0 @@
color0 #7a8478
color1 #e67e80
color2 #9ab373
color3 #c1a266
color4 #7fbbb3
color5 #d699b6
color6 #83c092
color7 #b2af9f
color8 #a6b0a0
color9 #f85552
color10 #8da101
color11 #dfa000
color12 #3a94c5
color13 #df69ba
color14 #35a77c
color15 #fffbef
background #efebd4
selection_foreground #efebd4
cursor #f57d26
cursor_text_color #eaedc8
foreground #5c6a72
selection_background #5c6a72

View File

@@ -1,31 +0,0 @@
[colors]
ansi = [
"#232a2d",
"#e57474",
"#8ccf7e",
"#e5c76b",
"#67b0e8",
"#c47fd5",
"#6cbfbf",
"#b3b9b8",
]
background = "#141b1e"
brights = [
"#464e50",
"#ef7e7e",
"#96d988",
"#f4d67a",
"#71baf2",
"#ce89df",
"#67cbe7",
"#bdc3c2",
]
cursor_bg = "#dadada"
cursor_border = "#dadada"
cursor_fg = "#141b1e"
foreground = "#dadada"
selection_bg = "#dadada"
selection_fg = "#141b1e"
[metadata]
name = "Noctalia"

View File

@@ -1,32 +0,0 @@
[colors]
ansi = [
"#7a8478",
"#e67e80",
"#9ab373",
"#c1a266",
"#7fbbb3",
"#d699b6",
"#83c092",
"#b2af9f",
]
background = "#efebd4"
brights = [
"#a6b0a0",
"#f85552",
"#8da101",
"#dfa000",
"#3a94c5",
"#df69ba",
"#35a77c",
"#fffbef",
]
cursor_bg = "#f57d26"
cursor_border = "#f57d26"
cursor_fg = "#eaedc8"
foreground = "#5c6a72"
selection_bg = "#5c6a72"
selection_fg = "#efebd4"
[metadata]
name = "Noctalia"

View File

@@ -8,7 +8,7 @@
"mOnTertiary": "#e0def4",
"mError": "#eb6f92",
"mOnError": "#191724",
"mSurface": "#1f1d2e",
"mSurface": "#191724",
"mOnSurface": "#e0def4",
"mSurfaceVariant": "#26233a",
"mOnSurfaceVariant": "#908caa",

View File

@@ -1,38 +0,0 @@
{
"dark": {
"mPrimary": "#b58900",
"mOnPrimary": "#002b36",
"mSecondary": "#d33682",
"mOnSecondary": "#002b36",
"mTertiary": "#cb4b16",
"mOnTertiary": "#002b36",
"mError": "#dc322f",
"mOnError": "#002b36",
"mSurface": "#002b36",
"mOnSurface": "#839496",
"mSurfaceVariant": "#073642",
"mOnSurfaceVariant": "#657b83",
"mOutline": "#0c5c70",
"mShadow": "#002b36",
"mHover": "#cb4b16",
"mOnHover": "#002b36"
},
"light": {
"mPrimary": "#b58900",
"mOnPrimary": "#fdf6e3",
"mSecondary": "#d33682",
"mOnSecondary": "#fdf6e3",
"mTertiary": "#cb4b16",
"mOnTertiary": "#fdf6e3",
"mError": "#dc322f",
"mOnError": "#fdf6e3",
"mSurface": "#fdf6e3",
"mOnSurface": "#657b83",
"mSurfaceVariant": "#eee8d5",
"mOnSurfaceVariant": "#839496",
"mOutline": "#dfd4b1",
"mShadow": "#eee8d5",
"mHover": "#cb4b16",
"mOnHover": "#fdf6e3"
}
}

View File

@@ -1,33 +0,0 @@
# Colors (Solarized Dark)
[colors.bright]
black = '#335e69'
blue = '#839496'
cyan = '#93a1a1'
green = '#586e75'
magenta = '#6c71c4'
red = '#cb4b16'
white = '#fdf6e3'
yellow = '#657b83'
[colors.cursor]
cursor = '#839496'
text = '#073642'
[colors.normal]
black = '#073642'
blue = '#268bd2'
cyan = '#2aa198'
green = '#859900'
magenta = '#d33682'
red = '#dc322f'
white = '#eee8d5'
yellow = '#b58900'
[colors.primary]
background = '#002b36'
foreground = '#839496'
[colors.selection]
background = '#073642'
text = '#93a1a1'

View File

@@ -1,33 +0,0 @@
# Colors (Solarized Light)
[colors.bright]
black = '#002b36'
blue = '#839496'
cyan = '#93a1a1'
green = '#586e75'
magenta = '#6c71c4'
red = '#cb4b16'
white = '#fdf6e3'
yellow = '#657b83'
[colors.cursor]
cursor = '#657b83'
text = '#eee8d5'
[colors.normal]
black = '#073642'
blue = '#268bd2'
cyan = '#2aa198'
green = '#859900'
magenta = '#d33682'
red = '#dc322f'
white = '#bbb5a2'
yellow = '#b58900'
[colors.primary]
background = '#fdf6e3'
foreground = '#657b83'
[colors.selection]
background = '#eee8d5'
text = '#586e75'

View File

@@ -1,22 +0,0 @@
[colors]
foreground=839496
background=002b36
regular0=073642
regular1=dc322f
regular2=859900
regular3=b58900
regular4=268bd2
regular5=d33682
regular6=2aa198
regular7=eee8d5
bright0=335e69
bright1=cb4b16
bright2=586e75
bright3=657b83
bright4=839496
bright5=6c71c4
bright6=93a1a1
bright7=fdf6e3
selection-foreground=93a1a1
selection-background=073642
cursor=073642 839496

View File

@@ -1,23 +0,0 @@
[colors]
foreground=657b83
background=fdf6e3
regular0=073642
regular1=dc322f
regular2=859900
regular3=b58900
regular4=268bd2
regular5=d33682
regular6=2aa198
regular7=bbb5a2
bright0=002b36
bright1=cb4b16
bright2=586e75
bright3=657b83
bright4=839496
bright5=6c71c4
bright6=93a1a1
bright7=fdf6e3
selection-foreground=586e75
selection-background=eee8d5
cursor=eee8d5 657b83

View File

@@ -1,22 +0,0 @@
palette = 0=#073642
palette = 1=#dc322f
palette = 2=#859900
palette = 3=#b58900
palette = 4=#268bd2
palette = 5=#d33682
palette = 6=#2aa198
palette = 7=#eee8d5
palette = 8=#335e69
palette = 9=#cb4b16
palette = 10=#586e75
palette = 11=#657b83
palette = 12=#839496
palette = 13=#6c71c4
palette = 14=#93a1a1
palette = 15=#fdf6e3
background = #002b36
foreground = #839496
cursor-color = #839496
cursor-text = #073642
selection-background = #073642
selection-foreground = #93a1a1

View File

@@ -1,22 +0,0 @@
palette = 0=#073642
palette = 1=#dc322f
palette = 2=#859900
palette = 3=#b58900
palette = 4=#268bd2
palette = 5=#d33682
palette = 6=#2aa198
palette = 7=#bbb5a2
palette = 8=#002b36
palette = 9=#cb4b16
palette = 10=#586e75
palette = 11=#657b83
palette = 12=#839496
palette = 13=#6c71c4
palette = 14=#93a1a1
palette = 15=#fdf6e3
background = #fdf6e3
foreground = #657b83
cursor-color = #657b83
cursor-text = #eee8d5
selection-background = #eee8d5
selection-foreground = #586e75

View File

@@ -1,22 +0,0 @@
color0 #073642
color1 #dc322f
color2 #859900
color3 #b58900
color4 #268bd2
color5 #d33682
color6 #2aa198
color7 #eee8d5
color8 #335e69
color9 #cb4b16
color10 #586e75
color11 #657b83
color12 #839496
color13 #6c71c4
color14 #93a1a1
color15 #fdf6e3
background #002b36
selection_foreground #002b36
cursor #839496
cursor_text_color #073642
foreground #839496
selection_background #839496

View File

@@ -1,22 +0,0 @@
color0 #073642
color1 #dc322f
color2 #859900
color3 #b58900
color4 #268bd2
color5 #d33682
color6 #2aa198
color7 #bbb5a2
color8 #002b36
color9 #cb4b16
color10 #586e75
color11 #657b83
color12 #839496
color13 #6c71c4
color14 #93a1a1
color15 #fdf6e3
background #fdf6e3
selection_foreground #fdf6e3
cursor #657b83
cursor_text_color #eee8d5
foreground #657b83
selection_background #657b83

View File

@@ -1,29 +0,0 @@
[colors]
ansi = [
"#002b36",
"#dc322f",
"#859900",
"#b58900",
"#268bd2",
"#6c71c4",
"#2aa198",
"#93a1a1",
]
background = "#002b36"
brights = [
"#657b83",
"#dc322f",
"#859900",
"#b58900",
"#268bd2",
"#6c71c4",
"#2aa198",
"#fdf6e3",
]
foreground = "#93a1a1"
[colors.indexed]
[metadata]
author = "Chris Kempson"
name = "Noctalia"

View File

@@ -1,30 +0,0 @@
[colors]
ansi = [
"#002b36",
"#dc322f",
"#859900",
"#b58900",
"#268bd2",
"#6c71c4",
"#2aa198",
"#93a1a1",
]
background = "#fdf6e3"
brights = [
"#657b83",
"#dc322f",
"#859900",
"#b58900",
"#268bd2",
"#6c71c4",
"#2aa198",
"#fdf6e3",
]
foreground = "#586e75"
[colors.indexed]
[metadata]
author = "Chris Kempson"
name = "Noctalia"

View File

@@ -0,0 +1,139 @@
// Material You theme for Telegram Desktop
// Generated by matugen
COLOR_GRAY: {{colors.outline.default.hex}};
COLOR_DARK: {{colors.surface_variant.default.hex}};
windowBg: {{colors.background.default.hex}}; // Main background
windowFg: {{colors.on_background.default.hex}}; // Main text
windowBgOver: {{colors.surface_variant.default.hex}}; // Generic background on hover
windowBgRipple: {{colors.surface_variant.default.hex}}; // Ripple effect
windowFgOver: {{colors.on_surface_variant.default.hex}}; // Text on hover
windowSubTextFg: {{colors.outline.default.hex}}; // Minor text
windowSubTextFgOver: {{colors.outline.default.hex}}; // Minor text on hover
windowBoldFg: {{colors.on_background.default.hex}}; // Bold text
windowBoldFgOver: {{colors.on_surface_variant.default.hex}}; // Bold text on hover
windowBgActive: {{colors.primary.default.hex}}; // Active items background
windowFgActive: {{colors.on_primary.default.hex}}; // Active items text
windowActiveTextFg: {{colors.primary.default.hex}}; // Active items text
windowShadowFg: {{colors.shadow.default.hex}}; // Window shadow
windowShadowFgFallback: {{colors.shadow.default.hex}}; // Fallback for shadow
historyOutIconFg: {{colors.primary.default.hex}};
historyIconFgInverted: {{colors.on_surface.default.hex}};
msgServiceBg: {{colors.primary_container.default.hex}};
msgServiceFg: {{colors.on_surface.default.hex}};
msgOutBg: {{colors.primary_container.default.hex}};
msgOutBgSelected : {{colors.tertiary_container.default.hex}};
msgOutServiceFg: {{colors.on_surface.default.hex}};
msgOutDateFg: {{colors.on_surface.default.hex}};
historySentIconFg: {{colors.on_surface.default.hex}};
msgOutDateFgSelected: {{colors.on_surface.default.hex}};
msgDateImgFg: {{colors.on_surface.default.hex}};
dialogsSentIconFg: {{colors.primary.default.hex}};
dialogsSentIconFgOver: {{colors.primary.default.hex}};
dialogsOnlineBadgeFg: {{colors.primary.default.hex}};
shadowFg: {{colors.shadow.default.hex}}; // General shadow
slideFadeOutBg: {{colors.background.default.hex}};
slideFadeOutShadowFg: {{colors.shadow.default.hex}};
imageBg: {{colors.surface.default.hex}};
imageBgTransparent: {{colors.surface.default.hex}};
activeButtonBg: {{colors.primary.default.hex}}; // Active button background
activeButtonBgOver: {{colors.primary_container.default.hex}}; // Active button hover background
activeButtonBgRipple: {{colors.on_primary_container.default.hex}}; // Active button ripple
activeButtonFg: {{colors.on_primary.default.hex}}; // Active button text
activeButtonFgOver: {{colors.on_primary_container.default.hex}}; // Active button hover text
activeButtonSecondaryFg: {{colors.on_primary.default.hex}}; // Active button secondary text
activeButtonSecondaryFgOver: {{colors.on_primary_container.default.hex}}; // Active button secondary hover text
activeLineFg: {{colors.on_surface.default.hex}};
dialogsBgActive: {{colors.primary.default.hex}};
lightButtonBg: {{colors.surface.default.hex}}; // Light button background
lightButtonBgOver: {{colors.surface_variant.default.hex}}; // Light button hover background
lightButtonBgRipple: {{colors.primary.default.hex}}; // Light button ripple
lightButtonFg: {{colors.on_surface.default.hex}}; // Light button text
lightButtonFgOver: {{colors.on_surface_variant.default.hex}}; // Light button hover text
attentionButtonFg: {{colors.error.default.hex}};
attentionButtonFgOver: {{colors.error.default.hex}};
attentionButtonBgOver: {{colors.error_container.default.hex}};
attentionButtonBgRipple: {{colors.on_error_container.default.hex}};
outlineButtonBg: {{colors.surface.default.hex}}; // Outline button background
outlineButtonBgOver: {{colors.surface_variant.default.hex}}; // Outline button hover background
outlineButtonOutlineFg: {{colors.primary.default.hex}}; // Outline button color
outlineButtonBgRipple: {{colors.primary.default.hex}}; // Outline button ripple
menuBg: {{colors.surface.default.hex}};
menuBgOver: {{colors.surface_variant.default.hex}};
menuBgRipple: {{colors.primary.default.hex}};
menuIconFg: {{colors.on_surface.default.hex}};
menuIconFgOver: {{colors.on_surface_variant.default.hex}};
menuSubmenuArrowFg: {{colors.outline.default.hex}};
menuFgDisabled: {{colors.outline.default.hex}};
menuSeparatorFg: {{colors.outline.default.hex}};
scrollBarBg: {{colors.primary.default.hex}}40; // Scroll bar background (40% opacity)
scrollBarBgOver: {{colors.primary.default.hex}}60; // Scroll bar hover background (60% opacity)
scrollBg: {{colors.surface_variant.default.hex}}40; // Scroll bar track (40% opacity)
scrollBgOver: {{colors.surface_variant.default.hex}}60; // Scroll bar track on hover (60% opacity)
smallCloseIconFg: {{colors.outline.default.hex}};
smallCloseIconFgOver: {{colors.on_surface_variant.default.hex}};
radialFg: {{colors.primary.default.hex}};
radialBg: {{colors.surface.default.hex}};
placeholderFg: {{colors.outline.default.hex}}; // Placeholder text
placeholderFgActive: {{colors.primary.default.hex}}; // Active placeholder text
inputBorderFg: {{colors.outline.default.hex}}; // Input border
filterInputBorderFg: {{colors.outline.default.hex}}; // Search input border
filterInputInactiveBg: {{colors.surface.default.hex}}; // Inactive search input background
checkboxFg: {{colors.primary.default.hex}}; // Checkbox color
titleBg: {{colors.surface.default.hex}}; // Window title background
titleShadow: {{colors.shadow.default.hex}};
titleButtonFg: {{colors.on_surface.default.hex}}; // Title button color
titleButtonBgOver: {{colors.surface_variant.default.hex}}; // Title button hover background
titleButtonFgOver: {{colors.on_surface_variant.default.hex}}; // Title button hover color
titleButtonCloseBgOver: {{colors.error.default.hex}};
titleButtonCloseFgOver: {{colors.on_error.default.hex}};
titleFgActive: {{colors.on_surface.default.hex}}; // Active title text
titleFg: {{colors.on_surface.default.hex}}; // Inactive title text
trayCounterBg: {{colors.error.default.hex}}; // Tray counter background
trayCounterBgMute: {{colors.outline.default.hex}}; // Muted tray counter background
trayCounterFg: {{colors.on_error.default.hex}}; // Tray counter text
trayCounterBgMacInvert: {{colors.error.default.hex}}; // Mac tray counter
trayCounterFgMacInvert: {{colors.on_error.default.hex}}; // Mac tray counter text
layerBg: {{colors.surface.default.hex}}99; // Layer background (60% opacity)
cancelIconFg: {{colors.error.default.hex}}; // Cancel icon
cancelIconFgOver: {{colors.error.default.hex}}; // Cancel icon on hover
boxBg: {{colors.surface.default.hex}}; // Box background
boxTextFg: {{colors.on_surface.default.hex}}; // Box text
boxTextFgGood: {{colors.primary.default.hex}}; // Box good text
boxTextFgError: {{colors.error.default.hex}}; // Box error text
boxTitleFg: {{colors.on_surface.default.hex}}; // Box title text
boxSearchBg: {{colors.surface.default.hex}}; // Box search field background
boxSearchCancelIconFg: {{colors.error.default.hex}}; // Box search cancel icon
boxSearchCancelIconFgOver: {{colors.error.default.hex}}; // Box search cancel icon on hover
contactsBg: {{colors.surface.default.hex}}; // Contacts background
contactsBgOver: {{colors.surface_variant.default.hex}}; // Contacts background on hover
contactsNameFg: {{colors.on_surface.default.hex}}; // Contact name
contactsStatusFg: {{colors.outline.default.hex}}; // Contact status
contactsStatusFgOver: {{colors.on_surface_variant.default.hex}}; // Contact status on hover
contactsStatusFgOnline: {{colors.primary.default.hex}}; // Online contact status
photoCropFadeBg: {{colors.surface.default.hex}}cc; // Photo crop fade background
photoCropPointFg: {{colors.primary.default.hex}}; // Photo crop points
chat_inBubbleSelected: #313244; // inbox selected chat background
chat_outBubbleSelected: #313244; // outbox selected chat background

View File

@@ -253,4 +253,4 @@ div[class*="linkCalloutContainer"]:hover > span[class*="semibold"],
div[class*="linkCalloutContainer"]:hover > span[data-text-variant*="semibold"] {
color: var(--accent-1) !important;
opacity: 1 !important;
}
}

View File

@@ -1,7 +1,6 @@
[Unit]
Description=Noctalia Shell Service
Requisite=graphical-session.target
PartOf=graphical-session.target
BindsTo=graphical-session.target
After=graphical-session.target
[Service]
@@ -10,4 +9,4 @@ Restart=on-failure
RestartSec=1
[Install]
WantedBy=graphical-session.target
WantedBy=graphical-session.target

View File

@@ -123,21 +123,27 @@
"stream-description": "Geben Sie einen Befehl ein, der kontinuierlich ausgeführt werden soll."
},
"dynamic-text": "Dynamischer Text",
"hide-vertical": {
"description": "Wenn aktiviert, wird der Text aus der Befehlsausgabe nicht angezeigt, wenn sich die Leiste in einem vertikalen Layout befindet (links oder rechts).",
"label": "Text in vertikaler Leiste ausblenden"
},
"icon": {
"description": "Symbol aus der Bibliothek auswählen.",
"label": "Symbol"
},
"left-click": {
"description": "Befehl, der ausgeführt wird, wenn die Schaltfläche links angeklickt wird.",
"label": "Linksklick"
"label": "Linksklick",
"update-text": "Text auf Linksklick aktualisieren"
},
"max-text-length-horizontal": {
"description": "Maximale Anzahl an Zeichen, die in horizontaler Leiste angezeigt werden (0 zum Ausblenden des Textes)",
"label": "Max. Textlänge (horizontal)"
},
"max-text-length-vertical": {
"description": "Maximale Anzahl an Zeichen, die in vertikaler Leiste angezeigt werden (0 zum Ausblenden des Textes)",
"label": "Max. Textlänge (vertikal)"
},
"middle-click": {
"description": "Befehl, der ausgeführt wird, wenn die Schaltfläche mit der mittleren Maustaste angeklickt wird.",
"label": "Mittelklick"
"label": "Mittelklick",
"update-text": "Text auf Mittelklick aktualisieren"
},
"parse-json": {
"description": "Die Befehlsausgabe als JSON-Objekt parsen, um Text und Symbol dynamisch festzulegen.",
@@ -149,11 +155,29 @@
},
"right-click": {
"description": "Befehl, der ausgeführt wird, wenn die Schaltfläche rechts angeklickt wird.",
"label": "Rechtsklick"
"label": "Rechtsklick",
"update-text": "Text beim Rechtsklick aktualisieren"
},
"text-stream": {
"description": "Gestreamte Zeilen aus dem Befehl werden als Text auf der Schaltfläche angezeigt.",
"label": "Stream"
},
"wheel": {
"description": "Befehl, der bei Verwendung des Scrollrads ausgeführt wird.\nVerwenden Sie $delta für die Scrollrad-Delta im Befehl",
"label": "Scrollrad",
"update-text": "Anzeigetext beim Scrollen aktualisieren"
},
"wheel-down": {
"description": "Befehl, der ausgeführt wird, wenn das Scrollrad heruntergescrollt wird.",
"label": "Scrollrad runter Befehl"
},
"wheel-mode-separate": {
"description": "Separate Befehle für Scrollrad hoch und runter aktivieren",
"label": "Separate Scrollrad-Befehle"
},
"wheel-up": {
"description": "Befehl, der ausgeführt wird, wenn das Scrollrad hochgescrollt wird.",
"label": "Scrollrad hoch Befehl"
}
},
"dialog": {
@@ -199,6 +223,10 @@
"description": "Albumcover des aktuell abgespielten Tracks anzeigen.",
"label": "Albumcover anzeigen"
},
"show-artist-first": {
"description": "Künstler - Titel anstatt Titel - Künstler anzeigen.",
"label": "Künstler zuerst anzeigen"
},
"show-visualizer": {
"description": "Audio-Visualizer anzeigen, wenn Musik abgespielt wird.",
"label": "Visualizer anzeigen"
@@ -239,6 +267,9 @@
}
},
"system-monitor": {
"cpu-critical-threshold": {
"label": "CPU Usage (Critical)"
},
"cpu-temperature": {
"description": "CPU-Temperaturwerte anzeigen, falls verfügbar.",
"label": "CPU-Temperatur"
@@ -247,6 +278,25 @@
"description": "Aktuelle CPU-Auslastung in Prozent anzeigen.",
"label": "CPU-Auslastung"
},
"cpu-warning-threshold": {
"label": "CPU Usage (Warning)"
},
"disk-critical-threshold": {
"label": "Storage Space (Critical)"
},
"disk-path": {
"description": "Wählen Sie den Festplatten-Mountpunkt aus, der überwacht werden soll.",
"label": "Festplattenpfad"
},
"disk-warning-threshold": {
"label": "Storage Space (Warning)"
},
"mem-critical-threshold": {
"label": "Memory Usage (Critical)"
},
"mem-warning-threshold": {
"label": "Memory Usage (Warning)"
},
"memory-percentage": {
"description": "Speicherverbrauch als Prozentsatz statt absolute Werte anzeigen.",
"label": "Speicher als Prozentsatz"
@@ -262,6 +312,16 @@
"storage-usage": {
"description": "Festplattenspeicher-Nutzungsinformationen anzeigen.",
"label": "Speichernutzung"
},
"temp-critical-threshold": {
"label": "CPU Temperature (Critical)"
},
"temp-warning-threshold": {
"label": "CPU Temperature (Warning)"
},
"thresholds": {
"description": "Schwellenwerte für visuelle Indikatoren konfigurieren. Warn-/Kritik-Indikatoren erscheinen in hervorgehobenen Farben bei Überschreitung.",
"header": "Schwellenwerte"
}
},
"taskbar": {
@@ -283,13 +343,9 @@
}
},
"taskbar-grouped": {
"show-numbers-only-when-occupied": {
"description": "Arbeitsbereichsnummern nur für Arbeitsbereiche mit geöffneten Fenstern anzeigen.",
"label": "Nur bei belegten Arbeitsbereichen anzeigen"
},
"show-workspace-numbers": {
"description": "Arbeitsbereichsnummern in der oberen linken Ecke der Task-Gruppen anzeigen.",
"label": "Arbeitsbereichsnummern anzeigen"
"show-labels-only-when-occupied": {
"description": "Zeige nur die Workspace-Bezeichnung für Workspaces an, die offene Fenster haben.",
"label": "Zeige Label nur bei Belegung"
}
},
"tray": {
@@ -332,13 +388,6 @@
"health": "Zustand: {percent}%",
"idle": "Leerlauf.",
"no-battery-detected": "Keine Batterie erkannt.",
"panel": {
"balanced": "Ausgeglichen ({percent}%)",
"disabled": "Batteriemanager deaktiviert",
"full": "Volle Kapazität ({percent}%)",
"lifespan": "Verlängerte Lebensdauer ({percent}%)",
"title": "Ladeschwelle"
},
"plugged-in": "Angeschlossen.",
"time-left": "Verbleibende Zeit: {time}.",
"time-until-full": "Zeit bis vollständig geladen: {time}."
@@ -367,9 +416,61 @@
"loading": "Wetter wird geladen…"
}
},
"changelog": {
"error": {
"fetch-failed": "Changelog-Daten konnten nicht geladen werden. Bitte versuche es später erneut.",
"rate-limit": "GitHub-Limit erreicht. Bitte versuche es in ein paar Minuten erneut."
},
"panel": {
"buttons": {
"discord": "Unserem Discord beitreten",
"dismiss": "Ok"
},
"empty": "Es sind noch keine Versionshinweise verfügbar.",
"highlight-title": "Highlights",
"section": {
"released": "Veröffentlicht am {date}",
"version": "Version {version}"
},
"subtitle": {
"fresh": "Danke, dass du Noctalia installiert hast! Das ist in diesem Build enthalten.",
"updated": "Aktualisiert von {previousVersion}"
},
"title": "Was ist neu in {version}",
"version": {
"new-user": "Neuinstallation"
}
}
},
"clock": {
"tooltip": "Kalender öffnen"
},
"context-menu": {
"activate-app": "{app} aktivieren",
"clear-history": "Verlauf löschen",
"close-app": "{app} schließen",
"connect-vpn": "Mit {name} verbinden",
"cycle-visualizer": "Zyklus-Visualisierer",
"disable-bluetooth": "Bluetooth deaktivieren",
"disable-dnd": "Bitte nicht stören deaktivieren",
"disable-wifi": "WLAN deaktivieren",
"disconnect-vpn": "Verbindung zu {name} trennen",
"enable-bluetooth": "Bluetooth aktivieren",
"enable-dnd": "Nicht stören aktivieren",
"enable-wifi": "WLAN aktivieren",
"next": "Nächste/r/s",
"open-calendar": "Kalender öffnen",
"open-display-settings": "Anzeigeeinstellungen",
"open-launcher": "Launcher öffnen",
"open-mixer": "Audiomischer",
"open-settings": "Einstellungen öffnen",
"pause": "Pause",
"play": "Spielen",
"previous": "Vorherige",
"random-wallpaper": "Zufälliges Hintergrundbild",
"toggle-mute": "Stummschaltung umschalten",
"widget-settings": "Widget-Einstellungen"
},
"dock": {
"menu": {
"close": "Schließen",
@@ -533,6 +634,7 @@
},
"workspace-labels": {
"index": "Index",
"index+name": "Index und Name",
"name": "Name",
"none": "Keine"
}
@@ -548,6 +650,7 @@
"search": "Suchen...",
"search-icons": "z.B. noctalia, niri, battery, cloud",
"search-launcher": "Einträge suchen... oder > für Befehle verwenden",
"search-wallhaven": "Wallhaven durchsuchen...",
"search-wallpapers": "Zum Filtern von Hintergrundbildern eingeben...",
"select": "Auswählen",
"test": "Test"
@@ -628,7 +731,7 @@
"wallpaperSelector": {
"label": "Hintergrundbild",
"tooltip": {
"action": "Linksklick: Hintergrundbildauswahl öffnen\nRechtsklick: Zufälliges Hintergrundbild setzen"
"action": "Linksklick: Hintergrundbild-Auswahl öffnen\nRechtsklick: Zufälliges Hintergrundbild setzen"
}
},
"wifi": {
@@ -644,12 +747,13 @@
},
"session-menu": {
"action-in-seconds": "{action} in {seconds} Sekunden...",
"hibernate": "Ruhezustand",
"lock": "Sperren",
"lock-and-suspend": "Sperren und Ruhezustand",
"logout": "Abmelden",
"reboot": "Neu starten",
"shutdown": "Herunterfahren",
"suspend": "Ruhezustand",
"suspend": "Energiesparmodus",
"title": "Sitzungsmenü"
},
"settings": {
@@ -688,6 +792,11 @@
"label": "Audio-Geräte"
}
},
"external-mixer": {
"description": "Geben Sie den Befehl oder den Anwendungspfad ein, der beim Aktivieren der externen Audiomixer-Funktion gestartet werden soll.",
"label": "Externer Audio-Mixer-Befehl",
"placeholder": "pwvucontrol || pavucontrol"
},
"media": {
"excluded-player": {
"description": "Stichwörter für Player hinzufügen, die das System ignorieren soll. Jedes Stichwort sollte in einer neuen Zeile stehen.",
@@ -762,6 +871,10 @@
"description": "Hintergrund-Transparenz der Statusleiste anpassen.",
"label": "Hintergrund-Transparenz"
},
"capsule-opacity": {
"description": "Deckkraft der Widget-Hintergründe festlegen, wenn Kapsel angezeigt wird.",
"label": "Kapsel-Deckkraft"
},
"density": {
"description": "Innenabstand der Statusleiste für kompaktes oder geräumiges Aussehen anpassen.",
"label": "Statusleistendichte"
@@ -854,6 +967,41 @@
"label": "Dunkler Modus"
}
},
"delete": {
"error": {
"description": "Fehler beim Löschen von {scheme}",
"title": "Löschen fehlgeschlagen"
},
"success": {
"description": "{scheme} wurde erfolgreich gelöscht",
"title": "Farbschema gelöscht"
}
},
"download": {
"button": "Mehr herunterladen",
"delete": "Löschen",
"download": "Herunterladen",
"downloading": "Wird heruntergeladen...",
"empty": "Keine Farbschemata verfügbar",
"error": {
"api-error": "API-Fehler: {status}",
"description": "Fehler beim Herunterladen von {scheme}",
"download-failed": "Download fehlgeschlagen mit Exit-Code: {code}",
"invalid-response": "Ungültiges API-Antwortformat",
"no-files": "Keine Dateien für Schema gefunden",
"parse-failed": "Fehler beim Parsen der API-Antwort: {error}",
"rate-limit": "GitHub API-Ratenlimit überschritten",
"title": "Download fehlgeschlagen"
},
"fetching": "Verfügbare Farbschemata werden abgerufen...",
"installed": "Installiert",
"refresh": "Aktualisieren",
"success": {
"description": "{scheme} wurde erfolgreich heruntergeladen",
"title": "Farbschema heruntergeladen"
},
"title": "Farbschemata herunterladen"
},
"predefined": {
"generate-templates": {
"description": "Generiert Matugen-Templates (GTK, Terminal-Themes, etc.) bei der Verwendung vordefinierter Farbschemata.",
@@ -876,7 +1024,7 @@
"programs": {
"code": {
"description": "Schreibe {Dateipfad}. Das Hyprluna-Theme muss manuell installiert und aktiviert werden",
"description-missing": "Benötigt die Installation von {app}"
"description-missing": "Kein Code-Client erkannt. Installieren Sie VSCode oder VSCodium."
},
"description": "Anwendungsspezifisches Theming.",
"discord": {
@@ -893,7 +1041,11 @@
"description-missing": "Erfordert die Installation von {app}"
},
"spicetify": {
"description": "Schreibe {Dateipfad}. Das Comfy-Theme muss manuell installiert und aktiviert werden",
"description": "Schreibe {filepath}. Das Comfy-Theme muss manuell installiert und aktiviert werden",
"description-missing": "Benötigt die Installation von {app}"
},
"telegram": {
"description": "Schreibe {filepath}.",
"description-missing": "Benötigt die Installation von {app}"
},
"vicinae": {
@@ -1092,6 +1244,10 @@
"description": "Hintergrund-Transparenz des Docks anpassen.",
"label": "Hintergrund-Transparenz"
},
"border-radius": {
"description": "Den Radius der Dock-Umrandung anpassen.",
"label": "Eckenradius"
},
"colorize-icons": {
"description": "Theme-Farben auf Dock-App-Symbole anwenden (nur nicht fokussierte Apps).",
"label": "Symbole einfärben"
@@ -1243,6 +1399,10 @@
"description": "Hintergrund-Transparenz des Starters anpassen.",
"label": "Hintergrund-Transparenz"
},
"clip-preview": {
"description": "Zeigt eine Vorschau des Inhalts der Zwischenablage an, wenn der Befehl >clip verwendet wird.",
"label": "Clip-Vorschau aktivieren"
},
"clipboard-history": {
"description": "Zugriff auf zuvor kopierte Elemente über den Launcher.",
"label": "Zwischenablageverlauf aktivieren"
@@ -1331,6 +1491,10 @@
"description": "Bevorzugte Temperatureinheit wählen.",
"label": "Wetter"
},
"show-effects": {
"description": "Zeigt zusätzliche visuelle Effekte (wie Regen, Schnee oder Blitze) auf der Wetterkarte an.",
"label": "Wettereffekte anzeigen"
},
"show-in-calendar": {
"description": "Zeige die tägliche Wettervorhersage direkt in deiner Kalenderansicht an.",
"label": "Wetter im Kalender anzeigen"
@@ -1346,6 +1510,10 @@
"description": "Den Bildschirm beim Suspendieren des Systems automatisch sperren.",
"label": "Sperren beim Ruhezustand"
},
"show-hibernate": {
"description": "Die Option 'Ruhezustand' in den Energieaktionen anzeigen.",
"label": "Ruhezustand anzeigen"
},
"title": "Sperrbildschirm"
},
"network": {
@@ -1437,6 +1605,10 @@
"description": "On-Screen Display über Vollbildfenstern und anderen Ebenen anzeigen.",
"label": "Immer im Vordergrund"
},
"background-opacity": {
"description": "Kontrolliert die Transparenz des OSD Hintergrunds.",
"label": "Hintergrund-Transparenz"
},
"description": "Bildschirm-Overlays wie Lautstärke- und Helligkeitsanzeigen konfigurieren.",
"duration": {
"auto-hide": {
@@ -1529,7 +1701,107 @@
}
}
},
"session-menu": {
"countdown-duration": {
"description": "Legen Sie fest, wie lange der Countdown-Timer vor der Ausführung von Energieaktionen dauert.",
"label": "Countdown-Dauer"
},
"enable-countdown": {
"description": "Zeige einen Countdown-Timer vor der Ausführung von Energieaktionen.",
"label": "Countdown-Timer aktivieren"
},
"entries": {
"section": {
"description": "Anpassen, welche Energieaktionen im Sitzungsmenü angezeigt werden und in welcher Reihenfolge.",
"label": "Energieaktionen"
}
},
"general": {
"section": {
"description": "Konfigurieren Sie das Verhalten und Erscheinungsbild des Sitzungsmenü-Panels.",
"label": "Allgemein"
}
},
"position": {
"description": "Wählen Sie, wo das Sitzungsmenü-Panel beim Öffnen erscheint.",
"label": "Position"
},
"show-header": {
"description": "Zeige den Titel und die Schließen-Schaltfläche oben im Sitzungsmenü.",
"label": "Kopfzeile anzeigen"
},
"title": "Sitzungsmenü"
},
"system-monitor": {
"cpu-critical-threshold": {
"label": "Kritische Schwelle"
},
"cpu-section": {
"label": "CPU-Auslastung"
},
"cpu-warning-threshold": {
"label": "Warnschwelle"
},
"critical-color": {
"label": "Kritische Farbe"
},
"custom-highlight-colors-title": {
"label": "Benutzerdefinierte Hervorhebungsfarben"
},
"disk-critical-threshold": {
"label": "Kritische Schwelle"
},
"disk-section": {
"label": "Festplattennutzung"
},
"disk-warning-threshold": {
"label": "Warnschwelle"
},
"general": {
"section": {
"description": "Konfigurieren Sie das Verhalten und Aussehen des Systemmonitors.",
"label": "Allgemein"
}
},
"highlight-colors-section": {
"label": "Hervorhebungsfarben"
},
"mem-critical-threshold": {
"label": "Kritische Schwelle"
},
"mem-warning-threshold": {
"label": "Warnschwelle"
},
"memory-section": {
"label": "Speicherverbrauch"
},
"temp-critical-threshold": {
"label": "Kritische Schwelle"
},
"temp-warning-threshold": {
"label": "Warnschwelle"
},
"temperature-section": {
"label": "CPU-Temperatur"
},
"thresholds-section": {
"description": "Setzen Sie Schwellenwerte für Systemmetriken; Werte darüber werden hervorgehoben.",
"label": "Schwellenwerte"
},
"title": "Systemmonitor",
"use-custom-highlight-colors": {
"description": "Wenn deaktiviert, werden die Standard-Hervorhebungsfarben des Themes verwendet.",
"label": "Benutzerdefinierte Hervorhebungsfarben verwenden"
},
"warning-color": {
"label": "Warnfarbe"
}
},
"user-interface": {
"allow-panels-without-bar": {
"description": "Wenn aktiviert, können sich Panels auf jedem Bildschirm öffnen. Wenn deaktiviert, öffnen sich Panels nur auf Bildschirmen mit einer Leiste, was den Speicherverbrauch reduzieren kann.",
"label": "Paneele auf Bildschirmen ohne Leiste zulassen"
},
"animation-disable": {
"description": "Deaktivieren Sie alle Animationen für eine schnellere und reaktionsfreudigere Erfahrung.",
"label": "UI-Animationen deaktivieren"
@@ -1548,6 +1820,15 @@
"description": "Den Desktop abdunkeln, wenn Fenster oder Menüs geöffnet sind.",
"label": "Desktop abdunkeln"
},
"dimmer-opacity": {
"description": "Deckkraft für das Abdunkeln des Desktops festlegen.",
"label": "Deckkraft des gedimmten Desktops",
"reset": "Deckkraft des gedimmten Desktops zurücksetzen"
},
"panel-background-opacity": {
"description": "Hintergrunddeckkraft für alle Paneele festlegen (Launcher, Control Center, Einstellungen usw.).",
"label": "Paneel-Hintergrunddeckkraft"
},
"panels-attached-to-bar": {
"description": "Die Paneele rasten an der Stange und den Bildschirmrändern ein und sorgen so für ein nahtloses Erscheinungsbild mit stilvollen, umgekehrten Ecken.",
"label": "Paneele an Kanten ausrichten"
@@ -1640,6 +1921,10 @@
"label": "Hintergrundbild-Ordner",
"tooltip": "Nach Hintergrundbild-Ordner suchen"
},
"hide-wallpaper-filenames": {
"description": "Hintergrundbilddateinamen im Auswahlmenü ausblenden.",
"label": "Dateinamen ausblenden"
},
"monitor-specific": {
"description": "Unterschiedlichen Hintergrundbild-Ordner für jeden Monitor festlegen.",
"label": "Monitor-spezifische Verzeichnisse",
@@ -1655,8 +1940,13 @@
},
"select-folder": "Hintergrundbild-Ordner auswählen",
"select-monitor-folder": "Monitor-Hintergrundbild-Ordner auswählen",
"selector": {
"description": "Wählen Sie Ihr Hintergrundbild aus.",
"label": "Hintergrundbild-Auswahl",
"tooltip": "Hintergrundbild-Auswahl öffnen"
},
"selector-position": {
"description": "Wählen Sie aus, wo das Hintergrundbildauswahlfeld angezeigt wird.",
"description": "Wählen Sie aus, wo das Hintergrundbild-Auswahlfeld angezeigt wird.",
"label": "Position"
}
},
@@ -1719,19 +2009,6 @@
"low": "Niedriger Batteriestand",
"low-desc": "Batterie ist bei {percent}%. Bitte schließen Sie das Ladegerät an."
},
"battery-manager": {
"initial-setup": "Ersteinrichtung erforderlich",
"install-failed": "Installation fehlgeschlagen",
"install-missing": "Erforderliche Dateien fehlen",
"install-success": "Erfolgreich installiert",
"install-unsupported": "System wird nicht unterstützt",
"set-failed": "Fehler beim Setzen der Batterieschwelle",
"set-success-desc": "Batterieschwelle auf {percent}% gesetzt",
"title": "Batterieschwelle",
"uninstall-failed": "Deinstallation fehlgeschlagen",
"uninstall-setup": "Deinstallation, Authentifizierung erforderlich",
"uninstall-success": "Erfolgreich deinstalliert"
},
"bluetooth": {
"disabled": "Deaktiviert",
"enabled": "Aktiviert"
@@ -1800,6 +2077,10 @@
"title-matugen": "Matugen-Templating-Verarbeitung fehlgeschlagen",
"title-predefined": "Die Verarbeitung des vordefinierten Farbschemas ist fehlgeschlagen."
},
"vpn": {
"connected": "Verbunden mit '{name}'",
"disconnected": "Verbindung zu '{name}' getrennt"
},
"wallpaper-colors": {
"disabled": "Hintergrundbild-Farben deaktiviert",
"enabled": "Hintergrundbild-Farben aktiviert",
@@ -1833,6 +2114,7 @@
"input-muted": "Audio-Eingabe stummschalten",
"keep-awake": "Wach halten",
"keyboard-layout": "{layout} Tastaturlayout",
"manage-vpn": "VPN-Verbindungen verwalten",
"manage-wifi": "WLAN verwalten",
"microphone-volume-at": "Mikrofonlautstärke bei {volume}%.\nLinksklick für Einstellungen. Rechtsklick zum Stummschalten.\nScrollen zum Ändern der Lautstärke.",
"move-to-center-section": "Zur mittleren Sektion verschieben",
@@ -1860,6 +2142,7 @@
"previous-month": "Vorheriger Monat",
"refresh": "Aktualisieren",
"refresh-devices": "Geräte aktualisieren",
"refresh-wallhaven": "Wallhaven-Ergebnisse aktualisieren",
"refresh-wallpaper-list": "Hintergrundbild-Liste aktualisieren",
"remove-widget": "Widget entfernen",
"screen-recorder-not-installed": "Bildschirmrekorder ist nicht installiert",
@@ -1889,8 +2172,51 @@
"description": "Ausgewähltes Hintergrundbild auf alle Monitore gleichzeitig anwenden.",
"label": "Auf alle Monitore anwenden"
},
"categories": {
"anime": "Anime",
"general": "Allgemein",
"label": "Kategorien",
"people": "Personen"
},
"order": {
"asc": "Aufsteigend",
"desc": "Absteigend",
"label": "Reihenfolge"
},
"purity": {
"all": "Alle",
"label": "Inhaltsfilter",
"sfw": "SFW",
"sketchy": "Sketchy"
},
"resolution": {
"atleast": "Mindestens",
"exact": "Exakt",
"label": "Auflösung",
"mode": {
"label": "Modus"
}
},
"search": "Suchen:",
"title": "Hintergrundbild-Auswahl"
"sorting": {
"date_added": "Hinzugefügt am",
"favorites": "Favoriten",
"label": "Sortieren nach",
"random": "Zufällig",
"relevance": "Relevanz",
"toplist": "Topliste",
"views": "Aufrufe"
},
"source": {
"label": "Quelle",
"local": "Lokal",
"wallhaven": "Wallhaven"
},
"title": "Hintergrundbild-Auswahl",
"wallhaven-settings": {
"apply": "Anwenden",
"title": "Wallhaven-Einstellungen"
}
},
"transitions": {
"disc": "Scheibe",
@@ -1900,7 +2226,13 @@
"stripes": "Streifen",
"wipe": "Wischen"
},
"try-different-search": "Versuchen Sie eine andere Suchanfrage."
"try-different-search": "Versuchen Sie eine andere Suchanfrage.",
"unknown": "Unbekannt",
"wallhaven": {
"loading": "Hintergrundbilder werden geladen...",
"no-results": "Keine Hintergrundbilder gefunden. Versuchen Sie eine andere Suchanfrage.",
"page": "{current} von {total}"
}
},
"weather": {
"clear-sky": "Klarer Himmel",
@@ -2009,6 +2341,7 @@
},
"wifi": {
"panel": {
"available-networks": "Verfügbare Netzwerke",
"connect": "Verbinden",
"connected": "Verbunden",
"disabled": "WLAN ist deaktiviert",
@@ -2019,6 +2352,7 @@
"forget": "Vergessen",
"forget-network": "Dieses Netzwerk vergessen?",
"forgetting": "Wird vergessen...",
"known-networks": "Bekannte Netzwerke",
"no-networks": "Keine Netzwerke gefunden",
"password": "Passwort",
"saved": "Gespeichert",

View File

@@ -123,21 +123,27 @@
"stream-description": "Enter a command to run continuously."
},
"dynamic-text": "Dynamic text",
"hide-vertical": {
"description": "If enabled, the text from the command output will not be shown when the bar is in a vertical layout (left or right).",
"label": "Hide text in vertical bar"
},
"icon": {
"description": "Select an icon from the library.",
"label": "Icon"
},
"left-click": {
"description": "Command to execute when the button is left-clicked.",
"label": "Left click"
"label": "Left click",
"update-text": "Update displayed text on left-click"
},
"max-text-length-horizontal": {
"description": "Maximum number of characters to show in horizontal bar (0 to hide text)",
"label": "Max text length (horizontal)"
},
"max-text-length-vertical": {
"description": "Maximum number of characters to show in vertical bar (0 to hide text)",
"label": "Max text length (vertical)"
},
"middle-click": {
"description": "Command to execute when the button is middle-clicked.",
"label": "Middle click"
"label": "Middle click",
"update-text": "Update displayed text on middle-click"
},
"parse-json": {
"description": "Parse the command output as a JSON object to dynamically set text and icon.",
@@ -149,11 +155,29 @@
},
"right-click": {
"description": "Command to execute when the button is right-clicked.",
"label": "Right click"
"label": "Right click",
"update-text": "Update displayed text on right-click"
},
"text-stream": {
"description": "Streamed lines from the command will be displayed as text on the button.",
"label": "Stream"
},
"wheel": {
"description": "Command to execute when the scroll wheel is used.\nUse $delta for the scroll wheel delta in the command",
"label": "Scroll wheel",
"update-text": "Update displayed text on scroll"
},
"wheel-down": {
"description": "Command to execute when the scroll wheel is scrolled down.",
"label": "Wheel down command"
},
"wheel-mode-separate": {
"description": "Enable separate commands for wheel up and down",
"label": "Separate wheel commands"
},
"wheel-up": {
"description": "Command to execute when the scroll wheel is scrolled up.",
"label": "Wheel up command"
}
},
"dialog": {
@@ -199,6 +223,10 @@
"description": "Display the album artwork for the currently playing track.",
"label": "Show album art"
},
"show-artist-first": {
"description": "Display artist - title instead of title - artist.",
"label": "Show artist first"
},
"show-visualizer": {
"description": "Display an audio visualizer when music is playing.",
"label": "Show visualizer"
@@ -239,6 +267,9 @@
}
},
"system-monitor": {
"cpu-critical-threshold": {
"label": "CPU Usage (Critical)"
},
"cpu-temperature": {
"description": "Show CPU temperature readings if available.",
"label": "CPU temperature"
@@ -247,6 +278,25 @@
"description": "Display current CPU usage percentage.",
"label": "CPU usage"
},
"cpu-warning-threshold": {
"label": "CPU Usage (Warning)"
},
"disk-critical-threshold": {
"label": "Storage Space (Critical)"
},
"disk-path": {
"description": "Select which disk mount point to monitor.",
"label": "Disk path"
},
"disk-warning-threshold": {
"label": "Storage Space (Warning)"
},
"mem-critical-threshold": {
"label": "Memory Usage (Critical)"
},
"mem-warning-threshold": {
"label": "Memory Usage (Warning)"
},
"memory-percentage": {
"description": "Show memory usage as a percentage instead of absolute values.",
"label": "Memory as percentage"
@@ -262,6 +312,16 @@
"storage-usage": {
"description": "Show disk space usage information.",
"label": "Storage usage"
},
"temp-critical-threshold": {
"label": "CPU Temperature (Critical)"
},
"temp-warning-threshold": {
"label": "CPU Temperature (Warning)"
},
"thresholds": {
"description": "Set thresholds for system metric alerts. Highlights when exceeded.",
"header": "Threshold Settings"
}
},
"taskbar": {
@@ -283,13 +343,9 @@
}
},
"taskbar-grouped": {
"show-numbers-only-when-occupied": {
"description": "Only show workspace numbers for workspaces that have open windows.",
"label": "Show numbers only when occupied"
},
"show-workspace-numbers": {
"description": "Display workspace numbers in the top-left corner of task groups.",
"label": "Show workspace numbers"
"show-labels-only-when-occupied": {
"description": "Only show workspace label for workspaces that have open windows.",
"label": "Show label only when occupied"
}
},
"tray": {
@@ -325,23 +381,16 @@
}
},
"battery": {
"charging": "Charging.",
"charging-rate": "Charging rate: {rate} W.",
"discharging": "Discharging.",
"discharging-rate": "Discharging rate: {rate} W.",
"charging": "Charging",
"charging-rate": "Charging rate: {rate} W",
"discharging": "Discharging",
"discharging-rate": "Discharging rate: {rate} W",
"health": "Health: {percent}%",
"idle": "Idle.",
"no-battery-detected": "No battery detected.",
"panel": {
"balanced": "Balanced ({percent}%)",
"disabled": "Battery manager disabled",
"full": "Full capacity ({percent}%)",
"lifespan": "Extended lifespan ({percent}%)",
"title": "Charge threshold"
},
"plugged-in": "Plugged in.",
"time-left": "Time left: {time}.",
"time-until-full": "Time until full: {time}."
"idle": "Idle",
"no-battery-detected": "No battery detected",
"plugged-in": "Plugged in",
"time-left": "Time left: {time}",
"time-until-full": "Time until full: {time}"
},
"bluetooth": {
"panel": {
@@ -367,9 +416,61 @@
"loading": "Loading weather…"
}
},
"changelog": {
"error": {
"fetch-failed": "Unable to load changelog data. Please try again later.",
"rate-limit": "GitHub rate limit exceeded. Please try again in a few minutes."
},
"panel": {
"buttons": {
"discord": "Join our Discord",
"dismiss": "Ok"
},
"empty": "Release notes are not available yet.",
"highlight-title": "Highlights",
"section": {
"released": "Released on {date}",
"version": "Version {version}"
},
"subtitle": {
"fresh": "Thanks for installing Noctalia! Here is whats included in this build.",
"updated": "Updated from {previousVersion}"
},
"title": "What's new in {version}",
"version": {
"new-user": "Fresh install"
}
}
},
"clock": {
"tooltip": "Open calendar"
},
"context-menu": {
"activate-app": "Activate {app}",
"clear-history": "Clear history",
"close-app": "Close {app}",
"connect-vpn": "Connect to {name}",
"cycle-visualizer": "Cycle visualizer",
"disable-bluetooth": "Disable Bluetooth",
"disable-dnd": "Disable Do Not Disturb",
"disable-wifi": "Disable Wi-Fi",
"disconnect-vpn": "Disconnect {name}",
"enable-bluetooth": "Enable Bluetooth",
"enable-dnd": "Enable Do Not Disturb",
"enable-wifi": "Enable Wi-Fi",
"next": "Next",
"open-calendar": "Open calendar",
"open-display-settings": "Display settings",
"open-launcher": "Open launcher",
"open-mixer": "Audio mixer",
"open-settings": "Open settings",
"pause": "Pause",
"play": "Play",
"previous": "Previous",
"random-wallpaper": "Random wallpaper",
"toggle-mute": "Toggle mute",
"widget-settings": "Widget settings"
},
"dock": {
"menu": {
"close": "Close",
@@ -533,6 +634,7 @@
},
"workspace-labels": {
"index": "Index",
"index+name": "Index and Name",
"name": "Name",
"none": "None"
}
@@ -548,6 +650,7 @@
"search": "Search...",
"search-icons": "e.g., noctalia, niri, battery, cloud",
"search-launcher": "Search entries... or use > for commands",
"search-wallhaven": "Search Wallhaven...",
"search-wallpapers": "Type to filter wallpapers...",
"select": "Select",
"test": "Test"
@@ -644,6 +747,7 @@
},
"session-menu": {
"action-in-seconds": "{action} in {seconds} seconds...",
"hibernate": "Hibernate",
"lock": "Lock",
"lock-and-suspend": "Lock and Suspend",
"logout": "Logout",
@@ -688,6 +792,11 @@
"label": "Audio devices"
}
},
"external-mixer": {
"description": "Enter the command or application path to launch when activating the external audio mixer feature.",
"label": "External Audio Mixer Command",
"placeholder": "pwvucontrol || pavucontrol"
},
"media": {
"excluded-player": {
"description": "Add keywords for players you want the system to ignore. Each keyword should be on a new line.",
@@ -762,6 +871,10 @@
"description": "Adjust the background opacity of the bar.",
"label": "Background opacity"
},
"capsule-opacity": {
"description": "Set the opacity level for widget backgrounds when capsule is shown.",
"label": "Capsule opacity"
},
"density": {
"description": "Adjust the bar's padding for a compact or spacious look.",
"label": "Bar density"
@@ -854,6 +967,41 @@
"label": "Dark mode"
}
},
"delete": {
"error": {
"description": "Failed to delete {scheme}",
"title": "Delete Failed"
},
"success": {
"description": "Successfully deleted {scheme}",
"title": "Color Scheme Deleted"
}
},
"download": {
"button": "Download more",
"delete": "Delete",
"download": "Download",
"downloading": "Downloading...",
"empty": "No color schemes available",
"error": {
"api-error": "API error: {status}",
"description": "Failed to download {scheme}",
"download-failed": "Download failed with exit code: {code}",
"invalid-response": "Invalid API response format",
"no-files": "No files found for scheme",
"parse-failed": "Failed to parse API response: {error}",
"rate-limit": "GitHub API rate limit exceeded",
"title": "Download Failed"
},
"fetching": "Fetching available color schemes...",
"installed": "Installed",
"refresh": "Refresh",
"success": {
"description": "Successfully downloaded {scheme}",
"title": "Color Scheme Downloaded"
},
"title": "Download Color Schemes"
},
"predefined": {
"generate-templates": {
"description": "Generate Matugen templates (GTK, terminal themes, etc.) when using predefined color schemes.",
@@ -876,7 +1024,7 @@
"programs": {
"code": {
"description": "Write {filepath}. Hyprluna theme needs to be installed and activated manually.",
"description-missing": "Requires {app} to be installed"
"description-missing": "No Code client detected. Install VSCode or VSCodium."
},
"description": "Application-specific theming.",
"discord": {
@@ -896,6 +1044,10 @@
"description": "Write {filepath}. Comfy theme needs to be installed and activated manually.",
"description-missing": "Requires {app} to be installed"
},
"telegram": {
"description": "Write {filepath}.",
"description-missing": "Requires {app} to be installed"
},
"vicinae": {
"description": "Write {filepath} and reload",
"description-missing": "Requires {app} to be installed"
@@ -1092,6 +1244,10 @@
"description": "Adjust the dock's background opacity.",
"label": "Background opacity"
},
"border-radius": {
"description": "Adjust the dock's border radius.",
"label": "Border radius"
},
"colorize-icons": {
"description": "Apply theme colors to dock app icons (non-focused apps only).",
"label": "Colorize Icons"
@@ -1243,6 +1399,10 @@
"description": "Adjust the background opacity of the launcher.",
"label": "Background opacity"
},
"clip-preview": {
"description": "Show a preview of the clipboard content when using the >clip command.",
"label": "Enable clip preview"
},
"clipboard-history": {
"description": "Access previously copied items from the launcher.",
"label": "Enable clipboard history"
@@ -1331,6 +1491,10 @@
"description": "Choose your preferred temperature unit.",
"label": "Weather"
},
"show-effects": {
"description": "Shows additional visual effects (like rain, snow, or lightning) on the weather card.",
"label": "Display weather effects"
},
"show-in-calendar": {
"description": "Show the daily weather forecast directly in your calendar view.",
"label": "Display weather in calendar"
@@ -1346,6 +1510,10 @@
"description": "Automatically lock the screen when suspending the system.",
"label": "Lock on suspend"
},
"show-hibernate": {
"description": "Show the option 'hibernate' in the energy actions.",
"label": "Show hibernate"
},
"title": "Lock screen"
},
"network": {
@@ -1437,6 +1605,10 @@
"description": "Display OSD above fullscreen windows and other layers.",
"label": "Always on top"
},
"background-opacity": {
"description": "Controls the transparency of the OSD background.",
"label": "Background opacity"
},
"description": "Configure on-screen indicators such as volume and brightness overlays.",
"duration": {
"auto-hide": {
@@ -1529,7 +1701,107 @@
}
}
},
"session-menu": {
"countdown-duration": {
"description": "Set how long the countdown timer lasts before executing power actions.",
"label": "Countdown duration"
},
"enable-countdown": {
"description": "Show a countdown timer before executing power actions.",
"label": "Enable countdown timer"
},
"entries": {
"section": {
"description": "Customize which power actions appear in the Session Menu and in what order.",
"label": "Power actions"
}
},
"general": {
"section": {
"description": "Configure the Session Menu panel behavior and appearance.",
"label": "General"
}
},
"position": {
"description": "Choose where the Session Menu panel appears when opened.",
"label": "Position"
},
"show-header": {
"description": "Display the title and close button at the top of the Session Menu.",
"label": "Show header"
},
"title": "Session Menu"
},
"system-monitor": {
"cpu-critical-threshold": {
"label": "Critical Threshold"
},
"cpu-section": {
"label": "CPU Usage"
},
"cpu-warning-threshold": {
"label": "Warning Threshold"
},
"critical-color": {
"label": "Critical Color"
},
"custom-highlight-colors-title": {
"label": "Custom highlight colors"
},
"disk-critical-threshold": {
"label": "Critical Threshold"
},
"disk-section": {
"label": "Disk Usage"
},
"disk-warning-threshold": {
"label": "Warning Threshold"
},
"general": {
"section": {
"description": "Configure the System Monitor behavior and appearance.",
"label": "General"
}
},
"highlight-colors-section": {
"label": "Highlight Colors"
},
"mem-critical-threshold": {
"label": "Critical Threshold"
},
"mem-warning-threshold": {
"label": "Warning Threshold"
},
"memory-section": {
"label": "Memory Usage"
},
"temp-critical-threshold": {
"label": "Critical Threshold"
},
"temp-warning-threshold": {
"label": "Warning Threshold"
},
"temperature-section": {
"label": "CPU Temperature"
},
"thresholds-section": {
"description": "Set thresholds for system metrics, values above these will be highlighted.",
"label": "Thresholds"
},
"title": "System Monitor",
"use-custom-highlight-colors": {
"description": "When disabled, theme default highlight colors are used.",
"label": "Use custom highlight colors"
},
"warning-color": {
"label": "Warning Color"
}
},
"user-interface": {
"allow-panels-without-bar": {
"description": "When enabled, panels can open on any screen. When disabled, panels will only open on screens that have a bar, which can reduce memory usage.",
"label": "Allow panels on screens without a bar"
},
"animation-disable": {
"description": "Disable all animations for a faster, more responsive experience.",
"label": "Disable UI Animations"
@@ -1548,6 +1820,15 @@
"description": "Dim the desktop when panels or menus are open.",
"label": "Dim desktop"
},
"dimmer-opacity": {
"description": "Set the opacity level for desktop dimming.",
"label": "Dimmed desktop opacity",
"reset": "Reset dimmed desktop opacity"
},
"panel-background-opacity": {
"description": "Set the background opacity for all panels (Launcher, Control Center, Settings, etc.).",
"label": "Panel background opacity"
},
"panels-attached-to-bar": {
"description": "Panels lock to the bar and screen edges, creating a seamless look with stylish inverted corners.",
"label": "Snap panels to edges"
@@ -1640,6 +1921,10 @@
"label": "Wallpaper folder",
"tooltip": "Browse for wallpaper folder"
},
"hide-wallpaper-filenames": {
"description": "Hide wallpaper filenames in the selector.",
"label": "Hide filenames"
},
"monitor-specific": {
"description": "Set a different wallpaper folder for each monitor.",
"label": "Monitor-specific directories",
@@ -1655,6 +1940,11 @@
},
"select-folder": "Select wallpaper folder",
"select-monitor-folder": "Select monitor wallpaper folder",
"selector": {
"description": "Choose your wallpaper.",
"label": "Wallpaper selector",
"tooltip": "Open wallpaper selector"
},
"selector-position": {
"description": "Choose where the wallpaper selector panel appears.",
"label": "Position"
@@ -1719,19 +2009,6 @@
"low": "Low battery",
"low-desc": "Battery is at {percent}%. Please connect the charger."
},
"battery-manager": {
"initial-setup": "Initial setup required",
"install-failed": "Installation failed",
"install-missing": "Required files are missing",
"install-success": "Installed successfully",
"install-unsupported": "System is not supported",
"set-failed": "Failed to set battery threshold",
"set-success-desc": "Battery threshold set to {percent}%",
"title": "Battery threshold",
"uninstall-failed": "Uninstallation failed",
"uninstall-setup": "Uninstalling, authentication required",
"uninstall-success": "Uninstalled successfully"
},
"bluetooth": {
"disabled": "Disabled",
"enabled": "Enabled"
@@ -1800,6 +2077,10 @@
"title-matugen": "Matugen templating processing failed",
"title-predefined": "Predefined color cheme processing failed"
},
"vpn": {
"connected": "Connected to '{name}'",
"disconnected": "Disconnected from '{name}'"
},
"wallpaper-colors": {
"disabled": "Wallpaper colors disabled",
"enabled": "Wallpaper colors enabled",
@@ -1816,39 +2097,40 @@
"tooltips": {
"add-widget": "Add widget",
"bluetooth-devices": "Bluetooth devices",
"brightness-at": "Brightness: {brightness}%\nRight click for settings.\nScroll to modify brightness.",
"brightness-at": "Brightness: {brightness}%\nScroll to modify brightness",
"cancel-timer": "Cancel timer",
"clear-history": "Clear history",
"click-to-start-recording": "Click to start recording",
"click-to-stop-recording": "Click to stop recording",
"close": "Close",
"connect-disconnect-devices": "Left click to connect. Right click to forget.",
"connect-disconnect-devices": "Left click to connect\nRight click to forget",
"delete-notification": "Delete notification",
"disable-keep-awake": "Click to disable keep awake.\nScroll to adjust timeout.",
"disable-keep-awake": "Click to disable keep awake.\nScroll to adjust timeout",
"do-not-disturb-disabled": "'Do not disturb' disabled",
"do-not-disturb-enabled": "'Do not disturb' enabled",
"enable-keep-awake": "Click to enable keep awake.\nScroll to adjust timeout.",
"enable-keep-awake": "Click to enable keep awake.\nScroll to adjust timeout",
"forget-network": "Forget network",
"home": "Home",
"input-muted": "Toggle input mute",
"keep-awake": "Keep awake",
"keyboard-layout": "{layout} keyboard layout",
"manage-vpn": "Manage VPN connections",
"manage-wifi": "Manage Wi-Fi",
"microphone-volume-at": "Microphone volume at {volume}%\nLeft click for settings. Right click to toggle mute.\nScroll to modify volume.",
"microphone-volume-at": "Microphone volume at {volume}%\nScroll to modify volume",
"move-to-center-section": "Move to center section",
"move-to-left-section": "Move to left section",
"move-to-right-section": "Move to right section",
"next-media": "Next media",
"next-month": "Next month",
"night-light-disabled": "Night light is disabled.\nLeft click to cycle mode.\nRight click to access settings.",
"night-light-enabled": "Night light is enabled.\nLeft click to cycle mode.\nRight click to access settings.",
"night-light-forced": "Night light is forced.\nLeft click to cycle mode.\nRight click to access settings.",
"night-light-not-installed": "Night light is not available.\nwlsunset is not installed.",
"noctalia-performance-disabled": "Noctalia performance mode is disabled.\nLeft click to enable.",
"noctalia-performance-enabled": "Noctalia performance mode is enabled.\nLeft click to disable.",
"night-light-disabled": "Night light is disabled.\nLeft click to cycle mode\nRight click to access settings",
"night-light-enabled": "Night light is enabled.\nLeft click to cycle mode\nRight click to access settings",
"night-light-forced": "Night light is forced.\nLeft click to cycle mode\nRight click to access settings",
"night-light-not-installed": "Night light is not available\nwlsunset is not installed",
"noctalia-performance-disabled": "Noctalia performance mode is disabled\nLeft click to enable",
"noctalia-performance-enabled": "Noctalia performance mode is enabled\nLeft click to disable",
"open-control-center": "Open control center",
"open-notification-history-disable-dnd": "Open notification history\nRight-click to disable \"Do not disturb\".",
"open-notification-history-enable-dnd": "Open notification history\nRight-click to enable \"Do not disturb\".",
"open-notification-history-disable-dnd": "Open notification history\nRight-click to disable \"Do not disturb\"",
"open-notification-history-enable-dnd": "Open notification history\nRight-click to enable \"Do not disturb\"",
"open-settings": "Open settings",
"open-tray-dropdown": "Open tray dropdown",
"open-wallpaper-selector": "Open wallpaper selector",
@@ -1860,6 +2142,7 @@
"previous-month": "Previous month",
"refresh": "Refresh",
"refresh-devices": "Refresh devices",
"refresh-wallhaven": "Refresh Wallhaven results",
"refresh-wallpaper-list": "Refresh wallpaper list",
"remove-widget": "Remove widget",
"screen-recorder-not-installed": "Screen recorder is not installed",
@@ -1870,8 +2153,8 @@
"switch-to-dark-mode": "Switch to dark mode",
"switch-to-light-mode": "Switch to light mode",
"up": "Up",
"volume-at": "Output volume at {volume}%\nLeft click for settings. Right click to toggle mute.\nScroll to modify volume.",
"wallpaper-selector": "Left click: Open wallpaper selector.\nRight click: Set random wallpaper.",
"volume-at": "Output volume at {volume}%\nScroll to modify volume",
"wallpaper-selector": "Left click: Open wallpaper selector.\nRight click: Set random wallpaper",
"widget-settings": "Widget settings"
},
"wallpaper": {
@@ -1886,11 +2169,54 @@
"no-wallpaper": "No wallpaper found.",
"panel": {
"apply-all-monitors": {
"description": "Apply selected wallpaper to all monitors at once.",
"description": "Apply the selected wallpaper to all monitors.",
"label": "Apply to all monitors"
},
"search": "Search:",
"title": "Wallpaper selector"
"categories": {
"anime": "Anime",
"general": "General",
"label": "Categories",
"people": "People"
},
"order": {
"asc": "Ascending",
"desc": "Descending",
"label": "Order"
},
"purity": {
"all": "All",
"label": "Content filter",
"sfw": "SFW",
"sketchy": "Sketchy"
},
"resolution": {
"atleast": "At least",
"exact": "Exact",
"label": "Resolution",
"mode": {
"label": "Mode"
}
},
"search": "Search",
"sorting": {
"date_added": "Date added",
"favorites": "Favorites",
"label": "Sort by",
"random": "Random",
"relevance": "Relevance",
"toplist": "Toplist",
"views": "Views"
},
"source": {
"label": "Source",
"local": "Local",
"wallhaven": "Wallhaven"
},
"title": "Wallpaper Selector",
"wallhaven-settings": {
"apply": "Apply",
"title": "Wallhaven Settings"
}
},
"transitions": {
"disc": "Disc",
@@ -1900,7 +2226,13 @@
"stripes": "Stripes",
"wipe": "Wipe"
},
"try-different-search": "Try a different search query."
"try-different-search": "Try a different search query.",
"unknown": "Unknown",
"wallhaven": {
"loading": "Loading wallpapers...",
"no-results": "No wallpapers found. Try a different search query.",
"page": "{current} of {total}"
}
},
"weather": {
"clear-sky": "Clear sky",
@@ -2009,6 +2341,7 @@
},
"wifi": {
"panel": {
"available-networks": "Available Networks",
"connect": "Connect",
"connected": "Connected",
"disabled": "Wi-Fi is disabled",
@@ -2019,6 +2352,7 @@
"forget": "Forget",
"forget-network": "Forget this network?",
"forgetting": "Forgetting...",
"known-networks": "Known Networks",
"no-networks": "No networks found",
"password": "Password",
"saved": "Saved",

View File

@@ -123,21 +123,27 @@
"stream-description": "Introduce un comando para ejecutar continuamente."
},
"dynamic-text": "Texto dinámico",
"hide-vertical": {
"description": "Si está activado, el texto de la salida del comando no se mostrará cuando la barra esté en un diseño vertical (izquierda o derecha).",
"label": "Ocultar texto en barra vertical"
},
"icon": {
"description": "Selecciona un icono de la biblioteca.",
"label": "Icono"
},
"left-click": {
"description": "Comando a ejecutar cuando se hace clic izquierdo en el botón.",
"label": "Clic izquierdo"
"label": "Clic izquierdo",
"update-text": "Actualizar el texto mostrado al hacer clic izquierdo"
},
"max-text-length-horizontal": {
"description": "Número máximo de caracteres a mostrar en la barra horizontal (0 para ocultar el texto)",
"label": "Longitud máxima de texto (horizontal)"
},
"max-text-length-vertical": {
"description": "Número máximo de caracteres a mostrar en la barra vertical (0 para ocultar el texto)",
"label": "Longitud máxima de texto (vertical)"
},
"middle-click": {
"description": "Comando a ejecutar cuando se hace clic medio en el botón.",
"label": "Clic medio"
"label": "Clic medio",
"update-text": "Actualizar el texto mostrado al hacer clic con el botón central"
},
"parse-json": {
"description": "Analizar la salida del comando como un objeto JSON para establecer dinámicamente el texto y el ícono.",
@@ -149,11 +155,29 @@
},
"right-click": {
"description": "Comando a ejecutar cuando se hace clic derecho en el botón.",
"label": "Clic derecho"
"label": "Clic derecho",
"update-text": "Actualizar el texto mostrado al hacer clic derecho"
},
"text-stream": {
"description": "Las líneas transmitidas desde el comando se mostrarán como texto en el botón.",
"label": "Transmisión"
},
"wheel": {
"description": "Comando a ejecutar cuando se usa la rueda de desplazamiento.\nUsa $delta para el delta de la rueda de desplazamiento en el comando",
"label": "Rueda de desplazamiento",
"update-text": "Actualizar texto mostrado al desplazarse"
},
"wheel-down": {
"description": "Comando a ejecutar cuando la rueda de desplazamiento se desplaza hacia abajo.",
"label": "Comando de rueda hacia abajo"
},
"wheel-mode-separate": {
"description": "Habilitar comandos separados para rueda arriba y abajo",
"label": "Comandos de rueda separados"
},
"wheel-up": {
"description": "Comando a ejecutar cuando la rueda de desplazamiento se desplaza hacia arriba.",
"label": "Comando de rueda hacia arriba"
}
},
"dialog": {
@@ -199,6 +223,10 @@
"description": "Mostrar la portada del álbum de la pista que se está reproduciendo actualmente.",
"label": "Mostrar arte del álbum"
},
"show-artist-first": {
"description": "Mostrar artista - título en lugar de título - artista.",
"label": "Mostrar primero al artista"
},
"show-visualizer": {
"description": "Mostrar un visualizador de audio cuando se reproduce música.",
"label": "Mostrar visualizador"
@@ -239,6 +267,9 @@
}
},
"system-monitor": {
"cpu-critical-threshold": {
"label": "CPU Usage (Critical)"
},
"cpu-temperature": {
"description": "Mostrar lecturas de temperatura de CPU si están disponibles.",
"label": "Temperatura de la CPU"
@@ -247,6 +278,25 @@
"description": "Mostrar el porcentaje actual de uso de CPU.",
"label": "Uso de CPU"
},
"cpu-warning-threshold": {
"label": "CPU Usage (Warning)"
},
"disk-critical-threshold": {
"label": "Storage Space (Critical)"
},
"disk-path": {
"description": "Seleccione qué punto de montaje de disco desea supervisar.",
"label": "Ruta del disco"
},
"disk-warning-threshold": {
"label": "Storage Space (Warning)"
},
"mem-critical-threshold": {
"label": "Memory Usage (Critical)"
},
"mem-warning-threshold": {
"label": "Memory Usage (Warning)"
},
"memory-percentage": {
"description": "Mostrar el uso de memoria como porcentaje en lugar de valores absolutos.",
"label": "Memoria como porcentaje"
@@ -262,6 +312,16 @@
"storage-usage": {
"description": "Mostrar información del uso del espacio en disco.",
"label": "Uso de almacenamiento"
},
"temp-critical-threshold": {
"label": "CPU Temperature (Critical)"
},
"temp-warning-threshold": {
"label": "CPU Temperature (Warning)"
},
"thresholds": {
"description": "Establece umbrales para alertas de métricas del sistema. Resalta cuando se superan.",
"header": "Configuración de Umbrales"
}
},
"taskbar": {
@@ -283,13 +343,9 @@
}
},
"taskbar-grouped": {
"show-numbers-only-when-occupied": {
"description": "Mostrar números de espacio de trabajo solo para espacios de trabajo con ventanas abiertas.",
"label": "Mostrar números solo cuando estén ocupados"
},
"show-workspace-numbers": {
"description": "Mostrar números de espacio de trabajo en la esquina superior izquierda de los grupos de tareas.",
"label": "Mostrar números de espacio de trabajo"
"show-labels-only-when-occupied": {
"description": "Mostrar solo la etiqueta del espacio de trabajo para los espacios de trabajo que tienen ventanas abiertas.",
"label": "Mostrar etiqueta solo cuando esté ocupado."
}
},
"tray": {
@@ -332,13 +388,6 @@
"health": "Salud: {percent}%",
"idle": "Inactivo.",
"no-battery-detected": "No se detectó ninguna batería.",
"panel": {
"balanced": "Equilibrado ({percent}%)",
"disabled": "Administrador de batería deshabilitado",
"full": "Capacidad total ({percent}%)",
"lifespan": "Vida útil prolongada ({percent}%)",
"title": "Umbral de carga"
},
"plugged-in": "Conectado.",
"time-left": "Tiempo restante: {time}.",
"time-until-full": "Tiempo hasta carga completa: {time}."
@@ -367,9 +416,61 @@
"loading": "Cargando el clima…"
}
},
"changelog": {
"error": {
"fetch-failed": "No se pudieron cargar los datos del registro de cambios. Inténtalo de nuevo más tarde.",
"rate-limit": "Se alcanzó el límite de GitHub. Inténtalo de nuevo en unos minutos."
},
"panel": {
"buttons": {
"discord": "Únete a nuestro Discord",
"dismiss": "Ok"
},
"empty": "Las notas de la versión aún no están disponibles.",
"highlight-title": "Cambios destacados",
"section": {
"released": "Publicado el {date}",
"version": "Versión {version}"
},
"subtitle": {
"fresh": "Gracias por instalar Noctalia. Esto es lo que incluye esta compilación.",
"updated": "Actualizado desde {previousVersion}"
},
"title": "Novedades en {version}",
"version": {
"new-user": "Instalación nueva"
}
}
},
"clock": {
"tooltip": "Abrir calendario"
},
"context-menu": {
"activate-app": "Activar {app}",
"clear-history": "Borrar historial",
"close-app": "Cerrar {app}",
"connect-vpn": "Conectarse a {name}",
"cycle-visualizer": "Visualizador de ciclos",
"disable-bluetooth": "Desactivar Bluetooth",
"disable-dnd": "Desactivar No molestar",
"disable-wifi": "Desactivar Wi-Fi",
"disconnect-vpn": "Desconectar {name}",
"enable-bluetooth": "Activar Bluetooth",
"enable-dnd": "Activar No molestar",
"enable-wifi": "Activar Wi-Fi",
"next": "Siguiente",
"open-calendar": "Abrir calendario",
"open-display-settings": "Configuración de pantalla",
"open-launcher": "Abrir lanzador",
"open-mixer": "Mezclador de audio",
"open-settings": "Abrir ajustes",
"pause": "Pausa",
"play": "Jugar",
"previous": "Anterior",
"random-wallpaper": "Fondo de pantalla aleatorio",
"toggle-mute": "Activar/desactivar silencio",
"widget-settings": "Configuración del widget"
},
"dock": {
"menu": {
"close": "Cerrar",
@@ -533,6 +634,7 @@
},
"workspace-labels": {
"index": "Índice",
"index+name": "Índice y Nombre",
"name": "Nombre",
"none": "Ninguno"
}
@@ -548,6 +650,7 @@
"search": "Buscar...",
"search-icons": "ej., noctalia, niri, battery, cloud",
"search-launcher": "Buscar entradas... o usa > para comandos",
"search-wallhaven": "Buscar en Wallhaven...",
"search-wallpapers": "Escribe para filtrar fondos de pantalla...",
"select": "Seleccionar",
"test": "Probar"
@@ -644,6 +747,7 @@
},
"session-menu": {
"action-in-seconds": "{action} en {seconds} segundos...",
"hibernate": "Hibernación",
"lock": "Bloquear",
"lock-and-suspend": "Bloquear y Suspender",
"logout": "Cerrar sesión",
@@ -688,6 +792,11 @@
"label": "Dispositivos de audio"
}
},
"external-mixer": {
"description": "Ingrese el comando o la ruta de la aplicación para ejecutar al activar la función de mezclador de audio externo.",
"label": "Comando de mezclador de audio externo",
"placeholder": "pwvucontrol || pavucontrol"
},
"media": {
"excluded-player": {
"description": "Agrega palabras clave para los reproductores que deseas que el sistema ignore. Cada palabra clave debe estar en una línea nueva.",
@@ -762,6 +871,10 @@
"description": "Ajusta la opacidad del fondo de la barra.",
"label": "Opacidad del fondo"
},
"capsule-opacity": {
"description": "Establecer el nivel de opacidad para los fondos de los widgets cuando se muestra la cápsula.",
"label": "Opacidad de la cápsula"
},
"density": {
"description": "Ajusta el relleno de la barra para un aspecto compacto o espacioso.",
"label": "Densidad de la barra"
@@ -854,6 +967,41 @@
"label": "Modo oscuro"
}
},
"delete": {
"error": {
"description": "Error al eliminar {scheme}",
"title": "Error al eliminar"
},
"success": {
"description": "{scheme} eliminado correctamente",
"title": "Esquema de colores eliminado"
}
},
"download": {
"button": "Descargar más",
"delete": "Eliminar",
"download": "Descargar",
"downloading": "Descargando...",
"empty": "No hay esquemas de colores disponibles",
"error": {
"api-error": "Error de API: {status}",
"description": "Error al descargar {scheme}",
"download-failed": "Error al descargar con código de salida: {code}",
"invalid-response": "Formato de respuesta de API inválido",
"no-files": "No se encontraron archivos para el esquema",
"parse-failed": "Error al analizar la respuesta de la API: {error}",
"rate-limit": "Límite de velocidad de la API de GitHub excedido",
"title": "Error al descargar"
},
"fetching": "Obteniendo esquemas de colores disponibles...",
"installed": "Instalado",
"refresh": "Actualizar",
"success": {
"description": "{scheme} descargado correctamente",
"title": "Esquema de colores descargado"
},
"title": "Descargar esquemas de colores"
},
"predefined": {
"generate-templates": {
"description": "Genera plantillas de Matugen (GTK, temas de terminal, etc.) al usar esquemas de colores predefinidos.",
@@ -876,7 +1024,7 @@
"programs": {
"code": {
"description": "Escribe {filepath}. El tema Hyprluna debe ser instalado y activado manualmente.",
"description-missing": "Requiere que {app} esté instalado/a."
"description-missing": "No se detectó cliente de Code. Instala VSCode o VSCodium."
},
"description": "Tematización específica de aplicaciones.",
"discord": {
@@ -896,6 +1044,10 @@
"description": "Escribe {filepath}. El tema Comfy debe ser instalado y activado manualmente.",
"description-missing": "Requiere que {app} esté instalado/a."
},
"telegram": {
"description": "Escribe {filepath}.",
"description-missing": "Requiere que {app} esté instalado/a."
},
"vicinae": {
"description": "Escribir {filepath} y recargar",
"description-missing": "Requiere que {app} esté instalado"
@@ -1092,6 +1244,10 @@
"description": "Ajusta la opacidad del fondo del dock.",
"label": "Opacidad del fondo"
},
"border-radius": {
"description": "Ajustar el radio del borde del dock.",
"label": "Radio de borde"
},
"colorize-icons": {
"description": "Aplicar colores del tema a los iconos de aplicaciones del dock (solo aplicaciones no enfocadas).",
"label": "Colorear iconos"
@@ -1243,6 +1399,10 @@
"description": "Ajusta la opacidad del fondo del lanzador.",
"label": "Opacidad del fondo"
},
"clip-preview": {
"description": "Muestra una vista previa del contenido del portapapeles al usar el comando >clip.",
"label": "Activar vista previa del portapapeles"
},
"clipboard-history": {
"description": "Accede a los elementos copiados anteriormente desde el lanzador.",
"label": "Activar historial del portapapeles"
@@ -1331,6 +1491,10 @@
"description": "Elige tu unidad de temperatura preferida.",
"label": "Clima"
},
"show-effects": {
"description": "Muestra efectos visuales adicionales (como lluvia, nieve o relámpagos) en la tarjeta del clima.",
"label": "Mostrar efectos climáticos"
},
"show-in-calendar": {
"description": "Muestra el pronóstico del tiempo diario directamente en la vista de tu calendario.",
"label": "Mostrar el clima en el calendario"
@@ -1346,6 +1510,10 @@
"description": "Bloquear la pantalla automáticamente al suspender el sistema.",
"label": "Bloquear al suspender"
},
"show-hibernate": {
"description": "Mostrar la opción 'hibernar' en las acciones de energía.",
"label": "Mostrar hibernar"
},
"title": "Pantalla de bloqueo"
},
"network": {
@@ -1437,6 +1605,10 @@
"description": "Mostrar OSD por encima de ventanas de pantalla completa y otras capas.",
"label": "Siempre encima"
},
"background-opacity": {
"description": "Controls the transparency of the OSD background.",
"label": "Background opacity"
},
"description": "Configura indicadores superpuestos como volumen y brillo.",
"duration": {
"auto-hide": {
@@ -1529,7 +1701,107 @@
}
}
},
"session-menu": {
"countdown-duration": {
"description": "Establecer cuánto tiempo dura el temporizador de cuenta regresiva antes de ejecutar acciones de energía.",
"label": "Duración de la cuenta regresiva"
},
"enable-countdown": {
"description": "Mostrar un temporizador de cuenta regresiva antes de ejecutar acciones de energía.",
"label": "Activar temporizador de cuenta regresiva"
},
"entries": {
"section": {
"description": "Personalizar qué acciones de energía aparecen en el Menú de sesión y en qué orden.",
"label": "Acciones de energía"
}
},
"general": {
"section": {
"description": "Configurar el comportamiento y la apariencia del panel del menú de sesión.",
"label": "General"
}
},
"position": {
"description": "Elige dónde aparece el panel del Menú de sesión cuando se abre.",
"label": "Posición"
},
"show-header": {
"description": "Mostrar el título y el botón de cerrar en la parte superior del Menú de sesión.",
"label": "Mostrar encabezado"
},
"title": "Menú de sesión"
},
"system-monitor": {
"cpu-critical-threshold": {
"label": "Umbral crítico"
},
"cpu-section": {
"label": "Uso de CPU"
},
"cpu-warning-threshold": {
"label": "Umbral de advertencia"
},
"critical-color": {
"label": "Color crítico"
},
"custom-highlight-colors-title": {
"label": "Colores de resaltado personalizados"
},
"disk-critical-threshold": {
"label": "Umbral crítico"
},
"disk-section": {
"label": "Uso de disco"
},
"disk-warning-threshold": {
"label": "Umbral de advertencia"
},
"general": {
"section": {
"description": "Configurar el comportamiento y la apariencia del Monitor del sistema.",
"label": "General"
}
},
"highlight-colors-section": {
"label": "Colores de resaltado"
},
"mem-critical-threshold": {
"label": "Umbral crítico"
},
"mem-warning-threshold": {
"label": "Umbral de advertencia"
},
"memory-section": {
"label": "Uso de memoria"
},
"temp-critical-threshold": {
"label": "Umbral crítico"
},
"temp-warning-threshold": {
"label": "Umbral de advertencia"
},
"temperature-section": {
"label": "Temperatura de la CPU"
},
"thresholds-section": {
"description": "Establece umbrales para métricas del sistema; los valores por encima se resaltarán.",
"label": "Umbrales"
},
"title": "Monitor del sistema",
"use-custom-highlight-colors": {
"description": "Cuando está desactivado, se usan los colores de resaltado predeterminados del tema.",
"label": "Usar colores de resaltado personalizados"
},
"warning-color": {
"label": "Color de advertencia"
}
},
"user-interface": {
"allow-panels-without-bar": {
"description": "Cuando está activado, los paneles se pueden abrir en cualquier pantalla. Cuando está desactivado, los paneles solo se abrirán en las pantallas que tengan una barra, lo que puede reducir el uso de memoria.",
"label": "Permitir paneles en pantallas sin barra."
},
"animation-disable": {
"description": "Desactiva todas las animaciones para una experiencia más rápida y con mayor capacidad de respuesta.",
"label": "Desactivar animaciones de la interfaz de usuario"
@@ -1548,6 +1820,15 @@
"description": "Atenuar el escritorio cuando los paneles o menús estén abiertos.",
"label": "Dim escritorio"
},
"dimmer-opacity": {
"description": "Define el nivel de opacidad para el atenuado del escritorio.",
"label": "Opacidad del escritorio atenuado",
"reset": "Restablecer la opacidad del escritorio atenuado"
},
"panel-background-opacity": {
"description": "Establecer la opacidad de fondo para todos los paneles (Launcher, Centro de control, Configuración, etc.).",
"label": "Opacidad de fondo del panel"
},
"panels-attached-to-bar": {
"description": "Los paneles se fijan a la barra y a los bordes de la pantalla, creando una apariencia impecable con elegantes esquinas invertidas.",
"label": "Ajustar paneles a los bordes"
@@ -1640,6 +1921,10 @@
"label": "Carpeta de fondos de pantalla",
"tooltip": "Buscar carpeta de fondos de pantalla"
},
"hide-wallpaper-filenames": {
"description": "Oculta los nombres de archivo del fondo de pantalla en el selector.",
"label": "Ocultar nombres de archivo"
},
"monitor-specific": {
"description": "Establece una carpeta de fondos de pantalla diferente para cada monitor.",
"label": "Directorios específicos por monitor",
@@ -1655,6 +1940,11 @@
},
"select-folder": "Seleccionar carpeta de fondos de pantalla",
"select-monitor-folder": "Seleccionar carpeta de fondos de pantalla del monitor",
"selector": {
"description": "Elige tu fondo de pantalla.",
"label": "Selector de fondo de pantalla",
"tooltip": "Abrir el selector de fondo de pantalla"
},
"selector-position": {
"description": "Elige dónde aparece el panel selector de fondo de pantalla.",
"label": "Posición"
@@ -1719,19 +2009,6 @@
"low": "Batería baja",
"low-desc": "La batería está al {percent}%. Por favor, conecta el cargador."
},
"battery-manager": {
"initial-setup": "Configuración inicial requerida",
"install-failed": "Error en la instalación",
"install-missing": "Faltan archivos requeridos",
"install-success": "Instalado correctamente",
"install-unsupported": "El sistema no es compatible",
"set-failed": "No se pudo establecer el umbral de batería",
"set-success-desc": "Umbral de batería establecido en {percent}%",
"title": "Umbral de batería",
"uninstall-failed": "Error en la desinstalación",
"uninstall-setup": "Desinstalando, se requiere autenticación",
"uninstall-success": "Desinstalado correctamente"
},
"bluetooth": {
"disabled": "Desactivado",
"enabled": "Activado"
@@ -1800,6 +2077,10 @@
"title-matugen": "Falló el procesamiento de la plantilla Matugen.",
"title-predefined": "Falló el procesamiento del esquema de color predefinido."
},
"vpn": {
"connected": "Conectado a '{name}'",
"disconnected": "Desconectado de '{name}'"
},
"wallpaper-colors": {
"disabled": "Colores del fondo de pantalla desactivados",
"enabled": "Colores del fondo de pantalla activados",
@@ -1833,6 +2114,7 @@
"input-muted": "Silenciar entrada de audio",
"keep-awake": "Mantener despierto",
"keyboard-layout": "Distribución de teclado {layout}",
"manage-vpn": "Administrar conexiones VPN",
"manage-wifi": "Gestionar Wi-Fi",
"microphone-volume-at": "Volumen del micrófono al {volume}%.\nClic izquierdo para ajustes. Clic derecho para activar/desactivar el silencio.\nDesplázate para modificar el volumen.",
"move-to-center-section": "Mover a la sección central",
@@ -1860,6 +2142,7 @@
"previous-month": "Mes anterior",
"refresh": "Actualizar",
"refresh-devices": "Actualizar dispositivos",
"refresh-wallhaven": "Actualizar resultados de Wallhaven",
"refresh-wallpaper-list": "Actualizar lista de fondos de pantalla",
"remove-widget": "Eliminar widget",
"screen-recorder-not-installed": "La grabadora de pantalla no está instalada",
@@ -1889,8 +2172,51 @@
"description": "Aplica el fondo de pantalla seleccionado a todos los monitores a la vez.",
"label": "Aplicar a todos los monitores"
},
"categories": {
"anime": "Anime",
"general": "General",
"label": "Categorías",
"people": "Personas"
},
"order": {
"asc": "Ascendente",
"desc": "Descendente",
"label": "Orden"
},
"purity": {
"all": "Todo",
"label": "Filtro de contenido",
"sfw": "SFW",
"sketchy": "Sketchy"
},
"resolution": {
"atleast": "Al menos",
"exact": "Exacto",
"label": "Resolución",
"mode": {
"label": "Modo"
}
},
"search": "Buscar:",
"title": "Selector de fondo de pantalla"
"sorting": {
"date_added": "Fecha de adición",
"favorites": "Favoritos",
"label": "Ordenar por",
"random": "Aleatorio",
"relevance": "Relevancia",
"toplist": "Lista superior",
"views": "Visualizaciones"
},
"source": {
"label": "Fuente",
"local": "Local",
"wallhaven": "Wallhaven"
},
"title": "Selector de fondo de pantalla",
"wallhaven-settings": {
"apply": "Aplicar",
"title": "Configuración de Wallhaven"
}
},
"transitions": {
"disc": "Disco",
@@ -1900,7 +2226,13 @@
"stripes": "Rayas",
"wipe": "Barrido"
},
"try-different-search": "Intenta con una búsqueda diferente."
"try-different-search": "Intenta con una búsqueda diferente.",
"unknown": "Desconocido",
"wallhaven": {
"loading": "Cargando fondos de pantalla...",
"no-results": "No se encontraron fondos de pantalla. Intenta con una búsqueda diferente.",
"page": "{current} de {total}"
}
},
"weather": {
"clear-sky": "Cielo despejado",
@@ -2009,6 +2341,7 @@
},
"wifi": {
"panel": {
"available-networks": "Redes disponibles",
"connect": "Conectar",
"connected": "Conectado",
"disabled": "Wi-Fi está desactivado",
@@ -2019,6 +2352,7 @@
"forget": "Olvidar",
"forget-network": "¿Olvidar esta red?",
"forgetting": "Olvidando...",
"known-networks": "Redes conocidas",
"no-networks": "No se encontraron redes",
"password": "Contraseña",
"saved": "Guardado",

View File

@@ -123,21 +123,27 @@
"stream-description": "Entrez une commande à exécuter en continu."
},
"dynamic-text": "Texte dynamique",
"hide-vertical": {
"description": "Si activé, le texte de la sortie de la commande ne sera pas affiché lorsque la barre est en disposition verticale (gauche ou droite).",
"label": "Masquer le texte dans la barre verticale"
},
"icon": {
"description": "Sélectionnez une icône dans la bibliothèque.",
"label": "Icône"
},
"left-click": {
"description": "Commande à exécuter quand le bouton est cliqué à gauche.",
"label": "Clic gauche"
"label": "Clic gauche",
"update-text": "Mettre à jour le texte affiché au clic gauche."
},
"max-text-length-horizontal": {
"description": "Nombre maximal de caractères à afficher dans la barre horizontale (0 pour masquer le texte)",
"label": "Longueur max du texte (horizontal)"
},
"max-text-length-vertical": {
"description": "Nombre maximal de caractères à afficher dans la barre verticale (0 pour masquer le texte)",
"label": "Longueur max du texte (vertical)"
},
"middle-click": {
"description": "Commande à exécuter quand le bouton est cliqué au milieu.",
"label": "Clic milieu"
"label": "Clic milieu",
"update-text": "Mettre à jour le texte affiché lors d'un clic molette."
},
"parse-json": {
"description": "Analyser la sortie de la commande en tant qu'objet JSON pour définir dynamiquement le texte et l'icône.",
@@ -149,11 +155,29 @@
},
"right-click": {
"description": "Commande à exécuter quand le bouton est cliqué à droite.",
"label": "Clic droit"
"label": "Clic droit",
"update-text": "Mettre à jour le texte affiché lors d'un clic droit."
},
"text-stream": {
"description": "Les lignes diffusées depuis la commande seront affichées sous forme de texte sur le bouton.",
"label": "Flux"
},
"wheel": {
"description": "Commande à exécuter lorsque la molette est utilisée.\nUtilisez $delta pour le delta de la molette dans la commande",
"label": "Molette",
"update-text": "Mettre à jour le texte affiché au défilement"
},
"wheel-down": {
"description": "Commande à exécuter lorsque la molette est défilée vers le bas.",
"label": "Commande molette bas"
},
"wheel-mode-separate": {
"description": "Activer des commandes séparées pour la molette haut et bas",
"label": "Commandes de molette séparées"
},
"wheel-up": {
"description": "Commande à exécuter lorsque la molette est défilée vers le haut.",
"label": "Commande molette haut"
}
},
"dialog": {
@@ -199,6 +223,10 @@
"description": "Afficher la pochette d'album de la piste en cours de lecture.",
"label": "Afficher la pochette d'album"
},
"show-artist-first": {
"description": "Afficher artiste - titre au lieu de titre - artiste.",
"label": "Afficher l'artiste en premier"
},
"show-visualizer": {
"description": "Afficher un visualiseur audio quand la musique est en cours de lecture.",
"label": "Afficher le visualiseur"
@@ -239,6 +267,9 @@
}
},
"system-monitor": {
"cpu-critical-threshold": {
"label": "CPU Usage (Critical)"
},
"cpu-temperature": {
"description": "Afficher les lectures de température du CPU si disponibles.",
"label": "Température du CPU"
@@ -247,6 +278,25 @@
"description": "Afficher le pourcentage d'utilisation actuel du CPU.",
"label": "Utilisation du CPU"
},
"cpu-warning-threshold": {
"label": "CPU Usage (Warning)"
},
"disk-critical-threshold": {
"label": "Storage Space (Critical)"
},
"disk-path": {
"description": "Sélectionnez le point de montage du disque à surveiller.",
"label": "Chemin du disque"
},
"disk-warning-threshold": {
"label": "Storage Space (Warning)"
},
"mem-critical-threshold": {
"label": "Memory Usage (Critical)"
},
"mem-warning-threshold": {
"label": "Memory Usage (Warning)"
},
"memory-percentage": {
"description": "Afficher l'utilisation de la mémoire en pourcentage au lieu de valeurs absolues.",
"label": "Mémoire en pourcentage"
@@ -262,6 +312,16 @@
"storage-usage": {
"description": "Afficher les informations d'utilisation de l'espace disque.",
"label": "Utilisation du stockage"
},
"temp-critical-threshold": {
"label": "CPU Temperature (Critical)"
},
"temp-warning-threshold": {
"label": "CPU Temperature (Warning)"
},
"thresholds": {
"description": "Configurez les seuils des indicateurs visuels. Les indicateurs d'avertissement/critique apparaissent en couleurs mises en surbrillance lorsque les valeurs dépassent ces limites.",
"header": "Seuils"
}
},
"taskbar": {
@@ -283,13 +343,9 @@
}
},
"taskbar-grouped": {
"show-numbers-only-when-occupied": {
"description": "Afficher les numéros d'espace de travail uniquement pour les espaces de travail avec des fenêtres ouvertes.",
"label": "Afficher les numéros seulement lorsqu'occupés"
},
"show-workspace-numbers": {
"description": "Afficher les numéros d'espace de travail dans le coin supérieur gauche des groupes de tâches.",
"label": "Afficher les numéros d'espace de travail"
"show-labels-only-when-occupied": {
"description": "Afficher uniquement l'étiquette de l'espace de travail pour les espaces de travail qui ont des fenêtres ouvertes.",
"label": "Afficher l'étiquette uniquement lorsque c'est occupé."
}
},
"tray": {
@@ -332,13 +388,6 @@
"health": "État : {percent}%",
"idle": "Inactif.",
"no-battery-detected": "Aucune batterie détectée.",
"panel": {
"balanced": "Équilibré ({percent}%)",
"disabled": "Gestionnaire de batterie désactivé",
"full": "Capacité totale ({percent}%)",
"lifespan": "Durée de vie prolongée ({percent}%)",
"title": "Seuil de charge"
},
"plugged-in": "Branché.",
"time-left": "Temps restant : {time}.",
"time-until-full": "Temps jusqu'à charge complète : {time}."
@@ -367,9 +416,61 @@
"loading": "Chargement de la météo…"
}
},
"changelog": {
"error": {
"fetch-failed": "Impossible de charger les données du journal des modifications. Veuillez réessayer plus tard.",
"rate-limit": "Limite de GitHub atteinte. Réessayez dans quelques minutes."
},
"panel": {
"buttons": {
"discord": "Rejoindre notre Discord",
"dismiss": "Ok"
},
"empty": "Les notes de version ne sont pas encore disponibles.",
"highlight-title": "Points importants",
"section": {
"released": "Publié le {date}",
"version": "Version {version}"
},
"subtitle": {
"fresh": "Merci davoir installé Noctalia ! Voici ce que contient cette version.",
"updated": "Mise à jour depuis {previousVersion}"
},
"title": "Quoi de neuf dans {version}",
"version": {
"new-user": "Nouvelle installation"
}
}
},
"clock": {
"tooltip": "Ouvrir le calendrier"
},
"context-menu": {
"activate-app": "Activer {app}",
"clear-history": "Effacer l'historique",
"close-app": "Fermer {app}",
"connect-vpn": "Se connecter à {name}",
"cycle-visualizer": "Visualiseur de cycle",
"disable-bluetooth": "Désactiver le Bluetooth",
"disable-dnd": "Désactiver le mode Ne pas déranger",
"disable-wifi": "Désactiver le Wi-Fi",
"disconnect-vpn": "Se déconnecter de {name}",
"enable-bluetooth": "Activer le Bluetooth",
"enable-dnd": "Activer le mode Ne pas déranger",
"enable-wifi": "Activer le Wi-Fi",
"next": "Suivant",
"open-calendar": "Ouvrir le calendrier",
"open-display-settings": "Paramètres d'affichage",
"open-launcher": "Ouvrir le lanceur",
"open-mixer": "Table de mixage audio",
"open-settings": "Ouvrir les paramètres",
"pause": "Pause",
"play": "Jouer",
"previous": "Précédent",
"random-wallpaper": "Fond d'écran aléatoire",
"toggle-mute": "Activer/désactiver le mode muet",
"widget-settings": "Paramètres du widget"
},
"dock": {
"menu": {
"close": "Fermer",
@@ -533,6 +634,7 @@
},
"workspace-labels": {
"index": "Index",
"index+name": "Index et Nom",
"name": "Nom",
"none": "Aucun"
}
@@ -548,6 +650,7 @@
"search": "Rechercher...",
"search-icons": "ex: noctalia, niri, batterie, nuage",
"search-launcher": "Rechercher des entrées... ou utilisez > pour les commandes",
"search-wallhaven": "Rechercher sur Wallhaven...",
"search-wallpapers": "Tapez pour filtrer les fonds d'écran...",
"select": "Sélectionner",
"test": "Tester"
@@ -644,6 +747,7 @@
},
"session-menu": {
"action-in-seconds": "{action} dans {seconds} secondes...",
"hibernate": "Mise en veille prolongée",
"lock": "Verrouiller",
"lock-and-suspend": "Verrouiller et Mettre en veille",
"logout": "Déconnexion",
@@ -688,6 +792,11 @@
"label": "Périphériques audio"
}
},
"external-mixer": {
"description": "Entrez la commande ou le chemin d'accès de l'application à lancer lors de l'activation de la fonctionnalité de mixeur audio externe.",
"label": "Commande de mixeur audio externe",
"placeholder": "pwvucontrol || pavucontrol"
},
"media": {
"excluded-player": {
"description": "Ajoutez des mots-clés pour les lecteurs que le système doit ignorer. Chaque mot-clé doit être sur une nouvelle ligne.",
@@ -762,6 +871,10 @@
"description": "Ajustez l'opacité de l'arrière-plan de la barre.",
"label": "Opacité de l'arrière-plan"
},
"capsule-opacity": {
"description": "Définir le niveau d'opacité des arrière-plans des widgets quand la capsule est affichée.",
"label": "Opacité de la capsule"
},
"density": {
"description": "Ajustez le remplissage de la barre pour un aspect compact ou spacieux.",
"label": "Densité de la barre"
@@ -854,6 +967,41 @@
"label": "Mode sombre"
}
},
"delete": {
"error": {
"description": "Échec de la suppression de {scheme}",
"title": "Échec de la suppression"
},
"success": {
"description": "{scheme} supprimé avec succès",
"title": "Jeu de couleurs supprimé"
}
},
"download": {
"button": "Télécharger plus",
"delete": "Supprimer",
"download": "Télécharger",
"downloading": "Téléchargement...",
"empty": "Aucun jeu de couleurs disponible",
"error": {
"api-error": "Erreur API: {status}",
"description": "Échec du téléchargement de {scheme}",
"download-failed": "Échec du téléchargement avec le code de sortie: {code}",
"invalid-response": "Format de réponse API invalide",
"no-files": "Aucun fichier trouvé pour le jeu de couleurs",
"parse-failed": "Échec de l'analyse de la réponse API: {error}",
"rate-limit": "Limite de débit de l'API GitHub dépassée",
"title": "Échec du téléchargement"
},
"fetching": "Récupération des jeux de couleurs disponibles...",
"installed": "Installé",
"refresh": "Actualiser",
"success": {
"description": "{scheme} téléchargé avec succès",
"title": "Jeu de couleurs téléchargé"
},
"title": "Télécharger des jeux de couleurs"
},
"predefined": {
"generate-templates": {
"description": "Génère des modèles Matugen (GTK, thèmes de terminal, etc.) lors de l'utilisation de schémas de couleurs prédéfinis.",
@@ -876,7 +1024,7 @@
"programs": {
"code": {
"description": "Écrire {filepath}. Le thème Hyprluna doit être installé et activé manuellement.",
"description-missing": "Nécessite l'installation de {app}"
"description-missing": "Aucun client Code détecté. Installez VSCode ou VSCodium."
},
"description": "Thématisation spécifique aux applications.",
"discord": {
@@ -896,6 +1044,10 @@
"description": "Écrire {filepath}. Le thème Comfy doit être installé et activé manuellement.",
"description-missing": "Nécessite l'installation de {app}"
},
"telegram": {
"description": "Écrire {filepath}.",
"description-missing": "Nécessite l'installation de {app}"
},
"vicinae": {
"description": "Écrire {filepath} et recharger",
"description-missing": "Nécessite que le lanceur {app} soit installé"
@@ -1092,6 +1244,10 @@
"description": "Ajustez l'opacité de l'arrière-plan du dock.",
"label": "Opacité de l'arrière-plan"
},
"border-radius": {
"description": "Ajuster le rayon de bordure du dock.",
"label": "Rayon de bordure"
},
"colorize-icons": {
"description": "Appliquer les couleurs du thème aux icônes d'applications du dock (applications non focalisées uniquement).",
"label": "Coloriser les icônes"
@@ -1243,6 +1399,10 @@
"description": "Ajustez l'opacité de l'arrière-plan du lanceur.",
"label": "Opacité de l'arrière-plan"
},
"clip-preview": {
"description": "Afficher un aperçu du contenu du presse-papiers lors de l'utilisation de la commande >clip.",
"label": "Activer l'aperçu du presse-papiers"
},
"clipboard-history": {
"description": "Accédez aux éléments précédemment copiés depuis le lanceur.",
"label": "Activer l'historique du presse-papiers"
@@ -1331,6 +1491,10 @@
"description": "Choisissez votre unité de température préférée.",
"label": "Météo"
},
"show-effects": {
"description": "Affiche des effets visuels supplémentaires (comme la pluie, la neige ou la foudre) sur la carte météo.",
"label": "Afficher les effets météorologiques"
},
"show-in-calendar": {
"description": "Afficher les prévisions météo quotidiennes directement dans votre vue calendrier.",
"label": "Afficher la météo dans le calendrier"
@@ -1346,6 +1510,10 @@
"description": "Verrouiller automatiquement l'écran lors de la mise en veille du système.",
"label": "Verrouiller à la suspension"
},
"show-hibernate": {
"description": "Afficher loption 'hiberner' dans les actions dénergie.",
"label": "Afficher lhibernation"
},
"title": "Écran de verrouillage"
},
"network": {
@@ -1437,6 +1605,10 @@
"description": "Afficher l'OSD au-dessus des fenêtres plein écran et autres couches.",
"label": "Toujours au premier plan"
},
"background-opacity": {
"description": "Contrôle la transparence de l'arrière-plan de l'OSD.",
"label": "Opacité de l'arrière-plan"
},
"description": "Configurer les indicateurs à l'écran tels que le volume et la luminosité.",
"duration": {
"auto-hide": {
@@ -1529,7 +1701,107 @@
}
}
},
"session-menu": {
"countdown-duration": {
"description": "Définir la durée du compte à rebours avant d'exécuter les actions d'alimentation.",
"label": "Durée du compte à rebours"
},
"enable-countdown": {
"description": "Afficher un compte à rebours avant d'exécuter les actions d'alimentation.",
"label": "Activer le compte à rebours"
},
"entries": {
"section": {
"description": "Personnaliser les actions d'alimentation qui apparaissent dans le Menu de session et leur ordre.",
"label": "Actions d'alimentation"
}
},
"general": {
"section": {
"description": "Configurer le comportement et l'apparence du panneau du menu de session.",
"label": "Général"
}
},
"position": {
"description": "Choisissez où le panneau du Menu de session apparaît lorsqu'il est ouvert.",
"label": "Position"
},
"show-header": {
"description": "Afficher le titre et le bouton de fermeture en haut du Menu de session.",
"label": "Afficher l'en-tête"
},
"title": "Menu de session"
},
"system-monitor": {
"cpu-critical-threshold": {
"label": "Seuil critique"
},
"cpu-section": {
"label": "Utilisation CPU"
},
"cpu-warning-threshold": {
"label": "Seuil d'avertissement"
},
"critical-color": {
"label": "Couleur critique"
},
"custom-highlight-colors-title": {
"label": "Couleurs de surbrillance personnalisées"
},
"disk-critical-threshold": {
"label": "Seuil critique"
},
"disk-section": {
"label": "Utilisation disque"
},
"disk-warning-threshold": {
"label": "Seuil d'avertissement"
},
"general": {
"section": {
"description": "Configurer le comportement et l'apparence du Moniteur Système.",
"label": "Général"
}
},
"highlight-colors-section": {
"label": "Couleurs de surlignage"
},
"mem-critical-threshold": {
"label": "Seuil critique"
},
"mem-warning-threshold": {
"label": "Seuil d'avertissement"
},
"memory-section": {
"label": "Utilisation mémoire"
},
"temp-critical-threshold": {
"label": "Seuil critique"
},
"temp-warning-threshold": {
"label": "Seuil d'avertissement"
},
"temperature-section": {
"label": "Température CPU"
},
"thresholds-section": {
"description": "Définir des seuils pour les métriques système ; les valeurs supérieures à ces seuils seront mises en évidence.",
"label": "Seuils"
},
"title": "Moniteur système",
"use-custom-highlight-colors": {
"description": "Lorsque cette option est désactivée, les couleurs de surbrillance par défaut du thème sont utilisées.",
"label": "Utiliser des couleurs de surlignage personnalisées."
},
"warning-color": {
"label": "Couleur d'avertissement"
}
},
"user-interface": {
"allow-panels-without-bar": {
"description": "Quand cette option est activée, les panneaux peuvent s'ouvrir sur n'importe quel écran. Quand elle est désactivée, les panneaux s'ouvriront uniquement sur les écrans qui ont une barre, ce qui peut réduire l'utilisation de la mémoire.",
"label": "Autoriser les panneaux sur les écrans sans barre."
},
"animation-disable": {
"description": "Désactiver toutes les animations pour une expérience plus rapide et plus réactive.",
"label": "Désactiver les animations de l'interface utilisateur"
@@ -1548,6 +1820,15 @@
"description": "Atténuer le bureau lorsque des panneaux ou des menus sont ouverts.",
"label": "Dim bureau"
},
"dimmer-opacity": {
"description": "Définir le niveau d'opacité pour l'assombrissement du bureau.",
"label": "Opacité du bureau atténué",
"reset": "Réinitialiser l'opacité du bureau atténué"
},
"panel-background-opacity": {
"description": "Définir l'opacité de fond pour tous les panneaux (Lanceur, Centre de contrôle, Paramètres, etc.).",
"label": "Opacité de fond des panneaux"
},
"panels-attached-to-bar": {
"description": "Les panneaux se verrouillent sur la barre et les bords de l'écran, créant un aspect homogène avec d'élégants coins inversés.",
"label": "Aligner les panneaux aux bords"
@@ -1640,6 +1921,10 @@
"label": "Dossier des fonds d'écran",
"tooltip": "Parcourir le dossier des fonds d'écran"
},
"hide-wallpaper-filenames": {
"description": "Masquer les noms de fichiers des fonds d'écran dans le sélecteur.",
"label": "Masquer les noms de fichiers"
},
"monitor-specific": {
"description": "Définissez un dossier de fond d'écran différent pour chaque moniteur.",
"label": "Dossiers spécifiques au moniteur",
@@ -1655,6 +1940,11 @@
},
"select-folder": "Sélectionner le dossier des fonds d'écran",
"select-monitor-folder": "Sélectionner le dossier des fonds d'écran du moniteur",
"selector": {
"description": "Choisissez votre fond décran.",
"label": "Sélecteur de fond décran",
"tooltip": "Ouvrir le sélecteur de fond décran"
},
"selector-position": {
"description": "Choisissez l'emplacement d'affichage du panneau de sélection du fond d'écran.",
"label": "Position"
@@ -1719,19 +2009,6 @@
"low": "Batterie faible",
"low-desc": "La batterie est à {percent}%. Veuillez brancher le chargeur."
},
"battery-manager": {
"initial-setup": "Configuration initiale requise",
"install-failed": "Échec de l'installation",
"install-missing": "Fichiers requis manquants",
"install-success": "Installation réussie",
"install-unsupported": "Système non pris en charge",
"set-failed": "Échec de la définition du seuil de batterie",
"set-success-desc": "Seuil de batterie défini à {percent}%",
"title": "Seuil de batterie",
"uninstall-failed": "Échec de la désinstallation",
"uninstall-setup": "Désinstallation, authentification requise",
"uninstall-success": "Désinstallation réussie"
},
"bluetooth": {
"disabled": "Désactivé",
"enabled": "Activé"
@@ -1800,6 +2077,10 @@
"title-matugen": "Le traitement du modèle Matugen a échoué.",
"title-predefined": "Le traitement du schéma de couleurs prédéfini a échoué."
},
"vpn": {
"connected": "Connecté à '{name}'",
"disconnected": "Déconnecté de '{name}'"
},
"wallpaper-colors": {
"disabled": "Couleurs du fond d'écran désactivées",
"enabled": "Couleurs du fond d'écran activées",
@@ -1833,6 +2114,7 @@
"input-muted": "Couper l'entrée audio",
"keep-awake": "Rester éveillé",
"keyboard-layout": "Disposition du clavier {layout}",
"manage-vpn": "Gérer les connexions VPN",
"manage-wifi": "Gérer le Wi-Fi",
"microphone-volume-at": "Volume du microphone à {volume}%.\nClic gauche pour les paramètres. Clic droit pour activer/désactiver le mode muet.\nFaites défiler pour modifier le volume.",
"move-to-center-section": "Déplacer vers la section centrale",
@@ -1860,6 +2142,7 @@
"previous-month": "Mois précédent",
"refresh": "Actualiser",
"refresh-devices": "Actualiser les appareils",
"refresh-wallhaven": "Actualiser les résultats de Wallhaven",
"refresh-wallpaper-list": "Actualiser la liste des fonds d'écran",
"remove-widget": "Supprimer le widget",
"screen-recorder-not-installed": "L'enregistreur d'écran n'est pas installé",
@@ -1889,8 +2172,51 @@
"description": "Appliquer le fond d'écran sélectionné à tous les moniteurs en même temps.",
"label": "Appliquer à tous les moniteurs"
},
"categories": {
"anime": "Anime",
"general": "Général",
"label": "Catégories",
"people": "Personnes"
},
"order": {
"asc": "Croissant",
"desc": "Décroissant",
"label": "Ordre"
},
"purity": {
"all": "Tout",
"label": "Filtre de contenu",
"sfw": "SFW",
"sketchy": "Sketchy"
},
"resolution": {
"atleast": "Au moins",
"exact": "Exact",
"label": "Résolution",
"mode": {
"label": "Mode"
}
},
"search": "Rechercher :",
"title": "Sélecteur de fond d'écran"
"sorting": {
"date_added": "Date d'ajout",
"favorites": "Favoris",
"label": "Trier par",
"random": "Aléatoire",
"relevance": "Pertinence",
"toplist": "Top liste",
"views": "Vues"
},
"source": {
"label": "Source",
"local": "Local",
"wallhaven": "Wallhaven"
},
"title": "Sélecteur de fond d'écran",
"wallhaven-settings": {
"apply": "Appliquer",
"title": "Paramètres Wallhaven"
}
},
"transitions": {
"disc": "Disque",
@@ -1900,7 +2226,13 @@
"stripes": "Rayures",
"wipe": "Balayage"
},
"try-different-search": "Essayez une autre requête de recherche."
"try-different-search": "Essayez une autre requête de recherche.",
"unknown": "Inconnu(e)",
"wallhaven": {
"loading": "Chargement des fonds d'écran...",
"no-results": "Aucun fond d'écran trouvé. Essayez une autre requête de recherche.",
"page": "{current} sur {total}"
}
},
"weather": {
"clear-sky": "Ciel dégagé",
@@ -2009,6 +2341,7 @@
},
"wifi": {
"panel": {
"available-networks": "Réseaux disponibles",
"connect": "Connecter",
"connected": "Connecté",
"disabled": "Le Wi-Fi est désactivé",
@@ -2019,6 +2352,7 @@
"forget": "Oublier",
"forget-network": "Oublier ce réseau ?",
"forgetting": "Oubli en cours...",
"known-networks": "Réseaux connus",
"no-networks": "Aucun réseau trouvé",
"password": "Mot de passe",
"saved": "Enregistré",

View File

@@ -123,21 +123,27 @@
"stream-description": "Voer een commando in dat continu wordt uitgevoerd."
},
"dynamic-text": "Dynamische tekst",
"hide-vertical": {
"description": "Indien ingeschakeld wordt de tekst uit de commando-uitvoer niet getoond wanneer de balk verticaal is (links of rechts).",
"label": "Tekst verbergen in verticale balk"
},
"icon": {
"description": "Selecteer een pictogram uit de bibliotheek.",
"label": "Pictogram"
},
"left-click": {
"description": "Commando dat wordt uitgevoerd wanneer met de linkermuisknop op de knop wordt geklikt.",
"label": "Linkermuisklik"
"label": "Linkermuisklik",
"update-text": "Tekst bijwerken bij linksklik"
},
"max-text-length-horizontal": {
"description": "Maximaal aantal tekens dat moet worden weergegeven in horizontale balk (0 om tekst te verbergen)",
"label": "Max. tekstlengte (horizontaal)"
},
"max-text-length-vertical": {
"description": "Maximaal aantal tekens dat moet worden weergegeven in verticale balk (0 om tekst te verbergen)",
"label": "Max. tekstlengte (verticaal)"
},
"middle-click": {
"description": "Commando dat wordt uitgevoerd wanneer met de middelste muisknop op de knop wordt geklikt.",
"label": "Middelste muisklik"
"label": "Middelste muisklik",
"update-text": "Tekst bijwerken bij middelste muisklik"
},
"parse-json": {
"description": "Interpreteer de commando-uitvoer als JSON-object om tekst en pictogram dynamisch in te stellen.",
@@ -149,11 +155,29 @@
},
"right-click": {
"description": "Commando dat wordt uitgevoerd wanneer met de rechtermuisknop op de knop wordt geklikt.",
"label": "Rechtermuisklik"
"label": "Rechtermuisklik",
"update-text": "Tekst bijwerken die wordt weergegeven bij rechtsklikken"
},
"text-stream": {
"description": "Gestreamde regels uit het commando worden als tekst op de knop weergegeven.",
"label": "Stream"
},
"wheel": {
"description": "Commando om uit te voeren wanneer het scrollwiel wordt gebruikt.\nGebruik $delta voor de scrollwiel-delta in het commando",
"label": "Scrollwiel",
"update-text": "Weergegeven tekst bij scrollen bijwerken"
},
"wheel-down": {
"description": "Commando om uit te voeren wanneer het scrollwiel omlaag wordt bewogen.",
"label": "Scrollwiel omlaag commando"
},
"wheel-mode-separate": {
"description": "Afzonderlijke commando's inschakelen voor scrollwiel omhoog en omlaag",
"label": "Afzonderlijke scrollwielcommando's"
},
"wheel-up": {
"description": "Commando om uit te voeren wanneer het scrollwiel omhoog wordt bewogen.",
"label": "Scrollwiel omhoog commando"
}
},
"dialog": {
@@ -199,6 +223,10 @@
"description": "Toon de albumhoes van het huidige nummer.",
"label": "Albumhoes tonen"
},
"show-artist-first": {
"description": "Toon artiest - titel in plaats van titel - artiest.",
"label": "Toon eerst de artiest"
},
"show-visualizer": {
"description": "Toon een audiovisualizer wanneer muziek wordt afgespeeld.",
"label": "Visualizer tonen"
@@ -239,6 +267,9 @@
}
},
"system-monitor": {
"cpu-critical-threshold": {
"label": "CPU-gebruik (Kritiek)"
},
"cpu-temperature": {
"description": "Toon CPU-temperatuur indien beschikbaar.",
"label": "CPU-temperatuur"
@@ -247,6 +278,25 @@
"description": "Toon het huidige CPU-gebruik in procent.",
"label": "CPU-gebruik"
},
"cpu-warning-threshold": {
"label": "CPU-gebruik (Waarschuwing)"
},
"disk-critical-threshold": {
"label": "Opslagruimte (Kritiek)"
},
"disk-path": {
"description": "Selecteer welk schijfkoppelpunt u wilt monitoren.",
"label": "Schijfpad"
},
"disk-warning-threshold": {
"label": "Opslagruimte (Waarschuwing)"
},
"mem-critical-threshold": {
"label": "Geheugengebruik (Kritiek)"
},
"mem-warning-threshold": {
"label": "Geheugengebruik (Waarschuwing)"
},
"memory-percentage": {
"description": "Toon geheugengebruik als percentage in plaats van absolute waarden.",
"label": "Geheugen als percentage"
@@ -262,6 +312,16 @@
"storage-usage": {
"description": "Toon informatie over schijfruimtegebruik.",
"label": "Opslaggebruik"
},
"temp-critical-threshold": {
"label": "CPU-temperatuur (kritiek)"
},
"temp-warning-threshold": {
"label": "CPU-temperatuur (Waarschuwing)"
},
"thresholds": {
"description": "Drempels instellen voor systeemmetriekwaarschuwingen. Markeert wanneer overschreden.",
"header": "Drempelinstellingen"
}
},
"taskbar": {
@@ -283,13 +343,9 @@
}
},
"taskbar-grouped": {
"show-numbers-only-when-occupied": {
"description": "Toon werkruimtenummers alleen voor werkruimten met open vensters.",
"label": "Nummers alleen tonen wanneer bezet"
},
"show-workspace-numbers": {
"description": "Toon werkruimtenummers in de linkerbovenhoek van taakgroepen.",
"label": "Werkruimtenummers tonen"
"show-labels-only-when-occupied": {
"description": "Toon alleen de werkomgevinglabels voor werkomgevingen met open vensters.",
"label": "Label alleen tonen wanneer bezet"
}
},
"tray": {
@@ -332,13 +388,6 @@
"health": "Gezondheid: {percent}%",
"idle": "In rust.",
"no-battery-detected": "Geen batterij gedetecteerd.",
"panel": {
"balanced": "Gebalanceerd ({percent}%)",
"disabled": "Batterijbeheer uitgeschakeld",
"full": "Volledige capaciteit ({percent}%)",
"lifespan": "Verlengde levensduur ({percent}%)",
"title": "Batterijdrempel"
},
"plugged-in": "Op netstroom.",
"time-left": "Resterende tijd: {time}.",
"time-until-full": "Tijd tot vol: {time}."
@@ -367,9 +416,61 @@
"loading": "Weer laden…"
}
},
"changelog": {
"error": {
"fetch-failed": "Kan changeloggegevens niet laden. Probeer het later opnieuw.",
"rate-limit": "GitHub-limiet bereikt. Probeer het over enkele minuten opnieuw."
},
"panel": {
"buttons": {
"discord": "Word lid van onze Discord",
"dismiss": "Ok"
},
"empty": "Er zijn nog geen release-opmerkingen beschikbaar.",
"highlight-title": "Hoogtepunten",
"section": {
"released": "Uitgebracht op {date}",
"version": "Versie {version}"
},
"subtitle": {
"fresh": "Bedankt voor het installeren van Noctalia! Dit zit er in deze build.",
"updated": "Bijgewerkt vanaf {previousVersion}"
},
"title": "Wat is er nieuw in {version}",
"version": {
"new-user": "Nieuwe installatie"
}
}
},
"clock": {
"tooltip": "Kalender openen"
},
"context-menu": {
"activate-app": "Activeer {app}",
"clear-history": "Geschiedenis wissen",
"close-app": "Sluit {app}",
"connect-vpn": "Verbinding maken met {name}",
"cycle-visualizer": "Cyclusvisualisatie",
"disable-bluetooth": "Bluetooth uitschakelen",
"disable-dnd": "Niet Storen uitschakelen",
"disable-wifi": "Wi-Fi uitschakelen",
"disconnect-vpn": "Verbinding met {name} verbreken",
"enable-bluetooth": "Bluetooth inschakelen",
"enable-dnd": "Niet Storen inschakelen",
"enable-wifi": "Wi-Fi inschakelen",
"next": "Volgende",
"open-calendar": "Open agenda",
"open-display-settings": "Beeldscherminstellingen",
"open-launcher": "Launcher openen",
"open-mixer": "Audiomixer",
"open-settings": "Instellingen openen",
"pause": "Pauze",
"play": "Spelen",
"previous": "Vorige",
"random-wallpaper": "Willekeurige achtergrond",
"toggle-mute": "Dempen aan/uit",
"widget-settings": "Widgetinstellingen"
},
"dock": {
"menu": {
"close": "Sluiten",
@@ -533,6 +634,7 @@
},
"workspace-labels": {
"index": "Index",
"index+name": "Index en Naam",
"name": "Naam",
"none": "Geen"
}
@@ -548,6 +650,7 @@
"search": "Zoeken...",
"search-icons": "bijv. noctalia, niri, battery, cloud",
"search-launcher": "Items zoeken... of gebruik > voor commando's",
"search-wallhaven": "Zoek in Wallhaven...",
"search-wallpapers": "Typ om achtergronden te filteren...",
"select": "Selecteren",
"test": "Test"
@@ -644,6 +747,7 @@
},
"session-menu": {
"action-in-seconds": "{action} over {seconds} seconden...",
"hibernate": "Slaperstand",
"lock": "Vergrendelen",
"lock-and-suspend": "Vergrendelen en onderbreken",
"logout": "Afmelden",
@@ -688,6 +792,11 @@
"label": "Audio-apparaten"
}
},
"external-mixer": {
"description": "Voer het commando of het applicatiepad in om te starten bij het activeren van de externe audiomixerfunctie.",
"label": "Extern audio mixer commando",
"placeholder": "pwvucontrol || pavucontrol"
},
"media": {
"excluded-player": {
"description": "Voeg trefwoorden toe voor spelers die het systeem moet negeren. Elk trefwoord moet op een nieuwe regel staan.",
@@ -762,6 +871,10 @@
"description": "Pas de achtergronddekking van de balk aan.",
"label": "Achtergronddekking"
},
"capsule-opacity": {
"description": "Stel het doorzichtigheidsniveau in voor widget-achtergronden wanneer capsule wordt getoond.",
"label": "Capsule-doorzichtigheid"
},
"density": {
"description": "Pas de opvulling van de balk aan voor een compacte of ruime uitstraling.",
"label": "Balkdichtheid"
@@ -854,6 +967,41 @@
"label": "Donkere modus"
}
},
"delete": {
"error": {
"description": "Verwijderen van {scheme} mislukt",
"title": "Verwijderen mislukt"
},
"success": {
"description": "{scheme} succesvol verwijderd",
"title": "Kleurenschema verwijderd"
}
},
"download": {
"button": "Meer downloaden",
"delete": "Verwijderen",
"download": "Downloaden",
"downloading": "Downloaden...",
"empty": "Geen kleurenschema's beschikbaar",
"error": {
"api-error": "API-fout: {status}",
"description": "Download van {scheme} mislukt",
"download-failed": "Download mislukt met afsluitcode: {code}",
"invalid-response": "Ongeldig API-antwoordformaat",
"no-files": "Geen bestanden gevonden voor schema",
"parse-failed": "Fout bij parseren van API-antwoord: {error}",
"rate-limit": "GitHub API-snelheidslimiet overschreden",
"title": "Download mislukt"
},
"fetching": "Beschikbare kleurenschema's ophalen...",
"installed": "Geïnstalleerd",
"refresh": "Vernieuwen",
"success": {
"description": "{scheme} succesvol gedownload",
"title": "Kleurenschema gedownload"
},
"title": "Kleurenschema's downloaden"
},
"predefined": {
"generate-templates": {
"description": "Genereer Matugen-sjablonen (GTK, terminalthema's, enz.) bij gebruik van vooraf gedefinieerde kleurenschema's.",
@@ -876,7 +1024,7 @@
"programs": {
"code": {
"description": "Schrijf {filepath}. Het Hyprluna-thema moet handmatig worden geïnstalleerd en geactiveerd.",
"description-missing": "Vereist dat {app} is geïnstalleerd."
"description-missing": "Geen Code-client gedetecteerd. Installeer VSCode of VSCodium."
},
"description": "Toepassingsspecifieke theming.",
"discord": {
@@ -896,6 +1044,10 @@
"description": "Schrijf {filepath}. Het Comfy-thema moet handmatig worden geïnstalleerd en geactiveerd.",
"description-missing": "Vereist dat {app} is geïnstalleerd."
},
"telegram": {
"description": "Schrijf {filepath}.",
"description-missing": "Vereist dat {app} is geïnstalleerd."
},
"vicinae": {
"description": "Schrijf {filepath} en herlaad.",
"description-missing": "Vereist dat {app} is geïnstalleerd."
@@ -1092,6 +1244,10 @@
"description": "Pas de achtergronddekking van de dock aan.",
"label": "Achtergronddekking"
},
"border-radius": {
"description": "Pas de randradius van het dock aan.",
"label": "Randradius"
},
"colorize-icons": {
"description": "Pas themakleuren toe op dock-pictogrammen (alleen niet-focuste apps).",
"label": "Pictogrammen inkleuren"
@@ -1243,6 +1399,10 @@
"description": "Pas de achtergronddekking van de launcher aan.",
"label": "Achtergronddekking"
},
"clip-preview": {
"description": "Toon een voorbeeld van de inhoud van het klembord bij gebruik van het >clip-commando.",
"label": "Klembordvoorbeeld inschakelen"
},
"clipboard-history": {
"description": "Toegang tot eerder gekopieerde items vanuit de launcher.",
"label": "Klembordgeschiedenis inschakelen"
@@ -1331,6 +1491,10 @@
"description": "Kies je voorkeurseenheid voor temperatuur.",
"label": "Weer"
},
"show-effects": {
"description": "Toont extra visuele effecten (zoals regen, sneeuw of bliksem) op de weerkaart.",
"label": "Weerseffecten weergeven"
},
"show-in-calendar": {
"description": "Toon de dagelijkse weersverwachting direct in je kalenderview.",
"label": "Weer in kalender weergeven"
@@ -1346,6 +1510,10 @@
"description": "Vergrendel het scherm automatisch wanneer het systeem wordt onderbroken.",
"label": "Vergrendelen bij onderbreken"
},
"show-hibernate": {
"description": "De optie 'sluimerstand' tonen in de energieacties.",
"label": "Sluimerstand tonen"
},
"title": "Vergrendelscherm"
},
"network": {
@@ -1437,6 +1605,10 @@
"description": "Toon OSD boven fullscreen-vensters en andere lagen.",
"label": "Altijd bovenop"
},
"background-opacity": {
"description": "Regelt de transparantie van de OSD-achtergrond.",
"label": "Achtergrond dekkendheid"
},
"description": "Configureer on-screenindicatoren zoals overlays voor volume en helderheid.",
"duration": {
"auto-hide": {
@@ -1529,7 +1701,107 @@
}
}
},
"session-menu": {
"countdown-duration": {
"description": "Stel in hoe lang de afteltimer duurt voordat energieacties worden uitgevoerd.",
"label": "Afteltimer duur"
},
"enable-countdown": {
"description": "Toon een afteltimer voordat energieacties worden uitgevoerd.",
"label": "Afteltimer inschakelen"
},
"entries": {
"section": {
"description": "Aanpassen welke energieacties in het Sessiemenu verschijnen en in welke volgorde.",
"label": "Energieacties"
}
},
"general": {
"section": {
"description": "Configureer het gedrag en uiterlijk van het sessiemenu-paneel.",
"label": "Algemeen"
}
},
"position": {
"description": "Kies waar het Sessiemenu-paneel verschijnt wanneer het wordt geopend.",
"label": "Positie"
},
"show-header": {
"description": "Toon de titel en sluitknop bovenaan het Sessiemenu.",
"label": "Koptekst tonen"
},
"title": "Sessiemenu"
},
"system-monitor": {
"cpu-critical-threshold": {
"label": "Kritieke drempel"
},
"cpu-section": {
"label": "CPU-gebruik"
},
"cpu-warning-threshold": {
"label": "Waarschuwingsdrempel"
},
"critical-color": {
"label": "Kritische kleur"
},
"custom-highlight-colors-title": {
"label": "Aangepaste markeerkleuren"
},
"disk-critical-threshold": {
"label": "Kritieke drempel"
},
"disk-section": {
"label": "Schijfgebruik"
},
"disk-warning-threshold": {
"label": "Waarschuwingsdrempel"
},
"general": {
"section": {
"description": "Configureer het gedrag en de weergave van de Systeemmonitor.",
"label": "Algemeen"
}
},
"highlight-colors-section": {
"label": "Markeerkleuren"
},
"mem-critical-threshold": {
"label": "Kritieke drempel"
},
"mem-warning-threshold": {
"label": "Waarschuwingsdrempel"
},
"memory-section": {
"label": "Geheugengebruik"
},
"temp-critical-threshold": {
"label": "Kritieke drempel"
},
"temp-warning-threshold": {
"label": "Waarschuwingsdrempel"
},
"temperature-section": {
"label": "CPU-temperatuur"
},
"thresholds-section": {
"description": "Stel drempelwaarden in voor systeemstatistieken; waarden die hierboven liggen worden gemarkeerd.",
"label": "Drempels"
},
"title": "Systeemmonitor",
"use-custom-highlight-colors": {
"description": "Indien uitgeschakeld, worden de standaard markeerkleuren van het thema gebruikt.",
"label": "Gebruik aangepaste markeerkleuren."
},
"warning-color": {
"label": "Waarschuwingskleur"
}
},
"user-interface": {
"allow-panels-without-bar": {
"description": "Indien ingeschakeld, kunnen panelen op elk scherm worden geopend. Indien uitgeschakeld, worden panelen alleen geopend op schermen met een balk, wat het geheugengebruik kan verminderen.",
"label": "Sta panelen toe op schermen zonder balk."
},
"animation-disable": {
"description": "Schakel alle animaties uit voor een snellere, responsievere ervaring.",
"label": "UI-animaties uitschakelen"
@@ -1548,6 +1820,15 @@
"description": "Dim de desktop wanneer panelen of menu's geopend zijn.",
"label": "Desktop dimmen"
},
"dimmer-opacity": {
"description": "Stel het opaciteitsniveau in voor het dimmen van het bureaublad.",
"label": "Doorzichtigheid van gedimde desktop",
"reset": "Doorzichtigheid van gedimde desktop resetten"
},
"panel-background-opacity": {
"description": "Stel de achtergronddoorzichtigheid in voor alle panelen (Launcher, Control Center, Instellingen, enz.).",
"label": "Paneel achtergronddoorzichtigheid"
},
"panels-attached-to-bar": {
"description": "Panelen vergrendelen aan de balk en schermranden, voor een naadloze look met stijlvolle omgekeerde hoeken.",
"label": "Panelen aan randen vastklikken"
@@ -1640,6 +1921,10 @@
"label": "Achtergrondmap",
"tooltip": "Bladeren naar achtergrondmap"
},
"hide-wallpaper-filenames": {
"description": "Verberg de bestandsnamen van de achtergrond in de selector.",
"label": "Bestandsnamen verbergen"
},
"monitor-specific": {
"description": "Stel een andere achtergrondmap in voor elke monitor.",
"label": "Monitor-specifieke mappen",
@@ -1655,6 +1940,11 @@
},
"select-folder": "Achtergrondmap selecteren",
"select-monitor-folder": "Achtergrondmap voor monitor selecteren",
"selector": {
"description": "Kies je achtergrond.",
"label": "Achtergrondkiezer",
"tooltip": "Achtergrondkiezer openen"
},
"selector-position": {
"description": "Kies waar het achtergrondselectiepaneel verschijnt.",
"label": "Positie"
@@ -1719,19 +2009,6 @@
"low": "Batterij bijna leeg",
"low-desc": "De batterij is op {percent}%. Sluit de oplader aan."
},
"battery-manager": {
"initial-setup": "Initiële configuratie vereist",
"install-failed": "Installatie mislukt",
"install-missing": "Vereiste bestanden ontbreken",
"install-success": "Succesvol geïnstalleerd",
"install-unsupported": "Systeem wordt niet ondersteund",
"set-failed": "Instellen van batterijdrempel mislukt",
"set-success-desc": "Batterijdrempel ingesteld op {percent}%",
"title": "Batterijdrempel",
"uninstall-failed": "Deïnstallatie mislukt",
"uninstall-setup": "Verwijderen, authenticatie vereist",
"uninstall-success": "Succesvol verwijderd"
},
"bluetooth": {
"disabled": "Uitgeschakeld",
"enabled": "Ingeschakeld"
@@ -1800,6 +2077,10 @@
"title-matugen": "Matugen-sjabloonverwerking mislukt",
"title-predefined": "Verwerken van vooraf gedefinieerd kleurenschema mislukt"
},
"vpn": {
"connected": "Verbonden met '{name}'",
"disconnected": "Verbinding met '{name}' verbroken"
},
"wallpaper-colors": {
"disabled": "Achtergrondkleuren uitgeschakeld",
"enabled": "Achtergrondkleuren ingeschakeld",
@@ -1833,6 +2114,7 @@
"input-muted": "Invoermicrofoon dempen in-/uitschakelen",
"keep-awake": "Wakker houden",
"keyboard-layout": "{layout}-toetsenbordindeling",
"manage-vpn": "VPN-verbindingen beheren",
"manage-wifi": "Wi-Fi beheren",
"microphone-volume-at": "Microfoonvolume {volume}%\nLinks klikken voor instellingen. Rechts klikken om te dempen.\nScroll om het volume aan te passen.",
"move-to-center-section": "Verplaatsen naar middelste sectie",
@@ -1860,6 +2142,7 @@
"previous-month": "Vorige maand",
"refresh": "Verversen",
"refresh-devices": "Apparaten verversen",
"refresh-wallhaven": "Wallhaven-resultaten verversen",
"refresh-wallpaper-list": "Achtergrondlijst verversen",
"remove-widget": "Widget verwijderen",
"screen-recorder-not-installed": "Schermrecorder is niet geïnstalleerd",
@@ -1889,8 +2172,51 @@
"description": "Pas de geselecteerde achtergrond in één keer op alle monitoren toe.",
"label": "Toepassen op alle monitoren"
},
"categories": {
"anime": "Anime",
"general": "Algemeen",
"label": "Categorieën",
"people": "Mensen"
},
"order": {
"asc": "Oplopend",
"desc": "Aflopend",
"label": "Volgorde"
},
"purity": {
"all": "Alles",
"label": "Inhoudsfilter",
"sfw": "SFW",
"sketchy": "Sketchy"
},
"resolution": {
"atleast": "Ten minste",
"exact": "Exact",
"label": "Resolutie",
"mode": {
"label": "Modus"
}
},
"search": "Zoeken:",
"title": "Achtergrondkiezer"
"sorting": {
"date_added": "Datum toegevoegd",
"favorites": "Favorieten",
"label": "Sorteren op",
"random": "Willekeurig",
"relevance": "Relevantie",
"toplist": "Toplijst",
"views": "Weergaven"
},
"source": {
"label": "Bron",
"local": "Lokaal",
"wallhaven": "Wallhaven"
},
"title": "Achtergrondkiezer",
"wallhaven-settings": {
"apply": "Toepassen",
"title": "Wallhaven-instellingen"
}
},
"transitions": {
"disc": "Schijf",
@@ -1900,7 +2226,13 @@
"stripes": "Strepen",
"wipe": "Vegen"
},
"try-different-search": "Probeer een andere zoekopdracht."
"try-different-search": "Probeer een andere zoekopdracht.",
"unknown": "Onbekend",
"wallhaven": {
"loading": "Achtergronden laden...",
"no-results": "Geen achtergronden gevonden. Probeer een andere zoekopdracht.",
"page": "{current} van {total}"
}
},
"weather": {
"clear-sky": "Onbewolkt",
@@ -2009,6 +2341,7 @@
},
"wifi": {
"panel": {
"available-networks": "Beschikbare netwerken",
"connect": "Verbinden",
"connected": "Verbonden",
"disabled": "Wi-Fi is uitgeschakeld",
@@ -2019,6 +2352,7 @@
"forget": "Vergeten",
"forget-network": "Dit netwerk vergeten?",
"forgetting": "Vergeten...",
"known-networks": "Bekende netwerken",
"no-networks": "Geen netwerken gevonden",
"password": "Wachtwoord",
"saved": "Opgeslagen",

View File

@@ -123,21 +123,27 @@
"stream-description": "Insira um comando para executar continuamente."
},
"dynamic-text": "Texto dinâmico",
"hide-vertical": {
"description": "Se ativado, o texto da saída do comando não será exibido quando a barra estiver em um layout vertical (esquerda ou direita).",
"label": "Ocultar texto na barra vertical"
},
"icon": {
"description": "Selecione um ícone da biblioteca.",
"label": "Ícone"
},
"left-click": {
"description": "Comando a executar quando o botão é clicado com o botão esquerdo.",
"label": "Clique esquerdo"
"label": "Clique esquerdo",
"update-text": "Atualizar texto exibido ao clicar com o botão esquerdo"
},
"max-text-length-horizontal": {
"description": "Número máximo de caracteres a serem exibidos na barra horizontal (0 para ocultar o texto)",
"label": "Comprimento máximo do texto (horizontal)"
},
"max-text-length-vertical": {
"description": "Número máximo de caracteres a serem exibidos na barra vertical (0 para ocultar o texto)",
"label": "Comprimento máximo do texto (vertical)"
},
"middle-click": {
"description": "Comando a executar quando o botão é clicado com o botão do meio.",
"label": "Clique do meio"
"label": "Clique do meio",
"update-text": "Atualizar texto exibido com clique do meio"
},
"parse-json": {
"description": "Analisa a saída do comando como um objeto JSON para definir dinamicamente o texto e o ícone.",
@@ -149,11 +155,29 @@
},
"right-click": {
"description": "Comando a executar quando o botão é clicado com o botão direito.",
"label": "Clique direito"
"label": "Clique direito",
"update-text": "Atualizar o texto exibido ao clicar com o botão direito."
},
"text-stream": {
"description": "As linhas transmitidas do comando serão exibidas como texto no botão.",
"label": "Transmissão"
},
"wheel": {
"description": "Comando a executar quando a roda de rolagem é usada.\nUse $delta para o delta da roda de rolagem no comando",
"label": "Roda de rolagem",
"update-text": "Atualizar texto exibido ao rolar"
},
"wheel-down": {
"description": "Comando a executar quando a roda de rolagem é rolada para baixo.",
"label": "Comando de roda para baixo"
},
"wheel-mode-separate": {
"description": "Ativar comandos separados para roda para cima e para baixo",
"label": "Comandos de roda separados"
},
"wheel-up": {
"description": "Comando a executar quando a roda de rolagem é rolada para cima.",
"label": "Comando de roda para cima"
}
},
"dialog": {
@@ -199,6 +223,10 @@
"description": "Exibir a arte do álbum da faixa atualmente sendo reproduzida.",
"label": "Mostrar arte do álbum"
},
"show-artist-first": {
"description": "Exibir artista - título em vez de título - artista.",
"label": "Mostrar o artista primeiro"
},
"show-visualizer": {
"description": "Exibir um visualizador de áudio quando música está sendo reproduzida.",
"label": "Mostrar visualizador"
@@ -239,6 +267,9 @@
}
},
"system-monitor": {
"cpu-critical-threshold": {
"label": "CPU Usage (Critical)"
},
"cpu-temperature": {
"description": "Mostrar leituras de temperatura da CPU se disponíveis.",
"label": "Temperatura da CPU"
@@ -247,6 +278,25 @@
"description": "Exibir o percentual atual de uso da CPU.",
"label": "Uso da CPU"
},
"cpu-warning-threshold": {
"label": "CPU Usage (Warning)"
},
"disk-critical-threshold": {
"label": "Storage Space (Critical)"
},
"disk-path": {
"description": "Selecione qual ponto de montagem de disco monitorar.",
"label": "Caminho do disco"
},
"disk-warning-threshold": {
"label": "Storage Space (Warning)"
},
"mem-critical-threshold": {
"label": "Memory Usage (Critical)"
},
"mem-warning-threshold": {
"label": "Memory Usage (Warning)"
},
"memory-percentage": {
"description": "Mostrar o uso de memória como percentual em vez de valores absolutos.",
"label": "Memória como percentual"
@@ -262,6 +312,16 @@
"storage-usage": {
"description": "Mostrar informações de uso do espaço em disco.",
"label": "Uso de armazenamento"
},
"temp-critical-threshold": {
"label": "CPU Temperature (Critical)"
},
"temp-warning-threshold": {
"label": "CPU Temperature (Warning)"
},
"thresholds": {
"description": "Estabelece limites para alertas de métricas do sistema. Destaca quando superados.",
"header": "Configuração de Limiares"
}
},
"taskbar": {
@@ -283,13 +343,9 @@
}
},
"taskbar-grouped": {
"show-numbers-only-when-occupied": {
"description": "Mostrar números do espaço de trabalho apenas para espaços de trabalho com janelas abertas.",
"label": "Mostrar números apenas quando ocupados"
},
"show-workspace-numbers": {
"description": "Exibir números do espaço de trabalho no canto superior esquerdo dos grupos de tarefas.",
"label": "Mostrar números do espaço de trabalho"
"show-labels-only-when-occupied": {
"description": "Mostrar apenas o rótulo da área de trabalho para áreas de trabalho que têm janelas abertas.",
"label": "Mostrar rótulo somente quando ocupado."
}
},
"tray": {
@@ -332,13 +388,6 @@
"health": "Saúde: {percent}%",
"idle": "Ocioso.",
"no-battery-detected": "Nenhuma bateria detectada.",
"panel": {
"balanced": "Balanceado ({percent}%)",
"disabled": "Gerenciador de bateria desativado",
"full": "Capacidade máxima ({percent}%)",
"lifespan": "Vida útil prolongada ({percent}%)",
"title": "Limite de carga"
},
"plugged-in": "Conectado.",
"time-left": "Tempo restante: {time}.",
"time-until-full": "Tempo até carga completa: {time}."
@@ -367,9 +416,61 @@
"loading": "Carregando o clima…"
}
},
"changelog": {
"error": {
"fetch-failed": "Não foi possível carregar os dados do changelog. Tente novamente mais tarde.",
"rate-limit": "Limite do GitHub atingido. Tente novamente em alguns minutos."
},
"panel": {
"buttons": {
"discord": "Entre no nosso Discord",
"dismiss": "Ok"
},
"empty": "As notas da versão ainda não estão disponíveis.",
"highlight-title": "Destaques",
"section": {
"released": "Lançado em {date}",
"version": "Versão {version}"
},
"subtitle": {
"fresh": "Obrigado por instalar o Noctalia! Veja o que está incluído nesta compilação.",
"updated": "Atualizado a partir da {previousVersion}"
},
"title": "Novidades na {version}",
"version": {
"new-user": "Nova instalação"
}
}
},
"clock": {
"tooltip": "Abrir calendário"
},
"context-menu": {
"activate-app": "Ativar {app}",
"clear-history": "Limpar histórico",
"close-app": "Fechar {app}",
"connect-vpn": "Conectar-se a {name}",
"cycle-visualizer": "Visualizador de ciclo",
"disable-bluetooth": "Desativar Bluetooth",
"disable-dnd": "Desativar o Não Perturbe",
"disable-wifi": "Desativar Wi-Fi",
"disconnect-vpn": "Desconectar {name}",
"enable-bluetooth": "Ativar Bluetooth",
"enable-dnd": "Ativar Não Perturbe",
"enable-wifi": "Ativar Wi-Fi",
"next": "Próximo(a)",
"open-calendar": "Abrir calendário",
"open-display-settings": "Configurações de exibição",
"open-launcher": "Abrir iniciador",
"open-mixer": "Mesa de som",
"open-settings": "Abrir configurações",
"pause": "Pausa",
"play": "Jogar",
"previous": "Anterior",
"random-wallpaper": "Papel de parede aleatório",
"toggle-mute": "Alternar mudo",
"widget-settings": "Configurações do widget"
},
"dock": {
"menu": {
"close": "Fechar",
@@ -533,6 +634,7 @@
},
"workspace-labels": {
"index": "Índice",
"index+name": "Índice e Nome",
"name": "Nome",
"none": "Nenhum"
}
@@ -548,6 +650,7 @@
"search": "Pesquisar...",
"search-icons": "ex., noctalia, niri, battery, cloud",
"search-launcher": "Pesquisar entradas... ou use > para comandos",
"search-wallhaven": "Pesquisar no Wallhaven...",
"search-wallpapers": "Digite para filtrar papéis de parede...",
"select": "Selecionar",
"test": "Testar"
@@ -644,6 +747,7 @@
},
"session-menu": {
"action-in-seconds": "{action} em {seconds} segundos...",
"hibernate": "Hibernação",
"lock": "Bloquear",
"lock-and-suspend": "Bloquear e Suspender",
"logout": "Sair",
@@ -688,6 +792,11 @@
"label": "Dispositivos de áudio"
}
},
"external-mixer": {
"description": "Insira o comando ou o caminho do aplicativo para iniciar ao ativar o recurso de mixer de áudio externo.",
"label": "Comando de Mixer de Áudio Externo",
"placeholder": "pwvucontrol || pavucontrol"
},
"media": {
"excluded-player": {
"description": "Adicione palavras-chave para os reprodutores que você deseja que o sistema ignore. Cada palavra-chave deve estar em uma nova linha.",
@@ -762,6 +871,10 @@
"description": "Ajuste a opacidade do fundo da barra.",
"label": "Opacidade do fundo"
},
"capsule-opacity": {
"description": "Define o nível de opacidade para fundos dos widgets quando a cápsula é mostrada.",
"label": "Opacidade da cápsula"
},
"density": {
"description": "Ajuste o preenchimento da barra para um visual compacto ou espaçoso.",
"label": "Densidade da barra"
@@ -854,6 +967,41 @@
"label": "Modo escuro"
}
},
"delete": {
"error": {
"description": "Falha ao excluir {scheme}",
"title": "Falha ao excluir"
},
"success": {
"description": "{scheme} excluído com sucesso",
"title": "Esquema de cores excluído"
}
},
"download": {
"button": "Baixar mais",
"delete": "Excluir",
"download": "Baixar",
"downloading": "Baixando...",
"empty": "Nenhum esquema de cores disponível",
"error": {
"api-error": "Erro da API: {status}",
"description": "Falha ao baixar {scheme}",
"download-failed": "Falha no download com código de saída: {code}",
"invalid-response": "Formato de resposta da API inválido",
"no-files": "Nenhum arquivo encontrado para o esquema",
"parse-failed": "Falha ao analisar a resposta da API: {error}",
"rate-limit": "Limite de taxa da API do GitHub excedido",
"title": "Falha no download"
},
"fetching": "Buscando esquemas de cores disponíveis...",
"installed": "Instalado",
"refresh": "Atualizar",
"success": {
"description": "{scheme} baixado com sucesso",
"title": "Esquema de cores baixado"
},
"title": "Baixar esquemas de cores"
},
"predefined": {
"generate-templates": {
"description": "Gera modelos Matugen (GTK, temas de terminal, etc.) ao usar esquemas de cores predefinidos.",
@@ -876,7 +1024,7 @@
"programs": {
"code": {
"description": "Escreva em {filepath}. O tema Hyprluna precisa ser instalado e ativado manualmente.",
"description-missing": "Requer que o {app} esteja instalado."
"description-missing": "Nenhum cliente Code detectado. Instale VSCode ou VSCodium."
},
"description": "Tematização específica de aplicativos.",
"discord": {
@@ -896,6 +1044,10 @@
"description": "Escreva em {filepath}. O tema Comfy precisa ser instalado e ativado manualmente.",
"description-missing": "Requer que o {app} esteja instalado."
},
"telegram": {
"description": "Escreva em {filepath}.",
"description-missing": "Requer que o {app} esteja instalado."
},
"vicinae": {
"description": "Escrever {filepath} e recarregar",
"description-missing": "Requer que o {app} esteja instalado"
@@ -1092,6 +1244,10 @@
"description": "Ajuste a opacidade do fundo da dock.",
"label": "Opacidade do fundo"
},
"border-radius": {
"description": "Ajustar o raio da borda da dock.",
"label": "Raio da borda"
},
"colorize-icons": {
"description": "Aplicar cores do tema aos ícones de aplicativos da dock (apenas aplicativos não focados).",
"label": "Colorir ícones"
@@ -1243,6 +1399,10 @@
"description": "Ajuste a opacidade do fundo do lançador.",
"label": "Opacidade do fundo"
},
"clip-preview": {
"description": "Mostra uma pré-visualização do conteúdo da área de transferência ao usar o comando >clip.",
"label": "Ativar pré-visualização da área de transferência"
},
"clipboard-history": {
"description": "Acesse itens copiados anteriormente a partir do lançador.",
"label": "Ativar histórico da área de transferência"
@@ -1331,6 +1491,10 @@
"description": "Escolha sua unidade de temperatura preferida.",
"label": "Clima"
},
"show-effects": {
"description": "Mostra efeitos visuais adicionais (como chuva, neve ou relâmpagos) no cartão de clima.",
"label": "Exibir efeitos climáticos"
},
"show-in-calendar": {
"description": "Mostre a previsão do tempo diária diretamente na sua visualização de calendário.",
"label": "Exibir clima no calendário"
@@ -1346,6 +1510,10 @@
"description": "Bloquear a tela automaticamente ao suspender o sistema.",
"label": "Bloquear ao suspender"
},
"show-hibernate": {
"description": "Mostrar a opção 'hibernar' nas ações de energia.",
"label": "Mostrar hibernar"
},
"title": "Tela de bloqueio"
},
"network": {
@@ -1437,6 +1605,10 @@
"description": "Exibir OSD acima de janelas em tela cheia e outras camadas.",
"label": "Sempre no topo"
},
"background-opacity": {
"description": "Controla a transparência do fundo do OSD.",
"label": "Opacidade do fundo"
},
"description": "Configure indicadores na tela, como volume e brilho.",
"duration": {
"auto-hide": {
@@ -1529,7 +1701,107 @@
}
}
},
"session-menu": {
"countdown-duration": {
"description": "Definir por quanto tempo o temporizador de contagem regressiva dura antes de executar ações de energia.",
"label": "Duração da contagem regressiva"
},
"enable-countdown": {
"description": "Mostrar um temporizador de contagem regressiva antes de executar ações de energia.",
"label": "Ativar temporizador de contagem regressiva"
},
"entries": {
"section": {
"description": "Personalizar quais ações de energia aparecem no Menu de sessão e em que ordem.",
"label": "Ações de energia"
}
},
"general": {
"section": {
"description": "Configurar o comportamento e a aparência do painel do menu de sessão.",
"label": "Geral"
}
},
"position": {
"description": "Escolha onde o painel do Menu de sessão aparece quando aberto.",
"label": "Posição"
},
"show-header": {
"description": "Exibir o título e o botão de fechar na parte superior do Menu de sessão.",
"label": "Mostrar cabeçalho"
},
"title": "Menu de sessão"
},
"system-monitor": {
"cpu-critical-threshold": {
"label": "Limite crítico"
},
"cpu-section": {
"label": "Uso da CPU"
},
"cpu-warning-threshold": {
"label": "Limite de aviso"
},
"critical-color": {
"label": "Cor crítica"
},
"custom-highlight-colors-title": {
"label": "Cores de destaque personalizadas"
},
"disk-critical-threshold": {
"label": "Limite crítico"
},
"disk-section": {
"label": "Uso do disco"
},
"disk-warning-threshold": {
"label": "Limite de aviso"
},
"general": {
"section": {
"description": "Configure o comportamento e a aparência do Monitor do Sistema.",
"label": "Geral"
}
},
"highlight-colors-section": {
"label": "Cores de destaque"
},
"mem-critical-threshold": {
"label": "Limite crítico"
},
"mem-warning-threshold": {
"label": "Limite de aviso"
},
"memory-section": {
"label": "Uso de memória"
},
"temp-critical-threshold": {
"label": "Limite crítico"
},
"temp-warning-threshold": {
"label": "Limite de aviso"
},
"temperature-section": {
"label": "Temperatura da CPU"
},
"thresholds-section": {
"description": "Defina limiares para métricas do sistema; valores acima serão destacados.",
"label": "Limiares"
},
"title": "Monitor do Sistema",
"use-custom-highlight-colors": {
"description": "Quando desativado, são usadas as cores de destaque padrão do tema.",
"label": "Usar cores de destaque personalizadas"
},
"warning-color": {
"label": "Cor de aviso"
}
},
"user-interface": {
"allow-panels-without-bar": {
"description": "Quando ativado, os painéis podem abrir em qualquer tela. Quando desativado, os painéis só abrirão em telas que tenham uma barra, o que pode reduzir o uso de memória.",
"label": "Permitir painéis em telas sem uma barra."
},
"animation-disable": {
"description": "Desative todas as animações para uma experiência mais rápida e responsiva.",
"label": "Desativar animações da interface do usuário"
@@ -1548,6 +1820,15 @@
"description": "Escurecer a área de trabalho quando painéis ou menus estiverem abertos.",
"label": "Dim área de trabalho"
},
"dimmer-opacity": {
"description": "Definir o nível de opacidade para o escurecimento da área de trabalho.",
"label": "Opacidade da área de trabalho escurecida",
"reset": "Redefinir opacidade da área de trabalho escurecida"
},
"panel-background-opacity": {
"description": "Definir a opacidade de fundo para todos os painéis (Launcher, Centro de Controle, Configurações, etc.).",
"label": "Opacidade de fundo do painel"
},
"panels-attached-to-bar": {
"description": "Os painéis travam na barra e nas bordas da tela, criando uma aparência perfeita com cantos invertidos elegantes.",
"label": "Ajustar Painéis às Bordas"
@@ -1640,6 +1921,10 @@
"label": "Pasta de papéis de parede",
"tooltip": "Procurar pasta de papéis de parede"
},
"hide-wallpaper-filenames": {
"description": "Ocultar nomes de arquivos de papel de parede no seletor.",
"label": "Ocultar nomes de arquivos"
},
"monitor-specific": {
"description": "Defina uma pasta de papel de parede diferente para cada monitor.",
"label": "Diretórios específicos por monitor",
@@ -1655,6 +1940,11 @@
},
"select-folder": "Selecionar pasta de papéis de parede",
"select-monitor-folder": "Selecionar pasta de papéis de parede do monitor",
"selector": {
"description": "Escolha o seu papel de parede.",
"label": "Seletor de papel de parede",
"tooltip": "Abrir o seletor de papel de parede"
},
"selector-position": {
"description": "Escolha onde o painel do seletor de papel de parede aparece.",
"label": "Posição"
@@ -1719,19 +2009,6 @@
"low": "Bateria Fraca",
"low-desc": "A bateria está em {percent}%. Por favor, conecte o carregador."
},
"battery-manager": {
"initial-setup": "Configuração inicial necessária",
"install-failed": "Falha na instalação",
"install-missing": "Arquivos necessários ausentes",
"install-success": "Instalado com sucesso",
"install-unsupported": "Sistema não suportado",
"set-failed": "Falha ao definir o limite da bateria",
"set-success-desc": "Limite da bateria definido para {percent}%",
"title": "Limite da bateria",
"uninstall-failed": "Falha na desinstalação",
"uninstall-setup": "Desinstalando, autenticação necessária",
"uninstall-success": "Desinstalado com sucesso"
},
"bluetooth": {
"disabled": "Desativado",
"enabled": "Ativado"
@@ -1800,6 +2077,10 @@
"title-matugen": "Falha no processamento do template Matugen",
"title-predefined": "O processamento do esquema de cores predefinido falhou."
},
"vpn": {
"connected": "Conectado a '{name}'",
"disconnected": "Desconectado de '{name}'"
},
"wallpaper-colors": {
"disabled": "Cores do papel de parede desativadas",
"enabled": "Cores do papel de parede ativadas",
@@ -1833,6 +2114,7 @@
"input-muted": "Silenciar entrada de áudio",
"keep-awake": "Manter acordado",
"keyboard-layout": "Layout de teclado {layout}",
"manage-vpn": "Gerenciar conexões VPN",
"manage-wifi": "Gerenciar Wi-Fi",
"microphone-volume-at": "Volume do microfone em {volume}%.\nClique esquerdo para configurações. Clique direito para ativar/desativar o mudo.\nRole para modificar o volume.",
"move-to-center-section": "Mover para a seção central",
@@ -1860,6 +2142,7 @@
"previous-month": "Mês anterior",
"refresh": "Atualizar",
"refresh-devices": "Atualizar dispositivos",
"refresh-wallhaven": "Atualizar resultados do Wallhaven",
"refresh-wallpaper-list": "Atualizar lista de papéis de parede",
"remove-widget": "Remover widget",
"screen-recorder-not-installed": "O gravador de tela não está instalado",
@@ -1889,8 +2172,51 @@
"description": "Aplica o papel de parede selecionado a todos os monitores de uma só vez.",
"label": "Aplicar a todos os monitores"
},
"categories": {
"anime": "Anime",
"general": "Geral",
"label": "Categorias",
"people": "Pessoas"
},
"order": {
"asc": "Crescente",
"desc": "Decrescente",
"label": "Ordem"
},
"purity": {
"all": "Tudo",
"label": "Filtro de conteúdo",
"sfw": "SFW",
"sketchy": "Sketchy"
},
"resolution": {
"atleast": "Pelo menos",
"exact": "Exato",
"label": "Resolução",
"mode": {
"label": "Modo"
}
},
"search": "Pesquisar:",
"title": "Seletor de papel de parede"
"sorting": {
"date_added": "Data de adição",
"favorites": "Favoritos",
"label": "Ordenar por",
"random": "Aleatório",
"relevance": "Relevância",
"toplist": "Lista superior",
"views": "Visualizações"
},
"source": {
"label": "Fonte",
"local": "Local",
"wallhaven": "Wallhaven"
},
"title": "Seletor de papel de parede",
"wallhaven-settings": {
"apply": "Aplicar",
"title": "Configurações do Wallhaven"
}
},
"transitions": {
"disc": "Disco",
@@ -1900,7 +2226,13 @@
"stripes": "Listras",
"wipe": "Limpar"
},
"try-different-search": "Tente uma busca diferente."
"try-different-search": "Tente uma busca diferente.",
"unknown": "Desconhecido",
"wallhaven": {
"loading": "Carregando papéis de parede...",
"no-results": "Nenhum papel de parede encontrado. Tente uma busca diferente.",
"page": "{current} de {total}"
}
},
"weather": {
"clear-sky": "Céu limpo",
@@ -2009,6 +2341,7 @@
},
"wifi": {
"panel": {
"available-networks": "Redes Disponíveis",
"connect": "Conectar",
"connected": "Conectado",
"disabled": "O Wi-Fi está desativado",
@@ -2019,6 +2352,7 @@
"forget": "Esquecer",
"forget-network": "Esquecer esta rede?",
"forgetting": "Esquecendo...",
"known-networks": "Redes Conhecidas",
"no-networks": "Nenhuma rede encontrada",
"password": "Senha",
"saved": "Salva",

View File

@@ -123,21 +123,27 @@
"stream-description": "Введите команду для непрерывного выполнения."
},
"dynamic-text": "Динамический текст",
"hide-vertical": {
"description": "Если включено, текст из вывода команды не будет отображаться, когда панель находится в вертикальном макете (слева или справа).",
"label": "Скрывать текст в вертикальной панели"
},
"icon": {
"description": "Выберите иконку из библиотеки.",
"label": "Иконка"
},
"left-click": {
"description": "Команда для выполнения при нажатии левой кнопкой мыши.",
"label": "Клик левой кнопкой"
"label": "Клик левой кнопкой",
"update-text": "Обновить отображаемый текст по левому клику"
},
"max-text-length-horizontal": {
"description": "Максимальное количество символов для отображения в горизонтальной панели (0 для скрытия текста)",
"label": "Макс. длина текста (горизонтально)"
},
"max-text-length-vertical": {
"description": "Максимальное количество символов для отображения в вертикальной панели (0 для скрытия текста)",
"label": "Макс. длина текста (вертикально)"
},
"middle-click": {
"description": "Команда для выполнения при нажатии средней кнопкой мыши.",
"label": "Клик средней кнопкой"
"label": "Клик средней кнопкой",
"update-text": "Обновить отображаемый текст по среднему клику"
},
"parse-json": {
"description": "Разобрать вывод команды как объект JSON для динамической установки текста и иконки.",
@@ -149,11 +155,29 @@
},
"right-click": {
"description": "Команда для выполнения при нажатии правой кнопкой мыши.",
"label": "Клик правой кнопкой"
"label": "Клик правой кнопкой",
"update-text": "Обновить отображаемый текст по правому клику"
},
"text-stream": {
"description": "Потоковые строки из команды будут отображаться как текст на кнопке.",
"label": "Поток"
},
"wheel": {
"description": "Команда для выполнения при использовании колеса прокрутки.\nИспользуйте $delta для дельты колеса прокрутки в команде",
"label": "Колесо прокрутки",
"update-text": "Обновить отображаемый текст при прокрутке"
},
"wheel-down": {
"description": "Команда для выполнения при прокрутке колеса вниз.",
"label": "Команда прокрутки колеса вниз"
},
"wheel-mode-separate": {
"description": "Включить раздельные команды для колеса прокрутки вверх и вниз",
"label": "Раздельные команды колеса прокрутки"
},
"wheel-up": {
"description": "Команда для выполнения при прокрутке колеса вверх.",
"label": "Команда прокрутки колеса вверх"
}
},
"dialog": {
@@ -199,6 +223,10 @@
"description": "Отображать обложку альбома для текущего воспроизводимого трека.",
"label": "Показывать обложку альбома"
},
"show-artist-first": {
"description": "Исполнитель - название вместо название - исполнитель.",
"label": "Сначала исполнитель"
},
"show-visualizer": {
"description": "Отображать аудиовизуализатор при воспроизведении музыки.",
"label": "Показывать визуализатор"
@@ -239,6 +267,9 @@
}
},
"system-monitor": {
"cpu-critical-threshold": {
"label": "Использование CPU (Критично)"
},
"cpu-temperature": {
"description": "Показывать показания температуры процессора, если доступны.",
"label": "Температура CPU"
@@ -247,6 +278,25 @@
"description": "Отображать текущий процент использования CPU.",
"label": "Использование CPU"
},
"cpu-warning-threshold": {
"label": "Использование CPU (Предупреждение)"
},
"disk-critical-threshold": {
"label": "Место на диске (Критично)"
},
"disk-path": {
"description": "Выберите точку монтирования диска для мониторинга.",
"label": "Путь к диску"
},
"disk-warning-threshold": {
"label": "Место на диске (Предупреждение)"
},
"mem-critical-threshold": {
"label": "Использование памяти (Критично)"
},
"mem-warning-threshold": {
"label": "Использование памяти (Предупреждение)"
},
"memory-percentage": {
"description": "Показывать использование памяти в процентах вместо абсолютных значений.",
"label": "Память в процентах"
@@ -262,6 +312,16 @@
"storage-usage": {
"description": "Показывать информацию об использовании дискового пространства.",
"label": "Использование хранилища"
},
"temp-critical-threshold": {
"label": "Температура CPU: (Критично)"
},
"temp-warning-threshold": {
"label": "Температура CPU (Внимание)"
},
"thresholds": {
"description": "Установите пороги для оповещений системных метрик. Выделяет при превышении.",
"header": "Пороговые значения"
}
},
"taskbar": {
@@ -283,13 +343,9 @@
}
},
"taskbar-grouped": {
"show-numbers-only-when-occupied": {
"description": "Показывать номера рабочих пространств только для тех, на которых есть открытые окна.",
"label": "Показывать номера только при занятости"
},
"show-workspace-numbers": {
"description": "Отображать номера рабочих пространств в верхнем левом углу групп задач.",
"label": "Показывать номера рабочих пространств"
"show-labels-only-when-occupied": {
"description": "Отображать метку рабочего пространства только для тех рабочих пространств, в которых есть открытые окна.",
"label": "Показывать метку только когда занято"
}
},
"tray": {
@@ -332,13 +388,6 @@
"health": "Здоровье: {percent}%",
"idle": "Простой.",
"no-battery-detected": "Батарея не обнаружена.",
"panel": {
"balanced": "Сбалансированный ({percent}%)",
"disabled": "Диспетчер батареи отключен",
"full": "Полная емкость ({percent}%)",
"lifespan": "Увеличенный срок службы ({percent}%)",
"title": "Порог зарядки"
},
"plugged-in": "Подключено.",
"time-left": "Осталось времени: {time}.",
"time-until-full": "Время до полной зарядки: {time}."
@@ -367,9 +416,61 @@
"loading": "Загрузка погоды…"
}
},
"changelog": {
"error": {
"fetch-failed": "Не удалось загрузить данные журнала изменений. Пожалуйста, попробуйте позже.",
"rate-limit": "Превышен лимит GitHub. Попробуйте снова через несколько минут."
},
"panel": {
"buttons": {
"discord": "Присоединиться к нашему Discord",
"dismiss": "Ок"
},
"empty": "Примечания к выпуску пока недоступны.",
"highlight-title": "Основные изменения",
"section": {
"released": "Выпущено {date}",
"version": "Версия {version}"
},
"subtitle": {
"fresh": "Спасибо за установку Noctalia! Вот что входит в этот билд.",
"updated": "Обновлено с {previousVersion}"
},
"title": "Что нового в {version}",
"version": {
"new-user": "Новая установка"
}
}
},
"clock": {
"tooltip": "Открыть календарь"
},
"context-menu": {
"activate-app": "Активировать {app}",
"clear-history": "Очистить историю",
"close-app": "Закрыть {app}",
"connect-vpn": "Подключиться к {name}",
"cycle-visualizer": "Визуализатор циклов",
"disable-bluetooth": "Отключить Bluetooth",
"disable-dnd": "Отключить режим \"Не беспокоить\"",
"disable-wifi": "Отключить Wi-Fi",
"disconnect-vpn": "Отключить {name}",
"enable-bluetooth": "Включить Bluetooth",
"enable-dnd": "Не беспокоить",
"enable-wifi": "Включить Wi-Fi",
"next": "Следующий",
"open-calendar": "Открыть календарь",
"open-display-settings": "Настройки экрана",
"open-launcher": "Открыть лаунчер",
"open-mixer": "Аудиомикшер",
"open-settings": "Открыть настройки",
"pause": "Пауза",
"play": "Играть",
"previous": "Предыдущий",
"random-wallpaper": "Случайные обои",
"toggle-mute": "Включить/выключить звук",
"widget-settings": "Настройки виджета"
},
"dock": {
"menu": {
"close": "Закрыть",
@@ -533,6 +634,7 @@
},
"workspace-labels": {
"index": "Индекс",
"index+name": "Индекс и название",
"name": "Имя",
"none": "Нет"
}
@@ -548,6 +650,7 @@
"search": "Поиск...",
"search-icons": "например, noctalia, niri, battery, cloud",
"search-launcher": "Поиск записей... или используйте > для команд",
"search-wallhaven": "Поиск в Wallhaven...",
"search-wallpapers": "Введите для фильтрации обоев...",
"select": "Выбрать",
"test": "Тест"
@@ -644,6 +747,7 @@
},
"session-menu": {
"action-in-seconds": "{action} через {seconds} секунд...",
"hibernate": "Гибернация",
"lock": "Блокировать",
"lock-and-suspend": "Блокировать и приостановить",
"logout": "Выйти",
@@ -688,6 +792,11 @@
"label": "Аудиоустройства"
}
},
"external-mixer": {
"description": "Введите команду или путь к приложению для запуска при активации функции внешнего аудиомикшера.",
"label": "Команда внешнего аудиомикшера",
"placeholder": "pwvucontrol || pavucontrol"
},
"media": {
"excluded-player": {
"description": "Добавьте ключевые слова для плееров, которые система должна игнорировать. Каждое ключевое слово должно быть на новой строке.",
@@ -762,6 +871,10 @@
"description": "Настройка непрозрачности фона панели.",
"label": "Непрозрачность фона"
},
"capsule-opacity": {
"description": "Установить уровень непрозрачности для фона виджетов, когда капсула отображается.",
"label": "Непрозрачность капсулы"
},
"density": {
"description": "Настройка отступов панели для компактного или просторного вида.",
"label": "Плотность панели"
@@ -854,6 +967,41 @@
"label": "Темный режим"
}
},
"delete": {
"error": {
"description": "Не удалось удалить {scheme}",
"title": "Ошибка удаления"
},
"success": {
"description": "{scheme} успешно удалена",
"title": "Цветовая схема удалена"
}
},
"download": {
"button": "Загрузить ещё",
"delete": "Удалить",
"download": "Загрузить",
"downloading": "Загрузка...",
"empty": "Нет доступных цветовых схем",
"error": {
"api-error": "Ошибка API: {status}",
"description": "Не удалось загрузить {scheme}",
"download-failed": "Ошибка загрузки с кодом выхода: {code}",
"invalid-response": "Неверный формат ответа API",
"no-files": "Файлы для схемы не найдены",
"parse-failed": "Ошибка парсинга ответа API: {error}",
"rate-limit": "Превышен лимит запросов GitHub API",
"title": "Ошибка загрузки"
},
"fetching": "Получение доступных цветовых схем...",
"installed": "Установлено",
"refresh": "Обновить",
"success": {
"description": "{scheme} успешно загружена",
"title": "Цветовая схема загружена"
},
"title": "Загрузить цветовые схемы"
},
"predefined": {
"generate-templates": {
"description": "Генерировать шаблоны Matugen (GTK, темы терминала и т. д.) при использовании предопределенных цветовых схем.",
@@ -876,7 +1024,7 @@
"programs": {
"code": {
"description": "Записать {filepath}. Тему Hyprluna нужно установить и активировать вручную.",
"description-missing": "Требуется установка {app}"
"description-missing": "Клиент Code не обнаружен. Установите VSCode или VSCodium."
},
"description": "Тематика для конкретных приложений.",
"discord": {
@@ -896,6 +1044,10 @@
"description": "Записать {filepath}. Тему Comfy нужно установить и активировать вручную.",
"description-missing": "Требуется установка {app}"
},
"telegram": {
"description": "Записать {filepath}.",
"description-missing": "Требуется установка {app}"
},
"vicinae": {
"description": "Записать {filepath} и перезагрузить",
"description-missing": "Требуется установка {app}"
@@ -1092,6 +1244,10 @@
"description": "Настройка непрозрачности фона панели приложений.",
"label": "Непрозрачность фона"
},
"border-radius": {
"description": "Измените радиус границы дока.",
"label": "Радиус скругления границы"
},
"colorize-icons": {
"description": "Применить цвета темы к иконкам приложений на панели (только для нефокусированных приложений).",
"label": "Раскрасить иконки"
@@ -1243,6 +1399,10 @@
"description": "Настройка непрозрачности фона запуска.",
"label": "Непрозрачность фона"
},
"clip-preview": {
"description": "Показывать предварительный просмотр содержимого буфера обмена при использовании команды >clip.",
"label": "Включить предварительный просмотр буфера обмена"
},
"clipboard-history": {
"description": "Доступ к ранее скопированным элементам из запуска.",
"label": "Включить историю буфера обмена"
@@ -1331,6 +1491,10 @@
"description": "Выберите предпочитаемую единицу измерения температуры.",
"label": "Погода"
},
"show-effects": {
"description": "Отображает дополнительные визуальные эффекты (например, дождь, снег или молнию) на карточке погоды.",
"label": "Отображать погодные эффекты"
},
"show-in-calendar": {
"description": "Показывать ежедневный прогноз погоды непосредственно в вашем календаре.",
"label": "Отображать погоду в календаре"
@@ -1346,6 +1510,10 @@
"description": "Автоматически блокировать экран при приостановке работы системы.",
"label": "Блокировать при приостановке"
},
"show-hibernate": {
"description": "Показывать опцию 'спящий режим' в действиях питания.",
"label": "Показывать спящий режим"
},
"title": "Экран блокировки"
},
"network": {
@@ -1437,6 +1605,10 @@
"description": "Отображать OSD поверх полноэкранных окон и других слоев.",
"label": "Всегда сверху"
},
"background-opacity": {
"description": "Управляет прозрачностью фона OSD.",
"label": "Прозрачность фона"
},
"description": "Настройка экранных индикаторов, таких как оверлеи громкости и яркости.",
"duration": {
"auto-hide": {
@@ -1529,7 +1701,107 @@
}
}
},
"session-menu": {
"countdown-duration": {
"description": "Установить, как долго длится таймер обратного отсчета перед выполнением действий питания.",
"label": "Длительность обратного отсчета"
},
"enable-countdown": {
"description": "Показывать таймер обратного отсчета перед выполнением действий питания.",
"label": "Включить таймер обратного отсчета"
},
"entries": {
"section": {
"description": "Настроить, какие действия питания отображаются в меню сеанса и в каком порядке.",
"label": "Действия питания"
}
},
"general": {
"section": {
"description": "Настройка поведения и внешнего вида панели меню сеанса.",
"label": "Общие"
}
},
"position": {
"description": "Выберите, где появляется панель меню сеанса при открытии.",
"label": "Позиция"
},
"show-header": {
"description": "Отображать заголовок и кнопку закрытия в верхней части меню сеанса.",
"label": "Показывать заголовок"
},
"title": "Меню сеанса"
},
"system-monitor": {
"cpu-critical-threshold": {
"label": "Критический порог"
},
"cpu-section": {
"label": "Использование ЦП"
},
"cpu-warning-threshold": {
"label": "Порог предупреждения"
},
"critical-color": {
"label": "Критический цвет"
},
"custom-highlight-colors-title": {
"label": "Пользовательские цвета выделения"
},
"disk-critical-threshold": {
"label": "Критический порог"
},
"disk-section": {
"label": "Использование диска"
},
"disk-warning-threshold": {
"label": "Порог предупреждения"
},
"general": {
"section": {
"description": "Настроить поведение и внешний вид системного монитора.",
"label": "Общее"
}
},
"highlight-colors-section": {
"label": "Цвета выделения"
},
"mem-critical-threshold": {
"label": "Критический порог"
},
"mem-warning-threshold": {
"label": "Порог предупреждения"
},
"memory-section": {
"label": "Использование памяти"
},
"temp-critical-threshold": {
"label": "Критический порог"
},
"temp-warning-threshold": {
"label": "Порог предупреждения"
},
"temperature-section": {
"label": "Температура ЦП"
},
"thresholds-section": {
"description": "Установите пороги для системных метрик; значения выше будут выделены.",
"label": "Пороги"
},
"title": "Системный монитор",
"use-custom-highlight-colors": {
"description": "Если отключено, используются цвета выделения по умолчанию темы.",
"label": "Использовать пользовательские цвета выделения"
},
"warning-color": {
"label": "Цвет предупреждения"
}
},
"user-interface": {
"allow-panels-without-bar": {
"description": "Когда включено, панели могут открываться на любом экране. Когда выключено, панели будут открываться только на экранах с панелью, что может снизить использование памяти.",
"label": "Разрешить панели на экранах без панели задач."
},
"animation-disable": {
"description": "Отключить все анимации для более быстрого и отзывчивого взаимодействия.",
"label": "Отключить анимации интерфейса"
@@ -1548,6 +1820,15 @@
"description": "Затемнять рабочий стол при открытии панелей или меню.",
"label": "Затемнять рабочий стол"
},
"dimmer-opacity": {
"description": "Установить уровень непрозрачности для затемнения рабочего стола.",
"label": "Непрозрачность затемненного рабочего стола",
"reset": "Сбросить непрозрачность затемненного рабочего стола"
},
"panel-background-opacity": {
"description": "Установить прозрачность фона для всех панелей (Launcher, Центр управления, Настройки и т.д.).",
"label": "Прозрачность фона панелей"
},
"panels-attached-to-bar": {
"description": "Панели прикрепляются к панели и краям экрана, создавая цельный вид со стильными инвертированными углами.",
"label": "Прикрепить панели к краям"
@@ -1640,6 +1921,10 @@
"label": "Папка с обоями",
"tooltip": "Обзор папки с обоями"
},
"hide-wallpaper-filenames": {
"description": "Скрыть имена файлов обоев в селекторе.",
"label": "Скрыть имена файлов"
},
"monitor-specific": {
"description": "Установить отдельную папку с обоями для каждого монитора.",
"label": "Каталоги для конкретного монитора",
@@ -1655,6 +1940,11 @@
},
"select-folder": "Выбрать папку с обоями",
"select-monitor-folder": "Выбрать папку с обоями для монитора",
"selector": {
"description": "Выберите обои.",
"label": "Выбор обоев",
"tooltip": "Открыть выбор обоев"
},
"selector-position": {
"description": "Выберите, где появляется панель выбора обоев.",
"label": "Положение"
@@ -1719,19 +2009,6 @@
"low": "Низкий заряд батареи",
"low-desc": "Заряд батареи {percent}%. Пожалуйста, подключите зарядное устройство."
},
"battery-manager": {
"initial-setup": "Требуется начальная настройка",
"install-failed": "Сбой установки",
"install-missing": "Отсутствуют необходимые файлы",
"install-success": "Успешно установлено",
"install-unsupported": "Система не поддерживается",
"set-failed": "Не удалось установить порог зарядки батареи",
"set-success-desc": "Порог зарядки батареи установлен на {percent}%",
"title": "Порог зарядки батареи",
"uninstall-failed": "Сбой удаления",
"uninstall-setup": "Удаление, требуется аутентификация",
"uninstall-success": "Успешно удалено"
},
"bluetooth": {
"disabled": "Отключен",
"enabled": "Включен"
@@ -1800,6 +2077,10 @@
"title-matugen": "Сбой обработки шаблонов Matugen",
"title-predefined": "Сбой обработки предопределенной цветовой схемы"
},
"vpn": {
"connected": "Подключено к '{name}'",
"disconnected": "Отключено от '{name}'"
},
"wallpaper-colors": {
"disabled": "Цвета обоев отключены",
"enabled": "Цвета обоев включены",
@@ -1833,6 +2114,7 @@
"input-muted": "Переключить заглушение ввода",
"keep-awake": "Не засыпать",
"keyboard-layout": "Раскладка клавиатуры {layout}",
"manage-vpn": "Управлять VPN-подключениями",
"manage-wifi": "Управление Wi-Fi",
"microphone-volume-at": "Громкость микрофона {volume}%\nЛевый клик для настроек. Правый клик для переключения заглушения.\nПрокрутка для изменения громкости.",
"move-to-center-section": "Переместить в центральную секцию",
@@ -1860,6 +2142,7 @@
"previous-month": "Предыдущий месяц",
"refresh": "Обновить",
"refresh-devices": "Обновить устройства",
"refresh-wallhaven": "Обновить результаты Wallhaven",
"refresh-wallpaper-list": "Обновить список обоев",
"remove-widget": "Удалить виджет",
"screen-recorder-not-installed": "Запись экрана не установлена",
@@ -1889,8 +2172,51 @@
"description": "Применить выбранные обои ко всем мониторам одновременно.",
"label": "Применить ко всем мониторам"
},
"categories": {
"anime": "Аниме",
"general": "Общее",
"label": "Категории",
"people": "Люди"
},
"order": {
"asc": "По возрастанию",
"desc": "По убыванию",
"label": "Порядок"
},
"purity": {
"all": "Все",
"label": "Фильтр контента",
"sfw": "SFW",
"sketchy": "Sketchy"
},
"resolution": {
"atleast": "По крайней мере",
"exact": "Точно",
"label": "Разрешение",
"mode": {
"label": "Режим"
}
},
"search": "Поиск:",
"title": "Выбор обоев"
"sorting": {
"date_added": "Дата добавления",
"favorites": "Избранное",
"label": "Сортировать по",
"random": "Случайно",
"relevance": "Релевантность",
"toplist": "Топ-лист",
"views": "Просмотры"
},
"source": {
"label": "Источник",
"local": "Локальный",
"wallhaven": "Wallhaven"
},
"title": "Выбор обоев",
"wallhaven-settings": {
"apply": "Применить",
"title": "Настройки Wallhaven"
}
},
"transitions": {
"disc": "Диск",
@@ -1900,7 +2226,13 @@
"stripes": "Полосы",
"wipe": "Стирание"
},
"try-different-search": "Попробуйте другой поисковый запрос."
"try-different-search": "Попробуйте другой поисковый запрос.",
"unknown": "Неизвестно",
"wallhaven": {
"loading": "Загрузка обоев...",
"no-results": "Обои не найдены. Попробуйте другой поисковый запрос.",
"page": "{current} из {total}"
}
},
"weather": {
"clear-sky": "Ясное небо",
@@ -2009,6 +2341,7 @@
},
"wifi": {
"panel": {
"available-networks": "Доступные сети",
"connect": "Подключить",
"connected": "Подключено",
"disabled": "Wi-Fi отключен",
@@ -2019,6 +2352,7 @@
"forget": "Забыть",
"forget-network": "Забыть эту сеть?",
"forgetting": "Забывание...",
"known-networks": "Известные сети",
"no-networks": "Сети не найдены",
"password": "Пароль",
"saved": "Сохранено",

View File

@@ -123,21 +123,27 @@
"stream-description": "Sürekli çalıştırılacak bir komut girin."
},
"dynamic-text": "Dinamik metin",
"hide-vertical": {
"description": "Etkinleştirilirse, komut çıktısındaki metin, çubuk dikey düzende (sol veya sağ) olduğunda gösterilmeyecektir.",
"label": "Dikey çubukta metni gizle"
},
"icon": {
"description": "Kütüphaneden bir ikon seçin.",
"label": "İkon"
},
"left-click": {
"description": "Butona sol tıklandığında yürütülecek komut.",
"label": "Sol tıklama"
"label": "Sol tıklama",
"update-text": "Sol tıklamayla görüntülenen metni güncelle"
},
"max-text-length-horizontal": {
"description": "Yatay çubukta gösterilecek maksimum karakter sayısı (metni gizlemek için 0)",
"label": "Maks. metin uzunluğu (yatay)"
},
"max-text-length-vertical": {
"description": "Dikey çubukta gösterilecek maksimum karakter sayısı (metni gizlemek için 0)",
"label": "Maks. metin uzunluğu (dikey)"
},
"middle-click": {
"description": "Butona orta tıklandığında yürütülecek komut.",
"label": "Orta tıklama"
"label": "Orta tıklama",
"update-text": "Orta tıklamayla görüntülenen metni güncelle"
},
"parse-json": {
"description": "Komut çıktısını metin ve ikon dinamik olarak ayarlamak için bir JSON nesnesi olarak ayrıştırın.",
@@ -149,11 +155,29 @@
},
"right-click": {
"description": "Butona sağ tıklandığında yürütülecek komut.",
"label": "Sağ tıklama"
"label": "Sağ tıklama",
"update-text": "Sağ tıklamada görüntülenen metni güncelle"
},
"text-stream": {
"description": "Komuttan gelen akış satırları butonda metin olarak gösterilecektir.",
"label": "Akış"
},
"wheel": {
"description": "Kaydırma tekerleği kullanıldığında yürütülecek komut.\nKomutta kaydırma tekerleği deltası için $delta kullanın",
"label": "Kaydırma tekerleği",
"update-text": "Kaydırmada gösterilen metni güncelle"
},
"wheel-down": {
"description": "Kaydırma tekerleği aşağı kaydırıldığında yürütülecek komut.",
"label": "Kaydırma tekerleği aşağı komutu"
},
"wheel-mode-separate": {
"description": "Kaydırma tekerleği yukarı ve aşağı için ayrı komutları etkinleştir",
"label": "Ayrı kaydırma tekerleği komutları"
},
"wheel-up": {
"description": "Kaydırma tekerleği yukarı kaydırıldığında yürütülecek komut.",
"label": "Kaydırma tekerleği yukarı komutu"
}
},
"dialog": {
@@ -199,6 +223,10 @@
"description": "Şu anda çalan parçanın albüm kapak sanatını göster.",
"label": "Albüm kapağını göster"
},
"show-artist-first": {
"description": "Sanatçı - başlık yerine başlık - sanatçı olarak göster.",
"label": "Önce sanatçıyı göster"
},
"show-visualizer": {
"description": "Müzik çalarken bir ses görselleştirici göster.",
"label": "Görselleştiriciyi göster"
@@ -239,6 +267,9 @@
}
},
"system-monitor": {
"cpu-critical-threshold": {
"label": "CPU Kullanımı (Kritik)"
},
"cpu-temperature": {
"description": "Mevcut CPU sıcaklık okumalarını gösterilir.",
"label": "CPU sıcaklığı"
@@ -247,6 +278,25 @@
"description": "Mevcut CPU kullanım yüzdesini göster.",
"label": "CPU kullanımı"
},
"cpu-warning-threshold": {
"label": "CPU Kullanımı (Uyarı)"
},
"disk-critical-threshold": {
"label": "Depolama Alanı (Kritik)"
},
"disk-path": {
"description": "İzlenecek disk bağlama noktasını seçin.",
"label": "Disk yolu"
},
"disk-warning-threshold": {
"label": "Depolama Alanı (Uyarı)"
},
"mem-critical-threshold": {
"label": "Bellek Kullanımı (Kritik)"
},
"mem-warning-threshold": {
"label": "Bellek Kullanımı (Uyarı)"
},
"memory-percentage": {
"description": "Mutlak değerler yerine bellek kullanımını yüzde olarak göster.",
"label": "Bellek yüzde olarak"
@@ -262,6 +312,16 @@
"storage-usage": {
"description": "Disk alanı kullanım bilgilerini göster.",
"label": "Depolama kullanımı"
},
"temp-critical-threshold": {
"label": "CPU Sıcaklığı (Kritik)"
},
"temp-warning-threshold": {
"label": "CPU Sıcaklığı (Uyarı)"
},
"thresholds": {
"description": "Sistem metrik eşiklerini ayarlayın. Aşıldığında vurgular.",
"header": "Eşik Ayarları"
}
},
"taskbar": {
@@ -283,13 +343,9 @@
}
},
"taskbar-grouped": {
"show-numbers-only-when-occupied": {
"description": "Çalışma alanı numaralarını yalnızcaık pencereleri olan çalışma alanları için göster.",
"label": "Yalnızca dolu olduğunda numaraları göster"
},
"show-workspace-numbers": {
"description": "Görev gruplarının sol üst köşesinde çalışma alanı numaralarını göster.",
"label": "Çalışma alanı numaralarını göster"
"show-labels-only-when-occupied": {
"description": "Sadeceık pencereleri olan çalışma alanları için çalışma alanı etiketini göster.",
"label": "Sadece dolu olduğunda etiketi göster."
}
},
"tray": {
@@ -332,13 +388,6 @@
"health": "Sağlık: {percent}%",
"idle": "Boşta.",
"no-battery-detected": "Pil tespit edilmedi.",
"panel": {
"balanced": "Dengeli ({percent}%)",
"disabled": "Pil yöneticisi devre dışı",
"full": "Tam kapasite ({percent}%)",
"lifespan": "Uzatılmış ömür ({percent}%)",
"title": "Şarj eşiği"
},
"plugged-in": "Prize takılı.",
"time-left": "Kalan süre: {time}.",
"time-until-full": "Dolma süresi: {time}."
@@ -367,9 +416,61 @@
"loading": "Hava durumu yükleniyor..."
}
},
"changelog": {
"error": {
"fetch-failed": "Değişiklik günlüğü verileri yüklenemedi. Lütfen daha sonra tekrar dene.",
"rate-limit": "GitHub sınırına ulaşıldı. Lütfen birkaç dakika sonra tekrar dene."
},
"panel": {
"buttons": {
"discord": "Discord sunucumuza katıl",
"dismiss": "Tamam"
},
"empty": "Sürüm notları henüz hazır değil.",
"highlight-title": "Öne çıkanlar",
"section": {
"released": "{date} tarihinde yayımlandı",
"version": "Sürüm {version}"
},
"subtitle": {
"fresh": "Noctaliayı kurduğun için teşekkürler! Bu sürümde gelenler bunlar.",
"updated": "{previousVersion} sürümünden güncellendi"
},
"title": "{version} sürümünde neler yeni",
"version": {
"new-user": "Yeni kurulum"
}
}
},
"clock": {
"tooltip": "Takvimi aç"
},
"context-menu": {
"activate-app": "{app}'i etkinleştir",
"clear-history": "Geçmişi temizle",
"close-app": "{app}'i kapat",
"connect-vpn": "{name} bağlantısına bağlan",
"cycle-visualizer": "Döngü görselleştirici",
"disable-bluetooth": "Bluetooth'u kapat",
"disable-dnd": "Rahatsız Etmeyin'i Kapat",
"disable-wifi": "Wi-Fi'ı kapat",
"disconnect-vpn": "{name} bağlantısını kes",
"enable-bluetooth": "Bluetooth'u etkinleştir",
"enable-dnd": "Rahatsız Etmeyin'i Etkinleştir",
"enable-wifi": "Wi-Fi'ı etkinleştir",
"next": "Sonraki",
"open-calendar": "Takvimi aç",
"open-display-settings": "Ekran ayarları",
"open-launcher": "Başlatıcıyı aç",
"open-mixer": "Ses mikseri",
"open-settings": "Ayarları aç",
"pause": "Duraklat",
"play": "Oyna",
"previous": "Önceki",
"random-wallpaper": "Rastgele duvar kağıdı",
"toggle-mute": "Sesi kapat/aç",
"widget-settings": "Araç ayarları"
},
"dock": {
"menu": {
"close": "Kapat",
@@ -533,6 +634,7 @@
},
"workspace-labels": {
"index": "İndeks",
"index+name": "Dizin ve Ad",
"name": "İsim",
"none": "Hiçbiri"
}
@@ -548,6 +650,7 @@
"search": "Ara...",
"search-icons": "örn., noctalia, niri, battery, cloud",
"search-launcher": "Girişleri arayın... veya > komutları için kullanın",
"search-wallhaven": "Wallhaven'da ara...",
"search-wallpapers": "Duvar kağıtlarını filtrelemek için yazın...",
"select": "Seç",
"test": "Test"
@@ -644,6 +747,7 @@
},
"session-menu": {
"action-in-seconds": "{action} in {seconds} seconds...",
"hibernate": "Hazırda Bekletme",
"lock": "Kilitle",
"lock-and-suspend": "Kilitle ve Askıya Al",
"logout": "Oturumu kapat",
@@ -688,6 +792,11 @@
"label": "Ses cihazları"
}
},
"external-mixer": {
"description": "Harici ses mikseri özelliği etkinleştirilirken başlatılacak komutu veya uygulama yolunu girin.",
"label": "Harici Ses Mikseri Komutu",
"placeholder": "pwvucontrol || pavucontrol"
},
"media": {
"excluded-player": {
"description": "Sistemin yoksaymasını istediğiniz oynatıcılar için anahtar kelimeler ekleyin. Her anahtar kelime ayrı bir satırda olmalıdır.",
@@ -762,6 +871,10 @@
"description": "Barın arka plan opaklığını ayarlayın.",
"label": "Arka plan opaklığı"
},
"capsule-opacity": {
"description": "Kapsül gösterildiğinde widget arka planlarının saydamlık seviyesini ayarla.",
"label": "Kapsül saydamlığı"
},
"density": {
"description": "Sıkı veya geniş bir görünüm için barın dolgusunu ayarlayın.",
"label": "Bar yoğunluğu"
@@ -854,6 +967,41 @@
"label": "Koyu mod"
}
},
"delete": {
"error": {
"description": "{scheme} silinemedi",
"title": "Silme başarısız"
},
"success": {
"description": "{scheme} başarıyla silindi",
"title": "Renk şeması silindi"
}
},
"download": {
"button": "Daha fazla indir",
"delete": "Sil",
"download": "İndir",
"downloading": "İndiriliyor...",
"empty": "Mevcut renk şeması yok",
"error": {
"api-error": "API hatası: {status}",
"description": "{scheme} indirilemedi",
"download-failed": "İndirme başarısız, çıkış kodu: {code}",
"invalid-response": "Geçersiz API yanıt formatı",
"no-files": "Şema için dosya bulunamadı",
"parse-failed": "API yanıtı ayrıştırılamadı: {error}",
"rate-limit": "GitHub API hız sınırııldı",
"title": "İndirme başarısız"
},
"fetching": "Mevcut renk şemaları alınıyor...",
"installed": "Yüklü",
"refresh": "Yenile",
"success": {
"description": "{scheme} başarıyla indirildi",
"title": "Renk şeması indirildi"
},
"title": "Renk şemalarını indir"
},
"predefined": {
"generate-templates": {
"description": "Önceden tanımlanmış renk şemaları kullanırken Matugen şablonları (GTK, terminal temaları vb.) oluşturun.",
@@ -876,7 +1024,7 @@
"programs": {
"code": {
"description": "{filepath} dosyasına yaz. Hyprluna temasının kurulu ve manuel olarak etkinleştirilmiş olması gerekir.",
"description-missing": "Kurulum için {app} gereklidir"
"description-missing": "Code istemcisi tespit edilmedi. VSCode veya VSCodium kurun."
},
"description": "Uygulamaya özel temalandırma.",
"discord": {
@@ -896,6 +1044,10 @@
"description": "{filepath} dosyasına yaz. Comfy temasının kurulu ve manuel olarak etkinleştirilmiş olması gerekir.",
"description-missing": "Kurulum için {app} gereklidir"
},
"telegram": {
"description": "{filepath} dosyasına yaz.",
"description-missing": "Kurulum için {app} gereklidir"
},
"vicinae": {
"description": "{filepath} dosyasına yaz ve yeniden yükle",
"description-missing": "Kurulum için {app} gereklidir"
@@ -1092,6 +1244,10 @@
"description": "Dock'un arka plan opaklığını ayarlayın.",
"label": "Arka plan opaklığı"
},
"border-radius": {
"description": "Dock'un kenar yarıçapını ayarla.",
"label": "Kenar yarıçapı"
},
"colorize-icons": {
"description": "Dock uygulama simgelerine tema renklerini uygulayın (sadece odaklanılmamış uygulamalar).",
"label": "Simgeleri Renklendir"
@@ -1243,6 +1399,10 @@
"description": "Başlatıcının arka plan opaklığını ayarlayın.",
"label": "Arka plan opaklığı"
},
"clip-preview": {
"description": ">clip komutu kullanılırken panodaki içeriğin önizlemesini gösterir.",
"label": "Panoyu önizlemeyi etkinleştir"
},
"clipboard-history": {
"description": "Başlatıcıdan daha önce kopyalanan öğelere erişin.",
"label": "Pano geçmişini etkinleştir"
@@ -1331,6 +1491,10 @@
"description": "Tercih ettiğiniz sıcaklık birimini seçin.",
"label": "Hava durumu"
},
"show-effects": {
"description": "Hava durumu kartında ek görsel efektler (yağmur, kar veya şimşek gibi) gösterir.",
"label": "Hava efektlerini göster"
},
"show-in-calendar": {
"description": "Günlük hava durumu tahminini doğrudan takvim görünümünüzde gösterin.",
"label": "Takvimde hava durumunu göster"
@@ -1346,6 +1510,10 @@
"description": "Sistemi askıya alırken otomatik olarak ekranı kilitler.",
"label": "Askıya alırken kilitle"
},
"show-hibernate": {
"description": "Güç işlemlerinde 'hazırda beklet' seçeneğini göster.",
"label": "Hazırda beklet seçeneğini göster"
},
"title": "Ekran Kilit"
},
"network": {
@@ -1437,6 +1605,10 @@
"description": "OSD'yi tam ekran pencerelerinin ve diğer katmanların üzerinde görüntüle.",
"label": "Her zaman üstte"
},
"background-opacity": {
"description": "OSD arka planının şeffaflığını kontrol eder.",
"label": "Arka plan opaklığı"
},
"description": "Ses ve parlaklık kaplamaları gibi ekran göstergelerini yapılandırın.",
"duration": {
"auto-hide": {
@@ -1529,7 +1701,107 @@
}
}
},
"session-menu": {
"countdown-duration": {
"description": "Güç eylemlerini çalıştırmadan önce geri sayım zamanlayıcısının ne kadar süreceğini ayarlayın.",
"label": "Geri sayım süresi"
},
"enable-countdown": {
"description": "Güç eylemlerini çalıştırmadan önce bir geri sayım zamanlayıcısı göster.",
"label": "Geri sayım zamanlayıcısını etkinleştir"
},
"entries": {
"section": {
"description": "Oturum Menüsünde hangi güç eylemlerinin görüneceğini ve hangi sırada görüneceğini özelleştirin.",
"label": "Güç eylemleri"
}
},
"general": {
"section": {
"description": "Oturum menüsü panelinin davranışını ve görünümünü yapılandırın.",
"label": "Genel"
}
},
"position": {
"description": "Oturum Menüsü panelinin açıldığında nerede görüneceğini seçin.",
"label": "Konum"
},
"show-header": {
"description": "Oturum Menüsünün üst kısmında başlığı ve kapat düğmesini göster.",
"label": "Başlığı göster"
},
"title": "Oturum Menüsü"
},
"system-monitor": {
"cpu-critical-threshold": {
"label": "Kritik Eşiği"
},
"cpu-section": {
"label": "CPU Kullanımı"
},
"cpu-warning-threshold": {
"label": "Uyarı Eşiği"
},
"critical-color": {
"label": "Kritik renk"
},
"custom-highlight-colors-title": {
"label": "Özel vurgulama renkleri"
},
"disk-critical-threshold": {
"label": "Kritik Eşiği"
},
"disk-section": {
"label": "Disk Kullanımı"
},
"disk-warning-threshold": {
"label": "Uyarı Eşiği"
},
"general": {
"section": {
"description": "Sistem İzleyicisinin davranışını ve görünümünü yapılandırın.",
"label": "Genel"
}
},
"highlight-colors-section": {
"label": "Vurgulama Renkleri"
},
"mem-critical-threshold": {
"label": "Kritik Eşiği"
},
"mem-warning-threshold": {
"label": "Uyarı Eşiği"
},
"memory-section": {
"label": "Bellek Kullanımı"
},
"temp-critical-threshold": {
"label": "Kritik Eşiği"
},
"temp-warning-threshold": {
"label": "Uyarı Eşiği"
},
"temperature-section": {
"label": "CPU Sıcaklığı"
},
"thresholds-section": {
"description": "Sistem metrikleri için eşikler ayarlayın; bu değerlerin üzerindekiler vurgulanacaktır.",
"label": "Eşikler"
},
"title": "Sistem İzleme",
"use-custom-highlight-colors": {
"description": "Devre dışı bırakıldığında, tema varsayılan vurgulama renkleri kullanılır.",
"label": "Özel vurgulama renklerini kullan"
},
"warning-color": {
"label": "Uyarı rengi"
}
},
"user-interface": {
"allow-panels-without-bar": {
"description": "Etkinleştirildiğinde, paneller herhangi bir ekranda açılabilir. Devre dışı bırakıldığında, paneller yalnızca bir çubuğu olan ekranlarda açılır, bu da bellek kullanımını azaltabilir.",
"label": "Çubuksuz ekranlardaki panellere izin ver."
},
"animation-disable": {
"description": "Daha hızlı ve daha duyarlı bir deneyim için tüm animasyonları devre dışı bırakın.",
"label": "UI Animasyonlarını Devre Dışı Bırak"
@@ -1548,6 +1820,15 @@
"description": "Paneller veya menüler açıkken masaüstünü karart.",
"label": "Masaüstünü karart"
},
"dimmer-opacity": {
"description": "Masaüstü karartması için opaklık seviyesini ayarlayın.",
"label": "Karartılmış masaüstü opaklığı",
"reset": "Karartılmış masaüstü opaklığını sıfırla"
},
"panel-background-opacity": {
"description": "Tüm paneller için arka plan opaklığını ayarlayın (Launcher, Control Center, Ayarlar vb.).",
"label": "Panel arka plan opaklığı"
},
"panels-attached-to-bar": {
"description": "Paneller çubuğa ve ekran kenarlarına kilitlenerek şık ters köşelerle kusursuz bir görünüm oluşturur.",
"label": "Kenarları Yakala"
@@ -1640,6 +1921,10 @@
"label": "Duvar kağıdı klasörü",
"tooltip": "Duvar kağıdı klasörüne göz atın"
},
"hide-wallpaper-filenames": {
"description": "Seçicide duvar kağıdı dosya adlarını gizle.",
"label": "Dosya adlarını gizle"
},
"monitor-specific": {
"description": "Her ekran için farklı bir duvar kağıdı klasörü ayarlayın.",
"label": "Ekran özgü dizinler",
@@ -1655,6 +1940,11 @@
},
"select-folder": "Duvar kağıdı klasörünü seç",
"select-monitor-folder": "Ekran duvar kağıdı klasörünü seç",
"selector": {
"description": "Duvar kâğıdınızı seçin.",
"label": "Duvar kâğıdı seçici",
"tooltip": "Duvar kâğıdı seçiciyi aç"
},
"selector-position": {
"description": "Duvar kağıdı seçici panelinin nerede görüneceğini seçin.",
"label": "Pozisyon"
@@ -1719,19 +2009,6 @@
"low": "Düşük batarya",
"low-desc": "Batarya % {percent}. Lütfen şarj bağlantısını yapın."
},
"battery-manager": {
"initial-setup": "Başlangıç kurulumu gerekli",
"install-failed": "Kurulum başarısız oldu",
"install-missing": "Gerekli dosyalar eksik",
"install-success": "Başarıyla kuruldu",
"install-unsupported": "Sistem desteklenmiyor",
"set-failed": "Batarya eşiği ayarlanamadı",
"set-success-desc": "Batarya eşiği % {percent} olarak ayarlandı",
"title": "Batarya eşiği",
"uninstall-failed": "Kaldırma başarısız oldu",
"uninstall-setup": "Kaldırılıyor, kimlik doğrulama gerekli",
"uninstall-success": "Başarıyla kaldırıldı"
},
"bluetooth": {
"disabled": "Devre dışı",
"enabled": "Etkin"
@@ -1800,6 +2077,10 @@
"title-matugen": "Matugen şablon işleme başarısız oldu.",
"title-predefined": "Önceden tanımlanmış renk şeması işleme başarısız oldu."
},
"vpn": {
"connected": "'{name}' ile bağlantı kuruldu",
"disconnected": "'{name}' bağlantısı kesildi"
},
"wallpaper-colors": {
"disabled": "Duvar kağıdı renkleri devre dışı",
"enabled": "Duvar kağıdı renkleri etkin",
@@ -1833,6 +2114,7 @@
"input-muted": "Giriş sessizliğini değiştir",
"keep-awake": "Uyanık kal",
"keyboard-layout": "{layout} klavye düzeni",
"manage-vpn": "VPN bağlantılarını yönet",
"manage-wifi": "Wi-Fi yönet",
"microphone-volume-at": "Mikrofon sesi %{volume}\nAyarlar için sol tık. Sessize almak için sağ tık.\nSesi değiştirmek için kaydırın.",
"move-to-center-section": "Orta bölüme taşı",
@@ -1860,6 +2142,7 @@
"previous-month": "Önceki ay",
"refresh": "Yenile",
"refresh-devices": "Cihazları yenile",
"refresh-wallhaven": "Wallhaven sonuçlarını yenile",
"refresh-wallpaper-list": "Duvar kağıdı listesini yenile",
"remove-widget": "Widget kaldır",
"screen-recorder-not-installed": "Ekran kaydedici yüklü değil",
@@ -1889,8 +2172,51 @@
"description": "Seçilen duvar kağıdını tüm monitörlere aynı anda uygulayın.",
"label": "Tüm monitörler için uygula"
},
"categories": {
"anime": "Anime",
"general": "Genel",
"label": "Kategoriler",
"people": "İnsanlar"
},
"order": {
"asc": "Artan",
"desc": "Azalan",
"label": "Sıra"
},
"purity": {
"all": "Tümü",
"label": "İçerik filtresi",
"sfw": "SFW",
"sketchy": "Sketchy"
},
"resolution": {
"atleast": "En az",
"exact": "Tam",
"label": "Çözünürlük",
"mode": {
"label": "Mod"
}
},
"search": "Ara:",
"title": "Duvar kağıdı seçici"
"sorting": {
"date_added": "Eklenme tarihi",
"favorites": "Favoriler",
"label": "Sırala",
"random": "Rastgele",
"relevance": "Alaka",
"toplist": "En iyi liste",
"views": "Görüntülemeler"
},
"source": {
"label": "Kaynak",
"local": "Yerel",
"wallhaven": "Wallhaven"
},
"title": "Duvar kağıdı seçici",
"wallhaven-settings": {
"apply": "Uygula",
"title": "Wallhaven Ayarları"
}
},
"transitions": {
"disc": "Disk",
@@ -1900,7 +2226,13 @@
"stripes": "Çizgiler",
"wipe": "Silme"
},
"try-different-search": "Farklı bir arama sorgusu deneyin."
"try-different-search": "Farklı bir arama sorgusu deneyin.",
"unknown": "Bilinmiyor",
"wallhaven": {
"loading": "Duvar kağıtları yükleniyor...",
"no-results": "Duvar kağıdı bulunamadı. Farklı bir arama sorgusu deneyin.",
"page": "{current} / {total}"
}
},
"weather": {
"clear-sky": "Açık hava",
@@ -2009,6 +2341,7 @@
},
"wifi": {
"panel": {
"available-networks": "Kullanılabilir Ağlar",
"connect": "Bağlan",
"connected": "Bağlı",
"disabled": "Wi-Fi devre dışı",
@@ -2019,6 +2352,7 @@
"forget": "Unut",
"forget-network": "Bu ağı unut?",
"forgetting": "Unutuluyor...",
"known-networks": "Bilinen Ağlar",
"no-networks": "Ağ bulunamadı",
"password": "Şifre",
"saved": "Kaydedildi",

View File

@@ -123,21 +123,27 @@
"stream-description": "Введіть команду для безперервного запуску."
},
"dynamic-text": "Динамічний текст",
"hide-vertical": {
"description": "Якщо увімкнено, текст з виводу команди не відображатиметься, коли панель знаходиться у вертикальному розташуванні (ліворуч або праворуч).",
"label": "Приховати текст у вертикальній панелі"
},
"icon": {
"description": "Вибрати значок з бібліотеки.",
"label": "Значок"
},
"left-click": {
"description": "Команда для виконання при лівому кліку на кнопку.",
"label": "Лівий клік"
"label": "Лівий клік",
"update-text": "Оновити текст, що відображається, при натисканні лівою кнопкою миші"
},
"max-text-length-horizontal": {
"description": "Максимальна кількість символів для відображення в горизонтальній панелі (0 щоб приховати текст)",
"label": "Макс. довжина тексту (горизонтально)"
},
"max-text-length-vertical": {
"description": "Максимальна кількість символів для відображення в вертикальній панелі (0 щоб приховати текст)",
"label": "Макс. довжина тексту (вертикально)"
},
"middle-click": {
"description": "Команда для виконання при середньому кліку на кнопку.",
"label": "Середній клік"
"label": "Середній клік",
"update-text": "Оновити відображуваний текст при натисканні середньою кнопкою миші"
},
"parse-json": {
"description": "Розбирати виведення команди як JSON-об'єкт для динамічного встановлення тексту та значка.",
@@ -149,11 +155,29 @@
},
"right-click": {
"description": "Команда для виконання при правому кліку на кнопку.",
"label": "Правий клік"
"label": "Правий клік",
"update-text": "Оновити текст, що відображається, при натисканні правою кнопкою миші"
},
"text-stream": {
"description": "Потокові рядки з команди відображатимуться як текст на кнопці.",
"label": "Потік"
},
"wheel": {
"description": "Команда для виконання при використанні колеса прокрутки.\nВикористовуйте $delta для дельти колеса прокрутки в команді",
"label": "Колесо прокрутки",
"update-text": "Оновити відображуваний текст при прокрутці"
},
"wheel-down": {
"description": "Команда для виконання при прокрутці колеса вниз.",
"label": "Команда прокрутки колеса вниз"
},
"wheel-mode-separate": {
"description": "Увімкнути окремі команди для колеса прокрутки вгору та вниз",
"label": "Окремі команди колеса прокрутки"
},
"wheel-up": {
"description": "Команда для виконання при прокрутці колеса вгору.",
"label": "Команда прокрутки колеса вгору"
}
},
"dialog": {
@@ -199,6 +223,10 @@
"description": "Відображати обкладинку альбому для поточного треку.",
"label": "Показувати обкладинку альбому"
},
"show-artist-first": {
"description": "Відображати виконавець - назва замість назва - виконавець.",
"label": "Показувати спочатку виконавця"
},
"show-visualizer": {
"description": "Відображати аудіовізуалізатор під час відтворення музики.",
"label": "Показувати візуалізатор"
@@ -239,6 +267,9 @@
}
},
"system-monitor": {
"cpu-critical-threshold": {
"label": "Використання ЦП (Критичний)"
},
"cpu-temperature": {
"description": "Показувати показники температури ЦП, якщо доступно.",
"label": "Температура ЦП"
@@ -247,6 +278,25 @@
"description": "Відображати поточний відсоток використання ЦП.",
"label": "Використання ЦП"
},
"cpu-warning-threshold": {
"label": "Використання ЦП (Попередження)"
},
"disk-critical-threshold": {
"label": "Місце на диску (Критичний)"
},
"disk-path": {
"description": "Виберіть точку монтування диска для моніторингу.",
"label": "Шлях до диска"
},
"disk-warning-threshold": {
"label": "Місце на диску (Попередження)"
},
"mem-critical-threshold": {
"label": "Використання пам'яті (Критичний)"
},
"mem-warning-threshold": {
"label": "Використання пам'яті (Попередження)"
},
"memory-percentage": {
"description": "Показувати використання пам'яті у відсотках замість абсолютних значень.",
"label": "Пам'ять у відсотках"
@@ -262,6 +312,16 @@
"storage-usage": {
"description": "Показувати інформацію про використання дискового простору.",
"label": "Використання сховища"
},
"temp-critical-threshold": {
"label": "Температура ЦП (Критичний)"
},
"temp-warning-threshold": {
"label": "Температура ЦП (Попередження)"
},
"thresholds": {
"description": "Встановіть пороги для оповіщень системних метрик. Виділяє при перевищенні.",
"header": "Налаштування порогів"
}
},
"taskbar": {
@@ -283,13 +343,9 @@
}
},
"taskbar-grouped": {
"show-numbers-only-when-occupied": {
"description": "Показувати номери лише для робочих просторів з відкритими вікнами",
"label": "Показувати номера лише коли зайнято"
},
"show-workspace-numbers": {
"description": "Показувати номери робочих просторів у лівому верхньому куті групи завдань",
"label": "Показувати номери робочих просторів"
"show-labels-only-when-occupied": {
"description": "Показувати мітку робочого простору лише для робочих просторів, які мають відкриті вікна.",
"label": "Показувати мітку лише коли зайнято"
}
},
"tray": {
@@ -332,13 +388,6 @@
"health": "Здоров'я: {percent}%",
"idle": "Бездіяльність.",
"no-battery-detected": "Батарею не виявлено.",
"panel": {
"balanced": "Збалансований ({percent}%)",
"disabled": "Менеджер батареї вимкнено",
"full": "Повна ємність ({percent}%)",
"lifespan": "Подовжений термін служби ({percent}%)",
"title": "Поріг зарядки"
},
"plugged-in": "Підключено.",
"time-left": "Залишилось часу: {time}.",
"time-until-full": "Час до повного заряду: {time}."
@@ -367,9 +416,61 @@
"loading": "Завантаження погоди…"
}
},
"changelog": {
"error": {
"fetch-failed": "Не вдалося завантажити дані журналу змін. Будь ласка, спробуйте пізніше.",
"rate-limit": "Перевищено ліміт GitHub. Спробуйте ще раз за кілька хвилин."
},
"panel": {
"buttons": {
"discord": "Приєднатися до нашого Discord",
"dismiss": "Ок"
},
"empty": "Примітки до релізу ще недоступні.",
"highlight-title": "Основні зміни",
"section": {
"released": "Випущено {date}",
"version": "Версія {version}"
},
"subtitle": {
"fresh": "Дякуємо, що встановили Noctalia! Ось що містить цей білд.",
"updated": "Оновлено з {previousVersion}"
},
"title": "Що нового у {version}",
"version": {
"new-user": "Нове встановлення"
}
}
},
"clock": {
"tooltip": "Відкрити календар"
},
"context-menu": {
"activate-app": "Активувати {app}",
"clear-history": "Очистити історію",
"close-app": "Закрити {app}",
"connect-vpn": "Підключитися до {name}",
"cycle-visualizer": "Візуалізатор циклів",
"disable-bluetooth": "Вимкнути Bluetooth",
"disable-dnd": "Вимкнути режим \"Не турбувати\"",
"disable-wifi": "Вимкнути Wi-Fi",
"disconnect-vpn": "Відключити {name}",
"enable-bluetooth": "Увімкнути Bluetooth",
"enable-dnd": "Увімкнути режим \"Не турбувати\"",
"enable-wifi": "Увімкнути Wi-Fi",
"next": "Наступний",
"open-calendar": "Відкрити календар",
"open-display-settings": "Параметри дисплея",
"open-launcher": "Відкрити панель запуску",
"open-mixer": "Аудіомікшер",
"open-settings": "Відкрити налаштування",
"pause": "Пауза",
"play": "Грати",
"previous": "Попередній",
"random-wallpaper": "Випадкові шпалери",
"toggle-mute": "Увімкнути/вимкнути звук",
"widget-settings": "Налаштування віджета"
},
"dock": {
"menu": {
"close": "Закрити",
@@ -533,6 +634,7 @@
},
"workspace-labels": {
"index": "Індекс",
"index+name": "Індекс та назва",
"name": "Назва",
"none": "Немає"
}
@@ -548,6 +650,7 @@
"search": "Пошук...",
"search-icons": "напр., noctalia, niri, battery, cloud",
"search-launcher": "Пошук записів... або використовуйте > для команд",
"search-wallhaven": "Пошук у Wallhaven...",
"search-wallpapers": "Введіть для фільтрації шпалер...",
"select": "Вибрати",
"test": "Тест"
@@ -644,6 +747,7 @@
},
"session-menu": {
"action-in-seconds": "{action} через {seconds} секунд...",
"hibernate": "Гібернація",
"lock": "Заблокувати",
"lock-and-suspend": "Заблокувати та призупинити",
"logout": "Вийти",
@@ -688,6 +792,11 @@
"label": "Аудіопристрої"
}
},
"external-mixer": {
"description": "Введіть команду або шлях до програми для запуску при активації функції зовнішнього аудіомікшера.",
"label": "Команда зовнішнього аудіомікшера",
"placeholder": "pwvucontrol || pavucontrol"
},
"media": {
"excluded-player": {
"description": "Додайте ключові слова для плеєрів, які система має ігнорувати. Кожне ключове слово на новому рядку.",
@@ -762,6 +871,10 @@
"description": "Налаштуйте непрозорість фону панелі.",
"label": "Непрозорість фону"
},
"capsule-opacity": {
"description": "Встановити рівень непрозорості для фону віджетів, коли показано капсулу.",
"label": "Непрозорість капсули"
},
"density": {
"description": "Налаштуйте відступи панелі для компактного або просторого вигляду.",
"label": "Щільність панелі"
@@ -854,6 +967,41 @@
"label": "Темний режим"
}
},
"delete": {
"error": {
"description": "Не вдалося видалити {scheme}",
"title": "Помилка видалення"
},
"success": {
"description": "{scheme} успішно видалено",
"title": "Кольорову схему видалено"
}
},
"download": {
"button": "Завантажити ще",
"delete": "Видалити",
"download": "Завантажити",
"downloading": "Завантаження...",
"empty": "Немає доступних кольорових схем",
"error": {
"api-error": "Помилка API: {status}",
"description": "Не вдалося завантажити {scheme}",
"download-failed": "Помилка завантаження з кодом виходу: {code}",
"invalid-response": "Невірний формат відповіді API",
"no-files": "Файли для схеми не знайдено",
"parse-failed": "Помилка парсингу відповіді API: {error}",
"rate-limit": "Перевищено ліміт запитів GitHub API",
"title": "Помилка завантаження"
},
"fetching": "Отримання доступних кольорових схем...",
"installed": "Встановлено",
"refresh": "Оновити",
"success": {
"description": "{scheme} успішно завантажено",
"title": "Кольорову схему завантажено"
},
"title": "Завантажити кольорові схеми"
},
"predefined": {
"generate-templates": {
"description": "Генерувати шаблони Matugen (GTK, теми терміналу тощо) при використанні попередньо визначених колірних схем.",
@@ -876,7 +1024,7 @@
"programs": {
"code": {
"description": "Записати {filepath}. Тему Hyprluna потрібно встановити та активувати вручну.",
"description-missing": "Потрібна установка {app}"
"description-missing": "Клієнт Code не виявлено. Встановіть VSCode або VSCodium."
},
"description": "Оформлення окремих програм.",
"discord": {
@@ -896,6 +1044,10 @@
"description": "Записати {filepath}. Тему Comfy потрібно встановити та активувати вручну.",
"description-missing": "Потрібна установка {app}"
},
"telegram": {
"description": "Записати {filepath}.",
"description-missing": "Потрібна установка {app}"
},
"vicinae": {
"description": "Записати {filepath} та перезавантажити",
"description-missing": "Потрібна установка {app}"
@@ -1092,6 +1244,10 @@
"description": "Налаштуйте непрозорість фону дока.",
"label": "Непрозорість фону"
},
"border-radius": {
"description": "Налаштуйте радіус заокруглення країв док-панелі.",
"label": "Радіус заокруглення"
},
"colorize-icons": {
"description": "Застосувати кольори теми до значків програм у доці (тільки неактивні програми).",
"label": "Розфарбувати значки"
@@ -1243,6 +1399,10 @@
"description": "Налаштуйте непрозорість фону запускача.",
"label": "Непрозорість фону"
},
"clip-preview": {
"description": "Показувати попередній перегляд вмісту буфера обміну при використанні команди >clip.",
"label": "Увімкнути попередній перегляд буфера обміну"
},
"clipboard-history": {
"description": "Отримати доступ до раніше скопійованих елементів із запускача.",
"label": "Увімкнути історію буфера обміну"
@@ -1331,6 +1491,10 @@
"description": "Виберіть бажану одиницю температури.",
"label": "Погода"
},
"show-effects": {
"description": "Показує додаткові візуальні ефекти (наприклад, дощ, сніг або блискавку) на картці погоди.",
"label": "Відображати погодні ефекти"
},
"show-in-calendar": {
"description": "Показувати щоденний прогноз погоди безпосередньо в календарі.",
"label": "Відображати погоду в календарі"
@@ -1346,6 +1510,10 @@
"description": "Автоматично блокувати екран при призупиненні системи.",
"label": "Блокувати при призупиненні"
},
"show-hibernate": {
"description": "Показувати опцію 'сплячий режим' у діях живлення.",
"label": "Показувати сплячий режим"
},
"title": "Екран блокування"
},
"network": {
@@ -1437,6 +1605,10 @@
"description": "Відображати екранну індикацію поверх повноекранних вікон та інших шарів.",
"label": "Завжди зверху"
},
"background-opacity": {
"description": "Керує прозорістю фону OSD.",
"label": "Прозорість фону"
},
"description": "Налаштуйте екранні індикатори, такі як накладки гучності та яскравості.",
"duration": {
"auto-hide": {
@@ -1529,7 +1701,107 @@
}
}
},
"session-menu": {
"countdown-duration": {
"description": "Встановити, як довго триває таймер зворотного відліку перед виконанням дій живлення.",
"label": "Тривалість зворотного відліку"
},
"enable-countdown": {
"description": "Показувати таймер зворотного відліку перед виконанням дій живлення.",
"label": "Увімкнути таймер зворотного відліку"
},
"entries": {
"section": {
"description": "Налаштувати, які дії живлення відображаються в меню сеансу та в якому порядку.",
"label": "Дії живлення"
}
},
"general": {
"section": {
"description": "Налаштувати поведінку та зовнішній вигляд панелі меню сеансу.",
"label": "Загальні"
}
},
"position": {
"description": "Виберіть, де з'являється панель меню сеансу при відкритті.",
"label": "Позиція"
},
"show-header": {
"description": "Відображати заголовок та кнопку закриття в верхній частині меню сеансу.",
"label": "Показувати заголовок"
},
"title": "Меню сеансу"
},
"system-monitor": {
"cpu-critical-threshold": {
"label": "Критичний поріг"
},
"cpu-section": {
"label": "Використання ЦП"
},
"cpu-warning-threshold": {
"label": "Поріг попередження"
},
"critical-color": {
"label": "Критичний колір"
},
"custom-highlight-colors-title": {
"label": "Власні кольори підсвічування"
},
"disk-critical-threshold": {
"label": "Критичний поріг"
},
"disk-section": {
"label": "Використання диска"
},
"disk-warning-threshold": {
"label": "Поріг попередження"
},
"general": {
"section": {
"description": "Налаштуйте поведінку та зовнішній вигляд Системного монітора.",
"label": "Загальне"
}
},
"highlight-colors-section": {
"label": "Кольори підсвічування"
},
"mem-critical-threshold": {
"label": "Критичний поріг"
},
"mem-warning-threshold": {
"label": "Поріг попередження"
},
"memory-section": {
"label": "Використання пам'яті"
},
"temp-critical-threshold": {
"label": "Критичний поріг"
},
"temp-warning-threshold": {
"label": "Поріг попередження"
},
"temperature-section": {
"label": "Температура ЦП"
},
"thresholds-section": {
"description": "Встановіть пороги для системних метрик; значення вище будуть підсвічені.",
"label": "Пороги"
},
"title": "Системний монітор",
"use-custom-highlight-colors": {
"description": "Якщо вимкнено, використовуються кольори підсвічування за замовчуванням теми.",
"label": "Використовувати власні кольори підсвічування"
},
"warning-color": {
"label": "Колір попередження"
}
},
"user-interface": {
"allow-panels-without-bar": {
"description": "Якщо ввімкнено, панелі можуть відкриватися на будь-якому екрані. Якщо вимкнено, панелі відкриватимуться лише на екранах, де є панель завдань, що може зменшити використання пам'яті.",
"label": "Дозволити панелі на екранах без панелі завдань."
},
"animation-disable": {
"description": "Вимкнути всі анімації для швидшого, більш відгукового досвіду.",
"label": "Вимкнути анімації інтерфейсу"
@@ -1548,6 +1820,15 @@
"description": "Затемнювати робочий стіл, коли відкриті панелі або меню.",
"label": "Приглушити робочий стіл"
},
"dimmer-opacity": {
"description": "Встановити рівень непрозорості для затемнення робочого столу.",
"label": "Непрозорість приглушеного робочого столу",
"reset": "Скинути непрозорість приглушеного робочого столу"
},
"panel-background-opacity": {
"description": "Встановити прозорість фону для всіх панелей (Launcher, Центр керування, Налаштування тощо).",
"label": "Прозорість фону панелей"
},
"panels-attached-to-bar": {
"description": "Панелі фіксуються до штанги та країв екрана, створюючи бездоганний вигляд зі стильними перевернутими кутами.",
"label": "Прив'язувати панелі до країв"
@@ -1640,6 +1921,10 @@
"label": "Тека шпалер",
"tooltip": "Огляд теки шпалер"
},
"hide-wallpaper-filenames": {
"description": "Приховати назви файлів шпалер у селекторі.",
"label": "Приховати імена файлів"
},
"monitor-specific": {
"description": "Встановити різні теки шпалер для кожного монітора.",
"label": "Окремі теки для моніторів",
@@ -1655,6 +1940,11 @@
},
"select-folder": "Вибрати теку шпалер",
"select-monitor-folder": "Вибрати теку шпалер монітора",
"selector": {
"description": "Виберіть свої шпалери.",
"label": "Вибір шпалер",
"tooltip": "Відкрити вибір шпалер"
},
"selector-position": {
"description": "Виберіть, де відображатиметься панель вибору шпалер.",
"label": "Позиція"
@@ -1719,19 +2009,6 @@
"low": "Низький заряд батареї",
"low-desc": "Батарея на {percent}%. Будь ласка, підключіть зарядний пристрій."
},
"battery-manager": {
"initial-setup": "Потрібне початкове налаштування",
"install-failed": "Помилка встановлення",
"install-missing": "Необхідні файли відсутні",
"install-success": "Встановлено успішно",
"install-unsupported": "Система не підтримується",
"set-failed": "Не вдалося встановити поріг батареї",
"set-success-desc": "Поріг батареї встановлено на {percent}%",
"title": "Поріг батареї",
"uninstall-failed": "Помилка видалення",
"uninstall-setup": "Видалення, потрібна автентифікація",
"uninstall-success": "Видалено успішно"
},
"bluetooth": {
"disabled": "Вимкнено",
"enabled": "Увімкнено"
@@ -1800,6 +2077,10 @@
"title-matugen": "Помилка обробки шаблонів Matugen",
"title-predefined": "Помилка обробки попередньо визначеної колірної схеми"
},
"vpn": {
"connected": "Підключено до '{name}'",
"disconnected": "Відключено від '{name}'"
},
"wallpaper-colors": {
"disabled": "Кольори шпалер вимкнено",
"enabled": "Кольори шпалер увімкнено",
@@ -1833,6 +2114,7 @@
"input-muted": "Перемкнути вимкнення входу",
"keep-awake": "Не спати",
"keyboard-layout": "Розкладка клавіатури {layout}",
"manage-vpn": "Керувати підключеннями VPN",
"manage-wifi": "Керувати Wi-Fi",
"microphone-volume-at": "Гучність мікрофона на {volume}%\nЛівий клік для налаштувань. Правий клік для вимкнення звуку.\nПрокрутка для зміни гучності.",
"move-to-center-section": "Перемістити в центральну секцію",
@@ -1860,6 +2142,7 @@
"previous-month": "Попередній місяць",
"refresh": "Оновити",
"refresh-devices": "Оновити пристрої",
"refresh-wallhaven": "Оновити результати Wallhaven",
"refresh-wallpaper-list": "Оновити список шпалер",
"remove-widget": "Видалити віджет",
"screen-recorder-not-installed": "Запис екрана не встановлено",
@@ -1889,8 +2172,51 @@
"description": "Застосувати вибрані шпалери до всіх моніторів одночасно.",
"label": "Застосувати до всіх моніторів"
},
"categories": {
"anime": "Аніме",
"general": "Загальне",
"label": "Категорії",
"people": "Люди"
},
"order": {
"asc": "За зростанням",
"desc": "За спаданням",
"label": "Порядок"
},
"purity": {
"all": "Всі",
"label": "Фільтр контенту",
"sfw": "SFW",
"sketchy": "Sketchy"
},
"resolution": {
"atleast": "Принаймні",
"exact": "Точно",
"label": "Роздільна здатність",
"mode": {
"label": "Режим"
}
},
"search": "Пошук:",
"title": "Вибір шпалер"
"sorting": {
"date_added": "Дата додавання",
"favorites": "Обране",
"label": "Сортувати за",
"random": "Випадково",
"relevance": "Релевантність",
"toplist": "Топ-лист",
"views": "Перегляди"
},
"source": {
"label": "Джерело",
"local": "Локальний",
"wallhaven": "Wallhaven"
},
"title": "Вибір шпалер",
"wallhaven-settings": {
"apply": "Застосувати",
"title": "Налаштування Wallhaven"
}
},
"transitions": {
"disc": "Диск",
@@ -1900,7 +2226,13 @@
"stripes": "Смуги",
"wipe": "Змітання"
},
"try-different-search": "Спробуйте інший пошуковий запит."
"try-different-search": "Спробуйте інший пошуковий запит.",
"unknown": "Невідомо",
"wallhaven": {
"loading": "Завантаження шпалер...",
"no-results": "Шпалери не знайдено. Спробуйте інший пошуковий запит.",
"page": "{current} з {total}"
}
},
"weather": {
"clear-sky": "Ясне небо",
@@ -2009,6 +2341,7 @@
},
"wifi": {
"panel": {
"available-networks": "Доступні мережі",
"connect": "Підключити",
"connected": "Підключено",
"disabled": "Wi-Fi вимкнено",
@@ -2019,6 +2352,7 @@
"forget": "Забути",
"forget-network": "Забути цю мережу?",
"forgetting": "Забування...",
"known-networks": "Відомі мережі",
"no-networks": "Мереж не знайдено",
"password": "Пароль",
"saved": "Збережено",

View File

@@ -123,21 +123,27 @@
"stream-description": "输入一个要持续运行的命令。"
},
"dynamic-text": "动态文本",
"hide-vertical": {
"description": "如果启用,当栏处于垂直布局(左或右)时,将不显示命令输出的文本。",
"label": "在垂直栏中隐藏文本"
},
"icon": {
"description": "从库中选择图标。",
"label": "图标"
},
"left-click": {
"description": "左键点击按钮时执行的命令。",
"label": "左键点击"
"label": "左键点击",
"update-text": "左键单击时更新显示的文本"
},
"max-text-length-horizontal": {
"description": "在水平栏中显示的最大字符数0 为隐藏文本)",
"label": "最大文本长度(水平)"
},
"max-text-length-vertical": {
"description": "在垂直栏中显示的最大字符数0 为隐藏文本)",
"label": "最大文本长度(垂直)"
},
"middle-click": {
"description": "中键点击按钮时执行的命令。",
"label": "中键点击"
"label": "中键点击",
"update-text": "鼠标中键点击时更新显示的文本"
},
"parse-json": {
"description": "将命令输出解析为 JSON 对象,以动态设置文本和图标。",
@@ -149,11 +155,29 @@
},
"right-click": {
"description": "右键点击按钮时执行的命令。",
"label": "右键点击"
"label": "右键点击",
"update-text": "右键单击时更新显示的文本"
},
"text-stream": {
"description": "来自命令的流式输出行将作为文本显示在按钮上。",
"label": "流"
},
"wheel": {
"description": "使用滚轮时执行的命令。\n在命令中使用 $delta 表示滚轮增量",
"label": "滚轮",
"update-text": "滚轮滚动时更新显示的文本"
},
"wheel-down": {
"description": "滚轮向下滚动时执行的命令。",
"label": "滚轮向下命令"
},
"wheel-mode-separate": {
"description": "为滚轮向上和向下启用单独的命令",
"label": "分开滚轮命令"
},
"wheel-up": {
"description": "滚轮向上滚动时执行的命令。",
"label": "滚轮向上命令"
}
},
"dialog": {
@@ -199,6 +223,10 @@
"description": "显示当前播放曲目的专辑封面。",
"label": "显示专辑封面"
},
"show-artist-first": {
"description": "显示艺术家 - 标题,而不是标题 - 艺术家。",
"label": "先显示艺术家"
},
"show-visualizer": {
"description": "播放音乐时显示音频可视化器。",
"label": "显示可视化器"
@@ -221,10 +249,10 @@
"notification-history": {
"hide-badge-when-zero": {
"description": "当没有未读通知时隐藏通知徽章。",
"label": "时隐藏徽章"
"label": "时隐藏徽章"
},
"show-unread-badge": {
"description": "显示示未读通知数量的徽章。",
"description": "显示一个用于展示未读通知数量的徽章。",
"label": "显示未读徽章"
}
},
@@ -239,6 +267,9 @@
}
},
"system-monitor": {
"cpu-critical-threshold": {
"label": "CPU 使用率(严重)"
},
"cpu-temperature": {
"description": "如果可用显示CPU温度读数。",
"label": "CPU温度"
@@ -247,6 +278,25 @@
"description": "显示当前CPU使用百分比。",
"label": "CPU使用率"
},
"cpu-warning-threshold": {
"label": "CPU 使用率(警告)"
},
"disk-critical-threshold": {
"label": "存储空间(严重)"
},
"disk-path": {
"description": "选择要监控的磁盘挂载点。",
"label": "磁盘路径"
},
"disk-warning-threshold": {
"label": "存储空间(警告)"
},
"mem-critical-threshold": {
"label": "内存使用率(严重)"
},
"mem-warning-threshold": {
"label": "内存使用率(警告)"
},
"memory-percentage": {
"description": "以百分比而不是绝对值显示内存使用情况。",
"label": "内存百分比"
@@ -262,6 +312,16 @@
"storage-usage": {
"description": "显示磁盘空间使用信息。",
"label": "存储使用率"
},
"temp-critical-threshold": {
"label": "CPU 温度(严重)"
},
"temp-warning-threshold": {
"label": "CPU 温度(警告)"
},
"thresholds": {
"description": "配置系统指标提示的阈值,超出阈值时将以高亮色进行提示。",
"header": "阈值设置"
}
},
"taskbar": {
@@ -283,13 +343,9 @@
}
},
"taskbar-grouped": {
"show-numbers-only-when-occupied": {
"description": "只有打开窗口的工作区显示编号",
"label": "仅在有窗口时显示编号"
},
"show-workspace-numbers": {
"description": "在任务组左上角显示工作区编号",
"label": "显示工作区编号"
"show-labels-only-when-occupied": {
"description": "只显示有打开窗口的工作区标签。",
"label": "仅在被占用时显示标签"
}
},
"tray": {
@@ -332,13 +388,6 @@
"health": "健康状况:{percent}%",
"idle": "空闲。",
"no-battery-detected": "未检测到电池。",
"panel": {
"balanced": "平衡 ({percent}%)",
"disabled": "电池管理器已禁用",
"full": "完全容量 ({percent}%)",
"lifespan": "延长寿命 ({percent}%)",
"title": "充电阈值"
},
"plugged-in": "已接通电源。",
"time-left": "剩余时间:{time}。",
"time-until-full": "充满所需时间:{time}。"
@@ -367,9 +416,61 @@
"loading": "正在加载天气…"
}
},
"changelog": {
"error": {
"fetch-failed": "无法加载更新日志数据,请稍后再试。",
"rate-limit": "已达到 GitHub 速率限制,请稍后再试。"
},
"panel": {
"buttons": {
"discord": "加入我们的 Discord",
"dismiss": "确定"
},
"empty": "暂时没有可用的发行说明。",
"highlight-title": "重点更新",
"section": {
"released": "{date} 发布",
"version": "版本 {version}"
},
"subtitle": {
"fresh": "感谢安装 Noctalia以下是本次构建包含的内容。",
"updated": "已从 {previousVersion} 更新"
},
"title": "{version} 有哪些更新",
"version": {
"new-user": "全新安装"
}
}
},
"clock": {
"tooltip": "打开日历"
},
"context-menu": {
"activate-app": "激活 {app}",
"clear-history": "清除历史记录",
"close-app": "关闭 {app}",
"connect-vpn": "连接 {name}",
"cycle-visualizer": "切换可视化器样式",
"disable-bluetooth": "禁用蓝牙",
"disable-dnd": "关闭勿扰模式",
"disable-wifi": "禁用Wi-Fi",
"disconnect-vpn": "断开 {name}",
"enable-bluetooth": "启用蓝牙",
"enable-dnd": "启用勿扰模式",
"enable-wifi": "启用 Wi-Fi",
"next": "下一首",
"open-calendar": "打开日历",
"open-display-settings": "显示设置",
"open-launcher": "打开启动器",
"open-mixer": "音频混音器",
"open-settings": "打开设置",
"pause": "暂停",
"play": "播放",
"previous": "上一首",
"random-wallpaper": "随机壁纸",
"toggle-mute": "切换静音",
"widget-settings": "小部件设置"
},
"dock": {
"menu": {
"close": "关闭",
@@ -533,6 +634,7 @@
},
"workspace-labels": {
"index": "索引",
"index+name": "索引和名称",
"name": "名称",
"none": "无"
}
@@ -548,6 +650,7 @@
"search": "搜索...",
"search-icons": "例如noctalia, niri, battery, cloud",
"search-launcher": "搜索条目...或使用 > 执行命令",
"search-wallhaven": "搜索 Wallhaven...",
"search-wallpapers": "输入以筛选壁纸...",
"select": "选择",
"test": "测试"
@@ -644,6 +747,7 @@
},
"session-menu": {
"action-in-seconds": "在 {seconds} 秒后将{action}...",
"hibernate": "休眠",
"lock": "锁定",
"lock-and-suspend": "锁定并挂起",
"logout": "注销",
@@ -688,6 +792,11 @@
"label": "音频设备"
}
},
"external-mixer": {
"description": "输入激活外部音频混音器功能时要启动的命令或应用程序路径。",
"label": "外部音频混音器命令",
"placeholder": "pwvucontrol || pavucontrol"
},
"media": {
"excluded-player": {
"description": "添加您希望系统忽略的播放器关键词。每个关键词应单独占一行。",
@@ -762,6 +871,10 @@
"description": "调整状态栏的背景不透明度。",
"label": "背景不透明度"
},
"capsule-opacity": {
"description": "设置显示胶囊时小部件背景的不透明度。",
"label": "胶囊不透明度"
},
"density": {
"description": "调整状态栏的内边距以获得紧凑或宽松的外观。",
"label": "状态栏密度"
@@ -854,6 +967,41 @@
"label": "深色模式"
}
},
"delete": {
"error": {
"description": "删除 {scheme} 失败",
"title": "删除失败"
},
"success": {
"description": "成功删除 {scheme}",
"title": "配色方案已删除"
}
},
"download": {
"button": "下载更多",
"delete": "删除",
"download": "下载",
"downloading": "正在下载...",
"empty": "没有可用的配色方案",
"error": {
"api-error": "API 错误: {status}",
"description": "下载 {scheme} 失败",
"download-failed": "下载失败,退出代码: {code}",
"invalid-response": "无效的 API 响应格式",
"no-files": "未找到方案的文件",
"parse-failed": "解析 API 响应失败: {error}",
"rate-limit": "GitHub API 速率限制已超出",
"title": "下载失败"
},
"fetching": "正在获取可用的配色方案...",
"installed": "已安装",
"refresh": "刷新",
"success": {
"description": "成功下载 {scheme}",
"title": "配色方案已下载"
},
"title": "下载配色方案"
},
"predefined": {
"generate-templates": {
"description": "使用预定义配色方案时生成 Matugen 模板GTK、终端主题等。",
@@ -876,7 +1024,7 @@
"programs": {
"code": {
"description": "写入 {filepath}。Hyprluna 主题需要手动安装和激活。",
"description-missing": "需要安装 {app}"
"description-missing": "未检测到 Code 客户端。请安装 VSCode 或 VSCodium。"
},
"description": "应用程序特定主题。",
"discord": {
@@ -896,6 +1044,10 @@
"description": "写入 {filepath}。Comfy 主题需要手动安装和激活。",
"description-missing": "需要安装 {app}"
},
"telegram": {
"description": "写入 {filepath}。",
"description-missing": "需要安装 {app}"
},
"vicinae": {
"description": "写入 {filepath} 并重新加载",
"description-missing": "需要安装 {app}"
@@ -1092,6 +1244,10 @@
"description": "调整 Dock 的背景不透明度。",
"label": "背景不透明度"
},
"border-radius": {
"description": "调整程序坞的边框半径。",
"label": "边框半径"
},
"colorize-icons": {
"description": "将主题颜色应用到 Dock 应用图标(仅限非聚焦应用)。",
"label": "着色图标"
@@ -1243,6 +1399,10 @@
"description": "调整启动器的背景不透明度。",
"label": "背景不透明度"
},
"clip-preview": {
"description": "在使用 >clip 命令时显示剪贴板内容的预览。",
"label": "启用剪贴板预览"
},
"clipboard-history": {
"description": "从启动器访问之前复制的项目。",
"label": "启用剪贴板历史记录"
@@ -1331,6 +1491,10 @@
"description": "选择您喜欢的温度单位。",
"label": "天气"
},
"show-effects": {
"description": "在天气卡片上显示额外的视觉效果(如雨、雪或闪电)。",
"label": "显示天气效果"
},
"show-in-calendar": {
"description": "直接在您的日历视图中显示每日天气预报。",
"label": "在日历中显示天气"
@@ -1346,6 +1510,10 @@
"description": "系统挂起时自动锁定屏幕。",
"label": "挂起时锁定"
},
"show-hibernate": {
"description": "在电源操作中显示'休眠'选项。",
"label": "显示休眠"
},
"title": "锁屏"
},
"network": {
@@ -1437,6 +1605,10 @@
"description": "在全屏窗口和其他图层之上显示OSD。",
"label": "始终置顶"
},
"background-opacity": {
"description": "调整OSD背景的透明度。",
"label": "背景透明度"
},
"description": "配置屏幕叠加指示器,例如音量和亮度。",
"duration": {
"auto-hide": {
@@ -1529,7 +1701,107 @@
}
}
},
"session-menu": {
"countdown-duration": {
"description": "设置倒计时计时器在执行电源操作之前持续多长时间。",
"label": "倒计时持续时间"
},
"enable-countdown": {
"description": "在执行电源操作之前显示倒计时计时器。",
"label": "启用倒计时计时器"
},
"entries": {
"section": {
"description": "自定义会话菜单中显示哪些电源操作及其顺序。",
"label": "电源操作"
}
},
"general": {
"section": {
"description": "配置会话菜单面板的行为和外观。",
"label": "常规"
}
},
"position": {
"description": "选择会话菜单面板打开时出现的位置。",
"label": "位置"
},
"show-header": {
"description": "在会话菜单顶部显示标题和关闭按钮。",
"label": "显示标题"
},
"title": "会话菜单"
},
"system-monitor": {
"cpu-critical-threshold": {
"label": "严重阈值"
},
"cpu-section": {
"label": "CPU 使用率"
},
"cpu-warning-threshold": {
"label": "警告阈值"
},
"critical-color": {
"label": "严重颜色"
},
"custom-highlight-colors-title": {
"label": "自定义高亮颜色"
},
"disk-critical-threshold": {
"label": "严重阈值"
},
"disk-section": {
"label": "磁盘使用率"
},
"disk-warning-threshold": {
"label": "警告阈值"
},
"general": {
"section": {
"description": "配置系统监视器的行为和外观。",
"label": "通用"
}
},
"highlight-colors-section": {
"label": "高亮颜色"
},
"mem-critical-threshold": {
"label": "严重阈值"
},
"mem-warning-threshold": {
"label": "警告阈值"
},
"memory-section": {
"label": "内存使用率"
},
"temp-critical-threshold": {
"label": "严重阈值"
},
"temp-warning-threshold": {
"label": "警告阈值"
},
"temperature-section": {
"label": "CPU 温度"
},
"thresholds-section": {
"description": "设置各项系统测量指标的阈值,超过该值将以高亮色进行提示。",
"label": "阈值"
},
"title": "系统监视器",
"use-custom-highlight-colors": {
"description": "关闭时将使用主题默认高亮颜色。",
"label": "使用自定义高亮颜色"
},
"warning-color": {
"label": "警告颜色"
}
},
"user-interface": {
"allow-panels-without-bar": {
"description": "启用后,面板可以在任何屏幕上打开。禁用后,面板将仅在有栏的屏幕上打开,这可以减少内存使用。",
"label": "允许在没有栏的屏幕上显示面板"
},
"animation-disable": {
"description": "禁用所有动画以获得更快、更流畅的体验。",
"label": "禁用 UI 动画"
@@ -1548,6 +1820,15 @@
"description": "当面板或菜单打开时,桌面变暗。",
"label": "昏暗的桌面"
},
"dimmer-opacity": {
"description": "设置桌面变暗时的不透明度。",
"label": "变暗桌面不透明度",
"reset": "重置变暗桌面不透明度"
},
"panel-background-opacity": {
"description": "设置所有面板的背景不透明度(启动器、控制中心、设置等)。",
"label": "面板背景不透明度"
},
"panels-attached-to-bar": {
"description": "面板锁定到边栏和屏幕边缘,形成无缝外观,并具有时尚的倒角。",
"label": "将面板对齐到边缘"
@@ -1640,6 +1921,10 @@
"label": "壁纸文件夹",
"tooltip": "浏览壁纸文件夹"
},
"hide-wallpaper-filenames": {
"description": "在选择器中隐藏壁纸文件名。",
"label": "隐藏文件名。"
},
"monitor-specific": {
"description": "为每个显示器设置不同的壁纸文件夹。",
"label": "显示器特定目录",
@@ -1655,6 +1940,11 @@
},
"select-folder": "选择壁纸文件夹",
"select-monitor-folder": "选择显示器壁纸文件夹",
"selector": {
"description": "选择你的壁纸。",
"label": "壁纸选择器",
"tooltip": "打开壁纸选择器"
},
"selector-position": {
"description": "选择壁纸选择面板的显示位置。",
"label": "选择器位置"
@@ -1719,19 +2009,6 @@
"low": "电量低",
"low-desc": "电量为 {percent}%。请连接充电器。"
},
"battery-manager": {
"initial-setup": "需要初始设置",
"install-failed": "安装失败",
"install-missing": "缺少必要文件",
"install-success": "安装成功",
"install-unsupported": "系统不受支持",
"set-failed": "设置电池阈值失败",
"set-success-desc": "电池阈值已设置为 {percent}%",
"title": "电池阈值",
"uninstall-failed": "卸载失败",
"uninstall-setup": "正在卸载,需要身份验证",
"uninstall-success": "卸载成功"
},
"bluetooth": {
"disabled": "已禁用",
"enabled": "已启用"
@@ -1800,6 +2077,10 @@
"title-matugen": "Matugen模板处理失败",
"title-predefined": "预定义的颜色方案处理失败"
},
"vpn": {
"connected": "已连接到“{name}”",
"disconnected": "已断开与“{name}”的连接"
},
"wallpaper-colors": {
"disabled": "壁纸颜色已禁用",
"enabled": "壁纸颜色已启用",
@@ -1833,6 +2114,7 @@
"input-muted": "静音输入设备",
"keep-awake": "保持唤醒",
"keyboard-layout": "{layout} 键盘布局",
"manage-vpn": "管理 VPN 连接",
"manage-wifi": "管理 Wi-Fi",
"microphone-volume-at": "麦克风音量 {volume}%\n左键点击进入设置。右键点击切换静音。\n滚动滚轮调节音量。",
"move-to-center-section": "移动到中央部分",
@@ -1860,6 +2142,7 @@
"previous-month": "上个月",
"refresh": "刷新",
"refresh-devices": "刷新设备",
"refresh-wallhaven": "刷新 Wallhaven 结果",
"refresh-wallpaper-list": "刷新壁纸列表",
"remove-widget": "移除小部件",
"screen-recorder-not-installed": "屏幕录制器未安装",
@@ -1889,8 +2172,51 @@
"description": "一次性将选定的壁纸应用到所有显示器。",
"label": "应用到所有显示器"
},
"categories": {
"anime": "动漫",
"general": "通用",
"label": "分类",
"people": "人物"
},
"order": {
"asc": "升序",
"desc": "降序",
"label": "顺序"
},
"purity": {
"all": "全部",
"label": "内容过滤器",
"sfw": "SFW",
"sketchy": "Sketchy"
},
"resolution": {
"atleast": "至少",
"exact": "精确",
"label": "分辨率",
"mode": {
"label": "模式"
}
},
"search": "搜索:",
"title": "壁纸选择器"
"sorting": {
"date_added": "添加日期",
"favorites": "收藏",
"label": "排序方式",
"random": "随机",
"relevance": "相关性",
"toplist": "排行榜",
"views": "浏览量"
},
"source": {
"label": "来源",
"local": "本地",
"wallhaven": "Wallhaven"
},
"title": "壁纸选择器",
"wallhaven-settings": {
"apply": "应用",
"title": "Wallhaven 设置"
}
},
"transitions": {
"disc": "圆盘",
@@ -1900,7 +2226,13 @@
"stripes": "条纹",
"wipe": "擦除"
},
"try-different-search": "尝试不同的搜索查询。"
"try-different-search": "尝试不同的搜索查询。",
"unknown": "未知",
"wallhaven": {
"loading": "正在加载壁纸...",
"no-results": "未找到壁纸。请尝试不同的搜索查询。",
"page": "{current} / {total}"
}
},
"weather": {
"clear-sky": "晴朗",
@@ -2009,6 +2341,7 @@
},
"wifi": {
"panel": {
"available-networks": "可用网络",
"connect": "连接",
"connected": "已连接",
"disabled": "Wi-Fi 已禁用",
@@ -2019,6 +2352,7 @@
"forget": "忘记",
"forget-network": "忘记此网络?",
"forgetting": "正在忘记...",
"known-networks": "已知网络",
"no-networks": "未找到网络",
"password": "密码",
"saved": "已保存",

View File

@@ -1,5 +1,5 @@
{
"settingsVersion": 21,
"settingsVersion": 23,
"setupCompleted": false,
"bar": {
"position": "top",
@@ -7,6 +7,7 @@
"monitors": [],
"density": "default",
"showCapsule": true,
"capsuleOpacity": 1,
"floating": false,
"marginVertical": 0.25,
"marginHorizontal": 0.25,
@@ -59,7 +60,7 @@
},
"general": {
"avatarImage": "",
"dimDesktop": true,
"dimmerOpacity": 0.6,
"showScreenCorners": false,
"forceBlackScreenCorners": false,
"scaleRatio": 1,
@@ -73,7 +74,8 @@
"shadowDirection": "bottom_right",
"shadowOffsetX": 2,
"shadowOffsetY": 3,
"language": ""
"language": "",
"allowPanelsOnScreenWithoutBar": true
},
"ui": {
"fontDefault": "Roboto",
@@ -81,12 +83,14 @@
"fontDefaultScale": 1,
"fontFixedScale": 1,
"tooltipsEnabled": true,
"panelBackgroundOpacity": 1,
"panelsAttachedToBar": true,
"settingsPanelAttachToBar": false
},
"location": {
"name": "Tokyo",
"weatherEnabled": true,
"weatherShowEffects": true,
"useFahrenheit": false,
"use12hourFormat": false,
"showWeekNumberInCalendar": false,
@@ -122,12 +126,22 @@
"transitionType": "random",
"transitionEdgeSmoothness": 0.05,
"monitors": [],
"panelPosition": "follow_bar"
"panelPosition": "follow_bar",
"hideWallpaperFilenames": false,
"useWallhaven": false,
"wallhavenQuery": "",
"wallhavenSorting": "relevance",
"wallhavenOrder": "desc",
"wallhavenCategories": "111",
"wallhavenPurity": "100",
"wallhavenResolutionMode": "atleast",
"wallhavenResolutionWidth": "",
"wallhavenResolutionHeight": ""
},
"appLauncher": {
"enableClipboardHistory": false,
"enableClipPreview": true,
"position": "center",
"backgroundOpacity": 1,
"pinnedExecs": [],
"useApp2Unit": false,
"sortByMostUsed": true,
@@ -190,10 +204,24 @@
}
]
},
"systemMonitor": {
"cpuWarningThreshold": 80,
"cpuCriticalThreshold": 90,
"tempWarningThreshold": 80,
"tempCriticalThreshold": 90,
"memWarningThreshold": 80,
"memCriticalThreshold": 90,
"diskWarningThreshold": 80,
"diskCriticalThreshold": 90,
"useCustomColors": false,
"warningColor": "",
"criticalColor": ""
},
"dock": {
"enabled": true,
"displayMode": "always_visible",
"backgroundOpacity": 1,
"radiusRatio": 0.1,
"floatingRatio": 1,
"size": 1,
"onlySameOutput": true,
@@ -204,6 +232,38 @@
"network": {
"wifiEnabled": true
},
"sessionMenu": {
"enableCountdown": true,
"countdownDuration": 10000,
"position": "center",
"showHeader": true,
"powerOptions": [
{
"action": "lock",
"enabled": true
},
{
"action": "suspend",
"enabled": true
},
{
"action": "hibernate",
"enabled": true
},
{
"action": "reboot",
"enabled": true
},
{
"action": "logout",
"enabled": true
},
{
"action": "shutdown",
"enabled": true
}
]
},
"notifications": {
"enabled": true,
"monitors": [],
@@ -213,14 +273,16 @@
"respectExpireTimeout": false,
"lowUrgencyDuration": 3,
"normalUrgencyDuration": 8,
"criticalUrgencyDuration": 15
"criticalUrgencyDuration": 15,
"enableKeyboardLayoutToast": true
},
"osd": {
"enabled": true,
"location": "top_right",
"monitors": [],
"autoHideMs": 2000,
"overlayLayer": true
"overlayLayer": true,
"backgroundOpacity": 1
},
"audio": {
"volumeStep": 5,
@@ -229,7 +291,8 @@
"visualizerType": "linear",
"visualizerQuality": "high",
"mprisBlacklist": [],
"preferredPlayer": ""
"preferredPlayer": "",
"externalMixer": "pwvucontrol || pavucontrol"
},
"brightness": {
"brightnessStep": 5,
@@ -262,13 +325,7 @@
"walker": false,
"code": false,
"spicetify": false,
"enableUserTemplates": false,
"discord_vesktop": false,
"discord_webcord": false,
"discord_armcord": false,
"discord_equibop": false,
"discord_lightcord": false,
"discord_dorion": false
"enableUserTemplates": false
},
"nightLight": {
"enabled": false,
@@ -279,12 +336,12 @@
"manualSunrise": "06:30",
"manualSunset": "18:30"
},
"changelog": {
"lastSeenVersion": ""
},
"hooks": {
"enabled": false,
"wallpaperChange": "",
"darkModeChange": ""
},
"battery": {
"chargingMode": 0
}
}

View File

@@ -1,5 +0,0 @@
# Battery charge control paths
# Add one path per line
/sys/class/power_supply/BAT0/charge_control_end_threshold
/sys/class/power_supply/BAT1/charge_control_end_threshold
/sys/class/power_supply/BAT0/charge_stop_threshold

View File

@@ -1,178 +0,0 @@
#!/usr/bin/env bash
set -e
SUCCESS=0
FAILURE=1
MISSING_FILES=2
UNSUPPORTED=3
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
print_error() {
echo -e "$1" >&2
}
print_info() {
echo -e "$1"
}
if [ "$EUID" -ne 0 ]; then
print_error "This script must be run with root privileges"
exit $FAILURE
fi
print_info "Installing Battery Manager..."
echo
if [ -n "$PKEXEC_UID" ]; then
ACTUAL_USER=$(getent passwd "$PKEXEC_UID" | cut -d: -f1)
else
ACTUAL_USER="$SUDO_USER"
fi
if [ -z "$ACTUAL_USER" ]; then
print_error "Could not determine the actual user"
exit $FAILURE
fi
print_info "Installing for user: $ACTUAL_USER"
echo
print_info "Checking required files..."
MISSING_FILES_LIST=()
if [ ! -f "$SCRIPT_DIR/battery-paths.conf" ]; then
MISSING_FILES_LIST+=("battery-paths.conf")
fi
if [ ! -f "$SCRIPT_DIR/templates/battery-manager.sh" ]; then
MISSING_FILES_LIST+=("battery-manager.sh")
fi
if [ ! -f "$SCRIPT_DIR/templates/battery-manager.policy" ]; then
MISSING_FILES_LIST+=("battery-manager.policy")
fi
if [ ! -f "$SCRIPT_DIR/templates/battery-manager.rules" ]; then
MISSING_FILES_LIST+=("battery-manager.rules")
fi
if [ ${#MISSING_FILES_LIST[@]} -gt 0 ]; then
print_error "Missing required files in $SCRIPT_DIR:"
for file in "${MISSING_FILES_LIST[@]}"; do
print_error " - $file"
done
exit $MISSING_FILES
fi
print_info "All required files found"
print_info "Checking battery paths..."
BATTERY_PATHS=($(grep -v '^#' "$SCRIPT_DIR/battery-paths.conf" | grep -v '^$'))
EXISTING_PATHS=()
for path in "${BATTERY_PATHS[@]}"; do
if [ -f "$path" ]; then
EXISTING_PATHS+=("$path")
fi
done
if [ ${#EXISTING_PATHS[@]} -eq 0 ]; then
print_error "None of the battery control files exist. Please check your hardware compatibility."
exit $UNSUPPORTED
fi
print_info "Found ${#EXISTING_PATHS[@]} compatible battery control file(s)"
print_info "Installing battery manager script..."
BATTERY_MANAGER_SCRIPT="/usr/bin/battery-manager-$ACTUAL_USER"
SHEBANG=$(head -n 1 "$SCRIPT_DIR/templates/battery-manager.sh")
echo "$SHEBANG" > "$BATTERY_MANAGER_SCRIPT"
echo "" >> "$BATTERY_MANAGER_SCRIPT"
echo "BATTERY_PATHS=(" >> "$BATTERY_MANAGER_SCRIPT"
for path in "${EXISTING_PATHS[@]}"; do
echo " \"$path\"" >> "$BATTERY_MANAGER_SCRIPT"
done
echo ")" >> "$BATTERY_MANAGER_SCRIPT"
echo "" >> "$BATTERY_MANAGER_SCRIPT"
tail -n +2 "$SCRIPT_DIR/templates/battery-manager.sh" >> "$BATTERY_MANAGER_SCRIPT"
chmod +x "$BATTERY_MANAGER_SCRIPT"
print_info "Battery manager script created from $SCRIPT_DIR/templates/battery-manager.sh with compatible paths"
print_info "Script installed at $BATTERY_MANAGER_SCRIPT"
print_info "Creating log file..."
touch /var/log/battery-manager.log
chmod 644 /var/log/battery-manager.log
print_info "Log file created at /var/log/battery-manager.log"
print_info "Creating polkit policy..."
POLICY_FILE="/usr/share/polkit-1/actions/com.local.battery-manager.$ACTUAL_USER.policy"
sed -e "s/ACTUAL_USER_PLACEHOLDER/$ACTUAL_USER/g" \
"$SCRIPT_DIR/templates/battery-manager.policy" > "$POLICY_FILE"
print_info "Polkit policy copied from $SCRIPT_DIR/templates/battery-manager.policy"
print_info "Polkit policy created at $POLICY_FILE"
print_info "Creating polkit rule..."
RULES_FILE="/etc/polkit-1/rules.d/50-battery-manager-$ACTUAL_USER.rules"
sed "s/ACTUAL_USER_PLACEHOLDER/$ACTUAL_USER/g" \
"$SCRIPT_DIR/templates/battery-manager.rules" > "$RULES_FILE"
print_info "Polkit rule copied from $SCRIPT_DIR/templates/battery-manager.rules"
print_info "Polkit rule created for user: $ACTUAL_USER at $RULES_FILE"
print_info "Restarting polkit..."
if systemctl restart polkit 2>/dev/null; then
print_info "Polkit restarted"
else
print_info "Could not restart polkit automatically, you may need to reboot"
fi
print_info "Creating uninstall script..."
UNINSTALL_SCRIPT="$SCRIPT_DIR/uninstall-battery-manager.sh"
if [ -f "$SCRIPT_DIR/templates/uninstall-template" ]; then
SHEBANG=$(head -n 1 "$SCRIPT_DIR/templates/uninstall-template")
else
SHEBANG="#!/usr/bin/env bash"
fi
echo "$SHEBANG" > "$UNINSTALL_SCRIPT"
echo "" >> "$UNINSTALL_SCRIPT"
cat >> "$UNINSTALL_SCRIPT" << EOF
SCRIPT_PATH="$BATTERY_MANAGER_SCRIPT"
POLICY_PATH="$POLICY_FILE"
RULE_PATH="$RULES_FILE"
LOG_PATH="/var/log/battery-manager.log"
EOF
if [ -f "$SCRIPT_DIR/templates/uninstall-template" ]; then
tail -n +2 "$SCRIPT_DIR/templates/uninstall-template" >> "$UNINSTALL_SCRIPT"
fi
chmod 744 "$UNINSTALL_SCRIPT"
chown root:root "$UNINSTALL_SCRIPT"
print_info "Uninstall script created at $UNINSTALL_SCRIPT"
echo
print_info "Installation complete!"
echo
print_info "Log file: /var/log/battery-manager.log"
print_info "User-specific script: $BATTERY_MANAGER_SCRIPT"
print_info "User-specific policy: $POLICY_FILE"
print_info "User-specific rules: $RULES_FILE"
print_info "User-specific uninstall script: $UNINSTALL_SCRIPT"

View File

@@ -1,86 +0,0 @@
#!/usr/bin/env bash
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SUPPRESS_NOTIFICATIONS=false
print_error() {
echo -e "$1" >&2
}
print_info() {
echo -e "$1"
}
send_notification() {
local urgency="$1"
local title="$2"
local message="$3"
if [ "$SUPPRESS_NOTIFICATIONS" = false ] && command -v notify-send >/dev/null 2>&1; then
notify-send -u "$urgency" "$title" "$message"
fi
}
while [[ $# -gt 0 ]]; do
case "$1" in
-q|--quiet)
SUPPRESS_NOTIFICATIONS=true
shift
;;
-*)
print_error "Unknown option: $1"
echo "Usage: $0 [OPTIONS] <number>" >&2
echo "Options:" >&2
echo " -q, --quiet Suppress notifications" >&2
exit 1
;;
*)
BATTERY_LEVEL="$1"
shift
;;
esac
done
if [ -z "$BATTERY_LEVEL" ]; then
print_error "Battery level not specified"
echo "Usage: $0 [OPTIONS] <number>" >&2
echo "Options:" >&2
echo " -q, --quiet Suppress notifications" >&2
exit 1
fi
if ! [[ "$BATTERY_LEVEL" =~ ^[0-9]+$ ]] || [ "$BATTERY_LEVEL" -gt 100 ] || [ "$BATTERY_LEVEL" -lt 0 ]; then
print_error "Battery level must be a number between 0-100"
echo "Usage: $0 [OPTIONS] <number>" >&2
echo "Options:" >&2
echo " -q, --quiet Suppress notifications" >&2
exit 1
fi
CURRENT_USER="$USER"
if [ -z "$CURRENT_USER" ]; then
CURRENT_USER="$(whoami)"
fi
BATTERY_MANAGER_PATH="/usr/bin/battery-manager-$CURRENT_USER"
SUCCESS=0
MISSING_FILES=2
if [ ! -f "$BATTERY_MANAGER_PATH" ]; then
print_error "Battery manager components missing for user $CURRENT_USER!"
exit $MISSING_FILES
fi
print_info "Setting battery charging threshold to $BATTERY_LEVEL% for user $CURRENT_USER..."
if pkexec "$BATTERY_MANAGER_PATH" "$BATTERY_LEVEL"; then
print_info "Battery charging threshold set to $BATTERY_LEVEL%"
send_notification "normal" "Battery Threshold Updated" \
"Battery charging threshold has been set to $BATTERY_LEVEL%"
else
print_error "Failed to set battery charging threshold"
send_notification "critical" "Battery Threshold Failed" \
"Failed to set battery charging threshold to $BATTERY_LEVEL%"
exit 1
fi

View File

@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>
<action id="com.local.battery-manager.ACTUAL_USER_PLACEHOLDER">
<description>Manage battery settings for ACTUAL_USER_PLACEHOLDER</description>
<message>Authentication is required to manage battery settings</message>
<defaults>
<allow_any>no</allow_any>
<allow_inactive>no</allow_inactive>
<allow_active>yes</allow_active>
</defaults>
<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/battery-manager-ACTUAL_USER_PLACEHOLDER</annotate>
<annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
</action>
</policyconfig>

View File

@@ -1,14 +0,0 @@
polkit.addRule(function(action, subject) {
if (action.id == "com.local.battery-manager.ACTUAL_USER_PLACEHOLDER" &&
subject.user == "ACTUAL_USER_PLACEHOLDER") {
// Check if the parent process is quickshell or set-battery-threshold
var pid = subject.pid;
var ppid = polkit.spawn(["ps", "-o", "ppid=", "-p", pid.toString()]).trim();
var parentCmd = polkit.spawn(["ps", "-o", "comm=", "-p", ppid]).trim();
if (parentCmd.indexOf("quickshell") !== -1 || parentCmd.indexOf("set-battery-treshold") !== -1) {
return polkit.Result.YES;
}
}
});

View File

@@ -1,53 +0,0 @@
#!/usr/bin/env bash
LOG_FILE="/var/log/battery-manager.log"
log_message() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE"
}
if [ -z "$1" ]; then
echo "Error: No battery level provided" >&2
log_message "ERROR: No battery level provided"
exit 1
fi
BATTERY_LEVEL="$1"
if ! [[ "$BATTERY_LEVEL" =~ ^[0-9]+$ ]] || [ "$BATTERY_LEVEL" -gt 100 ] || [ "$BATTERY_LEVEL" -lt 0 ]; then
echo "Error: Invalid battery level. Must be 0-100" >&2
log_message "ERROR: Invalid battery level: $BATTERY_LEVEL"
exit 1
fi
SUCCESS_COUNT=0
FAIL_COUNT=0
for path in "${BATTERY_PATHS[@]}"; do
[[ -z "$path" || "$path" =~ ^# ]] && continue
if [ -f "$path" ] && [ -w "$path" ]; then
if echo "$BATTERY_LEVEL" > "$path" 2>/dev/null; then
echo "Updated: $path"
log_message "SUCCESS: Updated $path to $BATTERY_LEVEL"
((SUCCESS_COUNT++))
else
echo "Failed to write: $path" >&2
log_message "ERROR: Failed to write to $path"
((FAIL_COUNT++))
fi
else
echo "Skipped (not found/writable): $path"
log_message "INFO: Skipped $path (not found or not writable)"
fi
done
log_message "SUMMARY: Updated $SUCCESS_COUNT file(s), failed $FAIL_COUNT, battery level: $BATTERY_LEVEL"
if [ "$SUCCESS_COUNT" -eq 0 ]; then
echo "Error: No battery files were updated" >&2
exit 1
fi
echo "Successfully updated $SUCCESS_COUNT battery file(s)"
exit 0

View File

@@ -1,30 +0,0 @@
#!/usr/bin/env bash
if [ "$(id -u)" -ne 0 ]; then
echo "This script must be run as root"
exit 1
fi
echo "Uninstalling battery manager..."
if [ -f "$SCRIPT_PATH" ]; then
rm -f "$SCRIPT_PATH"
echo "Removed script from $SCRIPT_PATH"
fi
if [ -f "$POLICY_PATH" ]; then
rm -f "$POLICY_PATH"
echo "Removed policy file from $POLICY_PATH"
fi
if [ -f "$RULE_PATH" ]; then
rm -f "$RULE_PATH"
echo "Removed udev rule from $RULE_PATH"
fi
if [ -f "$LOG_PATH" ]; then
rm -f "$LOG_PATH"
echo "Removed log file from $LOG_PATH"
fi
echo "Uninstallation completed successfully"

View File

@@ -2,33 +2,25 @@
set -euo pipefail
# QML Formatter Script
# Uses: https://github.com/jesperhh/qmlfmt
# Install: AUR package "qmlfmt-git" (requires qt6-5compat)
command -v qmlfmt &>/dev/null || { echo "qmlfmt not found" >&2; exit 1; }
# Find qmlformat binary
if [ ! -x "/usr/lib/qt6/bin/qmlformat" ]; then
echo "No 'qmlformat' found in /usr/lib/qt6/bin." >&2
echo "Install it via 'qt6-tools' or 'qt6-declarative-tools' to proceed." >&2
exit 1
fi
format_file() {
/usr/lib/qt6/bin/qmlformat -w 2 -W 360 -S --semicolon-rule always -i "$1" || { echo "Failed: $1" >&2; return 1; }
}
format_file() { qmlfmt -e -b 360 -t 2 -i 2 -w "$1" || { echo "Failed: $1" >&2; return 1; }; }
export -f format_file
# Find all .qml files
mapfile -t all_files < <(find "${1:-.}" -name "*.qml" -type f)
[ ${#all_files[@]} -eq 0 ] && { echo "No QML files found"; exit 0; }
echo "Scanning ${#all_files[@]} files for array destructuring..."
safe_files=()
for file in "${all_files[@]}"; do
# Checks for a comma inside brackets followed by an equals sign aka "array destructuring"
# as this ES6 syntax is not supported by qmlfmt and will result in breakage.
if grep -qE '\[.*,.*\]\s*=' "$file"; then
echo "-> Skipping (Array destructuring detected): $file" >&2
else
safe_files+=("$file")
fi
done
[ ${#safe_files[@]} -eq 0 ] && { echo "No safe files to format after filtering."; exit 0; }
echo "Formatting ${#safe_files[@]} files..."
printf '%s\0' "${safe_files[@]}" | \
echo "Formatting ${#all_files[@]} files..."
printf '%s\0' "${all_files[@]}" | \
xargs -0 -P "${QMLFMT_JOBS:-$(nproc)}" -I {} bash -c 'format_file "$@"' _ {} \
&& echo "Done" || { echo "Errors occurred" >&2; exit 1; }
&& echo "Done" || { echo "Errors occurred" >&2; exit 1; }

View File

@@ -15,22 +15,59 @@ fi
# Create the destination directory if it doesn't exist.
mkdir -p "$DEST_DIR"
# Loop through all files in the source directory ending with .frag
for shader in "$SOURCE_DIR"*.frag; do
# Check if a file was found (to handle the case of no .frag files).
if [ -f "$shader" ]; then
# Get the base name of the file (e.g., wp_fade).
shader_name=$(basename "$shader" .frag)
# Array to hold the list of full paths to the shaders.
SHADERS_TO_COMPILE=()
# Construct the output path for the compiled shader.
output_path="$DEST_DIR$shader_name.frag.qsb"
# Specific files mode.
if [ "$#" -gt 0 ]; then
# Construct and run the qsb command.
qsb --qt6 -o "$output_path" "$shader"
# Loop through all command-line arguments ($@ holds all arguments).
for SINGLE_FILE in "$@"; do
# Print a message to confirm compilation.
echo "Compiled $shader to $output_path"
# Construct the full path to the source file.
FULL_PATH="$SOURCE_DIR$SINGLE_FILE"
# Check if the specified file exists in the SOURCE_DIR.
if [ ! -f "$FULL_PATH" ]; then
echo "Error: Specified file '$SINGLE_FILE' not found in $SOURCE_DIR! Skipping."
continue
fi
# Add the valid file to the compilation list.
SHADERS_TO_COMPILE+=("$FULL_PATH")
done
# Check if any valid files were found to compile.
if [ ${#SHADERS_TO_COMPILE[@]} -eq 0 ]; then
echo "No valid shaders found to compile."
exit 1
fi
# Whole directory mode (no argument provided).
else
# Use find to generate the list of files and assign it to the array.
while IFS= read -r shader_path; do
if [ -n "$shader_path" ]; then
SHADERS_TO_COMPILE+=("$shader_path")
fi
done < <(find "$SOURCE_DIR" -maxdepth 1 -name "*.frag")
fi
# Loop through the list of shaders to compile.
for shader in "${SHADERS_TO_COMPILE[@]}"; do
# Get the base name of the file (e.g., wp_fade).
shader_name=$(basename "$shader" .frag)
# Construct the output path for the compiled shader.
output_path="$DEST_DIR$shader_name.frag.qsb"
# Construct and run the qsb command.
/usr/lib/qt6/bin/qsb --qt6 -o "$output_path" "$shader"
# Print a message to confirm compilation.
echo "Compiled $(basename "$shader") to $output_path"
done
echo "Shader compilation complete."
echo "Shader compilation complete."

View File

@@ -5,111 +5,80 @@ import Quickshell
import Quickshell.Io
import qs.Commons
/*
Noctalia is not strictly a Material Design project, it supports both some predefined
color schemes and dynamic color generation from the wallpaper (using Matugen).
Noctalia is not strictly a Material Design project, it supports both some predefined
color schemes and dynamic color generation from the wallpaper (using Matugen).
We ultimately decided to use a restricted set of colors that follows the
Material Design 3 naming convention.
We ultimately decided to use a restricted set of colors that follows the
Material Design 3 naming convention.
NOTE: All color names are prefixed with 'm' (e.g., mPrimary) to prevent QML from
misinterpreting them as signals (e.g., the 'onPrimary' property name).
NOTE: All color names are prefixed with 'm' (e.g., mPrimary) to prevent QML from
misinterpreting them as signals (e.g., the 'onPrimary' property name).
*/
Singleton {
id: root
// --- Key Colors: These are the main accent colors that define your app's style
property color mPrimary: customColors.mPrimary
property color mOnPrimary: customColors.mOnPrimary
property color mSecondary: customColors.mSecondary
property color mOnSecondary: customColors.mOnSecondary
property color mTertiary: customColors.mTertiary
property color mOnTertiary: customColors.mOnTertiary
readonly property color mPrimary: customColorsData.mPrimary
readonly property color mOnPrimary: customColorsData.mOnPrimary
readonly property color mSecondary: customColorsData.mSecondary
readonly property color mOnSecondary: customColorsData.mOnSecondary
readonly property color mTertiary: customColorsData.mTertiary
readonly property color mOnTertiary: customColorsData.mOnTertiary
// --- Utility Colors: These colors serve specific, universal purposes like indicating errors
property color mError: customColors.mError
property color mOnError: customColors.mOnError
readonly property color mError: customColorsData.mError
readonly property color mOnError: customColorsData.mOnError
// --- Surface and Variant Colors: These provide additional options for surfaces and their contents, creating visual hierarchy
property color mSurface: customColors.mSurface
property color mOnSurface: customColors.mOnSurface
readonly property color mSurface: customColorsData.mSurface
readonly property color mOnSurface: customColorsData.mOnSurface
property color mSurfaceVariant: customColors.mSurfaceVariant
property color mOnSurfaceVariant: customColors.mOnSurfaceVariant
readonly property color mSurfaceVariant: customColorsData.mSurfaceVariant
readonly property color mOnSurfaceVariant: customColorsData.mOnSurfaceVariant
property color mOutline: customColors.mOutline
property color mShadow: customColors.mShadow
readonly property color mOutline: customColorsData.mOutline
readonly property color mShadow: customColorsData.mShadow
property color mHover: customColors.mHover
property color mOnHover: customColors.mOnHover
readonly property color mHover: customColorsData.mHover
readonly property color mOnHover: customColorsData.mOnHover
// --- Absolute Colors
property color transparent: "transparent"
property color black: "#000000"
property color white: "#ffffff"
readonly property color transparent: "transparent"
readonly property color black: "#000000"
readonly property color white: "#ffffff"
// --------------------------------
// Default colors: RosePine
QtObject {
id: defaultColors
property color mPrimary: "#c7a1d8"
property color mOnPrimary: "#1a151f"
readonly property color mPrimary: "#c7a1d8"
readonly property color mOnPrimary: "#1a151f"
property color mSecondary: "#a984c4"
property color mOnSecondary: "#f3edf7"
readonly property color mSecondary: "#a984c4"
readonly property color mOnSecondary: "#f3edf7"
property color mTertiary: "#e0b7c9"
property color mOnTertiary: "#20161f"
readonly property color mTertiary: "#e0b7c9"
readonly property color mOnTertiary: "#20161f"
property color mError: "#e9899d"
property color mOnError: "#1e1418"
readonly property color mError: "#e9899d"
readonly property color mOnError: "#1e1418"
property color mSurface: "#1c1822"
property color mOnSurface: "#e9e4f0"
readonly property color mSurface: "#1c1822"
readonly property color mOnSurface: "#e9e4f0"
property color mSurfaceVariant: "#262130"
property color mOnSurfaceVariant: "#a79ab0"
readonly property color mSurfaceVariant: "#262130"
readonly property color mOnSurfaceVariant: "#a79ab0"
property color mOutline: "#342c42"
property color mShadow: "#120f18"
readonly property color mOutline: "#342c42"
readonly property color mShadow: "#120f18"
property color mHover: "#e0b7c9"
property color mOnHover: "#20161f"
readonly property color mHover: "#e0b7c9"
readonly property color mOnHover: "#20161f"
}
// ----------------------------------------------------------------
// Custom colors loaded from colors.json
// These can be generated by matugen or simply come from a well know color scheme (Dracula, Gruvbox, Nord, ...)
QtObject {
id: customColors
property color mPrimary: customColorsData.mPrimary
property color mOnPrimary: customColorsData.mOnPrimary
property color mSecondary: customColorsData.mSecondary
property color mOnSecondary: customColorsData.mOnSecondary
property color mTertiary: customColorsData.mTertiary
property color mOnTertiary: customColorsData.mOnTertiary
property color mError: customColorsData.mError
property color mOnError: customColorsData.mOnError
property color mSurface: customColorsData.mSurface
property color mOnSurface: customColorsData.mOnSurface
property color mSurfaceVariant: customColorsData.mSurfaceVariant
property color mOnSurfaceVariant: customColorsData.mOnSurfaceVariant
property color mOutline: customColorsData.mOutline
property color mShadow: customColorsData.mShadow
property color mHover: customColorsData.mHover
property color mOnHover: customColorsData.mOnHover
}
// FileView to load custom colors data from colors.json
FileView {
id: customColorsFile
@@ -117,24 +86,25 @@ Singleton {
printErrors: false
watchChanges: true
onFileChanged: {
Logger.i("Color", "Reloading colors from disk")
reload()
Logger.i("Color", "Reloading colors from disk");
reload();
}
onAdapterUpdated: {
Logger.i("Color", "Writing colors to disk")
writeAdapter()
Logger.i("Color", "Writing colors to disk");
writeAdapter();
}
// Trigger initial load when path changes from empty to actual path
onPathChanged: {
if (path !== undefined) {
reload()
reload();
}
}
onLoadFailed: function (error) {
if (error.toString().includes("No such file") || error === 2) {
// Error code 2 = ENOENT (No such file or directory)
if (error === 2 || error.toString().includes("No such file")) {
// File doesn't exist, create it with default values
writeAdapter()
writeAdapter();
}
}
JsonAdapter {

View File

@@ -12,6 +12,7 @@ Singleton {
property string langCode: ""
property var locale: Qt.locale()
property string systemDetectedLangCode: ""
property string fullLocaleCode: "" // Preserves regional locale variants
property var availableLanguages: []
property var translations: ({})
property var fallbackTranslations: ({})
@@ -32,13 +33,13 @@ Singleton {
onExited: function (exitCode, exitStatus) {
if (exitCode === 0) {
var output = stdoutCollector.text || ""
parseDirectoryListing(output)
var output = stdoutCollector.text || "";
parseDirectoryListing(output);
} else {
Logger.e("I18n", `Failed to scan translation directory`)
Logger.e("I18n", `Failed to scan translation directory`);
// Fallback to default languages
availableLanguages = ["en"]
detectLanguage()
availableLanguages = ["en"];
detectLanguage();
}
}
}
@@ -50,21 +51,21 @@ Singleton {
onFileChanged: reload()
onLoaded: {
try {
var data = JSON.parse(text())
root.translations = data
Logger.i("I18n", `Loaded translations for "${root.langCode}"`)
Logger.d("I18n", `Available root keys: ${Object.keys(data).join(", ")}`)
var data = JSON.parse(text());
root.translations = data;
Logger.i("I18n", `Loaded translations for "${root.langCode}"`);
Logger.d("I18n", `Available root keys: ${Object.keys(data).join(", ")}`);
root.isLoaded = true
root.translationsLoaded()
root.isLoaded = true;
root.translationsLoaded();
} catch (e) {
Logger.e("I18n", `Failed to parse translation file: ${e}`)
setLanguage("en")
Logger.e("I18n", `Failed to parse translation file: ${e}`);
setLanguage("en");
}
}
onLoadFailed: function (error) {
setLanguage("en")
Logger.e("I18n", `Failed to load translation file: ${error}`)
setLanguage("en");
Logger.e("I18n", `Failed to load translation file: ${error}`);
}
}
@@ -75,152 +76,161 @@ Singleton {
onFileChanged: reload()
onLoaded: {
try {
var data = JSON.parse(text())
root.fallbackTranslations = data
Logger.d("I18n", `Loaded english fallback translations`)
var data = JSON.parse(text());
root.fallbackTranslations = data;
Logger.d("I18n", `Loaded english fallback translations`);
} catch (e) {
Logger.e("I18n", `Failed to parse fallback translation file: ${e}`)
Logger.e("I18n", `Failed to parse fallback translation file: ${e}`);
}
}
onLoadFailed: function (error) {
Logger.e("I18n", `Failed to load fallback translation file: ${error}`)
Logger.e("I18n", `Failed to load fallback translation file: ${error}`);
}
}
Component.onCompleted: {
Logger.i("I18n", "Service started")
scanAvailableLanguages()
Logger.i("I18n", "Service started");
scanAvailableLanguages();
}
// -------------------------------------------
function scanAvailableLanguages() {
Logger.d("I18n", "Scanning for available translation files...")
directoryScanner.running = true
Logger.d("I18n", "Scanning for available translation files...");
directoryScanner.running = true;
}
// -------------------------------------------
function parseDirectoryListing(output) {
var languages = []
var languages = [];
try {
if (!output || output.trim() === "") {
Logger.w("I18n", "Empty directory listing output")
availableLanguages = ["en"]
detectLanguage()
return
Logger.w("I18n", "Empty directory listing output");
availableLanguages = ["en"];
detectLanguage();
return;
}
const entries = output.trim().split('\n')
const entries = output.trim().split('\n');
for (var i = 0; i < entries.length; i++) {
const entry = entries[i].trim()
const entry = entries[i].trim();
if (entry && entry.endsWith('.json')) {
// Extract language code from filename (e.g., "en.json" -> "en")
const langCode = entry.substring(0, entry.lastIndexOf('.json'))
const langCode = entry.substring(0, entry.lastIndexOf('.json'));
if (langCode.length >= 2 && langCode.length <= 5) {
// Basic validation for language codes
languages.push(langCode)
languages.push(langCode);
}
}
}
// Sort languages alphabetically, but ensure "en" comes first if available
languages.sort()
const enIndex = languages.indexOf("en")
languages.sort();
const enIndex = languages.indexOf("en");
if (enIndex > 0) {
languages.splice(enIndex, 1)
languages.unshift("en")
languages.splice(enIndex, 1);
languages.unshift("en");
}
if (languages.length === 0) {
Logger.w("I18n", "No translation files found, using fallback")
languages = ["en"] // Fallback
Logger.w("I18n", "No translation files found, using fallback");
languages = ["en"]; // Fallback
}
availableLanguages = languages
Logger.d("I18n", `Found ${languages.length} available languages: ${languages.join(', ')}`)
availableLanguages = languages;
Logger.d("I18n", `Found ${languages.length} available languages: ${languages.join(', ')}`);
// Detect language after scanning
detectLanguage()
detectLanguage();
} catch (e) {
Logger.e("I18n", `Failed to parse directory listing: ${e}`)
Logger.e("I18n", `Failed to parse directory listing: ${e}`);
// Fallback to default languages
availableLanguages = ["en"]
detectLanguage()
availableLanguages = ["en"];
detectLanguage();
}
}
// -------------------------------------------
function detectLanguage() {
Logger.d("I18n", `detectLanguage() called. Available languages: [${availableLanguages.join(', ')}]`)
Logger.d("I18n", `detectLanguage() called. Available languages: [${availableLanguages.join(', ')}]`);
if (availableLanguages.length === 0) {
Logger.w("I18n", "No available languages found")
return
Logger.w("I18n", "No available languages found");
return;
}
var detectedLang = ""
var detectedLang = "";
var detectedFullLocale = "";
// First, determine the system's preferred language
for (var i = 0; i < Qt.locale().uiLanguages.length; i++) {
const fullUserLang = Qt.locale().uiLanguages[i]
const fullUserLang = Qt.locale().uiLanguages[i];
if (availableLanguages.includes(fullUserLang)) {
detectedLang = fullUserLang
break
detectedLang = fullUserLang;
detectedFullLocale = fullUserLang;
break;
}
const shortUserLang = fullUserLang.substring(0, 2)
const shortUserLang = fullUserLang.substring(0, 2);
if (availableLanguages.includes(shortUserLang)) {
detectedLang = shortUserLang
break
detectedLang = shortUserLang;
detectedFullLocale = fullUserLang;
break;
}
}
// If no system language is found among available languages, fallback
if (detectedLang === "") {
detectedLang = availableLanguages.includes("en") ? "en" : availableLanguages[0]
detectedLang = availableLanguages.includes("en") ? "en" : availableLanguages[0];
detectedFullLocale = detectedLang;
}
root.systemDetectedLangCode = detectedLang
Logger.d("I18n", `System detected language: "${root.systemDetectedLangCode}"`)
root.systemDetectedLangCode = detectedLang;
root.fullLocaleCode = detectedFullLocale;
Logger.d("I18n", `System detected language: "${root.systemDetectedLangCode}" (full locale: "${root.fullLocaleCode}")`);
// Now, apply the language: user-defined, then system-detected
if (Settings.data.general.language !== "" && availableLanguages.includes(Settings.data.general.language)) {
Logger.d("I18n", `User-defined language found: "${Settings.data.general.language}"`)
setLanguage(Settings.data.general.language)
Logger.d("I18n", `User-defined language found: "${Settings.data.general.language}"`);
setLanguage(Settings.data.general.language);
} else {
Logger.d("I18n", `No user-defined language, using system detected: "${root.systemDetectedLangCode}"`)
setLanguage(root.systemDetectedLangCode)
Logger.d("I18n", `No user-defined language, using system detected: "${root.systemDetectedLangCode}"`);
setLanguage(root.systemDetectedLangCode, root.fullLocaleCode);
}
}
// -------------------------------------------
function setLanguage(newLangCode) {
function setLanguage(newLangCode, fullLocale) {
if (typeof fullLocale === "undefined") {
fullLocale = newLangCode;
}
if (newLangCode !== langCode && availableLanguages.includes(newLangCode)) {
langCode = newLangCode
locale = Qt.locale(langCode)
Logger.i("I18n", `Language set to "${langCode}"`)
languageChanged(langCode)
loadTranslations()
langCode = newLangCode;
fullLocaleCode = fullLocale;
locale = Qt.locale(fullLocale);
Logger.i("I18n", `Language set to "${langCode}" with locale "${fullLocale}"`);
languageChanged(langCode);
loadTranslations();
} else if (!availableLanguages.includes(newLangCode)) {
Logger.w("I18n", `Language "${newLangCode}" is not available`)
Logger.w("I18n", `Language "${newLangCode}" is not available`);
}
}
// -------------------------------------------
function loadTranslations() {
if (langCode === "")
return
const filePath = `file://${Quickshell.shellDir}/Assets/Translations/${langCode}.json`
fileView.path = filePath
isLoaded = false
Logger.d("I18n", `Loading translations: ${langCode}`)
return;
const filePath = `file://${Quickshell.shellDir}/Assets/Translations/${langCode}.json`;
fileView.path = filePath;
isLoaded = false;
Logger.d("I18n", `Loading translations: ${langCode}`);
// Only load fallback translations if we are not using english and english is available
if (langCode !== "en" && availableLanguages.includes("en")) {
fallbackFileView.path = `file://${Quickshell.shellDir}/Assets/Translations/en.json`
fallbackFileView.path = `file://${Quickshell.shellDir}/Assets/Translations/en.json`;
}
}
@@ -228,133 +238,133 @@ Singleton {
// Check if a translation exists
function hasTranslation(key) {
if (!isLoaded)
return false
return false;
const keys = key.split(".")
var value = translations
const keys = key.split(".");
var value = translations;
for (var i = 0; i < keys.length; i++) {
if (value && typeof value === "object" && keys[i] in value) {
value = value[keys[i]]
value = value[keys[i]];
} else {
return false
return false;
}
}
return typeof value === "string"
return typeof value === "string";
}
// -------------------------------------------
// Get all translation keys (useful for debugging)
function getAllKeys(obj, prefix) {
if (typeof obj === "undefined")
obj = translations
obj = translations;
if (typeof prefix === "undefined")
prefix = ""
prefix = "";
var keys = []
var keys = [];
for (var key in (obj || {})) {
const value = obj[key]
const fullKey = prefix ? `${prefix}.${key}` : key
const value = obj[key];
const fullKey = prefix ? `${prefix}.${key}` : key;
if (typeof value === "object" && value !== null) {
keys = keys.concat(getAllKeys(value, fullKey))
keys = keys.concat(getAllKeys(value, fullKey));
} else if (typeof value === "string") {
keys.push(fullKey)
keys.push(fullKey);
}
}
return keys
return keys;
}
// -------------------------------------------
// Reload translations (useful for development)
function reload() {
Logger.d("I18n", "Reloading translations")
loadTranslations()
Logger.d("I18n", "Reloading translations");
loadTranslations();
}
// -------------------------------------------
// Main translation function
function tr(key, interpolations) {
if (typeof interpolations === "undefined")
interpolations = {}
interpolations = {};
if (!isLoaded) {
//Logger.d("I18n", "Translations not loaded yet")
return key
return key;
}
// Navigate nested keys (e.g., "menu.file.open")
const keys = key.split(".")
const keys = key.split(".");
// Look-up translation in the active language
var value = translations
var notFound = false
var value = translations;
var notFound = false;
for (var i = 0; i < keys.length; i++) {
if (value && typeof value === "object" && keys[i] in value) {
value = value[keys[i]]
value = value[keys[i]];
} else {
Logger.d("I18n", `Translation key "${key}" not found at part "${keys[i]}"`)
Logger.d("I18n", `Available keys: ${Object.keys(value || {}).join(", ")}`)
notFound = true
break
Logger.d("I18n", `Translation key "${key}" not found at part "${keys[i]}"`);
Logger.d("I18n", `Available keys: ${Object.keys(value || {}).join(", ")}`);
notFound = true;
break;
}
}
// Fallback to english if not found
if (notFound && availableLanguages.includes("en") && langCode !== "en") {
value = fallbackTranslations
value = fallbackTranslations;
for (var i = 0; i < keys.length; i++) {
if (value && typeof value === "object" && keys[i] in value) {
value = value[keys[i]]
value = value[keys[i]];
} else {
// Indicate this key does not even exists in the english fallback
return `## ${key} ##`
return `## ${key} ##`;
}
}
// Make untranslated string easy to spot
value = `<i>${value}</i>`
value = `<i>${value}</i>`;
} else if (notFound) {
// No fallback available
return `## ${key} ##`
return `## ${key} ##`;
}
if (typeof value !== "string") {
Logger.d("I18n", `Translation key "${key}" is not a string`)
return key
Logger.d("I18n", `Translation key "${key}" is not a string`);
return key;
}
// Handle interpolations (e.g., "Hello {name}!")
var result = value
var result = value;
for (var placeholder in interpolations) {
const regex = new RegExp(`\\{${placeholder}\\}`, 'g')
result = result.replace(regex, interpolations[placeholder])
const regex = new RegExp(`\\{${placeholder}\\}`, 'g');
result = result.replace(regex, interpolations[placeholder]);
}
return result
return result;
}
// -------------------------------------------
// Plural translation function
function trp(key, count, defaultSingular, defaultPlural, interpolations) {
if (typeof defaultSingular === "undefined")
defaultSingular = ""
defaultSingular = "";
if (typeof defaultPlural === "undefined")
defaultPlural = ""
defaultPlural = "";
if (typeof interpolations === "undefined")
interpolations = {}
interpolations = {};
const pluralKey = count === 1 ? key : `${key}_plural`
const defaultValue = count === 1 ? defaultSingular : defaultPlural
const pluralKey = count === 1 ? key : `${key}_plural`;
const defaultValue = count === 1 ? defaultSingular : defaultPlural;
// Merge interpolations with count (QML doesn't support spread operator)
var finalInterpolations = {
"count": count
}
};
for (var prop in interpolations) {
finalInterpolations[prop] = interpolations[prop]
finalInterpolations[prop] = interpolations[prop];
}
return tr(pluralKey, finalInterpolations)
return tr(pluralKey, finalInterpolations);
}
}

View File

@@ -26,15 +26,15 @@ Singleton {
signal fontReloaded
Component.onCompleted: {
Logger.i("Icons", "Service started")
loadFontWithCacheBusting()
Logger.i("Icons", "Service started");
loadFontWithCacheBusting();
}
Connections {
target: Quickshell
function onReloadCompleted() {
Logger.d("Icons", "Quickshell reload completed - forcing font reload")
reloadFont()
Logger.d("Icons", "Quickshell reload completed - forcing font reload");
reloadFont();
}
}
@@ -42,20 +42,20 @@ Singleton {
function get(iconName) {
// Check in aliases first
if (aliases[iconName] !== undefined) {
iconName = aliases[iconName]
iconName = aliases[iconName];
}
// Find the appropriate codepoint
return icons[iconName]
return icons[iconName];
}
function loadFontWithCacheBusting() {
Logger.d("Icons", "Loading font with cache busting")
Logger.d("Icons", "Loading font with cache busting");
// Destroy old loader first
if (currentFontLoader) {
currentFontLoader.destroy()
currentFontLoader = null
currentFontLoader.destroy();
currentFontLoader = null;
}
// Create new loader with cache-busting URL
@@ -64,22 +64,22 @@ Singleton {
FontLoader {
source: "${cacheBustingPath}"
}
`, root, "dynamicFontLoader_" + fontVersion)
`, root, "dynamicFontLoader_" + fontVersion);
// Connect to the new loader's status changes
currentFontLoader.statusChanged.connect(function () {
if (currentFontLoader.status === FontLoader.Ready) {
Logger.d("Icons", "Font loaded successfully:", currentFontLoader.name, "(version " + fontVersion + ")")
fontReloaded()
Logger.d("Icons", "Font loaded successfully:", currentFontLoader.name, "(version " + fontVersion + ")");
fontReloaded();
} else if (currentFontLoader.status === FontLoader.Error) {
Logger.e("Icons", "Font failed to load (version " + fontVersion + ")")
Logger.e("Icons", "Font failed to load (version " + fontVersion + ")");
}
})
});
}
function reloadFont() {
Logger.d("Icons", "Forcing font reload...")
fontVersion++
loadFontWithCacheBusting()
Logger.d("Icons", "Forcing font reload...");
fontVersion++;
loadFontWithCacheBusting();
}
}

View File

@@ -42,6 +42,7 @@ Singleton {
"powersaver": "leaf",
"storage": "database",
"ethernet": "sitemap",
"ethernet-off": "sitemap-off",
"keyboard": "keyboard",
"shutdown": "power",
"lock": "lock",
@@ -49,6 +50,7 @@ Singleton {
"logout": "logout",
"reboot": "refresh",
"suspend": "player-pause",
"hibernate": "zzz",
"nightlight-on": "moon",
"nightlight-off": "moon-off",
"nightlight-forced": "moon-stars",
@@ -122,6 +124,8 @@ Singleton {
"settings-osd": "picture-in-picture",
"settings-about": "info-square-rounded",
"settings-lock-screen": "lock",
"settings-session-menu": "power",
"settings-system-monitor": "activity",
"bluetooth": "bluetooth",
"bt-device-generic": "bluetooth",
"bt-device-headphones": "headphones",
@@ -306,8 +310,8 @@ Singleton {
"align-left": "\u{ea09}",
"align-left-2": "\u{ff00}",
"align-right": "\u{ea0a}",
"alpha"//"align-right-2": "\u{feff}",
: "\u{f543}",
//"align-right-2": "\u{feff}",
"alpha": "\u{f543}",
"alphabet-arabic": "\u{ff2f}",
"alphabet-bangla": "\u{ff2e}",
"alphabet-cyrillic": "\u{f1df}",
@@ -3139,8 +3143,8 @@ Singleton {
"friends": "\u{eab0}",
"friends-off": "\u{f136}",
"frustum": "\u{fa9f}",
"frustum-plus"//"frustum-off": "\u{fa9d}",
: "\u{fa9e}",
//"frustum-off": "\u{fa9d}",
"frustum-plus": "\u{fa9e}",
"function": "\u{f225}",
"function-filled": "\u{fc2b}",
"function-off": "\u{f3f0}",
@@ -3399,13 +3403,13 @@ Singleton {
"hexagon-letter-x": "\u{f479}",
"hexagon-letter-x-filled": "\u{fe30}",
"hexagon-letter-y": "\u{f47a}",
"hexagon-letter-z"//"hexagon-letter-y-filled": "\u{fe2f}",
: "\u{f47b}",
"hexagon-minus"//"hexagon-letter-z-filled": "\u{fe2e}",
: "\u{fc8f}",
//"hexagon-letter-y-filled": "\u{fe2f}",
"hexagon-letter-z": "\u{f47b}",
//"hexagon-letter-z-filled": "\u{fe2e}",
"hexagon-minus": "\u{fc8f}",
"hexagon-minus-2": "\u{fc8e}",
"hexagon-number-0"//"hexagon-minus-filled": "\u{fe2d}",
: "\u{f459}",
//"hexagon-minus-filled": "\u{fe2d}",
"hexagon-number-0": "\u{f459}",
"hexagon-number-0-filled": "\u{f74c}",
"hexagon-number-1": "\u{f45a}",
"hexagon-number-1-filled": "\u{f74d}",
@@ -3428,8 +3432,8 @@ Singleton {
"hexagon-off": "\u{ee9c}",
"hexagon-plus": "\u{fc45}",
"hexagon-plus-2": "\u{fc90}",
"hexagonal-prism"//"hexagon-plus-filled": "\u{fe2c}",
: "\u{faa5}",
//"hexagon-plus-filled": "\u{fe2c}",
"hexagonal-prism": "\u{faa5}",
"hexagonal-prism-off": "\u{faa3}",
"hexagonal-prism-plus": "\u{faa4}",
"hexagonal-pyramid": "\u{faa8}",
@@ -3459,8 +3463,8 @@ Singleton {
"home-eco": "\u{f351}",
"home-edit": "\u{f352}",
"home-exclamation": "\u{f33c}",
"home-hand"//"home-filled": "\u{fe2b}",
: "\u{f504}",
//"home-filled": "\u{fe2b}",
"home-hand": "\u{f504}",
"home-heart": "\u{f353}",
"home-infinity": "\u{f505}",
"home-link": "\u{f354}",
@@ -3578,8 +3582,8 @@ Singleton {
"ironing-2-filled": "\u{1006e}",
"ironing-3": "\u{f2f6}",
"ironing-3-filled": "\u{1006d}",
"ironing-off"//"ironing-filled": "\u{fe2a}",
: "\u{f2f7}",
//"ironing-filled": "\u{fe2a}",
"ironing-off": "\u{f2f7}",
"ironing-steam": "\u{f2f9}",
"ironing-steam-filled": "\u{1006c}",
"ironing-steam-off": "\u{f2f8}",
@@ -3589,8 +3593,8 @@ Singleton {
"italic": "\u{eb93}",
"jacket": "\u{f661}",
"jetpack": "\u{f581}",
"jewish-star"//"jetpack-filled": "\u{fe29}",
: "\u{f3ff}",
//"jetpack-filled": "\u{fe29}",
"jewish-star": "\u{f3ff}",
"jewish-star-filled": "\u{f67e}",
"join-bevel": "\u{ff4c}",
"join-round": "\u{ff4b}",
@@ -3604,8 +3608,8 @@ Singleton {
"kering": "\u{efb8}",
"kerning": "\u{efb8}",
"key": "\u{eac7}",
"key-off"//"key-filled": "\u{fe28}",
: "\u{f14b}",
//"key-filled": "\u{fe28}",
"key-off": "\u{f14b}",
"keyboard": "\u{ebd6}",
"keyboard-filled": "\u{100a2}",
"keyboard-hide": "\u{ec7e}",
@@ -3661,20 +3665,20 @@ Singleton {
"layers-union": "\u{eacb}",
"layout": "\u{eadb}",
"layout-2": "\u{eacc}",
"layout-align-left"//"layout-2-filled": "\u{fe27}",
// "layout-align-bottom": "\u{eacd}",
//"layout-2-filled": "\u{fe27}",
//"layout-align-bottom": "\u{eacd}",
//"layout-align-bottom-filled": "\u{fe26}",
// "layout-align-center": "\u{eace}",
//"layout-align-center": "\u{eace}",
//"layout-align-center-filled": "\u{fe25}",
: "\u{eacf}",
"layout-align-middle"// "layout-align-left-filled": "\u{fe24}",
: "\u{ead0}",
"layout-align-right"//"layout-align-middle-filled": "\u{fe23}",
: "\u{ead1}",
"layout-align-top"//"layout-align-right-filled": "\u{fe22}",
: "\u{ead2}",
"layout-board"//"layout-align-top-filled": "\u{fe21}",
: "\u{ef95}",
"layout-align-left": "\u{eacf}",
//"layout-align-left-filled": "\u{fe24}",
"layout-align-middle": "\u{ead0}",
//"layout-align-middle-filled": "\u{fe23}",
"layout-align-right": "\u{ead1}",
//"layout-align-right-filled": "\u{fe22}",
"layout-align-top": "\u{ead2}",
//"layout-align-top-filled": "\u{fe21}",
"layout-board": "\u{ef95}",
"layout-board-filled": "\u{10182}",
"layout-board-split": "\u{ef94}",
"layout-board-split-filled": "\u{10183}",
@@ -3686,8 +3690,8 @@ Singleton {
"layout-bottombar-filled": "\u{fc37}",
"layout-bottombar-inactive": "\u{fd45}",
"layout-cards": "\u{ec13}",
"layout-collage"// "layout-cards-filled": "\u{fe20}",
: "\u{f389}",
//"layout-cards-filled": "\u{fe20}",
"layout-collage": "\u{f389}",
"layout-columns": "\u{ead4}",
"layout-dashboard": "\u{f02c}",
"layout-dashboard-filled": "\u{fe1f}",
@@ -4168,14 +4172,14 @@ Singleton {
"microphone": "\u{eaf0}",
"microphone-2": "\u{ef2c}",
"microphone-2-off": "\u{f40d}",
"microphone-off"//"microphone-filled": "\u{fe0f}",
: "\u{ed16}",
//"microphone-filled": "\u{fe0f}",
"microphone-off": "\u{ed16}",
"microscope": "\u{ef64}",
"microscope-filled": "\u{10166}",
"microscope-off": "\u{f40e}",
"microwave": "\u{f248}",
"microwave-off"//"microwave-filled": "\u{fe0e}",
: "\u{f264}",
//"microwave-filled": "\u{fe0e}",
"microwave-off": "\u{f264}",
"military-award": "\u{f079}",
"military-rank": "\u{efcf}",
"military-rank-filled": "\u{ff5e}",
@@ -4409,18 +4413,18 @@ Singleton {
"number-4-small": "\u{fcf9}",
"number-40-small": "\u{fffa}",
"number-41-small": "\u{fff9}",
"number-5"//"number-42-small": "\u{fff8}",
// "number-43-small": "\u{fff7}",
// "number-44-small": "\u{fff6}",
// "number-45-small": "\u{fff5}",
// "number-46-small": "\u{fff4}",
// "number-47-small": "\u{fff3}",
// "number-48-small": "\u{fff2}",
// "number-49-small": "\u{fff1}",
: "\u{edf5}",
//"number-42-small": "\u{fff8}",
//"number-43-small": "\u{fff7}",
//"number-44-small": "\u{fff6}",
//"number-45-small": "\u{fff5}",
//"number-46-small": "\u{fff4}",
//"number-47-small": "\u{fff3}",
//"number-48-small": "\u{fff2}",
//"number-49-small": "\u{fff1}",
"number-5": "\u{edf5}",
"number-5-small": "\u{fcfa}",
"number-51-small"// "number-50-small": "\u{fff0}",
: "\u{ffef}",
//"number-50-small": "\u{fff0}",
"number-51-small": "\u{ffef}",
"number-52-small": "\u{ffee}",
"number-53-small": "\u{ffed}",
"number-54-small": "\u{ffec}",
@@ -4860,11 +4864,11 @@ Singleton {
"quote": "\u{efbe}",
"quote-filled": "\u{1009c}",
"quote-off": "\u{f188}",
"radar"//"quotes": "\u{fb1e}",
: "\u{f017}",
//"quotes": "\u{fb1e}",
"radar": "\u{f017}",
"radar-2": "\u{f016}",
"radar-off"//"radar-filled": "\u{fe0d}",
: "\u{f41f}",
//"radar-filled": "\u{fe0d}",
"radar-off": "\u{f41f}",
"radio": "\u{ef2d}",
"radio-off": "\u{f420}",
"radioactive": "\u{ecc0}",
@@ -4924,12 +4928,12 @@ Singleton {
"regex-off": "\u{f421}",
"registered": "\u{eb14}",
"relation-many-to-many": "\u{ed7f}",
"relation-one-to-many"//"relation-many-to-many-filled": "\u{fe0c}",
: "\u{ed80}",
"relation-one-to-one"//"relation-one-to-many-filled": "\u{fe0b}",
: "\u{ed81}",
"reload"//"relation-one-to-one-filled": "\u{fe0a}",
: "\u{f3ae}",
//"relation-many-to-many-filled": "\u{fe0c}",
"relation-one-to-many": "\u{ed80}",
//"relation-one-to-many-filled": "\u{fe0b}",
"relation-one-to-one": "\u{ed81}",
//"relation-one-to-one-filled": "\u{fe0a}",
"reload": "\u{f3ae}",
"reorder": "\u{fc15}",
"repeat": "\u{eb72}",
"repeat-off": "\u{f18e}",
@@ -5081,8 +5085,8 @@ Singleton {
"search": "\u{eb1c}",
"search-off": "\u{f19c}",
"section": "\u{eed5}",
"section-sign"//"section-filled": "\u{fe09}",
: "\u{f019}",
//"section-filled": "\u{fe09}",
"section-sign": "\u{f019}",
"seeding": "\u{ed51}",
"seeding-filled": "\u{10006}",
"seeding-off": "\u{f19d}",
@@ -5290,8 +5294,8 @@ Singleton {
"sort-z-a": "\u{f550}",
"sos": "\u{f24a}",
"soup": "\u{ef2e}",
"soup-off"//"soup-filled": "\u{fe08}",
: "\u{f42d}",
//"soup-filled": "\u{fe08}",
"soup-off": "\u{f42d}",
"source-code": "\u{f4a2}",
"space": "\u{ec0c}",
"space-off": "\u{f1aa}",
@@ -5384,22 +5388,22 @@ Singleton {
"square-half": "\u{effb}",
"square-key": "\u{f638}",
"square-letter-a": "\u{f47c}",
"square-letter-b"//"square-letter-a-filled": "\u{fe07}",
: "\u{f47d}",
"square-letter-c"//"square-letter-b-filled": "\u{fe06}",
: "\u{f47e}",
"square-letter-d"//"square-letter-c-filled": "\u{fe05}",
: "\u{f47f}",
"square-letter-e"//"square-letter-d-filled": "\u{fe04}",
: "\u{f480}",
"square-letter-f"//"square-letter-e-filled": "\u{fe03}",
: "\u{f481}",
"square-letter-g"//"square-letter-f-filled": "\u{fe02}",
: "\u{f482}",
"square-letter-h"//"square-letter-g-filled": "\u{fe01}",
: "\u{f483}",
"square-letter-i"//"square-letter-h-filled": "\u{fe00}",
: "\u{f484}",
//"square-letter-a-filled": "\u{fe07}",
"square-letter-b": "\u{f47d}",
//"square-letter-b-filled": "\u{fe06}",
"square-letter-c": "\u{f47e}",
//"square-letter-c-filled": "\u{fe05}",
"square-letter-d": "\u{f47f}",
//"square-letter-d-filled": "\u{fe04}",
"square-letter-e": "\u{f480}",
//"square-letter-e-filled": "\u{fe03}",
"square-letter-f": "\u{f481}",
//"square-letter-f-filled": "\u{fe02}",
"square-letter-g": "\u{f482}",
//"square-letter-g-filled": "\u{fe01}",
"square-letter-h": "\u{f483}",
//"square-letter-h-filled": "\u{fe00}",
"square-letter-i": "\u{f484}",
"square-letter-i-filled": "\u{fdff}",
"square-letter-j": "\u{f485}",
"square-letter-j-filled": "\u{fdfe}",

View File

@@ -7,63 +7,63 @@ Singleton {
id: root
function _formatMessage(...args) {
var t = Time.getFormattedTimestamp()
var t = Time.getFormattedTimestamp();
if (args.length > 1) {
const maxLength = 14
var module = args.shift().substring(0, maxLength).padStart(maxLength, " ")
return `\x1b[36m[${t}]\x1b[0m \x1b[35m${module}\x1b[0m ` + args.join(" ")
const maxLength = 14;
var module = args.shift().substring(0, maxLength).padStart(maxLength, " ");
return `\x1b[36m[${t}]\x1b[0m \x1b[35m${module}\x1b[0m ` + args.join(" ");
} else {
return `[\x1b[36m[${t}]\x1b[0m ` + args.join(" ")
return `[\x1b[36m[${t}]\x1b[0m ` + args.join(" ");
}
}
function _getStackTrace() {
try {
throw new Error("Stack trace")
throw new Error("Stack trace");
} catch (e) {
return e.stack
return e.stack;
}
}
// Debug log (only when Settings.isDebug is true)
function d(...args) {
if (Settings && Settings.isDebug) {
var msg = _formatMessage(...args)
console.debug(msg)
if (Settings?.isDebug) {
var msg = _formatMessage(...args);
console.debug(msg);
}
}
// Info log (always visible)
function i(...args) {
var msg = _formatMessage(...args)
console.info(msg)
var msg = _formatMessage(...args);
console.info(msg);
}
// Warning log (always visible)
function w(...args) {
var msg = _formatMessage(...args)
console.warn(msg)
var msg = _formatMessage(...args);
console.warn(msg);
}
// Error log (always visible)
function e(...args) {
var msg = _formatMessage(...args)
console.error(msg)
var msg = _formatMessage(...args);
console.error(msg);
}
function callStack() {
var stack = _getStackTrace()
Logger.i("Debug", "--------------------------")
Logger.i("Debug", "Current call stack")
var stack = _getStackTrace();
Logger.i("Debug", "--------------------------");
Logger.i("Debug", "Current call stack");
// Split the stack into lines and log each one
var stackLines = stack.split('\n')
var stackLines = stack.split('\n');
for (var i = 0; i < stackLines.length; i++) {
var line = stackLines[i].trim() // Remove leading/trailing whitespace
var line = stackLines[i].trim(); // Remove leading/trailing whitespace
if (line.length > 0) {
// Only log non-empty lines
Logger.i("Debug", `- ${line}`)
Logger.i("Debug", `- ${line}`);
}
}
Logger.i("Debug", "--------------------------")
Logger.i("Debug", "--------------------------");
}
}

View File

@@ -3,9 +3,9 @@ pragma Singleton
import QtQuick
import Quickshell
import Quickshell.Io
import "../Helpers/QtObj2JS.js" as QtObj2JS
import qs.Commons
import qs.Services.UI
import "../Helpers/QtObj2JS.js" as QtObj2JS
Singleton {
id: root
@@ -14,7 +14,7 @@ Singleton {
readonly property alias data: adapter
property bool isLoaded: false
property bool directoriesCreated: false
property int settingsVersion: 21
property int settingsVersion: 23
property bool isDebug: Quickshell.env("NOCTALIA_DEBUG") === "1"
// Define our app directories
@@ -42,30 +42,30 @@ Singleton {
// Ensure directories exist before FileView tries to read files
Component.onCompleted: {
// ensure settings dir exists
Quickshell.execDetached(["mkdir", "-p", configDir])
Quickshell.execDetached(["mkdir", "-p", cacheDir])
Quickshell.execDetached(["mkdir", "-p", configDir]);
Quickshell.execDetached(["mkdir", "-p", cacheDir]);
Quickshell.execDetached(["mkdir", "-p", cacheDirImagesWallpapers])
Quickshell.execDetached(["mkdir", "-p", cacheDirImagesNotifications])
Quickshell.execDetached(["mkdir", "-p", cacheDirImagesWallpapers]);
Quickshell.execDetached(["mkdir", "-p", cacheDirImagesNotifications]);
// Mark directories as created and trigger file loading
directoriesCreated = true
directoriesCreated = true;
// This should only be activated once when the settings structure has changed
// Then it should be commented out again, regular users don't need to generate
// default settings on every start
if (isDebug) {
generateDefaultSettings()
generateDefaultSettings();
}
// Patch-in the local default, resolved to user's home
adapter.general.avatarImage = defaultAvatar
adapter.screenRecorder.directory = defaultVideosDirectory
adapter.wallpaper.directory = defaultWallpapersDirectory
adapter.wallpaper.defaultWallpaper = Quickshell.shellDir + "/Assets/Wallpaper/noctalia.png"
adapter.general.avatarImage = defaultAvatar;
adapter.screenRecorder.directory = defaultVideosDirectory;
adapter.wallpaper.directory = defaultWallpapersDirectory;
adapter.wallpaper.defaultWallpaper = Quickshell.shellDir + "/Assets/Wallpaper/noctalia.png";
// Set the adapter to the settingsFileView to trigger the real settings load
settingsFileView.adapter = adapter
settingsFileView.adapter = adapter;
}
// Don't write settings to disk immediately
@@ -75,7 +75,7 @@ Singleton {
running: false
interval: 1000
onTriggered: {
root.saveImmediate()
root.saveImmediate();
}
}
@@ -90,31 +90,31 @@ Singleton {
// Trigger initial load when path changes from empty to actual path
onPathChanged: {
if (path !== undefined) {
reload()
reload();
}
}
onLoaded: function () {
if (!isLoaded) {
Logger.i("Settings", "Settings loaded")
Logger.i("Settings", "Settings loaded");
upgradeSettingsData()
validateMonitorConfigurations()
isLoaded = true
upgradeSettingsData();
validateMonitorConfigurations();
isLoaded = true;
// Emit the signal
root.settingsLoaded()
root.settingsLoaded();
// Finally, update our local settings version
adapter.settingsVersion = settingsVersion
adapter.settingsVersion = settingsVersion;
}
}
onLoadFailed: function (error) {
if (error.toString().includes("No such file") || error === 2) {
// File doesn't exist, create it with default values
writeAdapter()
writeAdapter();
// Also write to fallback if set
if (Quickshell.env("NOCTALIA_SETTINGS_FALLBACK")) {
settingsFallbackFileView.writeAdapter()
settingsFallbackFileView.writeAdapter();
}
}
}
@@ -141,6 +141,7 @@ Singleton {
property list<string> monitors: []
property string density: "default" // "compact", "default", "comfortable"
property bool showCapsule: true
property real capsuleOpacity: 1.0
// Floating bar settings
property bool floating: false
@@ -156,40 +157,55 @@ Singleton {
// Widget configuration for modular bar system
property JsonObject widgets
widgets: JsonObject {
property list<var> left: [{
property list<var> left: [
{
"id": "ControlCenter"
}, {
},
{
"id": "SystemMonitor"
}, {
},
{
"id": "ActiveWindow"
}, {
},
{
"id": "MediaMini"
}]
property list<var> center: [{
}
]
property list<var> center: [
{
"id": "Workspace"
}]
property list<var> right: [{
}
]
property list<var> right: [
{
"id": "ScreenRecorder"
}, {
},
{
"id": "Tray"
}, {
},
{
"id": "NotificationHistory"
}, {
},
{
"id": "Battery"
}, {
},
{
"id": "Volume"
}, {
},
{
"id": "Brightness"
}, {
},
{
"id": "Clock"
}]
}
]
}
}
// general
property JsonObject general: JsonObject {
property string avatarImage: ""
property bool dimDesktop: true
property real dimmerOpacity: 0.6
property bool showScreenCorners: false
property bool forceBlackScreenCorners: false
property real scaleRatio: 1.0
@@ -204,6 +220,7 @@ Singleton {
property int shadowOffsetX: 2
property int shadowOffsetY: 3
property string language: ""
property bool allowPanelsOnScreenWithoutBar: true
}
// ui
@@ -213,6 +230,7 @@ Singleton {
property real fontDefaultScale: 1.0
property real fontFixedScale: 1.0
property bool tooltipsEnabled: true
property real panelBackgroundOpacity: 1.0
property bool panelsAttachedToBar: true
property bool settingsPanelAttachToBar: false
}
@@ -221,6 +239,7 @@ Singleton {
property JsonObject location: JsonObject {
property string name: defaultLocation
property bool weatherEnabled: true
property bool weatherShowEffects: true
property bool useFahrenheit: false
property bool use12hourFormat: false
property bool showWeekNumberInCalendar: false
@@ -261,14 +280,25 @@ Singleton {
property real transitionEdgeSmoothness: 0.05
property list<var> monitors: []
property string panelPosition: "follow_bar"
property bool hideWallpaperFilenames: false
// Wallhaven settings
property bool useWallhaven: false
property string wallhavenQuery: ""
property string wallhavenSorting: "relevance"
property string wallhavenOrder: "desc"
property string wallhavenCategories: "111" // general,anime,people
property string wallhavenPurity: "100" // sfw only
property string wallhavenResolutionMode: "atleast" // "atleast" or "exact"
property string wallhavenResolutionWidth: ""
property string wallhavenResolutionHeight: ""
}
// applauncher
property JsonObject appLauncher: JsonObject {
property bool enableClipboardHistory: false
property bool enableClipPreview: true
// Position: center, top_left, top_right, bottom_left, bottom_right, bottom_center, top_center
property string position: "center"
property real backgroundOpacity: 1.0
property list<string> pinnedExecs: []
property bool useApp2Unit: false
property bool sortByMostUsed: true
@@ -283,41 +313,72 @@ Singleton {
property string position: "close_to_bar_button"
property JsonObject shortcuts
shortcuts: JsonObject {
property list<var> left: [{
property list<var> left: [
{
"id": "WiFi"
}, {
},
{
"id": "Bluetooth"
}, {
},
{
"id": "ScreenRecorder"
}, {
},
{
"id": "WallpaperSelector"
}]
property list<var> right: [{
}
]
property list<var> right: [
{
"id": "Notifications"
}, {
},
{
"id": "PowerProfile"
}, {
},
{
"id": "KeepAwake"
}, {
},
{
"id": "NightLight"
}]
}
]
}
property list<var> cards: [{
property list<var> cards: [
{
"id": "profile-card",
"enabled": true
}, {
},
{
"id": "shortcuts-card",
"enabled": true
}, {
},
{
"id": "audio-card",
"enabled": true
}, {
},
{
"id": "weather-card",
"enabled": true
}, {
},
{
"id": "media-sysmon-card",
"enabled": true
}]
}
]
}
// system monitor
property JsonObject systemMonitor: JsonObject {
property int cpuWarningThreshold: 80
property int cpuCriticalThreshold: 90
property int tempWarningThreshold: 80
property int tempCriticalThreshold: 90
property int memWarningThreshold: 80
property int memCriticalThreshold: 90
property int diskWarningThreshold: 80
property int diskCriticalThreshold: 90
property bool useCustomColors: false
property string warningColor: ""
property string criticalColor: ""
}
// dock
@@ -325,6 +386,7 @@ Singleton {
property bool enabled: true
property string displayMode: "always_visible" // "always_visible", "auto_hide", "exclusive"
property real backgroundOpacity: 1.0
property real radiusRatio: 0.1
property real floatingRatio: 1.0
property real size: 1
property bool onlySameOutput: true
@@ -339,6 +401,40 @@ Singleton {
property bool wifiEnabled: true
}
// session menu
property JsonObject sessionMenu: JsonObject {
property bool enableCountdown: true
property int countdownDuration: 10000
property string position: "center"
property bool showHeader: true
property list<var> powerOptions: [
{
"action": "lock",
"enabled": true
},
{
"action": "suspend",
"enabled": true
},
{
"action": "hibernate",
"enabled": true
},
{
"action": "reboot",
"enabled": true
},
{
"action": "logout",
"enabled": true
},
{
"action": "shutdown",
"enabled": true
}
]
}
// notifications
property JsonObject notifications: JsonObject {
property bool enabled: true
@@ -360,6 +456,7 @@ Singleton {
property list<string> monitors: []
property int autoHideMs: 2000
property bool overlayLayer: true
property real backgroundOpacity: 1.0
}
// audio
@@ -371,6 +468,7 @@ Singleton {
property string visualizerQuality: "high"
property list<string> mprisBlacklist: []
property string preferredPlayer: ""
property string externalMixer: "pwvucontrol || pavucontrol"
}
// brightness
@@ -409,13 +507,6 @@ Singleton {
property bool code: false
property bool spicetify: false
property bool enableUserTemplates: false
property bool discord_vesktop: false // To be deleted soon
property bool discord_webcord: false // To be deleted soon
property bool discord_armcord: false // To be deleted soon
property bool discord_equibop: false // To be deleted soon
property bool discord_lightcord: false // To be deleted soon
property bool discord_dorion: false // To be deleted soon
}
// night light
@@ -429,98 +520,97 @@ Singleton {
property string manualSunset: "18:30"
}
property JsonObject changelog: JsonObject {
property string lastSeenVersion: ""
}
// hooks
property JsonObject hooks: JsonObject {
property bool enabled: false
property string wallpaperChange: ""
property string darkModeChange: ""
}
// battery
property JsonObject battery: JsonObject {
property int chargingMode: 0
}
}
// -----------------------------------------------------
// Function to preprocess paths by expanding "~" to user's home directory
function preprocessPath(path) {
if (typeof path !== "string" || path === "") {
return path
return path;
}
// Expand "~" to user's home directory
if (path.startsWith("~/")) {
return Quickshell.env("HOME") + path.substring(1)
return Quickshell.env("HOME") + path.substring(1);
} else if (path === "~") {
return Quickshell.env("HOME")
return Quickshell.env("HOME");
}
return path
return path;
}
// -----------------------------------------------------
// Public function to trigger immediate settings saving
function saveImmediate() {
settingsFileView.writeAdapter()
settingsFileView.writeAdapter();
// Write to fallback location if set
if (Quickshell.env("NOCTALIA_SETTINGS_FALLBACK")) {
settingsFallbackFileView.writeAdapter()
settingsFallbackFileView.writeAdapter();
}
root.settingsSaved() // Emit signal after saving
root.settingsSaved(); // Emit signal after saving
}
// -----------------------------------------------------
// Generate default settings at the root of the repo
function generateDefaultSettings() {
try {
Logger.d("Settings", "Generating settings-default.json")
Logger.d("Settings", "Generating settings-default.json");
// Prepare a clean JSON
var plainAdapter = QtObj2JS.qtObjectToPlainObject(adapter)
var jsonData = JSON.stringify(plainAdapter, null, 2)
var plainAdapter = QtObj2JS.qtObjectToPlainObject(adapter);
var jsonData = JSON.stringify(plainAdapter, null, 2);
var defaultPath = Quickshell.shellDir + "/Assets/settings-default.json"
var defaultPath = Quickshell.shellDir + "/Assets/settings-default.json";
// Encode transfer it has base64 to avoid any escaping issue
var base64Data = Qt.btoa(jsonData)
Quickshell.execDetached(["sh", "-c", `echo "${base64Data}" | base64 -d > "${defaultPath}"`])
var base64Data = Qt.btoa(jsonData);
Quickshell.execDetached(["sh", "-c", `echo "${base64Data}" | base64 -d > "${defaultPath}"`]);
} catch (error) {
Logger.e("Settings", "Failed to generate default settings file: " + error)
Logger.e("Settings", "Failed to generate default settings file: " + error);
}
}
// -----------------------------------------------------
// Function to validate monitor configurations
function validateMonitorConfigurations() {
var availableScreenNames = []
var availableScreenNames = [];
for (var i = 0; i < Quickshell.screens.length; i++) {
availableScreenNames.push(Quickshell.screens[i].name)
availableScreenNames.push(Quickshell.screens[i].name);
}
Logger.d("Settings", "Available monitors: [" + availableScreenNames.join(", ") + "]")
Logger.d("Settings", "Configured bar monitors: [" + adapter.bar.monitors.join(", ") + "]")
Logger.d("Settings", "Available monitors: [" + availableScreenNames.join(", ") + "]");
Logger.d("Settings", "Configured bar monitors: [" + adapter.bar.monitors.join(", ") + "]");
// Check bar monitors
if (adapter.bar.monitors.length > 0) {
var hasValidBarMonitor = false
var hasValidBarMonitor = false;
for (var j = 0; j < adapter.bar.monitors.length; j++) {
if (availableScreenNames.includes(adapter.bar.monitors[j])) {
hasValidBarMonitor = true
break
hasValidBarMonitor = true;
break;
}
}
if (!hasValidBarMonitor) {
Logger.w("Settings", "No configured bar monitors found on system, clearing bar monitor list to show on all screens")
adapter.bar.monitors = []
} else {
Logger.w("Settings", "No configured bar monitors found on system, clearing bar monitor list to show on all screens");
adapter.bar.monitors = [];
} else
//Logger.i("Settings", "Found valid bar monitors, keeping configuration")
}
} else {
{}
} else
//Logger.i("Settings", "Bar monitor list is empty, will show on all available screens")
}
{}
}
// -----------------------------------------------------
@@ -529,50 +619,50 @@ Singleton {
function upgradeSettingsData() {
// Wait for BarWidgetRegistry to be ready
if (!BarWidgetRegistry.widgets || Object.keys(BarWidgetRegistry.widgets).length === 0) {
Logger.w("Settings", "BarWidgetRegistry not ready, deferring upgrade")
Qt.callLater(upgradeSettingsData)
return
Logger.w("Settings", "BarWidgetRegistry not ready, deferring upgrade");
Qt.callLater(upgradeSettingsData);
return;
}
const sections = ["left", "center", "right"]
const sections = ["left", "center", "right"];
// -----------------
// 1st. convert old widget id to new id
for (var s = 0; s < sections.length; s++) {
const sectionName = sections[s]
const sectionName = sections[s];
for (var i = 0; i < adapter.bar.widgets[sectionName].length; i++) {
var widget = adapter.bar.widgets[sectionName][i]
var widget = adapter.bar.widgets[sectionName][i];
switch (widget.id) {
case "DarkModeToggle":
widget.id = "DarkMode"
break
widget.id = "DarkMode";
break;
case "PowerToggle":
widget.id = "SessionMenu"
break
widget.id = "SessionMenu";
break;
case "ScreenRecorderIndicator":
widget.id = "ScreenRecorder"
break
widget.id = "ScreenRecorder";
break;
case "SidePanelToggle":
widget.id = "ControlCenter"
break
widget.id = "ControlCenter";
break;
}
}
}
// -----------------
// 2nd. remove any non existing widget type
var removedWidget = false
var removedWidget = false;
for (var s = 0; s < sections.length; s++) {
const sectionName = sections[s]
const widgets = adapter.bar.widgets[sectionName]
const sectionName = sections[s];
const widgets = adapter.bar.widgets[sectionName];
// Iterate backward through the widgets array, so it does not break when removing a widget
for (var i = widgets.length - 1; i >= 0; i--) {
var widget = widgets[i]
var widget = widgets[i];
if (!BarWidgetRegistry.hasWidget(widget.id)) {
Logger.w(`Settings`, `Deleted invalid widget ${widget.id}`)
widgets.splice(i, 1)
removedWidget = true
Logger.w(`Settings`, `Deleted invalid widget ${widget.id}`);
widgets.splice(i, 1);
removedWidget = true;
}
}
}
@@ -580,18 +670,18 @@ Singleton {
// -----------------
// 3nd. upgrade widget settings
for (var s = 0; s < sections.length; s++) {
const sectionName = sections[s]
const sectionName = sections[s];
for (var i = 0; i < adapter.bar.widgets[sectionName].length; i++) {
var widget = adapter.bar.widgets[sectionName][i]
var widget = adapter.bar.widgets[sectionName][i];
// Check if widget registry supports user settings, if it does not, then there is nothing to do
const reg = BarWidgetRegistry.widgetMetadata[widget.id]
const reg = BarWidgetRegistry.widgetMetadata[widget.id];
if ((reg === undefined) || (reg.allowUserSettings === undefined) || !reg.allowUserSettings) {
continue
continue;
}
if (upgradeWidget(widget)) {
Logger.d("Settings", `Upgraded ${widget.id} widget:`, JSON.stringify(widget))
Logger.d("Settings", `Upgraded ${widget.id} widget:`, JSON.stringify(widget));
}
}
}
@@ -600,14 +690,14 @@ Singleton {
// 4th. safety check
// if a widget was deleted, ensure we still have a control center
if (removedWidget) {
var gotControlCenter = false
var gotControlCenter = false;
for (var s = 0; s < sections.length; s++) {
const sectionName = sections[s]
const sectionName = sections[s];
for (var i = 0; i < adapter.bar.widgets[sectionName].length; i++) {
var widget = adapter.bar.widgets[sectionName][i]
var widget = adapter.bar.widgets[sectionName][i];
if (widget.id === "ControlCenter") {
gotControlCenter = true
break
gotControlCenter = true;
break;
}
}
}
@@ -616,8 +706,8 @@ Singleton {
//const obj = JSON.parse('{"id": "ControlCenter"}');
adapter.bar.widgets["right"].push(({
"id": "ControlCenter"
}))
Logger.w("Settings", "Added a ControlCenter widget to the right section")
}));
Logger.w("Settings", "Added a ControlCenter widget to the right section");
}
}
@@ -625,57 +715,119 @@ Singleton {
// 5th. Migrate Discord templates (version 20 → 21)
// Consolidate individual discord_* properties into unified discord property
if (adapter.settingsVersion < 21) {
var anyDiscordEnabled = false
// Read raw JSON file to access properties not in adapter schema
try {
var rawJson = settingsFileView.text();
// Check if any Discord client was enabled
const discordClients = ["discord_vesktop", "discord_webcord", "discord_armcord", "discord_equibop", "discord_lightcord", "discord_dorion"]
if (rawJson) {
var parsed = JSON.parse(rawJson);
var anyDiscordEnabled = false;
for (var i = 0; i < discordClients.length; i++) {
if (adapter.templates[discordClients[i]]) {
anyDiscordEnabled = true
break
// Check if any Discord client was enabled
const discordClients = ["discord_vesktop", "discord_webcord", "discord_armcord", "discord_equibop", "discord_lightcord", "discord_dorion", "discord_vencord"];
if (parsed.templates) {
for (var i = 0; i < discordClients.length; i++) {
if (parsed.templates[discordClients[i]]) {
anyDiscordEnabled = true;
break;
}
}
}
// Set unified discord property
adapter.templates.discord = anyDiscordEnabled;
Logger.i("Settings", "Migrated Discord templates to unified 'discord' property (enabled:", anyDiscordEnabled + ")");
}
} catch (error) {
Logger.w("Settings", "Failed to read raw JSON for Discord migration:", error);
}
}
// Set unified discord property
adapter.templates.discord = anyDiscordEnabled
// -----------------
// 6th. Migrate panel background opacity (version 21 → 22)
// Move appLauncher.backgroundOpacity to ui.panelBackgroundOpacity
if (adapter.settingsVersion < 22) {
// Read raw JSON file to access properties not in adapter schema
try {
var rawJson = settingsFileView.text();
Logger.i("Settings", "Migrated Discord templates to unified 'discord' property (enabled:", anyDiscordEnabled + ")")
if (rawJson) {
var parsed = JSON.parse(rawJson);
if (parsed.appLauncher && parsed.appLauncher.backgroundOpacity !== undefined) {
var oldOpacity = parsed.appLauncher.backgroundOpacity;
if (adapter.ui) {
adapter.ui.panelBackgroundOpacity = oldOpacity;
Logger.i("Settings", "Migrated appLauncher.backgroundOpacity to ui.panelBackgroundOpacity (value:", oldOpacity + ")");
}
}
}
} catch (error) {
Logger.w("Settings", "Failed to read raw JSON for migration:", error);
}
}
// -----------------
// 7th. Migrate dim desktop settings (version 22 → 23)
// If dimDesktop is enabled, set dimmerOpacity to 0.8 if it's not already set or is 0
// Then remove dimDesktop property as it's no longer needed
if (adapter.settingsVersion < 23) {
// Read raw JSON file to access dimDesktop property
try {
var rawJson = settingsFileView.text();
if (rawJson) {
var parsed = JSON.parse(rawJson);
if (parsed.general && parsed.general.dimDesktop === true) {
// Check if dimmerOpacity exists in raw JSON (not adapter default)
var dimmerOpacityInJson = parsed.general.dimmerOpacity;
// If dimmerOpacity wasn't explicitly set in JSON or was 0, set it to 0.8 (80% dimming)
if (dimmerOpacityInJson === undefined || dimmerOpacityInJson === 0) {
adapter.general.dimmerOpacity = 0.8;
Logger.i("Settings", "Migrated dimDesktop=true: set dimmerOpacity to 0.8 (80% dimming)");
}
}
}
} catch (error) {
Logger.w("Settings", "Failed to read raw JSON for dimDesktop migration:", error);
}
}
}
// -----------------------------------------------------
function upgradeWidget(widget) {
// Backup the widget definition before altering
const widgetBefore = JSON.stringify(widget)
const widgetBefore = JSON.stringify(widget);
// Get all existing custom settings keys
const keys = Object.keys(BarWidgetRegistry.widgetMetadata[widget.id])
const keys = Object.keys(BarWidgetRegistry.widgetMetadata[widget.id]);
// Delete deprecated user settings from the wiget
for (const k of Object.keys(widget)) {
if (k === "id" || k === "allowUserSettings") {
continue
continue;
}
if (!keys.includes(k)) {
delete widget[k]
delete widget[k];
}
}
// Inject missing default setting (metaData) from BarWidgetRegistry
for (var i = 0; i < keys.length; i++) {
const k = keys[i]
const k = keys[i];
if (k === "id" || k === "allowUserSettings") {
continue
continue;
}
if (widget[k] === undefined) {
widget[k] = BarWidgetRegistry.widgetMetadata[widget.id][k]
widget[k] = BarWidgetRegistry.widgetMetadata[widget.id][k];
}
}
// Compare settings, to detect if something has been upgraded
const widgetAfter = JSON.stringify(widget)
return (widgetAfter !== widgetBefore)
const widgetAfter = JSON.stringify(widget);
return (widgetAfter !== widgetBefore);
}
}

183
Commons/ShellState.qml Normal file
View File

@@ -0,0 +1,183 @@
pragma Singleton
import QtQuick
import Quickshell
import Quickshell.Io
// Centralized shell state management for small cache files
Singleton {
id: root
property string stateFile: ""
property bool isLoaded: false
// State properties for different services
readonly property alias data: adapter
// Signals for state changes
signal displayStateChanged
signal notificationsStateChanged
signal changelogStateChanged
signal colorSchemesListChanged
Component.onCompleted: {
// Setup state file path (needs Settings to be available)
Qt.callLater(() => {
if (typeof Settings !== 'undefined' && Settings.cacheDir) {
stateFile = Settings.cacheDir + "shell-state.json";
stateFileView.path = stateFile;
}
});
}
// FileView for shell state
FileView {
id: stateFileView
printErrors: false
watchChanges: false
adapter: JsonAdapter {
id: adapter
// CompositorService: display scales
property var display: ({})
// NotificationService: notification state
property var notificationsState: ({
lastSeenTs: 0
})
// UpdateService: changelog state
property var changelogState: ({
lastSeenVersion: ""
})
// SchemeDownloader: color schemes list
property var colorSchemesList: ({
schemes: [],
timestamp: 0
})
// WallpaperService: current wallpapers per screen
property var wallpapers: ({})
}
onLoaded: {
root.isLoaded = true;
Logger.d("ShellState", "Loaded state file");
}
onLoadFailed: error => {
if (error === 2) {
// File doesn't exist, will be created on first write
root.isLoaded = true;
Logger.d("ShellState", "State file doesn't exist, will create on first write");
} else {
Logger.e("ShellState", "Failed to load state file:", error);
root.isLoaded = true;
}
}
}
// Debounced save timer
Timer {
id: saveTimer
interval: 300
onTriggered: performSave()
}
property bool saveQueued: false
function save() {
saveQueued = true;
saveTimer.restart();
}
function performSave() {
if (!saveQueued || !stateFile) {
return;
}
saveQueued = false;
try {
// Ensure cache directory exists
Quickshell.execDetached(["mkdir", "-p", Settings.cacheDir]);
Qt.callLater(() => {
try {
stateFileView.writeAdapter();
Logger.d("ShellState", "Saved state file");
} catch (writeError) {
Logger.e("ShellState", "Failed to write state file:", writeError);
}
});
} catch (error) {
Logger.e("ShellState", "Failed to save state:", error);
}
}
// Convenience functions for each service
// Display state (CompositorService)
function setDisplay(displayData) {
adapter.display = displayData;
save();
displayStateChanged();
}
function getDisplay() {
return adapter.display || {};
}
// Notifications state (NotificationService)
function setNotificationsState(stateData) {
adapter.notificationsState = stateData;
save();
notificationsStateChanged();
}
function getNotificationsState() {
return adapter.notificationsState || {
lastSeenTs: 0
};
}
// Changelog state (UpdateService)
function setChangelogState(stateData) {
adapter.changelogState = stateData;
save();
changelogStateChanged();
}
function getChangelogState() {
return adapter.changelogState || {
lastSeenVersion: ""
};
}
// Color schemes list (SchemeDownloader)
function setColorSchemesList(listData) {
adapter.colorSchemesList = listData;
save();
colorSchemesListChanged();
}
function getColorSchemesList() {
return adapter.colorSchemesList || {
schemes: [],
timestamp: 0
};
}
// Wallpapers (WallpaperService)
function setWallpapers(wallpapersData) {
adapter.wallpapers = wallpapersData;
save();
}
function getWallpapers() {
return adapter.wallpapers || {};
}
}

View File

@@ -7,108 +7,102 @@ import qs.Services.Power
Singleton {
id: root
/*
Preset sizes for font, radii, ?
*/
// Font size
property real fontSizeXXS: 8
property real fontSizeXS: 9
property real fontSizeS: 10
property real fontSizeM: 11
property real fontSizeL: 13
property real fontSizeXL: 16
property real fontSizeXXL: 18
property real fontSizeXXXL: 24
readonly property real fontSizeXXS: 8
readonly property real fontSizeXS: 9
readonly property real fontSizeS: 10
readonly property real fontSizeM: 11
readonly property real fontSizeL: 13
readonly property real fontSizeXL: 16
readonly property real fontSizeXXL: 18
readonly property real fontSizeXXXL: 24
// Font weight
property int fontWeightRegular: 400
property int fontWeightMedium: 500
property int fontWeightSemiBold: 600
property int fontWeightBold: 700
readonly property int fontWeightRegular: 400
readonly property int fontWeightMedium: 500
readonly property int fontWeightSemiBold: 600
readonly property int fontWeightBold: 700
// Radii
property int radiusXXS: Math.round(4 * Settings.data.general.radiusRatio)
property int radiusXS: Math.round(8 * Settings.data.general.radiusRatio)
property int radiusS: Math.round(12 * Settings.data.general.radiusRatio)
property int radiusM: Math.round(16 * Settings.data.general.radiusRatio)
property int radiusL: Math.round(20 * Settings.data.general.radiusRatio)
property int screenRadius: Math.round(20 * Settings.data.general.screenRadiusRatio)
readonly property int radiusXXS: Math.round(4 * Settings.data.general.radiusRatio)
readonly property int radiusXS: Math.round(8 * Settings.data.general.radiusRatio)
readonly property int radiusS: Math.round(12 * Settings.data.general.radiusRatio)
readonly property int radiusM: Math.round(16 * Settings.data.general.radiusRatio)
readonly property int radiusL: Math.round(20 * Settings.data.general.radiusRatio)
readonly property int screenRadius: Math.round(20 * Settings.data.general.screenRadiusRatio)
// Border
property int borderS: Math.max(1, Math.round(1 * uiScaleRatio))
property int borderM: Math.max(1, Math.round(2 * uiScaleRatio))
property int borderL: Math.max(1, Math.round(3 * uiScaleRatio))
readonly property int borderS: Math.max(1, Math.round(1 * uiScaleRatio))
readonly property int borderM: Math.max(1, Math.round(2 * uiScaleRatio))
readonly property int borderL: Math.max(1, Math.round(3 * uiScaleRatio))
// Margins (for margins and spacing)
property int marginXXS: Math.round(2 * uiScaleRatio)
property int marginXS: Math.round(4 * uiScaleRatio)
property int marginS: Math.round(6 * uiScaleRatio)
property int marginM: Math.round(9 * uiScaleRatio)
property int marginL: Math.round(13 * uiScaleRatio)
property int marginXL: Math.round(18 * uiScaleRatio)
readonly property int marginXXS: Math.round(2 * uiScaleRatio)
readonly property int marginXS: Math.round(4 * uiScaleRatio)
readonly property int marginS: Math.round(6 * uiScaleRatio)
readonly property int marginM: Math.round(9 * uiScaleRatio)
readonly property int marginL: Math.round(13 * uiScaleRatio)
readonly property int marginXL: Math.round(18 * uiScaleRatio)
// Opacity
property real opacityNone: 0.0
property real opacityLight: 0.25
property real opacityMedium: 0.5
property real opacityHeavy: 0.75
property real opacityAlmost: 0.95
property real opacityFull: 1.0
readonly property real opacityNone: 0.0
readonly property real opacityLight: 0.25
readonly property real opacityMedium: 0.5
readonly property real opacityHeavy: 0.75
readonly property real opacityAlmost: 0.95
readonly property real opacityFull: 1.0
// Shadows
property real shadowOpacity: 0.85
property real shadowBlur: 1.0
property int shadowBlurMax: 22
property real shadowHorizontalOffset: Settings.data.general.shadowOffsetX
property real shadowVerticalOffset: Settings.data.general.shadowOffsetY
readonly property real shadowOpacity: 0.85
readonly property real shadowBlur: 1.0
readonly property int shadowBlurMax: 22
readonly property real shadowHorizontalOffset: Settings.data.general.shadowOffsetX
readonly property real shadowVerticalOffset: Settings.data.general.shadowOffsetY
// Animation duration (ms)
property int animationFaster: (Settings.data.general.animationDisabled || PowerProfileService.noctaliaPerformanceMode) ? 0 : Math.round(75 / Settings.data.general.animationSpeed)
property int animationFast: (Settings.data.general.animationDisabled || PowerProfileService.noctaliaPerformanceMode) ? 0 : Math.round(150 / Settings.data.general.animationSpeed)
property int animationNormal: (Settings.data.general.animationDisabled || PowerProfileService.noctaliaPerformanceMode) ? 0 : Math.round(300 / Settings.data.general.animationSpeed)
property int animationSlow: (Settings.data.general.animationDisabled || PowerProfileService.noctaliaPerformanceMode) ? 0 : Math.round(450 / Settings.data.general.animationSpeed)
property int animationSlowest: (Settings.data.general.animationDisabled || PowerProfileService.noctaliaPerformanceMode) ? 0 : Math.round(750 / Settings.data.general.animationSpeed)
readonly property int animationFaster: (Settings.data.general.animationDisabled || PowerProfileService.noctaliaPerformanceMode) ? 0 : Math.round(75 / Settings.data.general.animationSpeed)
readonly property int animationFast: (Settings.data.general.animationDisabled || PowerProfileService.noctaliaPerformanceMode) ? 0 : Math.round(150 / Settings.data.general.animationSpeed)
readonly property int animationNormal: (Settings.data.general.animationDisabled || PowerProfileService.noctaliaPerformanceMode) ? 0 : Math.round(300 / Settings.data.general.animationSpeed)
readonly property int animationSlow: (Settings.data.general.animationDisabled || PowerProfileService.noctaliaPerformanceMode) ? 0 : Math.round(450 / Settings.data.general.animationSpeed)
readonly property int animationSlowest: (Settings.data.general.animationDisabled || PowerProfileService.noctaliaPerformanceMode) ? 0 : Math.round(750 / Settings.data.general.animationSpeed)
// Delays
property int tooltipDelay: 300
property int tooltipDelayLong: 1200
property int pillDelay: 500
readonly property int tooltipDelay: 300
readonly property int tooltipDelayLong: 1200
readonly property int pillDelay: 500
// Widgets base size
property real baseWidgetSize: 33
property real sliderWidth: 200
readonly property real baseWidgetSize: 33
readonly property real sliderWidth: 200
property real uiScaleRatio: Settings.data.general.scaleRatio
readonly property real uiScaleRatio: Settings.data.general.scaleRatio
// Bar Dimensions
property real barHeight: {
readonly property real barHeight: {
switch (Settings.data.bar.density) {
case "mini":
return (Settings.data.bar.position === "left" || Settings.data.bar.position === "right") ? 22 : 20
return (Settings.data.bar.position === "left" || Settings.data.bar.position === "right") ? 22 : 20;
case "compact":
return (Settings.data.bar.position === "left" || Settings.data.bar.position === "right") ? 27 : 25
return (Settings.data.bar.position === "left" || Settings.data.bar.position === "right") ? 27 : 25;
case "comfortable":
return (Settings.data.bar.position === "left" || Settings.data.bar.position === "right") ? 39 : 37
return (Settings.data.bar.position === "left" || Settings.data.bar.position === "right") ? 39 : 37;
default:
case "default":
return (Settings.data.bar.position === "left" || Settings.data.bar.position === "right") ? 33 : 31
return (Settings.data.bar.position === "left" || Settings.data.bar.position === "right") ? 33 : 31;
}
}
property real capsuleHeight: {
readonly property real capsuleHeight: {
switch (Settings.data.bar.density) {
case "mini":
return Math.round(barHeight * 1.0)
return Math.round(barHeight * 1.0);
case "compact":
return Math.round(barHeight * 0.85)
return Math.round(barHeight * 0.85);
case "comfortable":
return Math.round(barHeight * 0.73)
return Math.round(barHeight * 0.73);
default:
case "default":
return Math.round(barHeight * 0.82)
return Math.round(barHeight * 0.82);
}
}
readonly property color capsuleColor: Settings.data.bar.showCapsule ? Qt.alpha(Color.mSurfaceVariant, Settings.data.bar.capsuleOpacity) : Color.transparent
}

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