mirror of
https://github.com/noctalia-dev/noctalia-shell.git
synced 2026-05-11 17:08:27 +08:00
Merge branch 'main' into pr/networking-refactor-pt2
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -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": "Wi‑Fi 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 Wi‑Fi networks found",
|
||||
"saved": "Saved",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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é",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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 が起動しました",
|
||||
|
||||
@@ -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 시작됨",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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 запущена",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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ı",
|
||||
|
||||
@@ -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 запущено",
|
||||
|
||||
@@ -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 已启动",
|
||||
|
||||
@@ -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 已啟動",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user