Merge branch 'main' into pr/networking-refactor-pt2

This commit is contained in:
Turann_
2026-03-14 05:46:20 +03:00
committed by GitHub
28 changed files with 291 additions and 53 deletions
+2 -2
View File
@@ -1151,7 +1151,7 @@
"appearance-show-launcher-icon-label": "App-Launcher anzeigen",
"appearance-sit-on-frame-description": "Richten Sie das Dock innerhalb des Rahmenrands aus, anstatt es oben zu platzieren.",
"appearance-sit-on-frame-label": "Dock sitzt am Rahmen",
"appearance-type-attached": "Statisch",
"appearance-type-attached": "Angedockt",
"appearance-type-description": "Wählen Sie zwischen einer schwebenden Pillenform oder einer statischen, am Rand befestigten Leiste.",
"appearance-type-floating": "Schwebend",
"appearance-type-label": "Dock-Stil",
@@ -1220,7 +1220,7 @@
},
"hooks": {
"info-command-info-description": "• Befehle werden über Shell ausgeführt (sh -lc)<br>• Befehle laufen im Hintergrund (getrennt)<br>• Test-Buttons führen mit aktuellen Werten aus",
"info-parameters-description": "• Wallpaper hook: $1 = Hintergrundbildpfad, $2 = Bildschirmname, $3 = Thema (dunkel/hell)<br>• Theme toggle hook: $1 = true/false (Dark Mode Status)<br>• Screen lock/unlock hooks: $1 = lock/unlock (Bildschirmsperrstatus)<br>• Performance mode hooks: Keine Parameter<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-description": "• Wallpaper hook: $1 = Hintergrundbildpfad, $2 = Bildschirmname, $3 = Thema (dunkel/hell)<br>• Theme toggle hook: $1 = true/false (Dunkelmodus-Status)<br>• Screen lock/unlock hooks: $1 = lock/unlock (Bildschirmsperrstatus)<br>• Performance mode hooks: Keine Parameter<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-label": "Verfügbare Parameter",
"noctalia-started-description": "Befehl, der ausgeführt wird, wenn Noctalia vollständig geladen wurde.",
"noctalia-started-label": "Noctalia gestartet",
+8 -2
View File
@@ -1296,8 +1296,12 @@
"settings-annotation-tool-placeholder": "e.g. 'gradia', 'satty -f -'",
"settings-auto-paste-description": "Automatically paste the selected clipboard item. Requires wtype.",
"settings-auto-paste-label": "Auto paste",
"settings-clip-chips-description": "Show a tab bar to filter clipboard history by type (Images, Links, Files, Code, etc).",
"settings-clip-chips-label": "Enable Category Chips",
"settings-clip-preview-description": "Show a preview of the clipboard content when using the >clip command.",
"settings-clip-preview-label": "Enable clip preview",
"settings-clip-smart-icons-description": "Show specific icons for links, files, colors, and code instead of a generic clipboard icon.",
"settings-clip-smart-icons-label": "Enable Smart Icons",
"settings-clip-wrap-text-description": "Wrap text in the clipboard list instead of truncating it.",
"settings-clip-wrap-text-label": "Wrap clipboard text",
"settings-clipboard-history-description": "Access previously copied items from the launcher.",
@@ -1845,8 +1849,8 @@
},
"toast": {
"airplane-mode": {
"title": "Airplane Mode",
"description": "Disable all wireless communications."
"description": "Disable all wireless communications.",
"title": "Airplane Mode"
},
"battery": {
"critical": "Critical battery",
@@ -2132,6 +2136,7 @@
"wifi": {
"panel": {
"action-required": "Action required",
"add-hidden-network": "Add hidden network",
"available-interfaces": "Available interfaces",
"available-networks": "Available networks",
"disabled": "WiFi is disabled",
@@ -2150,6 +2155,7 @@
"ipv6": "IPv6",
"known-networks": "Known networks",
"link-speed": "Link speed",
"network-name-ssid": "Network name (SSID)",
"no-ethernet-devices": "No Ethernet devices detected",
"no-networks": "No WiFi networks found",
"saved": "Saved",
+2 -2
View File
@@ -1151,7 +1151,7 @@
"appearance-show-launcher-icon-label": "Mostrar lanzador de aplicaciones",
"appearance-sit-on-frame-description": "Alinear el dock dentro del borde del marco en lugar de que se superponga.",
"appearance-sit-on-frame-label": "El Dock se asienta en el marco",
"appearance-type-attached": "Estático",
"appearance-type-attached": "Anclado",
"appearance-type-description": "Elige entre una barra flotante con forma de píldora o una barra estática anclada al borde.",
"appearance-type-floating": "Flotante",
"appearance-type-label": "Estilo del dock",
@@ -1220,7 +1220,7 @@
},
"hooks": {
"info-command-info-description": "• Los comandos se ejecutan a través de shell (sh -lc)<br>• Los comandos se ejecutan en segundo plano (desvinculados)<br>• Los botones de prueba se ejecutan con los valores actuales",
"info-parameters-description": "• Wallpaper hook: $1 = ruta del fondo de pantalla, $2 = nombre de la pantalla, $3 = tema (oscuro/claro)<br>• Theme toggle hook: $1 = true/false (estado de Dark Mode)<br>• Screen lock/unlock hooks: $1 = lock/unlock (estado de bloqueo de pantalla)<br>• Performance mode hooks: Sin parámetros<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-description": "• Wallpaper hook: $1 = ruta del fondo de pantalla, $2 = nombre de la pantalla, $3 = tema (oscuro/claro)<br>• Theme toggle hook: $1 = true/false (estado del modo oscuro)<br>• Screen lock/unlock hooks: $1 = lock/unlock (estado de bloqueo de pantalla)<br>• Performance mode hooks: Sin parámetros<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-label": "Parámetros disponibles",
"noctalia-started-description": "Comando para ejecutar cuando Noctalia ha terminado de cargarse.",
"noctalia-started-label": "Noctalia iniciado",
+2 -2
View File
@@ -1151,7 +1151,7 @@
"appearance-show-launcher-icon-label": "Afficher le Lanceur d'applications",
"appearance-sit-on-frame-description": "Aligner le dock à l'intérieur de la bordure du cadre au lieu qu'il se superpose.",
"appearance-sit-on-frame-label": "Le dock est sur le cadre",
"appearance-type-attached": "Statique",
"appearance-type-attached": "Ancré",
"appearance-type-description": "Choisissez entre une barre flottante en forme de pilule ou une barre statique attachée au bord.",
"appearance-type-floating": "Flottant",
"appearance-type-label": "Style du dock",
@@ -1220,7 +1220,7 @@
},
"hooks": {
"info-command-info-description": "• Les commandes sont exécutées via le shell (sh -lc)<br>• Les commandes s'exécutent en arrière-plan (détachées)<br>• Les boutons de test s'exécutent avec les valeurs actuelles",
"info-parameters-description": "• Wallpaper hook: $1 = chemin du fond d'écran, $2 = nom de l'écran, $3 = thème (sombre/clair)<br>• Theme toggle hook: $1 = true/false (état du Dark Mode)<br>• Screen lock/unlock hooks: $1 = lock/unlock (état de verrouillage de l'écran)<br>• Performance mode hooks: Aucun paramètre<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-description": "• Wallpaper hook: $1 = chemin du fond d'écran, $2 = nom de l'écran, $3 = thème (sombre/clair)<br>• Theme toggle hook: $1 = true/false (état du mode sombre)<br>• Screen lock/unlock hooks: $1 = lock/unlock (état de verrouillage de l'écran)<br>• Performance mode hooks: Aucun paramètre<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-label": "Paramètres disponibles",
"noctalia-started-description": "Commande à exécuter lorsque Noctalia a fini de charger.",
"noctalia-started-label": "Noctalia démarré",
+2 -2
View File
@@ -1151,7 +1151,7 @@
"appearance-show-launcher-icon-label": "Alkalmazásindító megjelenítése",
"appearance-sit-on-frame-description": "Igazítsa a dokkot a keret szegélyén belülre, ahelyett, hogy a tetején ülne.",
"appearance-sit-on-frame-label": "A dokk a kereten ül",
"appearance-type-attached": "Statikus",
"appearance-type-attached": "Rögzített",
"appearance-type-description": "Lebegő, kapszula alakú sáv vagy statikus, a szélhez rögzített sáv.",
"appearance-type-floating": "Lebegő",
"appearance-type-label": "Dokk stílus",
@@ -1220,7 +1220,7 @@
},
"hooks": {
"info-command-info-description": "• A parancsok shellen keresztül futnak (sh -lc)<br>• A parancsok a háttérben futnak (leválasztva)<br>• A tesztgombok az aktuális értékekkel futnak le",
"info-parameters-description": "• Wallpaper hook: $1 = háttérkép útvonala, $2 = képernyő neve, $3 = téma (sötét/világos)<br>• Theme toggle hook: $1 = true/false (Dark Mode állapot)<br>• Screen lock/unlock hooks: $1 = lock/unlock (képernyőzár állapot)<br>• Performance mode hooks: Nincs paraméter<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-description": "• Wallpaper hook: $1 = háttérkép útvonala, $2 = képernyő neve, $3 = téma (sötét/világos)<br>• Theme toggle hook: $1 = true/false (sötét mód állapot)<br>• Screen lock/unlock hooks: $1 = lock/unlock (képernyőzár állapot)<br>• Performance mode hooks: Nincs paraméter<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-label": "Elérhető paraméterek",
"noctalia-started-description": "Parancs, ami akkor fut le, amikor a Noctalia betöltése befejeződött.",
"noctalia-started-label": "Noctalia elindult",
+4 -4
View File
@@ -901,8 +901,8 @@
"color-scheme": {
"color-source-use-wallpaper-colors-description": "Genera schemi colore dal tuo sfondo. Estrae automaticamente i colori per creare un tema coerente.",
"color-source-use-wallpaper-colors-label": "Usa colori dello sfondo",
"dark-mode-mode-description": "Abilita il passaggio automatico tra Modalità Chiara e Scura.",
"dark-mode-mode-label": "Programmazione Modalità Scura",
"dark-mode-mode-description": "Abilita il passaggio automatico tra modalità chiara e scura.",
"dark-mode-mode-label": "Programmazione modalità scura",
"dark-mode-mode-manual": "Manuale",
"dark-mode-mode-off": "Disattivata",
"dark-mode-switch-description": "Passa a un tema più scuro per una visione più confortevole di notte.",
@@ -1151,7 +1151,7 @@
"appearance-show-launcher-icon-label": "Mostra launcher app",
"appearance-sit-on-frame-description": "Allinea il dock dentro il bordo frame invece di posizionarlo sopra.",
"appearance-sit-on-frame-label": "Dock sul frame",
"appearance-type-attached": "Statico",
"appearance-type-attached": "Ancorato",
"appearance-type-description": "Scegli tra pill flottante o barra statica agganciata al bordo.",
"appearance-type-floating": "Flottante",
"appearance-type-label": "Stile dock",
@@ -1220,7 +1220,7 @@
},
"hooks": {
"info-command-info-description": "• I comandi vengono eseguiti via shell (sh -lc)<br>• I comandi girano in background (staccati)<br>• I pulsanti test eseguono con i valori correnti",
"info-parameters-description": "• Wallpaper hook: $1 = percorso dello sfondo, $2 = nome dello schermo, $3 = tema (scuro/chiaro)<br>• Theme toggle hook: $1 = true/false (stato Dark Mode)<br>• Screen lock/unlock hooks: $1 = lock/unlock (stato di blocco schermo)<br>• Performance mode hooks: Nessun parametro<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-description": "• Wallpaper hook: $1 = percorso dello sfondo, $2 = nome dello schermo, $3 = tema (scuro/chiaro)<br>• Theme toggle hook: $1 = true/false (stato della modalità scura)<br>• Screen lock/unlock hooks: $1 = lock/unlock (stato di blocco schermo)<br>• Performance mode hooks: Nessun parametro<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-label": "Parametri disponibili",
"noctalia-started-description": "Comando da eseguire quando Noctalia ha finito il caricamento.",
"noctalia-started-label": "Noctalia avviata",
+2 -2
View File
@@ -1151,7 +1151,7 @@
"appearance-show-launcher-icon-label": "アプリランチャーを表示",
"appearance-sit-on-frame-description": "ドックをフレームの境界の内側に配置し、上部に重ならないようにします。",
"appearance-sit-on-frame-label": "ドックはフレームに配置",
"appearance-type-attached": "静的",
"appearance-type-attached": "ドッキング",
"appearance-type-description": "浮動するピル型、または端に固定された静的バーのどちらかを選択してください。",
"appearance-type-floating": "フローティング",
"appearance-type-label": "ドックスタイル",
@@ -1220,7 +1220,7 @@
},
"hooks": {
"info-command-info-description": "• コマンドはシェル (sh -lc) 経由で実行されます<br>• コマンドはバックグラウンドで実行されます<br>• テストボタンは現在の設定値を使って実行されます",
"info-parameters-description": "• Wallpaper hook: $1 = 壁紙のパス, $2 = 画面名, $3 = テーマ (ダーク/ライト)<br>• Theme toggle hook: $1 = true/false (Dark Mode の状態)<br>• Screen lock/unlock hooks: $1 = lock/unlock (画面ロックの状態)<br>• Performance mode hooks: パラメータなし<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-description": "• Wallpaper hook: $1 = 壁紙のパス, $2 = 画面名, $3 = テーマ (ダーク/ライト)<br>• Theme toggle hook: $1 = true/false (ダークモードの状態)<br>• Screen lock/unlock hooks: $1 = lock/unlock (画面ロックの状態)<br>• Performance mode hooks: パラメータなし<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-label": "利用可能なパラメータ(引数)",
"noctalia-started-description": "Noctaliaのロードが完了したときに実行するコマンド。",
"noctalia-started-label": "Noctalia が起動しました",
+2 -2
View File
@@ -1151,7 +1151,7 @@
"appearance-show-launcher-icon-label": "앱 런처 표시",
"appearance-sit-on-frame-description": "독을 프레임 테두리 내부에 정렬하고, 위에 놓이지 않도록 합니다.",
"appearance-sit-on-frame-label": "독은 프레임에 위치",
"appearance-type-attached": "정적",
"appearance-type-attached": "고정됨",
"appearance-type-description": "플로팅 필 형태 또는 가장자리에 고정된 고정 바 중에서 선택하세요.",
"appearance-type-floating": "플로팅",
"appearance-type-label": "독 스타일",
@@ -1220,7 +1220,7 @@
},
"hooks": {
"info-command-info-description": "• 명령은 셸(sh -lc)을 통해 실행됩니다.<br>• 명령은 백그라운드(detached)에서 실행됩니다.<br>• 테스트 버튼은 현재 값으로 실행됩니다.",
"info-parameters-description": "• Wallpaper hook: $1 = 배경화면 경로, $2 = 화면 이름, $3 = 테마 (어둡게/밝게)<br>• Theme toggle hook: $1 = true/false (Dark Mode 상태)<br>• Screen lock/unlock hooks: $1 = lock/unlock (화면 잠금 상태)<br>• Performance mode hooks: 매개변수 없음<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-description": "• Wallpaper hook: $1 = 배경화면 경로, $2 = 화면 이름, $3 = 테마 (어둡게/밝게)<br>• Theme toggle hook: $1 = true/false (다크 모드 상태)<br>• Screen lock/unlock hooks: $1 = lock/unlock (화면 잠금 상태)<br>• Performance mode hooks: 매개변수 없음<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-label": "사용 가능한 매개변수",
"noctalia-started-description": "Noctalia 로딩이 완료되었을 때 실행할 명령입니다.",
"noctalia-started-label": "Noctalia 시작됨",
+2 -2
View File
@@ -1151,7 +1151,7 @@
"appearance-show-launcher-icon-label": "Toon app-starter",
"appearance-sit-on-frame-description": "Lijn het dock uit binnen de kadergrens, in plaats van erbovenop te liggen.",
"appearance-sit-on-frame-label": "Dock zit op het frame",
"appearance-type-attached": "Statisch",
"appearance-type-attached": "Gedockt",
"appearance-type-description": "Kies tussen een zwevende pilvorm of een statische balk die aan de rand is bevestigd.",
"appearance-type-floating": "Zwevend",
"appearance-type-label": "Dockstijl",
@@ -1220,7 +1220,7 @@
},
"hooks": {
"info-command-info-description": "• Commando's worden uitgevoerd via shell (sh -lc)<br>• Commando's draaien op de achtergrond (losgekoppeld)<br>• Testknoppen worden uitgevoerd met de huidige waarden",
"info-parameters-description": "• Wallpaper hook: $1 = achtergrondpad, $2 = schermnaam, $3 = thema (donker/licht)<br>• Theme toggle hook: $1 = true/false (Dark Mode status)<br>• Screen lock/unlock hooks: $1 = lock/unlock (schermvergrendelingsstatus)<br>• Performance mode hooks: Geen parameters<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-description": "• Wallpaper hook: $1 = achtergrondpad, $2 = schermnaam, $3 = thema (donker/licht)<br>• Theme toggle hook: $1 = true/false (donkere modus-status)<br>• Screen lock/unlock hooks: $1 = lock/unlock (schermvergrendelingsstatus)<br>• Performance mode hooks: Geen parameters<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-label": "Beschikbare parameters",
"noctalia-started-description": "Opdracht die moet worden uitgevoerd wanneer Noctalia volledig is geladen.",
"noctalia-started-label": "Noctalia gestart",
+2 -2
View File
@@ -1151,7 +1151,7 @@
"appearance-show-launcher-icon-label": "Pokaż launcher aplikacji",
"appearance-sit-on-frame-description": "Wyrównaj dock wewnątrz ramki, zamiast umieszczać go na wierzchu.",
"appearance-sit-on-frame-label": "Dock znajduje się na ramce",
"appearance-type-attached": "Statyczny",
"appearance-type-attached": "Zadokowany",
"appearance-type-description": "Wybierz pomiędzy pływającą pigułką a statycznym paskiem przymocowanym do krawędzi.",
"appearance-type-floating": "Pływający",
"appearance-type-label": "Styl docka",
@@ -1220,7 +1220,7 @@
},
"hooks": {
"info-command-info-description": "• Polecenia są wykonywane przez powłokę (sh -lc)<br>• Polecenia działają w tle (detached)<br>• Przyciski testowe wykonują się z aktualnymi wartościami",
"info-parameters-description": "• Wallpaper hook: $1 = ścieżka tapety, $2 = nazwa ekranu, $3 = motyw (ciemny/jasny)<br>• Theme toggle hook: $1 = true/false (stan Dark Mode)<br>• Screen lock/unlock hooks: $1 = lock/unlock (stan blokady ekranu)<br>• Performance mode hooks: Brak parametrów<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-description": "• Wallpaper hook: $1 = ścieżka tapety, $2 = nazwa ekranu, $3 = motyw (ciemny/jasny)<br>• Theme toggle hook: $1 = true/false (stan trybu ciemnego)<br>• Screen lock/unlock hooks: $1 = lock/unlock (stan blokady ekranu)<br>• Performance mode hooks: Brak parametrów<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-label": "Dostępne parametry",
"noctalia-started-description": "Polecenie do wykonania po zakończeniu ładowania Noctalii.",
"noctalia-started-label": "Noctalia uruchomiona",
+2 -2
View File
@@ -1151,7 +1151,7 @@
"appearance-show-launcher-icon-label": "Mostrar lançador de aplicações",
"appearance-sit-on-frame-description": "Alinhe o dock dentro da borda do quadro em vez de ficar por cima.",
"appearance-sit-on-frame-label": "O dock fica no quadro",
"appearance-type-attached": "Estático",
"appearance-type-attached": "Ancorado",
"appearance-type-description": "Escolha entre uma pílula flutuante ou uma barra estática anexada à borda.",
"appearance-type-floating": "Flutuante",
"appearance-type-label": "Estilo do dock",
@@ -1220,7 +1220,7 @@
},
"hooks": {
"info-command-info-description": "• Comandos são executados via shell (sh -lc)<br>• Comandos rodam em segundo plano (desanexados)<br>• Botões de teste executam com os valores atuais",
"info-parameters-description": "• Wallpaper hook: $1 = caminho do papel de parede, $2 = nome da tela, $3 = tema (escuro/claro)<br>• Theme toggle hook: $1 = true/false (estado do Dark Mode)<br>• Screen lock/unlock hooks: $1 = lock/unlock (estado de bloqueio de tela)<br>• Performance mode hooks: Sem parâmetros<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-description": "• Wallpaper hook: $1 = caminho do papel de parede, $2 = nome da tela, $3 = tema (escuro/claro)<br>• Theme toggle hook: $1 = true/false (estado do modo escuro)<br>• Screen lock/unlock hooks: $1 = lock/unlock (estado de bloqueio de tela)<br>• Performance mode hooks: Sem parâmetros<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-label": "Parâmetros disponíveis",
"noctalia-started-description": "Comando para executar quando o Noctalia terminar de carregar.",
"noctalia-started-label": "Noctalia iniciado",
+2 -2
View File
@@ -1151,7 +1151,7 @@
"appearance-show-launcher-icon-label": "Показать панель запуска приложений",
"appearance-sit-on-frame-description": "Выровнять док внутри границы рамки, а не поверх нее.",
"appearance-sit-on-frame-label": "док располагается на рамке",
"appearance-type-attached": "Статический",
"appearance-type-attached": "Закреплённая",
"appearance-type-description": "Выберите между плавающей пилюлей или статической панелью, прикрепленной к краю.",
"appearance-type-floating": "Плавающий",
"appearance-type-label": "Стиль дока",
@@ -1220,7 +1220,7 @@
},
"hooks": {
"info-command-info-description": "• Команды выполняются через shell (sh -lc)<br>• Команды выполняются в фоновом режиме (отдельно)<br>• Кнопки 'Тест' выполняются с текущими значениями",
"info-parameters-description": "• Wallpaper hook: $1 = путь к обоям, $2 = имя экрана, $3 = тема (темная/светлая)<br>• Theme toggle hook: $1 = true/false (состояние Dark Mode)<br>• Screen lock/unlock hooks: $1 = lock/unlock (состояние блокировки экрана)<br>• Performance mode hooks: Без параметров<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-description": "• Wallpaper hook: $1 = путь к обоям, $2 = имя экрана, $3 = тема (темная/светлая)<br>• Theme toggle hook: $1 = true/false (состояние тёмного режима)<br>• Screen lock/unlock hooks: $1 = lock/unlock (состояние блокировки экрана)<br>• Performance mode hooks: Без параметров<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-label": "Доступные параметры",
"noctalia-started-description": "Команда для выполнения после завершения загрузки Noctalia.",
"noctalia-started-label": "Noctalia запущена",
+2 -2
View File
@@ -1151,7 +1151,7 @@
"appearance-show-launcher-icon-label": "Visa appstartare",
"appearance-sit-on-frame-description": "Justera dockan innanför ramkanten istället för att ligga ovanpå.",
"appearance-sit-on-frame-label": "Dockan sitter på ramen",
"appearance-type-attached": "Statisk",
"appearance-type-attached": "Dockad",
"appearance-type-description": "Välj mellan en flytande pillerform eller en statisk stapel fäst vid kanten.",
"appearance-type-floating": "Flytande",
"appearance-type-label": "Dockstil",
@@ -1220,7 +1220,7 @@
},
"hooks": {
"info-command-info-description": "• Kommandon exekveras via shell (sh -lc)<br>• Kommandon körs i bakgrunden (fristående)<br>• Testknappar exekveras med aktuella värden",
"info-parameters-description": "• Wallpaper hook: $1 = bakgrundsbildens sökväg, $2 = skärmnamn, $3 = tema (mörkt/ljust)<br>• Theme toggle hook: $1 = true/false (Dark Mode-status)<br>• Screen lock/unlock hooks: $1 = lock/unlock (skärmlåsstatus)<br>• Performance mode hooks: Inga parametrar<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-description": "• Wallpaper hook: $1 = bakgrundsbildens sökväg, $2 = skärmnamn, $3 = tema (mörkt/ljust)<br>• Theme toggle hook: $1 = true/false (mörkt lägestatus)<br>• Screen lock/unlock hooks: $1 = lock/unlock (skärmlåsstatus)<br>• Performance mode hooks: Inga parametrar<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-label": "Tillgängliga parametrar",
"noctalia-started-description": "Kommando som ska utföras när Noctalia har laddats klart.",
"noctalia-started-label": "Noctalia startat",
+2 -2
View File
@@ -1151,7 +1151,7 @@
"appearance-show-launcher-icon-label": "Uygulama başlatıcıyı göster",
"appearance-sit-on-frame-description": "Dock'u çerçevenin kenar boşluğunun içine hizalayın, üstüne oturmak yerine.",
"appearance-sit-on-frame-label": "Dock çerçevede yer alır",
"appearance-type-attached": "Statik",
"appearance-type-attached": "Sabitlenmiş",
"appearance-type-description": "Yüzen bir hap veya kenara bağlı sabit bir çubuk arasından seçim yapın.",
"appearance-type-floating": "Yüzen",
"appearance-type-label": "Dock stili",
@@ -1220,7 +1220,7 @@
},
"hooks": {
"info-command-info-description": "• Komutlar kabuk (sh -lc) ile yürütülür<br>• Komutlar arka planda yürütülür (ayrık)<br>• Test düğmeleri mevcut değerlerle yürütülür",
"info-parameters-description": "• Wallpaper hook: $1 = duvar kağıdı yolu, $2 = ekran adı, $3 = tema (koyu/açık)<br>• Theme toggle hook: $1 = true/false (Dark Mode durumu)<br>• Screen lock/unlock hooks: $1 = lock/unlock (ekran kilidi durumu)<br>• Performance mode hooks: Parametre yok<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-description": "• Wallpaper hook: $1 = duvar kağıdı yolu, $2 = ekran adı, $3 = tema (koyu/açık)<br>• Theme toggle hook: $1 = true/false (koyu mod durumu)<br>• Screen lock/unlock hooks: $1 = lock/unlock (ekran kilidi durumu)<br>• Performance mode hooks: Parametre yok<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-label": "Kullanılabilir parametreler",
"noctalia-started-description": "Noctalia yüklendiğinde çalıştırılacak komut.",
"noctalia-started-label": "Noctalia başladı",
+2 -2
View File
@@ -1151,7 +1151,7 @@
"appearance-show-launcher-icon-label": "Показати запуск програм",
"appearance-sit-on-frame-description": "Вирівняйте док всередині межі рамки, а не поверх неї.",
"appearance-sit-on-frame-label": "Док розміщується на рамці",
"appearance-type-attached": "Статичний",
"appearance-type-attached": "Закріплена",
"appearance-type-description": "Виберіть між плаваючою пігулкою або статичною панеллю, прикріпленою до краю.",
"appearance-type-floating": "Плаваючий",
"appearance-type-label": "Стиль дока",
@@ -1220,7 +1220,7 @@
},
"hooks": {
"info-command-info-description": "• Команди виконуються через оболонку (sh -lc)<br>• Команди запускаються у фоні (відокремлено)<br>• Кнопки тестування виконують команди з поточними значеннями",
"info-parameters-description": "• Wallpaper hook: $1 = шлях до шпалер, $2 = назва екрана, $3 = тема (темна/світла)<br>• Theme toggle hook: $1 = true/false (стан Dark Mode)<br>• Screen lock/unlock hooks: $1 = lock/unlock (стан блокування екрана)<br>• Performance mode hooks: Без параметрів<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-description": "• Wallpaper hook: $1 = шлях до шпалер, $2 = назва екрана, $3 = тема (темна/світла)<br>• Theme toggle hook: $1 = true/false (стан темного режиму)<br>• Screen lock/unlock hooks: $1 = lock/unlock (стан блокування екрана)<br>• Performance mode hooks: Без параметрів<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-label": "Доступні параметри",
"noctalia-started-description": "Команда для виконання після завершення завантаження Noctalia.",
"noctalia-started-label": "Noctalia запущено",
+2 -2
View File
@@ -1151,7 +1151,7 @@
"appearance-show-launcher-icon-label": "显示应用启动器",
"appearance-sit-on-frame-description": "将停靠栏对齐在框架边框内,而不是位于顶部。",
"appearance-sit-on-frame-label": "停靠栏位于框架上",
"appearance-type-attached": "静态",
"appearance-type-attached": "停靠",
"appearance-type-description": "选择浮动药丸样式或附着在边缘的静态栏。",
"appearance-type-floating": "浮动",
"appearance-type-label": "Dock 样式",
@@ -1220,7 +1220,7 @@
},
"hooks": {
"info-command-info-description": "• 命令通过 shell 执行(sh -lc<br>• 命令在后台运行(分离)<br>• 测试按钮使用当前值执行",
"info-parameters-description": "• Wallpaper hook: $1 = 壁纸路径, $2 = 屏幕名称, $3 = 主题 (深色/浅色)<br>• Theme toggle hook: $1 = true/false (Dark Mode 状态)<br>• Screen lock/unlock hooks: $1 = lock/unlock (屏幕锁定状态)<br>• Performance mode hooks: 无参数<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-description": "• Wallpaper hook: $1 = 壁纸路径, $2 = 屏幕名称, $3 = 主题 (深色/浅色)<br>• Theme toggle hook: $1 = true/false (深色模式状态)<br>• Screen lock/unlock hooks: $1 = lock/unlock (屏幕锁定状态)<br>• Performance mode hooks: 无参数<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-label": "可用参数",
"noctalia-started-description": "Noctalia 加载完成后要执行的命令。",
"noctalia-started-label": "Noctalia 已启动",
+2 -2
View File
@@ -1151,7 +1151,7 @@
"appearance-show-launcher-icon-label": "顯示應用程式啟動器",
"appearance-sit-on-frame-description": "將停靠欄對齊在框架邊框內,而不是位於頂部。",
"appearance-sit-on-frame-label": "停靠欄位於框架上",
"appearance-type-attached": "靜態",
"appearance-type-attached": "停靠",
"appearance-type-description": "選擇浮動藥丸樣式或附著在邊緣的靜態列。",
"appearance-type-floating": "浮動",
"appearance-type-label": "Dock 樣式",
@@ -1220,7 +1220,7 @@
},
"hooks": {
"info-command-info-description": "• 指令將透過 shell (sh -lc) 執行<br>• 指令會在背景 (detached 狀態) 執行<br>• 測試按鈕會以當下填寫的內容執行",
"info-parameters-description": "• Wallpaper hook: $1 = 桌面背景路徑, $2 = 螢幕名稱, $3 = 主題 (深色/淺色)<br>• Theme toggle hook: $1 = true/false (Dark Mode 狀態)<br>• Screen lock/unlock hooks: $1 = lock/unlock (螢幕鎖定狀態)<br>• Performance mode hooks: 無參數<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-description": "• Wallpaper hook: $1 = 桌面背景路徑, $2 = 螢幕名稱, $3 = 主題 (深色/淺色)<br>• Theme toggle hook: $1 = true/false (深色模式狀態)<br>• Screen lock/unlock hooks: $1 = lock/unlock (螢幕鎖定狀態)<br>• Performance mode hooks: 無參數<br>• Session hook: $1 = action (shutdown/reboot)",
"info-parameters-label": "可用參數",
"noctalia-started-description": "Noctalia 完成載入時要執行的指令。",
"noctalia-started-label": "Noctalia 已啟動",
+2
View File
@@ -231,6 +231,8 @@
"autoPasteClipboard": false,
"enableClipPreview": true,
"clipboardWrapText": true,
"enableClipboardSmartIcons": true,
"enableClipboardChips": true,
"clipboardWatchTextCommand": "wl-paste --type text --watch cliphist store",
"clipboardWatchImageCommand": "wl-paste --type image --watch cliphist store",
"position": "center",
+71 -2
View File
@@ -669,7 +669,7 @@
]
},
{
"labelKey": "toast.airplane-mode.title",
"labelKey": "common.wifi",
"descriptionKey": null,
"widget": "NToggle",
"tab": 16,
@@ -678,14 +678,65 @@
"subTabLabel": "common.wifi"
},
{
"labelKey": "common.wifi",
"labelKey": "common.connected",
"descriptionKey": null,
"widget": "NLabel",
"tab": 16,
"tabLabel": "panels.connections.title",
"subTab": 0,
"subTabLabel": "common.wifi"
},
{
"labelKey": "wifi.panel.known-networks",
"descriptionKey": null,
"widget": "NLabel",
"tab": 16,
"tabLabel": "panels.connections.title",
"subTab": 0,
"subTabLabel": "common.wifi"
},
{
"labelKey": "wifi.panel.available-networks",
"descriptionKey": null,
"widget": "NLabel",
"tab": 16,
"tabLabel": "panels.connections.title",
"subTab": 0,
"subTabLabel": "common.wifi"
},
{
"labelKey": "toast.airplane-mode.title",
"descriptionKey": "toast.airplane-mode.description",
"widget": "NToggle",
"tab": 16,
"tabLabel": "panels.connections.title",
"subTab": 0,
"subTabLabel": "common.wifi"
},
{
"labelKey": "wifi.panel.network-name-ssid",
"descriptionKey": null,
"widget": "NTextInput",
"tab": 16,
"tabLabel": "panels.connections.title",
"subTab": 0,
"subTabLabel": "common.wifi",
"visibleWhen": [
"false"
]
},
{
"labelKey": "common.password",
"descriptionKey": null,
"widget": "NTextInput",
"tab": 16,
"tabLabel": "panels.connections.title",
"subTab": 0,
"subTabLabel": "common.wifi",
"visibleWhen": [
"false"
]
},
{
"labelKey": "common.position",
"descriptionKey": "panels.control-center.position-description",
@@ -1284,6 +1335,24 @@
"subTab": 1,
"subTabLabel": "common.clipboard"
},
{
"labelKey": "panels.launcher.settings-clip-smart-icons-label",
"descriptionKey": "panels.launcher.settings-clip-smart-icons-description",
"widget": "NToggle",
"tab": 8,
"tabLabel": "panels.launcher.title",
"subTab": 1,
"subTabLabel": "common.clipboard"
},
{
"labelKey": "panels.launcher.settings-clip-chips-label",
"descriptionKey": "panels.launcher.settings-clip-chips-description",
"widget": "NToggle",
"tab": 8,
"tabLabel": "panels.launcher.title",
"subTab": 1,
"subTabLabel": "common.clipboard"
},
{
"labelKey": "panels.launcher.settings-clipboard-watch-text-label",
"descriptionKey": "panels.launcher.settings-clipboard-watch-text-description",
+2
View File
@@ -420,6 +420,8 @@ Singleton {
property bool autoPasteClipboard: false
property bool enableClipPreview: true
property bool clipboardWrapText: true
property bool enableClipboardSmartIcons: true
property bool enableClipboardChips: true
property string clipboardWatchTextCommand: "wl-paste --type text --watch cliphist store"
property string clipboardWatchImageCommand: "wl-paste --type image --watch cliphist store"
property string position: "center" // Position: center, top_left, top_right, bottom_left, bottom_right, bottom_center, top_center
+3 -2
View File
@@ -113,9 +113,9 @@ Item {
if (useFixedWidth)
return maxWidth;
// Calculate icon/art width
// Calculate icon/art width (must match RowLayout visibility)
var iconWidth = 0;
if (!hasPlayer || (!showAlbumArt && !showProgressRing)) {
if (!hasPlayer) {
iconWidth = iconSize;
} else if (showAlbumArt || showProgressRing) {
iconWidth = artSize;
@@ -126,6 +126,7 @@ Item {
// Add spacing and text width
var textWidth = 0;
if (titleContainer.measuredWidth > 0) {
if (iconWidth > 0)
margins += Style.marginS;
textWidth = titleContainer.measuredWidth + Style.margin2XXS;
}
+4
View File
@@ -172,6 +172,7 @@ Rectangle {
// Custom Clock (Stacked)
ColumnLayout {
anchors.centerIn: parent
width: parent.width
visible: Settings.data.general.clockStyle === "custom"
spacing: -3
@@ -182,8 +183,11 @@ Rectangle {
pointSize: Style.fontSizeL
font.weight: Style.fontWeightBold
color: Color.mOnSurface
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignHCenter
Layout.alignment: Qt.AlignHCenter
Layout.maximumWidth: parent.width
Layout.fillWidth: true
}
}
}
+1 -1
View File
@@ -65,7 +65,7 @@ Rectangle {
readonly property int badgeSize: Math.round(effectiveIconSize * Style.uiScaleRatio)
readonly property int entryHeight: Math.round(badgeSize + (launcherDensity === "compact" ? (Style.marginL + Style.marginXXS) : (Style.marginXL + Style.marginS)))
readonly property bool providerShowsCategories: currentProvider.showsCategories === true
readonly property bool providerShowsCategories: (currentProvider.showsCategories !== undefined ? currentProvider.showsCategories : true) && providerCategories.length > 0
readonly property var providerCategories: {
if (currentProvider.availableCategories && currentProvider.availableCategories.length > 0) {
@@ -2,6 +2,7 @@ import QtQuick
import Quickshell
import qs.Commons
import qs.Services.Keyboard
import qs.Services.Noctalia
Item {
id: root
@@ -23,6 +24,28 @@ Item {
// Image handling - expose revision for reactive updates in delegates
readonly property int imageRevision: ClipboardService.revision
// Categories
property var availableCategories: Settings.data.appLauncher.enableClipboardChips ? ["All", "Images", "Links", "Files", "Code", "Colors"] : []
property string selectedCategory: "All"
function selectCategory(cat) {
if (selectedCategory !== cat) {
selectedCategory = cat;
if (launcher) {
launcher.updateResults();
}
}
}
property var categoryIcons: {
"All": iconMode === "tabler" ? "border-all" : "view-grid",
"Images": iconMode === "tabler" ? "photo" : "image",
"Links": iconMode === "tabler" ? "link" : "insert-link",
"Files": iconMode === "tabler" ? "file" : "text-x-generic",
"Code": iconMode === "tabler" ? "code" : "text-x-script",
"Colors": iconMode === "tabler" ? "palette" : "color-picker"
}
// Internal state
property bool isWaitingForData: false
property bool gotResults: false
@@ -199,8 +222,25 @@ Item {
// Search clipboard items
const searchTerm = query.toLowerCase();
const now = Date.now() / 1000;
const catMap = {
"Images": "image",
"Links": "link",
"Files": "file",
"Code": "code",
"Colors": "color"
};
// Filter and format results
items.forEach(function (item) {
// Category filter
if (Settings.data.appLauncher.enableClipboardChips && root.selectedCategory !== "All") {
if (item.contentType !== catMap[root.selectedCategory]) {
return;
}
}
const preview = (item.preview || "").toLowerCase();
// Skip if search term doesn't match
@@ -208,12 +248,14 @@ Item {
return;
}
const firstSeen = ClipboardService.firstSeenById[item.id] || now;
// Format the result based on type
let entry;
if (item.isImage) {
entry = formatImageEntry(item);
entry = formatImageEntry(item, firstSeen);
} else {
entry = formatTextEntry(item);
entry = formatTextEntry(item, firstSeen);
}
// Add activation handler
@@ -249,12 +291,16 @@ Item {
return results;
}
function formatImageEntry(item) {
function formatImageEntry(item, firstSeen) {
const meta = ClipboardService.parseImageMeta(item.preview);
const timeStr = Time.formatRelativeTime(new Date(firstSeen * 1000));
let desc = meta ? `${meta.fmt} ${meta.size}` : item.mime || "Image data";
if (timeStr)
desc += ` ${timeStr}`;
return {
"name": meta ? `Image ${meta.w}×${meta.h}` : "Image",
"description": meta ? `${meta.fmt} ${meta.size}` : item.mime || "Image data",
"description": desc,
"icon": iconMode === "tabler" ? "photo" : "image",
"isTablerIcon": true,
"isImage": true,
@@ -267,7 +313,7 @@ Item {
};
}
function formatTextEntry(item) {
function formatTextEntry(item, firstSeen) {
const preview = (item.preview || "").trim();
const lines = preview.split('\n').filter(l => l.trim());
@@ -293,14 +339,35 @@ Item {
}
}
const timeStr = Time.formatRelativeTime(new Date(firstSeen * 1000));
if (timeStr)
description += ` ${timeStr}`;
let defaultIcon = iconMode === "tabler" ? "clipboard" : "text-x-generic";
let colorHex = "";
if (Settings.data.appLauncher.enableClipboardSmartIcons) {
if (item.contentType === "link")
defaultIcon = iconMode === "tabler" ? "link" : "insert-link";
else if (item.contentType === "file")
defaultIcon = iconMode === "tabler" ? "file" : "text-x-generic";
else if (item.contentType === "code")
defaultIcon = iconMode === "tabler" ? "code" : "text-x-script";
else if (item.contentType === "color") {
defaultIcon = iconMode === "tabler" ? "palette" : "color-picker";
colorHex = preview;
}
}
return {
"name": title,
"description": description,
"icon": iconMode === "tabler" ? "clipboard" : "text-x-generic",
"icon": defaultIcon,
"isTablerIcon": true,
"isImage": false,
"clipboardId": item.id,
"preview": preview,
"contentType": item.contentType,
"colorHex": colorHex,
"provider": root
};
}
@@ -284,7 +284,7 @@ Item {
// Auto-scan timer when panel is visible
Timer {
id: autoScanTimer
interval: 15000 // Scan every 15s
interval: 5000
running: root.effectivelyVisible && Settings.data.network.wifiEnabled
repeat: true
onTriggered: NetworkService.scan()
@@ -45,6 +45,24 @@ ColumnLayout {
enabled: Settings.data.appLauncher.enableClipboardHistory && ProgramCheckerService.wtypeAvailable
}
NToggle {
label: I18n.tr("panels.launcher.settings-clip-smart-icons-label")
description: I18n.tr("panels.launcher.settings-clip-smart-icons-description")
checked: Settings.data.appLauncher.enableClipboardSmartIcons
onToggled: checked => Settings.data.appLauncher.enableClipboardSmartIcons = checked
defaultValue: Settings.getDefaultValue("appLauncher.enableClipboardSmartIcons")
enabled: Settings.data.appLauncher.enableClipboardHistory
}
NToggle {
label: I18n.tr("panels.launcher.settings-clip-chips-label")
description: I18n.tr("panels.launcher.settings-clip-chips-description")
checked: Settings.data.appLauncher.enableClipboardChips
onToggled: checked => Settings.data.appLauncher.enableClipboardChips = checked
defaultValue: Settings.getDefaultValue("appLauncher.enableClipboardChips")
enabled: Settings.data.appLauncher.enableClipboardHistory
}
NDivider {
Layout.fillWidth: true
visible: Settings.data.appLauncher.enableClipboardHistory
+24 -3
View File
@@ -114,7 +114,7 @@ Singleton {
const out = String(stdout.text);
const lines = out.split('\n').filter(l => l.length > 0);
// cliphist list default format: "<id> <preview>" or "<id>\t<preview>"
const parsed = lines.map(l => {
const parsed = lines.map((l, i) => {
let id = "";
let preview = "";
const m = l.match(/^(\d+)\s+(.+)$/);
@@ -144,13 +144,34 @@ Singleton {
}
// Record first seen time for new ids (approximate copy time)
if (!root.firstSeenById[id]) {
root.firstSeenById[id] = Time.timestamp;
const assumedAge = i * 15 * 60;
root.firstSeenById[id] = Time.timestamp - assumedAge;
}
// Smart type detection
var contentType = "text";
if (isImage) {
contentType = "image";
} else {
const t = preview.trim();
const tLower = t.toLowerCase();
if (/^#([a-f0-9]{3}|[a-f0-9]{6}|[a-f0-9]{8})$/.test(tLower)) {
contentType = "color";
} else if (/^https?:\/\//i.test(t)) {
contentType = "link";
} else if (/^(\/|~\/|file:\/\/)/i.test(t) && !t.startsWith('//') && !t.includes('\n')) {
contentType = "file";
} else if ((t.includes('{') && t.includes('}') && (t.includes(';') || t.includes('='))) || t.includes('</') || t.includes('/>') || t.includes('=>') || t.includes('===') || t.includes('!==') || t.includes('::') || t.includes('->') ||
/^(?:const|let|var|function|class|struct|interface|type|enum|import|export|func|fn|pub|def|using|namespace|property|public|private|protected)\b/i.test(t) || /^(?:#include|#define|#\[|@|\/\/|\/\*|<\?|<html|<body|<!DOCTYPE)/i.test(t) || /\b(?:require\(|module\.exports)\b/i.test(t)) {
contentType = "code";
}
}
return {
"id": id,
"preview": preview,
"isImage": isImage,
"mime": mime
"mime": mime,
"contentType": contentType
};
});
+49 -1
View File
@@ -245,7 +245,6 @@ Singleton {
}
// Internet connectivity check timer
// Runs every 15s if nmcli is available
Timer {
id: connectivityCheckTimer
interval: 15000
@@ -510,6 +509,55 @@ Singleton {
return details;
}
function parseIpDetails(text) {
const details = {
ipv4: "",
gateway4: "",
ipv6: "",
gateway6: "",
dns4: [],
dns6: [],
dns: "",
connectionName: ""
};
const lines = text.split("\n");
for (let i = 0; i < lines.length; i++) {
const line = lines[i].trim();
if (!line) {
continue;
}
const idx = line.indexOf(":");
if (idx === -1) {
continue;
}
const key = line.substring(0, idx);
const val = line.substring(idx + 1);
if (key === "GENERAL.CONNECTION") {
details.connectionName = val;
} else if (key.indexOf("IP4.ADDRESS") === 0) {
details.ipv4 = val.split("/")[0];
} else if (key === "IP4.GATEWAY") {
details.gateway4 = val;
} else if (key.indexOf("IP6.ADDRESS") === 0) {
details.ipv6 = val.split("/")[0];
} else if (key === "IP6.GATEWAY") {
details.gateway6 = val;
} else if (key.indexOf("IP4.DNS") === 0) {
if (val && details.dns4.indexOf(val) === -1) {
details.dns4.push(val);
}
} else if (key.indexOf("IP6.DNS") === 0) {
if (val && details.dns6.indexOf(val) === -1) {
details.dns6.push(val);
}
}
}
details.dns4 = details.dns4.join(", ");
details.dns6 = details.dns6.join(", ");
details.dns = [].concat(details.dns4 ? [details.dns4] : [], details.dns6 ? [details.dns6] : []).join(", ");
return details;
}
// Processes
Process {
id: ethernetStateProcess