Merge branch 'main' into patch-5

This commit is contained in:
notiant
2026-02-18 18:01:52 +01:00
committed by GitHub
46 changed files with 484 additions and 555 deletions
-6
View File
@@ -1087,7 +1087,6 @@
"fonts-monospace-scale-description": "Ändern Sie die Größe des Monotextes.",
"fonts-monospace-scale-label": "Schriftgröße mit fester Breite",
"fonts-monospace-search-placeholder": "Monospace-Schriftarten suchen...",
"fonts-reset-scaling": "Skalierung zurücksetzen",
"fonts-title": "Schriftarten",
"keybinds-conflict-description": "Die Tastenkombination ist bereits {action} zugewiesen.",
"keybinds-conflict-title": "Tastenbelegungskonflikt",
@@ -1301,7 +1300,6 @@
"duration-low-urgency-label": "Niedrige Dringlichkeit",
"duration-normal-urgency-description": "Wie lange Benachrichtigungen normaler Priorität sichtbar bleiben.",
"duration-normal-urgency-label": "Normale Dringlichkeit",
"duration-reset": "Timeout-Dauer zurücksetzen",
"duration-respect-expire-description": "Die in der Benachrichtigung gesetzte Ablaufzeit verwenden.",
"duration-respect-expire-label": "Ablaufzeit respektieren",
"duration-title": "Benachrichtigungsdauer",
@@ -1529,16 +1527,13 @@
"box-border-label": "Containerumriss",
"box-border-radius-description": "Passt die Eckenrundung wichtiger Layoutbereiche an, wie z. B. Seitenleisten, Karten und Inhaltsbereiche.",
"box-border-radius-label": "Eckenradius",
"box-border-radius-reset": "Container-Radius zurücksetzen",
"control-border-radius-description": "Steuert die Krümmung interaktiver Elemente, einschließlich Schaltflächen, Umschalter und Textfelder.",
"control-border-radius-label": "Eingaberadius",
"control-border-radius-reset": "Eingaberadius zurücksetzen",
"desc": "Passen Sie das Aussehen, die Haptik und das Verhalten der Benutzeroberfläche an.",
"dim-desktop-description": "Den Desktop abdunkeln, wenn Fenster oder Menüs geöffnet sind.",
"dim-desktop-label": "Desktop abdunkeln",
"dimmer-opacity-description": "Deckkraft für das Abdunkeln des Desktops festlegen.",
"dimmer-opacity-label": "Deckkraft des gedimmten Desktops",
"dimmer-opacity-reset": "Deckkraft des gedimmten Desktops zurücksetzen",
"panel-background-opacity-description": "Legen Sie die Hintergrundtransparenz für alle Panels fest (Leiste, Starter, Einstellungen, usw.).",
"panel-background-opacity-label": "Panel-Hintergrunddeckkraft",
"panels-attached-to-bar-description": "Die Panels rasten an der Stange und den Bildschirmrändern ein und sorgen so für ein nahtloses Erscheinungsbild mit stilvollen, umgekehrten Ecken.",
@@ -1547,7 +1542,6 @@
"panels-overlay-label": "Panels & Leiste oben behalten",
"scaling-description": "Ändert die Größe der allgemeinen Benutzeroberfläche, mit Ausnahme der Leiste.",
"scaling-label": "Oberflächenskalierung",
"scaling-reset-scaling": "Schnittstellenskalierung zurücksetzen",
"settings-panel-mode-description": "Wählen Sie das Layout der Einstellungen (möglicherweise ist ein Neustart erforderlich).",
"settings-panel-mode-label": "Einstellungs-Panel-Modus",
"shadows-description": "Aktiviert Schlagschatten unter Leisten und Panels.",
+3 -6
View File
@@ -371,6 +371,7 @@
"actions": "Actions",
"add": "Add",
"appearance": "Appearance",
"behavior": "Behavior",
"apply": "Apply",
"automation": "Automation",
"available": "Available",
@@ -1078,7 +1079,6 @@
"fonts-monospace-scale-description": "Increase or decrease the size of the monospaced text.",
"fonts-monospace-scale-label": "Monospaced font size",
"fonts-monospace-search-placeholder": "Search monospace font...",
"fonts-reset-scaling": "Reset scaling",
"fonts-title": "Fonts",
"keybinds-conflict-description": "The key combination is already assigned to {action}.",
"keybinds-conflict-title": "Keybind conflict",
@@ -1271,6 +1271,8 @@
"lock-screen-tint-strength-description": "Applies a tint overlay to the lock screen wallpaper.",
"lock-screen-tint-strength-label": "Lock screen tint strength",
"monitors-desc": "Show lock screen on specific monitors. Defaults to all if none are chosen.",
"password-chars-description": "Cute icons used to hide your password.",
"password-chars-label": "Random password icons",
"show-hibernate-description": "Show the option 'hibernate' in the power controls.",
"show-hibernate-label": "Show hibernate",
"show-session-buttons-description": "Allow access to power settings from the lock screen.",
@@ -1292,7 +1294,6 @@
"duration-low-urgency-label": "Low urgency",
"duration-normal-urgency-description": "How long normal priority notifications stay visible.",
"duration-normal-urgency-label": "Normal urgency",
"duration-reset": "Reset timeout duration",
"duration-respect-expire-description": "Use the expire timeout set in the notification.",
"duration-respect-expire-label": "Respect expire timeout",
"duration-title": "Notification duration",
@@ -1520,16 +1521,13 @@
"box-border-label": "Container outline",
"box-border-radius-description": "Adjusts the corner roundness of major layout sections, such as sidebars, cards, and content panels.",
"box-border-radius-label": "Container radius",
"box-border-radius-reset": "Reset container radius",
"control-border-radius-description": "Controls the curvature of interactive elements, including buttons, toggles, and text fields.",
"control-border-radius-label": "Input radius",
"control-border-radius-reset": "Reset input radius",
"desc": "Customize the look, feel, and behavior of the interface.",
"dim-desktop-description": "Dim the desktop when panels or menus are open.",
"dim-desktop-label": "Dim desktop",
"dimmer-opacity-description": "Set the opacity level for desktop dimming.",
"dimmer-opacity-label": "Dimmed desktop opacity",
"dimmer-opacity-reset": "Reset dimmed desktop opacity",
"panel-background-opacity-description": "Set the background opacity for all panels (bar, launcher, settings, etc...).",
"panel-background-opacity-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.",
@@ -1538,7 +1536,6 @@
"panels-overlay-label": "Keep panels & bar on top",
"scaling-description": "Changes the size of the general user interface, excluding the bar.",
"scaling-label": "Interface scaling",
"scaling-reset-scaling": "Reset interface scaling",
"settings-panel-mode-description": "Choose settings layout (may require reopening).",
"settings-panel-mode-label": "Settings panel mode",
"shadows-description": "Enables drop shadows under bars and panels.",
-6
View File
@@ -1087,7 +1087,6 @@
"fonts-monospace-scale-description": "Aumentar o disminuir el tamaño del texto monoespaciado.",
"fonts-monospace-scale-label": "Tamaño de fuente monoespaciada",
"fonts-monospace-search-placeholder": "Buscar fuentes monoespaciadas...",
"fonts-reset-scaling": "Restablecer la escala",
"fonts-title": "Fuentes",
"keybinds-conflict-description": "La combinación de teclas ya está asignada a {action}.",
"keybinds-conflict-title": "Conflicto de atajos de teclado",
@@ -1301,7 +1300,6 @@
"duration-low-urgency-label": "Urgencia baja",
"duration-normal-urgency-description": "Cuánto tiempo permanecen visibles las notificaciones de prioridad normal.",
"duration-normal-urgency-label": "Urgencia normal",
"duration-reset": "Restablecer la duración del tiempo de espera",
"duration-respect-expire-description": "Usa el tiempo de expiración establecido en la notificación.",
"duration-respect-expire-label": "Respetar tiempo de expiración",
"duration-title": "Duración de la notificación",
@@ -1529,16 +1527,13 @@
"box-border-label": "Contorno del contenedor",
"box-border-radius-description": "Ajusta la redondez de las esquinas de las secciones principales del diseño, como barras laterales, tarjetas y paneles de contenido.",
"box-border-radius-label": "Radio del contenedor",
"box-border-radius-reset": "Restablecer el radio del contenedor",
"control-border-radius-description": "Controla la curvatura de los elementos interactivos, incluyendo botones, interruptores y campos de texto.",
"control-border-radius-label": "Radio de entrada",
"control-border-radius-reset": "Restablecer el radio de entrada",
"desc": "Personaliza la apariencia, el ambiente y el comportamiento de la interfaz.",
"dim-desktop-description": "Atenuar el escritorio cuando los paneles o menús estén abiertos.",
"dim-desktop-label": "Atenuar escritorio",
"dimmer-opacity-description": "Define el nivel de opacidad para el atenuado del escritorio.",
"dimmer-opacity-label": "Opacidad del escritorio atenuado",
"dimmer-opacity-reset": "Restablecer la opacidad del escritorio atenuado",
"panel-background-opacity-description": "Establecer la opacidad del fondo para todos los paneles (barra, lanzador, ajustes, etc...).",
"panel-background-opacity-label": "Opacidad del 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 integrada con elegantes esquinas invertidas.",
@@ -1547,7 +1542,6 @@
"panels-overlay-label": "Mantener paneles y barra en la parte superior",
"scaling-description": "Cambia el tamaño de la interfaz de usuario general, excluyendo la barra.",
"scaling-label": "Escalado de la interfaz",
"scaling-reset-scaling": "Restablecer el escalado de la interfaz",
"settings-panel-mode-description": "Elegir diseño de configuración (puede requerir reapertura).",
"settings-panel-mode-label": "Modo del panel de configuración",
"shadows-description": "Habilita sombras paralelas debajo de las barras y los paneles.",
-6
View File
@@ -1087,7 +1087,6 @@
"fonts-monospace-scale-description": "Augmenter ou diminuer la taille du texte monospace.",
"fonts-monospace-scale-label": "Taille de police monospace",
"fonts-monospace-search-placeholder": "Rechercher des polices monospace...",
"fonts-reset-scaling": "Réinitialiser l'échelle",
"fonts-title": "Polices",
"keybinds-conflict-description": "La combinaison de touches est déjà attribuée à {action}.",
"keybinds-conflict-title": "Conflit de raccourcis clavier",
@@ -1301,7 +1300,6 @@
"duration-low-urgency-label": "Urgence faible",
"duration-normal-urgency-description": "Durée de visibilité des notifications de priorité normale.",
"duration-normal-urgency-label": "Urgence normale",
"duration-reset": "Réinitialiser la durée du délai d'attente",
"duration-respect-expire-description": "Utiliser le délai d'expiration défini dans la notification.",
"duration-respect-expire-label": "Respecter le délai d'expiration",
"duration-title": "Durée des notifications",
@@ -1529,16 +1527,13 @@
"box-border-label": "Contour du conteneur",
"box-border-radius-description": "Ajuste de l'arrondi des coins des principales sections de la mise en page, telles que les barres latérales, les cartes et les panneaux de contenu.",
"box-border-radius-label": "Rayon du conteneur",
"box-border-radius-reset": "Réinitialiser le rayon du conteneur",
"control-border-radius-description": "Contrôle la courbure des éléments interactifs, y compris les boutons, les bascules et les champs de texte.",
"control-border-radius-label": "Rayon d'entrée",
"control-border-radius-reset": "Réinitialiser le rayon d'entrée",
"desc": "Personnaliser l'apparence, l'ergonomie et le comportement de l'interface.",
"dim-desktop-description": "Atténuer le bureau lorsque des panneaux ou des menus sont ouverts.",
"dim-desktop-label": "Dim bureau",
"dimmer-opacity-description": "Définir le niveau d'opacité pour l'assombrissement du bureau.",
"dimmer-opacity-label": "Opacité du bureau atténué",
"dimmer-opacity-reset": "Réinitialiser l'opacité du bureau atténué",
"panel-background-opacity-description": "Définir l'opacité de l'arrière-plan pour tous les panneaux (barre, lanceur, paramètres, etc.).",
"panel-background-opacity-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.",
@@ -1547,7 +1542,6 @@
"panels-overlay-label": "Garder les panneaux et la barre en haut",
"scaling-description": "Modifie la taille de l'interface utilisateur générale, à l'exception de la barre.",
"scaling-label": "Mise à l'échelle de l'interface",
"scaling-reset-scaling": "Réinitialiser l'échelle de l'interface",
"settings-panel-mode-description": "Choisir la disposition des paramètres (peut nécessiter une réouverture).",
"settings-panel-mode-label": "Mode du panneau des paramètres",
"shadows-description": "Active les ombres portées sous les barres et les panneaux.",
-6
View File
@@ -1087,7 +1087,6 @@
"fonts-monospace-scale-description": "Növelje vagy csökkentse a monospace szöveg méretét.",
"fonts-monospace-scale-label": "Monospace betűméret",
"fonts-monospace-search-placeholder": "Monospace betűtípus keresése...",
"fonts-reset-scaling": "Méretezés visszaállítása",
"fonts-title": "Betűtípusok",
"keybinds-conflict-description": "A billentyűkombináció már hozzá van rendelve ehhez: {action}.",
"keybinds-conflict-title": "Billentyűkombináció ütközés",
@@ -1301,7 +1300,6 @@
"duration-low-urgency-label": "Alacsony sürgősség",
"duration-normal-urgency-description": "Meddig maradjanak láthatók a normál prioritású értesítések.",
"duration-normal-urgency-label": "Normál sürgősség",
"duration-reset": "Időtúllépési idő visszaállítása",
"duration-respect-expire-description": "Az értesítésben beállított lejárati időtúllépés használata.",
"duration-respect-expire-label": "Lejárati időtúllépés figyelembe vétele",
"duration-title": "Értesítés időtartama",
@@ -1529,16 +1527,13 @@
"box-border-label": "Konténer körvonal",
"box-border-radius-description": "Beállítja a fő elrendezési szakaszok (például oldalsávok, kártyák és tartalompanelek) saroklekerekítését.",
"box-border-radius-label": "Tároló sugár",
"box-border-radius-reset": "Tároló sugár visszaállítása",
"control-border-radius-description": "Szabályozza az interaktív elemek (gombok, kapcsolók és szövegmezők) görbületét.",
"control-border-radius-label": "Bemeneti sugár",
"control-border-radius-reset": "Bemeneti sugár visszaállítása",
"desc": "Az interfész megjelenésének, érzetének és viselkedésének testreszabása.",
"dim-desktop-description": "Asztal elsötétítése, ha a panelek vagy menük nyitva vannak.",
"dim-desktop-label": "Asztal elsötétítése",
"dimmer-opacity-description": "Állítsa be az asztal elsötétítésének átlátszósági szintjét.",
"dimmer-opacity-label": "Elsötétített asztal átlátszósága",
"dimmer-opacity-reset": "Elsötétített asztal átlátszóságának visszaállítása",
"panel-background-opacity-description": "Állítsa be az összes panel (sáv, indító, beállítások stb.) háttér-átlátszóságát.",
"panel-background-opacity-label": "Panel háttér átlátszóság",
"panels-attached-to-bar-description": "A panelek a sávhoz és a képernyő széleihez igazodnak, zökkenőmentes megjelenést biztosítva stílusos fordított sarkokkal.",
@@ -1547,7 +1542,6 @@
"panels-overlay-label": "Panelek és sáv felül tartása",
"scaling-description": "Megváltoztatja az általános felhasználói felület méretét, kivéve a sávot.",
"scaling-label": "Felület méretezés",
"scaling-reset-scaling": "Felület méretezés visszaállítása",
"settings-panel-mode-description": "Válassza ki a beállítások elrendezését (újraindítást igényelhet).",
"settings-panel-mode-label": "Beállítási panel mód",
"shadows-description": "Engedélyezi az árnyékokat a sávok és panelek alatt.",
-6
View File
@@ -1087,7 +1087,6 @@
"fonts-monospace-scale-description": "等幅テキストのサイズを拡大・縮小します。",
"fonts-monospace-scale-label": "等幅フォントのサイズ",
"fonts-monospace-search-placeholder": "等幅フォントを検索...",
"fonts-reset-scaling": "サイズ設定をリセット",
"fonts-title": "フォント",
"keybinds-conflict-description": "このキーの組み合わせはすでに{action}に割り当てられています。",
"keybinds-conflict-title": "キーバインドの競合",
@@ -1301,7 +1300,6 @@
"duration-low-urgency-label": "緊急度:低",
"duration-normal-urgency-description": "緊急度「通常」の通知が表示され続ける時間。",
"duration-normal-urgency-label": "緊急度:通常",
"duration-reset": "表示時間をリセット",
"duration-respect-expire-description": "通知自体に設定された有効期限(タイムアウト)を使用します。",
"duration-respect-expire-label": "通知指定の期限に従う",
"duration-title": "通知の表示時間",
@@ -1529,16 +1527,13 @@
"box-border-label": "コンテナの輪郭",
"box-border-radius-description": "サイドバー、カード、コンテンツパネルなど、主要なレイアウト部分の角の丸みを調整します。",
"box-border-radius-label": "コンテナの角の丸み",
"box-border-radius-reset": "コンテナの角の丸みをリセット",
"control-border-radius-description": "ボタン、トグル、テキストフィールドなど、操作可能な要素の角の丸みを制御します。",
"control-border-radius-label": "入力要素の角の丸み",
"control-border-radius-reset": "入力要素の角の丸みをリセット",
"desc": "インターフェースの外観や操作感、挙動をカスタマイズします。",
"dim-desktop-description": "パネルやメニューが開いている間、デスクトップを暗くします。",
"dim-desktop-label": "デスクトップを暗くする",
"dimmer-opacity-description": "デスクトップを暗くした際の不透明度を設定します。",
"dimmer-opacity-label": "デスクトップを暗くした際の不透明度",
"dimmer-opacity-reset": "デスクトップを暗くした際の不透明度をリセット",
"panel-background-opacity-description": "すべてのパネル(バー、ランチャー、設定など)の背景の不透明度を設定します。",
"panel-background-opacity-label": "パネル背景の不透明度",
"panels-attached-to-bar-description": "パネルをバーや画面の端に固定します。スタイリッシュな逆アール(角の装飾)により、シームレスな外観にします。",
@@ -1547,7 +1542,6 @@
"panels-overlay-label": "パネルとバーを最前面に保持",
"scaling-description": "バーを除く、ユーザーインターフェース全体のサイズを変更します。",
"scaling-label": "インターフェースのスケール調整",
"scaling-reset-scaling": "インターフェースのスケールをリセット",
"settings-panel-mode-description": "設定画面の表示形式を選択します (再起動が必要な場合があります)。",
"settings-panel-mode-label": "設定パネルの表示モード",
"shadows-description": "バーやパネルの下にドロップシャドウ(影)を表示します。",
-6
View File
@@ -1087,7 +1087,6 @@
"fonts-monospace-scale-description": "고정폭 텍스트의 크기를 늘리거나 줄입니다.",
"fonts-monospace-scale-label": "고정폭 글꼴 크기",
"fonts-monospace-search-placeholder": "고정폭 글꼴 검색...",
"fonts-reset-scaling": "크기 초기화",
"fonts-title": "글꼴",
"keybinds-conflict-description": "이 키 조합은 이미 {action}에 할당되어 있습니다.",
"keybinds-conflict-title": "키 바인딩 충돌",
@@ -1301,7 +1300,6 @@
"duration-low-urgency-label": "중요도 낮음",
"duration-normal-urgency-description": "보통 레벨의 알림이 표시되는 시간입니다.",
"duration-normal-urgency-label": "중요도 보통",
"duration-reset": "시간 제한 초기화",
"duration-respect-expire-description": "알림에 설정된 만료 시간을 사용합니다.",
"duration-respect-expire-label": "만료 시간 준수",
"duration-title": "알림 지속 시간",
@@ -1529,16 +1527,13 @@
"box-border-label": "컨테이너 윤곽선",
"box-border-radius-description": "사이드바, 카드, 콘텐츠 패널과 같은 주요 레이아웃 섹션의 모서리 둥글기를 조정합니다.",
"box-border-radius-label": "컨테이너 반경",
"box-border-radius-reset": "컨테이너 반경 초기화",
"control-border-radius-description": "버튼, 토글, 텍스트 필드를 포함한 대화형 요소의 굴곡을 제어합니다.",
"control-border-radius-label": "입력 반경",
"control-border-radius-reset": "입력 반경 초기화",
"desc": "인터페이스의 모양, 느낌 및 동작을 사용자 지정합니다.",
"dim-desktop-description": "패널이나 메뉴가 열려 있을 때 바탕 화면을 어둡게 합니다.",
"dim-desktop-label": "바탕 화면 어둡게 하기",
"dimmer-opacity-description": "바탕 화면 어둡게 하기의 불투명도 수준을 설정합니다.",
"dimmer-opacity-label": "어두운 바탕 화면 불투명도",
"dimmer-opacity-reset": "어두운 바탕 화면 불투명도 초기화",
"panel-background-opacity-description": "모든 패널(바, 런처, 설정 등...)의 배경 불투명도를 설정합니다.",
"panel-background-opacity-label": "패널 배경 불투명도",
"panels-attached-to-bar-description": "패널이 바와 화면 가장자리에 고정되어 세련된 반전 모서리로 매끄러운 모양을 만듭니다.",
@@ -1547,7 +1542,6 @@
"panels-overlay-label": "패널과 바를 항상 위에 유지",
"scaling-description": "바를 제외한 일반 사용자 인터페이스의 크기를 변경합니다.",
"scaling-label": "인터페이스 배율",
"scaling-reset-scaling": "인터페이스 배율 초기화",
"settings-panel-mode-description": "설정 레이아웃을 선택하세요 (다시 열어야 할 수 있음).",
"settings-panel-mode-label": "설정 패널 모드",
"shadows-description": "바와 패널 아래에 그림자를 활성화합니다.",
-6
View File
@@ -1008,7 +1008,6 @@
"fonts-monospace-scale-description": "Mezinahiya nivîsa monospace mezin an biçûk bike.",
"fonts-monospace-scale-label": "Mezinahiya cûernivîsa monospace",
"fonts-monospace-search-placeholder": "Lêgerîn li fonta monospace...",
"fonts-reset-scaling": "Vekirina pîvanê",
"fonts-title": "Cûrenivîs",
"keybinds-down": "Bilivîne jêr",
"keybinds-left": "Bilivîne çep",
@@ -1192,7 +1191,6 @@
"duration-low-urgency-label": "Lezgînî kêm",
"duration-normal-urgency-description": "Notîfîkasyonên pêşîniya normal çiqas dirêj xuya dimînin.",
"duration-normal-urgency-label": "Lezgînahiya normal",
"duration-reset": "Demjimêra dema derbasbûnê ji nû ve saz bike",
"duration-respect-expire-description": "Dem wextê qedandinê yê ku di agahdariyê de hatiye danîn bikar bîne.",
"duration-respect-expire-label": "Dem bihurmet demdirêj qedandin",
"duration-title": "Dirêjahiya agahdariyê",
@@ -1402,16 +1400,13 @@
"box-border-label": "Çarçoweya konteynerê",
"box-border-radius-description": "Goşeya dorfirehiya beşên sereke yên layoutê, wekî barên kêlekê, kart, û panelên naverokê, eyar dike.",
"box-border-radius-label": "Radiusa konteynirê",
"box-border-radius-reset": "Vegerandina radiusa konteynerê",
"control-border-radius-description": "Kontrola çemandina hêmanên înteraktîv, di nav de bişkok, guhêrbarok û qadên nivîsê.",
"control-border-radius-label": "Tîrêjê têketinê",
"control-border-radius-reset": "Dîsa çapemeniya têketinê saz bike",
"desc": "Xuyakirina xuyabûn, hest, û reftarên navrûyê.",
"dim-desktop-description": "Dema panel an menü vebin, sermaseyê tarî bike.",
"dim-desktop-label": "Dim sermaseyê",
"dimmer-opacity-description": "Ayarê asta zelalbûna ji bo tarîkirina sermaseyê bike.",
"dimmer-opacity-label": "Şefafiya sermaseyê sermaseyê kêmkirî",
"dimmer-opacity-reset": "Vekirina zelalbûna sermaseya tarîkirî",
"panel-background-opacity-description": "Zelalbûna paşrûyê ji bo hemû destgehan (darik, destpêker, sazkarî, hwd...) saz bike.",
"panel-background-opacity-label": "Zelaliya paşrûyê destgehê",
"panels-attached-to-bar-description": "Panelên bi qiraxên bar û ekranê ve têne kilît kirin, bi goşeyên berevajîkirî yên şêwekar xuyangek bêkêmasî diafirînin.",
@@ -1420,7 +1415,6 @@
"panels-overlay-label": "Destgeh & darikê li jor bihêle",
"scaling-description": "Guhertina mezinahiya navrûya giştî ya bikarhêner, ji bilî bar.",
"scaling-label": "Pîvana navrûyê",
"scaling-reset-scaling": "Pîvana navrûyê ji nû ve saz bike",
"settings-panel-mode-description": "Hilbijêre şêweyê mîhengan (dibe ku ji nû ve vekirinê hewce bike).",
"settings-panel-mode-label": "Awaya destgeha sazkariyan",
"shadows-description": "Dîsa siya di bin bar û panelan de çalak dike.",
-6
View File
@@ -1087,7 +1087,6 @@
"fonts-monospace-scale-description": "Vergroot of verklein de grootte van monospace-tekst.",
"fonts-monospace-scale-label": "Grootte monospace-lettertype",
"fonts-monospace-search-placeholder": "Monospace-lettertype zoeken...",
"fonts-reset-scaling": "Schaling resetten",
"fonts-title": "Lettertypes",
"keybinds-conflict-description": "De toetscombinatie is al toegewezen aan {action}.",
"keybinds-conflict-title": "Toetsencombinatieconflict",
@@ -1301,7 +1300,6 @@
"duration-low-urgency-label": "Lage urgentie",
"duration-normal-urgency-description": "Hoe lang meldingen met normale prioriteit zichtbaar blijven.",
"duration-normal-urgency-label": "Normale urgentie",
"duration-reset": "Timeoutduur resetten",
"duration-respect-expire-description": "Gebruik de vervaltijd die in de melding is ingesteld.",
"duration-respect-expire-label": "Vervaltijd respecteren",
"duration-title": "Duur van meldingen",
@@ -1529,16 +1527,13 @@
"box-border-label": "Containeromtrek",
"box-border-radius-description": "Past de hoekronding aan van belangrijke lay-outsecties, zoals zijbalken, kaarten en inhoudspanelen.",
"box-border-radius-label": "Hoekradius",
"box-border-radius-reset": "Containerstraal resetten",
"control-border-radius-description": "Regelt de kromming van interactieve elementen, waaronder knoppen, schakelaars en tekstvelden.",
"control-border-radius-label": "Voer straal in",
"control-border-radius-reset": "Reset invoerradius",
"desc": "Pas de look, feel en het gedrag van de interface aan.",
"dim-desktop-description": "Dim de desktop wanneer panelen of menu's geopend zijn.",
"dim-desktop-label": "Desktop dimmen",
"dimmer-opacity-description": "Stel het opaciteitsniveau in voor het dimmen van het bureaublad.",
"dimmer-opacity-label": "Doorzichtigheid van gedimde desktop",
"dimmer-opacity-reset": "Doorzichtigheid van gedimde desktop resetten",
"panel-background-opacity-description": "Stel de achtergronddoorzichtigheid in voor alle panelen (balk, launcher, instellingen, enz...).",
"panel-background-opacity-label": "Paneel achtergronddoorzichtigheid",
"panels-attached-to-bar-description": "Panelen vergrendelen aan de balk en schermranden, voor een naadloze look met stijlvolle omgekeerde hoeken.",
@@ -1547,7 +1542,6 @@
"panels-overlay-label": "Panelen & balk bovenop houden",
"scaling-description": "Wijzigt de grootte van de algemene gebruikersinterface, exclusief de balk.",
"scaling-label": "Interfaceschaling",
"scaling-reset-scaling": "Interfaceschaling resetten",
"settings-panel-mode-description": "Kies lay-out voor instellingen (mogelijk opnieuw openen vereist).",
"settings-panel-mode-label": "Instellingenpaneelmodus",
"shadows-description": "Schakelt slagschaduwen onder balken en panelen in.",
-6
View File
@@ -1081,7 +1081,6 @@
"fonts-monospace-scale-description": "Aukar eller minkar kor stor fastbreiddeskrifta er.",
"fonts-monospace-scale-label": "Fastbreiddeskriftstorleik",
"fonts-monospace-search-placeholder": "Leit etter fastbreiddeskrift...",
"fonts-reset-scaling": "Nullstill skalering",
"fonts-title": "Skrifttypar",
"keybinds-conflict-description": "Tastkombinasjonen er alt gjeven til {action}.",
"keybinds-conflict-title": "Beinknapp-konflikt",
@@ -1295,7 +1294,6 @@
"duration-low-urgency-label": "Mindre viktig",
"duration-normal-urgency-description": "Kor lenge vanlege varsel er synlege.",
"duration-normal-urgency-label": "Vanleg",
"duration-reset": "Lengd på nullstillingsavbrot",
"duration-respect-expire-description": "Bruk tidsavbrotet fastsett i varselet.",
"duration-respect-expire-label": "Vyrd tidsavbrot",
"duration-title": "Varsellengd",
@@ -1523,16 +1521,13 @@
"box-border-label": "Ilåtgrense",
"box-border-radius-description": "Styrer kor avrunda hyrna er på viktige oppsettsområde, til dømes på stolpar, kort og innhaldspanel.",
"box-border-radius-label": "Ilåtradius",
"box-border-radius-reset": "Nullstill ilåtradius",
"control-border-radius-description": "Styrer kor bøygde interaktiv delar er, til dømes knappar, brytarar og tekstfelt.",
"control-border-radius-label": "Inndataradius",
"control-border-radius-reset": "Nullstill inndataradius",
"desc": "Måta til korleis grensesnittet ser ut og ter seg.",
"dim-desktop-description": "Mørknar skrivebordet når panel eller menyar er opne.",
"dim-desktop-label": "Mørkna skrivebord",
"dimmer-opacity-description": "Set kor mørkt det vert når skrivebordet mørknar.",
"dimmer-opacity-label": "Skrivebordsmørker",
"dimmer-opacity-reset": "Set att skrivebordsmørker",
"panel-background-opacity-description": "Set kor ugjennomsynleg bakgrunnen er for alle panel (oppgåvelina, programveljar, innstillingar osb.).",
"panel-background-opacity-label": "Ugjennomsynlege panelbakgrunnar",
"panels-attached-to-bar-description": "Panel låser seg til oppgåvelina og skjermrendene, som gjev ein stilig utsjånad med innbøygde hyrne.",
@@ -1541,7 +1536,6 @@
"panels-overlay-label": "Haldt panel og oppgåvelina øvst",
"scaling-description": "Endrar kor stor brukargrensesnittet er, sett bort ifrå oppgåvelina.",
"scaling-label": "Grensesnittskalering",
"scaling-reset-scaling": "Nullstill grensesnittskalering",
"settings-panel-mode-description": "Vel oppsett for innstillingar (kan krevja at du må opna dei på nytt).",
"settings-panel-mode-label": "Oppsett for innstillingar",
"shadows-description": "Slår på skuggar under liner og panel.",
-6
View File
@@ -1087,7 +1087,6 @@
"fonts-monospace-scale-description": "Zwiększ lub zmniejsz rozmiar tekstu o stałej szerokości.",
"fonts-monospace-scale-label": "Rozmiar czcionki monospace",
"fonts-monospace-search-placeholder": "Szukaj czcionki monospace...",
"fonts-reset-scaling": "Resetuj skalowanie",
"fonts-title": "Czcionki",
"keybinds-conflict-description": "Kombinacja klawiszy jest już przypisana do {action}.",
"keybinds-conflict-title": "Konflikt skrótów klawiszowych",
@@ -1301,7 +1300,6 @@
"duration-low-urgency-label": "Pilność niska",
"duration-normal-urgency-description": "Jak długo widoczne są powiadomienia o priorytecie normalnym.",
"duration-normal-urgency-label": "Pilność normalna",
"duration-reset": "Resetuj czas wygasania",
"duration-respect-expire-description": "Używaj czasu wygasania ustawionego w samym powiadomieniu.",
"duration-respect-expire-label": "Respektuj czas wygasania (expire timeout)",
"duration-title": "Czas trwania powiadomienia",
@@ -1529,16 +1527,13 @@
"box-border-label": "Obrys kontenera",
"box-border-radius-description": "Dostosowuje zaokrąglenie narożników głównych sekcji układu, takich jak paski boczne, karty i panele treści.",
"box-border-radius-label": "Promień kontenerów",
"box-border-radius-reset": "Resetuj promień kontenerów",
"control-border-radius-description": "Kontroluje zaokrąglenie elementów interaktywnych, w tym przycisków, przełączników i pól tekstowych.",
"control-border-radius-label": "Promień wejść",
"control-border-radius-reset": "Resetuj promień wejść",
"desc": "Dostosuj wygląd i zachowanie interfejsu.",
"dim-desktop-description": "Przyciemniaj pulpit, gdy panele lub menu są otwarte.",
"dim-desktop-label": "Przyciemniaj pulpit",
"dimmer-opacity-description": "Ustaw poziom przezroczystości przyciemnienia pulpitu.",
"dimmer-opacity-label": "Przezroczystość przyciemnienia",
"dimmer-opacity-reset": "Resetuj przezroczystość przyciemnienia",
"panel-background-opacity-description": "Ustaw przezroczystość tła dla wszystkich paneli (pasek, launcher, ustawienia itp.).",
"panel-background-opacity-label": "Przezroczystość tła paneli",
"panels-attached-to-bar-description": "Panele przypinają się do paska i krawędzi ekranu, tworząc spójny wygląd ze stylowymi odwróconymi narożnikami.",
@@ -1547,7 +1542,6 @@
"panels-overlay-label": "Trzymaj panele i pasek na wierzchu",
"scaling-description": "Zmienia rozmiar ogólnego interfejsu użytkownika, z wyłączeniem paska.",
"scaling-label": "Skalowanie interfejsu",
"scaling-reset-scaling": "Resetuj skalowanie interfejsu",
"settings-panel-mode-description": "Wybierz układ ustawień (może wymagać ponownego otwarcia).",
"settings-panel-mode-label": "Tryb panelu ustawień",
"shadows-description": "Włącza cienie pod paskami i panelami.",
-6
View File
@@ -1087,7 +1087,6 @@
"fonts-monospace-scale-description": "Aumentar ou diminuir o tamanho do texto monoespaçado.",
"fonts-monospace-scale-label": "Tamanho da fonte monoespaçada",
"fonts-monospace-search-placeholder": "Pesquisar fontes monoespaçadas...",
"fonts-reset-scaling": "Redefinir escala",
"fonts-title": "Fontes",
"keybinds-conflict-description": "A combinação de teclas já está atribuída a {action}.",
"keybinds-conflict-title": "Conflito de atalhos de teclado",
@@ -1301,7 +1300,6 @@
"duration-low-urgency-label": "Urgência baixa",
"duration-normal-urgency-description": "Por quanto tempo as notificações de prioridade normal permanecem visíveis.",
"duration-normal-urgency-label": "Urgência normal",
"duration-reset": "Redefinir duração do tempo limite",
"duration-respect-expire-description": "Usa o tempo de expiração definido na notificação.",
"duration-respect-expire-label": "Respeitar tempo de expiração",
"duration-title": "Duração da notificação",
@@ -1529,16 +1527,13 @@
"box-border-label": "Contorno do recipiente",
"box-border-radius-description": "Ajusta o arredondamento dos cantos das principais seções do layout, como barras laterais, cards e painéis de conteúdo.",
"box-border-radius-label": "Raio do contêiner",
"box-border-radius-reset": "Redefinir raio do recipiente",
"control-border-radius-description": "Controla a curvatura de elementos interativos, incluindo botões, alternâncias e campos de texto.",
"control-border-radius-label": "Raio de entrada",
"control-border-radius-reset": "Redefinir raio de entrada",
"desc": "Personalize a aparência, a sensação e o comportamento da interface.",
"dim-desktop-description": "Escurecer a área de trabalho quando painéis ou menus estiverem abertos.",
"dim-desktop-label": "Dim área de trabalho",
"dimmer-opacity-description": "Definir o nível de opacidade para o escurecimento da área de trabalho.",
"dimmer-opacity-label": "Opacidade da área de trabalho escurecida",
"dimmer-opacity-reset": "Redefinir opacidade da área de trabalho escurecida",
"panel-background-opacity-description": "Definir a opacidade do fundo para todos os painéis (barra, iniciador, configurações, etc...).",
"panel-background-opacity-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.",
@@ -1547,7 +1542,6 @@
"panels-overlay-label": "Manter painéis e barra no topo",
"scaling-description": "Altera o tamanho da interface geral do usuário, excluindo a barra.",
"scaling-label": "Escalonamento da interface",
"scaling-reset-scaling": "Redefinir escala da interface",
"settings-panel-mode-description": "Escolha o layout das configurações (pode ser necessário reabrir).",
"settings-panel-mode-label": "Modo do painel de configurações",
"shadows-description": "Ativa sombras projetadas sob barras e painéis.",
-6
View File
@@ -1087,7 +1087,6 @@
"fonts-monospace-scale-description": "Увеличение или уменьшение размера моноширинного текста.",
"fonts-monospace-scale-label": "Размер моноширинного шрифта",
"fonts-monospace-search-placeholder": "Поиск моноширинного шрифта...",
"fonts-reset-scaling": "Сбросить масштабирование",
"fonts-title": "Шрифты",
"keybinds-conflict-description": "Комбинация клавиш уже назначена для {action}.",
"keybinds-conflict-title": "Конфликт горячих клавиш",
@@ -1301,7 +1300,6 @@
"duration-low-urgency-label": "Низкая срочность",
"duration-normal-urgency-description": "Как долго остаются видимыми уведомления с нормальным приоритетом.",
"duration-normal-urgency-label": "Нормальная срочность",
"duration-reset": "Сбросить длительность тайм-аута",
"duration-respect-expire-description": "Использовать таймаут истечения, установленный в уведомлении.",
"duration-respect-expire-label": "Учитывать таймаут истечения",
"duration-title": "Продолжительность уведомлений",
@@ -1529,16 +1527,13 @@
"box-border-label": "Контур контейнера",
"box-border-radius-description": "Настраивает скругление углов основных разделов макета, таких как боковые панели, карточки и панели контента.",
"box-border-radius-label": "Радиус контейнера",
"box-border-radius-reset": "Сбросить радиус контейнера",
"control-border-radius-description": "Управляет скруглением интерактивных элементов, включая кнопки, переключатели и текстовые поля.",
"control-border-radius-label": "Радиус элементов ввода",
"control-border-radius-reset": "Сбросить радиус ввода",
"desc": "Настройка внешнего вида, ощущений и поведения интерфейса.",
"dim-desktop-description": "Затемнять рабочий стол при открытии панелей или меню.",
"dim-desktop-label": "Затемнять рабочий стол",
"dimmer-opacity-description": "Установить уровень непрозрачности для затемнения рабочего стола.",
"dimmer-opacity-label": "Непрозрачность затемнённого рабочего стола",
"dimmer-opacity-reset": "Сбросить непрозрачность затемнённого рабочего стола",
"panel-background-opacity-description": "Установить прозрачность фона для всех панелей (верхней панели, панели запуска, настроек и т. д.).",
"panel-background-opacity-label": "Прозрачность фона панелей",
"panels-attached-to-bar-description": "Панели прикрепляются к панели и краям экрана, создавая цельный вид со стильными инвертированными углами.",
@@ -1547,7 +1542,6 @@
"panels-overlay-label": "Держать панели и панель задач сверху",
"scaling-description": "Изменяет размер общего пользовательского интерфейса, исключая панель.",
"scaling-label": "Масштабирование интерфейса",
"scaling-reset-scaling": "Сбросить масштабирование интерфейса",
"settings-panel-mode-description": "Выберите раскладку настроек (может потребоваться перезапуск).",
"settings-panel-mode-label": "Режим панели настроек",
"shadows-description": "Включает отбрасываемые тени под панелями и панелью задач.",
-6
View File
@@ -1087,7 +1087,6 @@
"fonts-monospace-scale-description": "Öka eller minska storleken på text med fast bredd.",
"fonts-monospace-scale-label": "Teckensnittsstorlek med fast bredd",
"fonts-monospace-search-placeholder": "Sök teckensnitt med fast bredd...",
"fonts-reset-scaling": "Återställ skalning",
"fonts-title": "Teckensnitt",
"keybinds-conflict-description": "Tangentkombinationen är redan tilldelad {action}.",
"keybinds-conflict-title": "Tangentbindningskonflikt",
@@ -1301,7 +1300,6 @@
"duration-low-urgency-label": "Låg brådskande",
"duration-normal-urgency-description": "Hur länge meddelanden med normal prioritet förblir synliga.",
"duration-normal-urgency-label": "Normal brådskande",
"duration-reset": "Återställ tidsgräns",
"duration-respect-expire-description": "Använd den tidsgräns som anges i meddelandet.",
"duration-respect-expire-label": "Respektera tidsgränsen för utgång",
"duration-title": "Meddelandets varaktighet",
@@ -1529,16 +1527,13 @@
"box-border-label": "Behållarkontur",
"box-border-radius-description": "Justerar hörnrundningen för större layoutsektioner, såsom sidofält, kort och innehållspaneler.",
"box-border-radius-label": "Behållarradie",
"box-border-radius-reset": "Återställ behållarradie",
"control-border-radius-description": "Styr kurvaturen för interaktiva element, inklusive knappar, växlar och textfält.",
"control-border-radius-label": "Inmatningsradie",
"control-border-radius-reset": "Återställ inmatningsradie",
"desc": "Anpassa utseendet, känslan och beteendet hos gränssnittet.",
"dim-desktop-description": "Dämpa skrivbordet när paneler eller menyer är öppna.",
"dim-desktop-label": "Dämpa skrivbordet",
"dimmer-opacity-description": "Ställ in opacitetsnivån för dämpning av skrivbordet. ",
"dimmer-opacity-label": "Dimrad skrivbordsopacitet",
"dimmer-opacity-reset": "Återställ dimrad skrivbordsopacitet",
"panel-background-opacity-description": "Ställ in bakgrundsopaciteten för alla paneler (fält, startprogram, inställningar osv.). ",
"panel-background-opacity-label": "Panelens bakgrundsopacitet",
"panels-attached-to-bar-description": "Panelerna låses fast vid fältet och skärmens kanter, vilket skapar ett sömlöst utseende med snygga inverterade hörn.",
@@ -1547,7 +1542,6 @@
"panels-overlay-label": "Håll paneler och fält överst",
"scaling-description": "Ändrar storleken på det allmänna användargränssnittet, exklusive fältet.",
"scaling-label": "Gränssnittsskalning",
"scaling-reset-scaling": "Återställ gränssnittsskalning",
"settings-panel-mode-description": "Välj inställningslayout (kan kräva att du öppnar om).",
"settings-panel-mode-label": "Inställningspanelens läge",
"shadows-description": "Aktiverar skuggor under fält och paneler.",
-6
View File
@@ -1087,7 +1087,6 @@
"fonts-monospace-scale-description": "Eş aralıklı metin boyutunu artırın veya azaltın.",
"fonts-monospace-scale-label": "Eş aralıklı yazı tipi boyutu",
"fonts-monospace-search-placeholder": "Eş aralıklı yazı tipi ara...",
"fonts-reset-scaling": "Ölçeklemeyi sıfırla",
"fonts-title": "Yazı tipleri",
"keybinds-conflict-description": "Tuş kombinasyonu zaten {action} için atanmış.",
"keybinds-conflict-title": "Tuş ataması çakışması",
@@ -1301,7 +1300,6 @@
"duration-low-urgency-label": "Düşük öncelikli",
"duration-normal-urgency-description": "Normal öncelikli bildirimlerin ne kadar süreyle görüneceği.",
"duration-normal-urgency-label": "Normal öncelikli",
"duration-reset": "Zaman aşımı süresini sıfırla",
"duration-respect-expire-description": "Bildirimde ayarlanan sona erme zaman aşımını kullanın.",
"duration-respect-expire-label": "Sona erme zaman aşımına uyar",
"duration-title": "Bildirim süresi",
@@ -1529,16 +1527,13 @@
"box-border-label": "Konteyner ana hattı",
"box-border-radius-description": "Kenar çubukları, kartlar ve içerik panelleri gibi ana düzen bölümlerinin köşe yuvarlaklığını ayarlar.",
"box-border-radius-label": "Konteyner yarıçapı",
"box-border-radius-reset": "Konteyner yarıçapını sıfırla",
"control-border-radius-description": "İnteraktif öğelerin, düğmeler, geçişler ve metin alanları dahil olmak üzere, eğriliğini kontrol eder.",
"control-border-radius-label": "Giriş yarıçapı",
"control-border-radius-reset": "Giriş yarıçapını sıfırla",
"desc": "Arayüzün görünümünü, hissini ve davranışını özelleştirin.",
"dim-desktop-description": "Paneller veya menüler açıkken masaüstünü karart.",
"dim-desktop-label": "Masaüstünü karart",
"dimmer-opacity-description": "Masaüstü karartması için opaklık seviyesini ayarlayın.",
"dimmer-opacity-label": "Karartılmış masaüstü opaklığı",
"dimmer-opacity-reset": "Karartılmış masaüstü opaklığını sıfırla",
"panel-background-opacity-description": "Tüm panellerin (çubuk, başlatıcı, ayarlar vb.) arka plan opaklığını ayarlayın.",
"panel-background-opacity-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.",
@@ -1547,7 +1542,6 @@
"panels-overlay-label": "Panelleri ve çubuğu üstte tut",
"scaling-description": "Çubuğu hariç tutarak genel kullanıcı arayüzünün boyutunu değiştirir.",
"scaling-label": "Arayüz ölçekleme",
"scaling-reset-scaling": "Arayüz ölçeklemesini sıfırla",
"settings-panel-mode-description": "Ayarlar düzenini seçin (yeniden açılması gerekebilir).",
"settings-panel-mode-label": "Ayarlar paneli modu",
"shadows-description": "Çubukların ve panellerin altında gölgelerin etkinleştirilmesini sağlar.",
-6
View File
@@ -1087,7 +1087,6 @@
"fonts-monospace-scale-description": "Збільшити або зменшити розмір моноширинного тексту.",
"fonts-monospace-scale-label": "Розмір моноширинного шрифту",
"fonts-monospace-search-placeholder": "Пошук моноширинного шрифту...",
"fonts-reset-scaling": "Скинути масштаб",
"fonts-title": "Шрифти",
"keybinds-conflict-description": "Комбінація клавіш вже призначена для {action}.",
"keybinds-conflict-title": "Конфлікт гарячих клавіш",
@@ -1301,7 +1300,6 @@
"duration-low-urgency-label": "Низька терміновість",
"duration-normal-urgency-description": "Як довго залишаються видимими сповіщення звичайного пріоритету.",
"duration-normal-urgency-label": "Звичайна терміновість",
"duration-reset": "Скинути тривалість очікування",
"duration-respect-expire-description": "Використовувати тривалість показу, встановлений у сповіщенні.",
"duration-respect-expire-label": "Враховувати тривалість показу",
"duration-title": "Тривалість сповіщень",
@@ -1529,16 +1527,13 @@
"box-border-label": "Контур контейнера",
"box-border-radius-description": "Налаштовує заокруглення кутів основних розділів макета, таких як бічні панелі, картки та панелі контенту.",
"box-border-radius-label": "Радіус контейнера",
"box-border-radius-reset": "Скинути радіус контейнера",
"control-border-radius-description": "Керує кривизною інтерактивних елементів, включно з кнопками, перемикачами та текстовими полями.",
"control-border-radius-label": "Введіть радіус",
"control-border-radius-reset": "Скинути радіус введення",
"desc": "Налаштуйте вигляд, відчуття та поведінку інтерфейсу.",
"dim-desktop-description": "Затемнювати робочий стіл, коли відкриті панелі або меню.",
"dim-desktop-label": "Приглушити робочий стіл",
"dimmer-opacity-description": "Встановити рівень непрозорості для затемнення робочого столу.",
"dimmer-opacity-label": "Непрозорість приглушеного робочого столу",
"dimmer-opacity-reset": "Скинути непрозорість приглушеного робочого столу",
"panel-background-opacity-description": "Встановити прозорість фону для всіх панелей (панель задач, панель запуску, налаштування тощо...).",
"panel-background-opacity-label": "Прозорість фону панелей",
"panels-attached-to-bar-description": "Панелі фіксуються до штанги та країв екрана, створюючи бездоганний вигляд зі стильними перевернутими кутами.",
@@ -1547,7 +1542,6 @@
"panels-overlay-label": "Тримати панелі та панель зверху",
"scaling-description": "Змінює розмір загального користувацького інтерфейсу, окрім панелі.",
"scaling-label": "Масштабування інтерфейсу",
"scaling-reset-scaling": "Скинути масштабування інтерфейсу",
"settings-panel-mode-description": "Виберіть макет налаштувань (може знадобитися перезапуск).",
"settings-panel-mode-label": "Режим панелі налаштувань",
"shadows-description": "Увімкнути тіні під панелями та смугами.",
-6
View File
@@ -1087,7 +1087,6 @@
"fonts-monospace-scale-description": "增大或减小等宽文本的尺寸。",
"fonts-monospace-scale-label": "默认等宽字体大小",
"fonts-monospace-search-placeholder": "搜索等宽字体...",
"fonts-reset-scaling": "恢复默认缩放",
"fonts-title": "字体",
"keybinds-conflict-description": "此按键组合已分配给 {action}。",
"keybinds-conflict-title": "按键绑定冲突",
@@ -1301,7 +1300,6 @@
"duration-low-urgency-label": "低紧急度",
"duration-normal-urgency-description": "正常优先级通知保持可见的时间。",
"duration-normal-urgency-label": "正常紧急度",
"duration-reset": "重置超时时长",
"duration-respect-expire-description": "使用通知中设置的过期超时。",
"duration-respect-expire-label": "尊重过期超时",
"duration-title": "通知持续时间",
@@ -1529,16 +1527,13 @@
"box-border-label": "容器轮廓",
"box-border-radius-description": "调整主要布局部分(如侧边栏、卡片和内容面板)的圆角程度。",
"box-border-radius-label": "容器半径",
"box-border-radius-reset": "重置容器半径",
"control-border-radius-description": "控制交互元素的曲率,包括按钮、开关和文本字段。",
"control-border-radius-label": "输入半径",
"control-border-radius-reset": "重置输入半径",
"desc": "自定义界面的外观、感觉和行为。",
"dim-desktop-description": "当面板或菜单打开时,桌面变暗。",
"dim-desktop-label": "昏暗的桌面",
"dimmer-opacity-description": "设置桌面变暗时的不透明度。",
"dimmer-opacity-label": "变暗桌面不透明度",
"dimmer-opacity-reset": "重置变暗桌面不透明度",
"panel-background-opacity-description": "设置所有面板(栏、启动器、设置等)的背景不透明度。",
"panel-background-opacity-label": "面板背景不透明度",
"panels-attached-to-bar-description": "面板锁定到边栏和屏幕边缘,形成无缝外观,并具有时尚的倒角。",
@@ -1547,7 +1542,6 @@
"panels-overlay-label": "将面板和栏保持在顶部",
"scaling-description": "更改通用用户界面大小,不包括栏。",
"scaling-label": "界面缩放",
"scaling-reset-scaling": "重置界面缩放",
"settings-panel-mode-description": "选择「设置」面板的布局(可能需要重新打开「设置」面板才会生效)。",
"settings-panel-mode-label": "「设置」面板模式",
"shadows-description": "启用条形图和面板下的阴影。",
-6
View File
@@ -1087,7 +1087,6 @@
"fonts-monospace-scale-description": "增大或縮小等寬文字的大小",
"fonts-monospace-scale-label": "等寬字型大小",
"fonts-monospace-search-placeholder": "搜尋等寬字型...",
"fonts-reset-scaling": "重設文字大小",
"fonts-title": "字型",
"keybinds-conflict-description": "此按鍵組合已分配給 {action}。",
"keybinds-conflict-title": "按鍵綁定衝突",
@@ -1301,7 +1300,6 @@
"duration-low-urgency-label": "低急迫性",
"duration-normal-urgency-description": "設定普通急迫的通知該顯示多久",
"duration-normal-urgency-label": "普通急迫",
"duration-reset": "重設逾時時間長度",
"duration-respect-expire-description": "使用通知中設定的到期逾時時間。",
"duration-respect-expire-label": "遵循到期逾時設定",
"duration-title": "通知顯示時長",
@@ -1529,16 +1527,13 @@
"box-border-label": "頁面容器外框",
"box-border-radius-description": "調整主要版面區塊(例如側邊欄、卡片與內容面板)的圓角弧度。",
"box-border-radius-label": "頁面容器半徑",
"box-border-radius-reset": "重設頁面容器半徑",
"control-border-radius-description": "控制互動元素(包括按鈕、切換開關與文字欄位)的圓角弧度。",
"control-border-radius-label": "控制項半徑",
"control-border-radius-reset": "重設控制項半徑",
"desc": "自訂介面顯示的行為, 外觀及風格",
"dim-desktop-description": "當功能表或面板打開時調暗桌布",
"dim-desktop-label": "調暗桌布",
"dimmer-opacity-description": "設定調暗桌布所使用的不透明度",
"dimmer-opacity-label": "調暗桌面不透明度",
"dimmer-opacity-reset": "重設調暗桌面不透明度",
"panel-background-opacity-description": "設定所有面板的背景不透明度 (工具列, 啟動器, 設定等...)",
"panel-background-opacity-label": "面板背景不透明度",
"panels-attached-to-bar-description": "將面板鎖定在工具列及畫面邊緣, 配合倒角可做出更一致的效果",
@@ -1547,7 +1542,6 @@
"panels-overlay-label": "維持工具列及面板在最上層",
"scaling-description": "調整除了工具列以外的整體介面大小",
"scaling-label": "介面比例",
"scaling-reset-scaling": "重設介面比例",
"settings-panel-mode-description": "選擇介面設定出現所用的佈局 (可能需要重新打開)",
"settings-panel-mode-label": "設定面板顯示",
"shadows-description": "為工具列及面板啟用陰影",
+1
View File
@@ -98,6 +98,7 @@
"allowPasswordWithFprintd": false,
"clockStyle": "custom",
"clockFormat": "hh\\nmm",
"passwordChars": false,
"lockScreenMonitors": [],
"lockScreenBlur": 0,
"lockScreenTint": 0,
+65 -56
View File
@@ -1054,8 +1054,8 @@
"subTabLabel": "common.appearance"
},
{
"labelKey": "panels.lock-screen.lock-on-suspend-label",
"descriptionKey": "panels.lock-screen.lock-on-suspend-description",
"labelKey": "panels.lock-screen.password-chars-label",
"descriptionKey": "panels.lock-screen.password-chars-description",
"widget": "NToggle",
"tab": 11,
"tabLabel": "panels.lock-screen.title",
@@ -1080,60 +1080,6 @@
"subTab": 0,
"subTabLabel": "common.appearance"
},
{
"labelKey": "panels.lock-screen.auto-start-auth-label",
"descriptionKey": "panels.lock-screen.auto-start-auth-description",
"widget": "NToggle",
"tab": 11,
"tabLabel": "panels.lock-screen.title",
"subTab": 0,
"subTabLabel": "common.appearance"
},
{
"labelKey": "panels.lock-screen.allow-password-with-fprintd-label",
"descriptionKey": "panels.lock-screen.allow-password-with-fprintd-description",
"widget": "NToggle",
"tab": 11,
"tabLabel": "panels.lock-screen.title",
"subTab": 0,
"subTabLabel": "common.appearance"
},
{
"labelKey": "panels.lock-screen.show-session-buttons-label",
"descriptionKey": "panels.lock-screen.show-session-buttons-description",
"widget": "NToggle",
"tab": 11,
"tabLabel": "panels.lock-screen.title",
"subTab": 0,
"subTabLabel": "common.appearance"
},
{
"labelKey": "panels.lock-screen.show-hibernate-label",
"descriptionKey": "panels.lock-screen.show-hibernate-description",
"widget": "NToggle",
"tab": 11,
"tabLabel": "panels.lock-screen.title",
"subTab": 0,
"subTabLabel": "common.appearance"
},
{
"labelKey": "panels.session-menu.enable-countdown-label",
"descriptionKey": "panels.session-menu.enable-countdown-description",
"widget": "NToggle",
"tab": 11,
"tabLabel": "panels.lock-screen.title",
"subTab": 0,
"subTabLabel": "common.appearance"
},
{
"labelKey": "panels.session-menu.countdown-duration-label",
"descriptionKey": "panels.session-menu.countdown-duration-description",
"widget": "NValueSlider",
"tab": 11,
"tabLabel": "panels.lock-screen.title",
"subTab": 0,
"subTabLabel": "common.appearance"
},
{
"labelKey": "panels.lock-screen.lock-screen-blur-strength-label",
"descriptionKey": "panels.lock-screen.lock-screen-blur-strength-description",
@@ -1152,6 +1098,69 @@
"subTab": 0,
"subTabLabel": "common.appearance"
},
{
"labelKey": "panels.lock-screen.lock-on-suspend-label",
"descriptionKey": "panels.lock-screen.lock-on-suspend-description",
"widget": "NToggle",
"tab": 11,
"tabLabel": "panels.lock-screen.title",
"subTab": 1,
"subTabLabel": "common.behavior"
},
{
"labelKey": "panels.lock-screen.auto-start-auth-label",
"descriptionKey": "panels.lock-screen.auto-start-auth-description",
"widget": "NToggle",
"tab": 11,
"tabLabel": "panels.lock-screen.title",
"subTab": 1,
"subTabLabel": "common.behavior"
},
{
"labelKey": "panels.lock-screen.allow-password-with-fprintd-label",
"descriptionKey": "panels.lock-screen.allow-password-with-fprintd-description",
"widget": "NToggle",
"tab": 11,
"tabLabel": "panels.lock-screen.title",
"subTab": 1,
"subTabLabel": "common.behavior"
},
{
"labelKey": "panels.lock-screen.show-session-buttons-label",
"descriptionKey": "panels.lock-screen.show-session-buttons-description",
"widget": "NToggle",
"tab": 11,
"tabLabel": "panels.lock-screen.title",
"subTab": 1,
"subTabLabel": "common.behavior"
},
{
"labelKey": "panels.lock-screen.show-hibernate-label",
"descriptionKey": "panels.lock-screen.show-hibernate-description",
"widget": "NToggle",
"tab": 11,
"tabLabel": "panels.lock-screen.title",
"subTab": 1,
"subTabLabel": "common.behavior"
},
{
"labelKey": "panels.session-menu.enable-countdown-label",
"descriptionKey": "panels.session-menu.enable-countdown-description",
"widget": "NToggle",
"tab": 11,
"tabLabel": "panels.lock-screen.title",
"subTab": 1,
"subTabLabel": "common.behavior"
},
{
"labelKey": "panels.session-menu.countdown-duration-label",
"descriptionKey": "panels.session-menu.countdown-duration-description",
"widget": "NValueSlider",
"tab": 11,
"tabLabel": "panels.lock-screen.title",
"subTab": 1,
"subTabLabel": "common.behavior"
},
{
"labelKey": "panels.notifications.duration-respect-expire-label",
"descriptionKey": "panels.notifications.duration-respect-expire-description",
+1
View File
@@ -287,6 +287,7 @@ Singleton {
property bool allowPasswordWithFprintd: false
property string clockStyle: "custom"
property string clockFormat: "hh\\nmm"
property bool passwordChars: false
property list<string> lockScreenMonitors: [] // holds lock screen visibility per monitor
property real lockScreenBlur: 0.0
property real lockScreenTint: 0.0
+1
View File
@@ -47,6 +47,7 @@ Singleton {
readonly property int borderL: Math.max(1, Math.round(3 * uiScaleRatio))
// Margins (for margins and spacing)
readonly property int marginXXXS: Math.round(1 * 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)
+33 -4
View File
@@ -581,17 +581,46 @@ Item {
Row {
id: passwordDisplayContent
spacing: Style.marginS
spacing: Style.marginXXXS
anchors.verticalCenter: parent.verticalCenter
Repeater {
model: passwordInput.text.length
id: iconRepeater
model: ScriptModel {
values: Array(passwordInput.text.length)
}
property list<string> passwordChars: ["circle-filled", "pentagon-filled", "michelin-star-filled", "square-rounded-filled", "guitar-pick-filled", "blob-filled", "triangle-filled"]
NIcon {
icon: "circle-filled"
pointSize: Style.fontSizeS
id: icon
required property int index
// This will be called with index = -1 when the TextInput is deleted
// So we make sur index is positive to avoid warning on array accesses
property bool drawCustomChar: index >= 0 && Settings.data.general.passwordChars
icon: drawCustomChar ? iconRepeater.passwordChars[index % iconRepeater.passwordChars.length] : "circle-filled"
pointSize: Style.fontSizeL
color: Color.mPrimary
opacity: 1.0
scale: animationsEnabled ? 0.5 : 1
ParallelAnimation {
id: iconAnim
NumberAnimation {
target: icon
properties: "scale"
to: 1
duration: Style.animationFast
easing.type: Easing.BezierSpline
easing.bezierCurve: Easing.OutInBounce
}
}
Component.onCompleted: {
if (animationsEnabled) {
iconAnim.start();
}
}
}
}
}
+12 -32
View File
@@ -408,7 +408,10 @@ Variants {
return a.identifier === "default";
});
if (hasDefault) {
card.runDeferredTimer("default", false);
card.runAction("default", false);
} else {
NotificationService.focusSenderWindow(model.appName);
card.animateOut();
}
}
onCanceled: {
@@ -497,23 +500,14 @@ Variants {
}
}
function runDeferredTimer(actionId, isDismissed) {
if (Style.animationSlow <= 0) {
if (!isDismissed) {
NotificationService.invokeAction(notificationId, actionId);
} else if (Settings.data.notifications.clearDismissed) {
NotificationService.removeFromHistory(notificationId);
}
card.animateOut();
return;
function runAction(actionId, isDismissed) {
if (!isDismissed) {
NotificationService.focusSenderWindow(model.appName);
NotificationService.invokeActionAndSuppressClose(notificationId, actionId);
} else if (Settings.data.notifications.clearDismissed) {
NotificationService.removeFromHistory(notificationId);
}
deferredActionTimer.stop();
deferredActionTimer.actionId = actionId || "";
deferredActionTimer.isDismissed = isDismissed;
deferredActionTimer.interval = Math.min(50, Math.max(1, Style.animationSlow - 1));
card.animateOut();
deferredActionTimer.start();
}
Timer {
@@ -525,20 +519,6 @@ Variants {
}
}
Timer {
id: deferredActionTimer
interval: 50
property string actionId: ""
property bool isDismissed: false
onTriggered: {
if (!isDismissed) {
NotificationService.invokeAction(notificationId, actionId);
} else if (Settings.data.notifications.clearDismissed) {
NotificationService.removeFromHistory(notificationId);
}
}
}
onIsRemovingChanged: {
if (isRemoving) {
removalTimer.start();
@@ -722,7 +702,7 @@ Variants {
outlined: false
implicitHeight: 24
onClicked: {
card.runDeferredTimer(actionData.identifier, false);
card.runAction(actionData.identifier, false);
}
}
}
@@ -743,7 +723,7 @@ Variants {
anchors.rightMargin: Style.marginM
onClicked: {
card.runDeferredTimer("", true);
card.runAction("", true);
}
}
@@ -132,6 +132,7 @@ ColumnLayout {
from: 0
to: 1
stepSize: 0.01
showReset: true
value: Settings.data.bar.backgroundOpacity
defaultValue: Settings.getDefaultValue("bar.backgroundOpacity")
onMoved: value => Settings.data.bar.backgroundOpacity = value
@@ -175,6 +176,7 @@ ColumnLayout {
from: 0
to: 1
stepSize: 0.01
showReset: true
value: Settings.data.bar.capsuleOpacity
defaultValue: Settings.getDefaultValue("bar.capsuleOpacity")
onMoved: value => Settings.data.bar.capsuleOpacity = value
@@ -221,6 +223,7 @@ ColumnLayout {
from: 4
to: 24
stepSize: 1
showReset: true
value: Settings.data.bar.frameThickness
defaultValue: Settings.getDefaultValue("bar.frameThickness")
onMoved: value => Settings.data.bar.frameThickness = value
@@ -233,6 +236,7 @@ ColumnLayout {
from: 4
to: 24
stepSize: 1
showReset: true
value: Settings.data.bar.frameRadius
defaultValue: Settings.getDefaultValue("bar.frameRadius")
onMoved: value => Settings.data.bar.frameRadius = value
@@ -261,6 +265,7 @@ ColumnLayout {
from: 0
to: 18
stepSize: 1
showReset: true
value: Settings.data.bar.marginVertical
defaultValue: Settings.getDefaultValue("bar.marginVertical")
onMoved: value => Settings.data.bar.marginVertical = value
@@ -273,6 +278,7 @@ ColumnLayout {
from: 0
to: 18
stepSize: 1
showReset: true
value: Settings.data.bar.marginHorizontal
defaultValue: Settings.getDefaultValue("bar.marginHorizontal")
onMoved: value => Settings.data.bar.marginHorizontal = value
@@ -299,6 +305,7 @@ ColumnLayout {
from: 100
to: 2000
stepSize: 100
showReset: true
value: Settings.data.bar.autoHideDelay
defaultValue: Settings.getDefaultValue("bar.autoHideDelay")
onMoved: value => Settings.data.bar.autoHideDelay = value
@@ -312,6 +319,7 @@ ColumnLayout {
from: 0
to: 500
stepSize: 50
showReset: true
value: Settings.data.bar.autoShowDelay
defaultValue: Settings.getDefaultValue("bar.autoShowDelay")
onMoved: value => Settings.data.bar.autoShowDelay = value
@@ -121,6 +121,7 @@ ColumnLayout {
from: 0
to: 1
stepSize: 0.01
showReset: true
value: Settings.data.dock.backgroundOpacity
defaultValue: Settings.getDefaultValue("dock.backgroundOpacity")
onMoved: value => Settings.data.dock.backgroundOpacity = value
@@ -134,6 +135,7 @@ ColumnLayout {
from: 0
to: 1
stepSize: 0.01
showReset: true
value: Settings.data.dock.deadOpacity
defaultValue: Settings.getDefaultValue("dock.deadOpacity")
onMoved: value => Settings.data.dock.deadOpacity = value
@@ -148,6 +150,7 @@ ColumnLayout {
from: 0
to: 4
stepSize: 0.01
showReset: true
value: Settings.data.dock.floatingRatio
defaultValue: Settings.getDefaultValue("dock.floatingRatio")
onMoved: value => Settings.data.dock.floatingRatio = value
@@ -161,6 +164,7 @@ ColumnLayout {
from: 0
to: 2
stepSize: 0.01
showReset: true
value: Settings.data.dock.size
defaultValue: Settings.getDefaultValue("dock.size")
onMoved: value => Settings.data.dock.size = value
@@ -175,6 +179,7 @@ ColumnLayout {
from: 0.1
to: 2.0
stepSize: 0.01
showReset: true
value: Settings.data.dock.animationSpeed
defaultValue: Settings.getDefaultValue("dock.animationSpeed")
onMoved: value => Settings.data.dock.animationSpeed = value
@@ -105,70 +105,32 @@ ColumnLayout {
onSelected: key => Settings.data.ui.fontFixed = key
}
RowLayout {
spacing: Style.marginL
NValueSlider {
Layout.fillWidth: true
NValueSlider {
Layout.fillWidth: true
label: I18n.tr("panels.general.fonts-default-scale-label")
description: I18n.tr("panels.general.fonts-default-scale-description")
from: 0.75
to: 1.25
stepSize: 0.01
value: Settings.data.ui.fontDefaultScale
defaultValue: Settings.getDefaultValue("ui.fontDefaultScale")
onMoved: value => Settings.data.ui.fontDefaultScale = value
text: Math.floor(Settings.data.ui.fontDefaultScale * 100) + "%"
}
// Reset button container
Item {
Layout.preferredWidth: 30 * Style.uiScaleRatio
Layout.preferredHeight: 30 * Style.uiScaleRatio
NIconButton {
icon: "restore"
baseSize: Style.baseWidgetSize * 0.8
tooltipText: I18n.tr("panels.general.fonts-reset-scaling")
onClicked: Settings.data.ui.fontDefaultScale = 1.0
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
}
}
label: I18n.tr("panels.general.fonts-default-scale-label")
description: I18n.tr("panels.general.fonts-default-scale-description")
from: 0.75
to: 1.25
stepSize: 0.01
showReset: true
value: Settings.data.ui.fontDefaultScale
defaultValue: Settings.getDefaultValue("ui.fontDefaultScale")
onMoved: value => Settings.data.ui.fontDefaultScale = value
text: Math.floor(Settings.data.ui.fontDefaultScale * 100) + "%"
}
RowLayout {
spacing: Style.marginL
NValueSlider {
Layout.fillWidth: true
NValueSlider {
Layout.fillWidth: true
label: I18n.tr("panels.general.fonts-monospace-scale-label")
description: I18n.tr("panels.general.fonts-monospace-scale-description")
from: 0.75
to: 1.25
stepSize: 0.01
value: Settings.data.ui.fontFixedScale
defaultValue: Settings.getDefaultValue("ui.fontFixedScale")
onMoved: value => Settings.data.ui.fontFixedScale = value
text: Math.floor(Settings.data.ui.fontFixedScale * 100) + "%"
}
// Reset button container
Item {
Layout.preferredWidth: 30 * Style.uiScaleRatio
Layout.preferredHeight: 30 * Style.uiScaleRatio
NIconButton {
icon: "restore"
baseSize: Style.baseWidgetSize * 0.8
tooltipText: I18n.tr("panels.general.fonts-reset-scaling")
onClicked: Settings.data.ui.fontFixedScale = 1.0
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
}
}
label: I18n.tr("panels.general.fonts-monospace-scale-label")
description: I18n.tr("panels.general.fonts-monospace-scale-description")
from: 0.75
to: 1.25
stepSize: 0.01
showReset: true
value: Settings.data.ui.fontFixedScale
defaultValue: Settings.getDefaultValue("ui.fontFixedScale")
onMoved: value => Settings.data.ui.fontFixedScale = value
text: Math.floor(Settings.data.ui.fontFixedScale * 100) + "%"
}
}
}
@@ -61,11 +61,11 @@ ColumnLayout {
}
NToggle {
label: I18n.tr("panels.lock-screen.lock-on-suspend-label")
description: I18n.tr("panels.lock-screen.lock-on-suspend-description")
checked: Settings.data.general.lockOnSuspend
onToggled: checked => Settings.data.general.lockOnSuspend = checked
defaultValue: Settings.getDefaultValue("general.lockOnSuspend")
label: I18n.tr("panels.lock-screen.password-chars-label")
description: I18n.tr("panels.lock-screen.password-chars-description")
checked: Settings.data.general.passwordChars
onToggled: checked => Settings.data.general.passwordChars = checked
defaultValue: Settings.getDefaultValue("general.passwordChars")
}
NToggle {
@@ -84,66 +84,6 @@ ColumnLayout {
defaultValue: Settings.getDefaultValue("general.lockScreenAnimations")
}
NToggle {
label: I18n.tr("panels.lock-screen.auto-start-auth-label")
description: I18n.tr("panels.lock-screen.auto-start-auth-description")
checked: Settings.data.general.autoStartAuth
onToggled: checked => Settings.data.general.autoStartAuth = checked
defaultValue: Settings.getDefaultValue("general.autoStartAuth")
}
NToggle {
label: I18n.tr("panels.lock-screen.allow-password-with-fprintd-label")
description: I18n.tr("panels.lock-screen.allow-password-with-fprintd-description")
checked: Settings.data.general.allowPasswordWithFprintd
onToggled: checked => Settings.data.general.allowPasswordWithFprintd = checked
defaultValue: Settings.getDefaultValue("general.allowPasswordWithFprintd")
}
NToggle {
label: I18n.tr("panels.lock-screen.show-session-buttons-label")
description: I18n.tr("panels.lock-screen.show-session-buttons-description")
checked: Settings.data.general.showSessionButtonsOnLockScreen
onToggled: checked => Settings.data.general.showSessionButtonsOnLockScreen = checked
defaultValue: Settings.getDefaultValue("general.showSessionButtonsOnLockScreen")
}
NToggle {
label: I18n.tr("panels.lock-screen.show-hibernate-label")
description: I18n.tr("panels.lock-screen.show-hibernate-description")
checked: Settings.data.general.showHibernateOnLockScreen
onToggled: checked => Settings.data.general.showHibernateOnLockScreen = checked
visible: Settings.data.general.showSessionButtonsOnLockScreen
defaultValue: Settings.getDefaultValue("general.showSessionButtonsOnLockScreen")
}
NToggle {
label: I18n.tr("panels.session-menu.enable-countdown-label")
description: I18n.tr("panels.session-menu.enable-countdown-description")
checked: Settings.data.general.enableLockScreenCountdown
onToggled: checked => Settings.data.general.enableLockScreenCountdown = checked
visible: Settings.data.general.showSessionButtonsOnLockScreen
defaultValue: Settings.getDefaultValue("general.enableLockScreenCountdown")
}
NValueSlider {
visible: Settings.data.general.showSessionButtonsOnLockScreen && Settings.data.general.enableLockScreenCountdown
Layout.fillWidth: true
label: I18n.tr("panels.session-menu.countdown-duration-label")
description: I18n.tr("panels.session-menu.countdown-duration-description")
from: 1000
to: 30000
stepSize: 1000
value: Settings.data.general.lockScreenCountdownDuration
onMoved: value => Settings.data.general.lockScreenCountdownDuration = value
text: Math.round(Settings.data.general.lockScreenCountdownDuration / 1000) + "s"
defaultValue: Settings.getDefaultValue("general.lockScreenCountdownDuration")
}
NDivider {
Layout.fillWidth: true
}
NValueSlider {
Layout.fillWidth: true
label: I18n.tr("panels.lock-screen.lock-screen-blur-strength-label")
@@ -151,6 +91,7 @@ ColumnLayout {
from: 0.0
to: 1.0
stepSize: 0.01
showReset: true
value: Settings.data.general.lockScreenBlur
onMoved: value => Settings.data.general.lockScreenBlur = value
text: ((Settings.data.general.lockScreenBlur) * 100).toFixed(0) + "%"
@@ -164,6 +105,7 @@ ColumnLayout {
from: 0.0
to: 1.0
stepSize: 0.01
showReset: true
value: Settings.data.general.lockScreenTint
onMoved: value => Settings.data.general.lockScreenTint = value
text: ((Settings.data.general.lockScreenTint) * 100).toFixed(0) + "%"
@@ -0,0 +1,75 @@
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import qs.Commons
import qs.Widgets
ColumnLayout {
id: root
spacing: Style.marginL
NToggle {
label: I18n.tr("panels.lock-screen.lock-on-suspend-label")
description: I18n.tr("panels.lock-screen.lock-on-suspend-description")
checked: Settings.data.general.lockOnSuspend
onToggled: checked => Settings.data.general.lockOnSuspend = checked
defaultValue: Settings.getDefaultValue("general.lockOnSuspend")
}
NToggle {
label: I18n.tr("panels.lock-screen.auto-start-auth-label")
description: I18n.tr("panels.lock-screen.auto-start-auth-description")
checked: Settings.data.general.autoStartAuth
onToggled: checked => Settings.data.general.autoStartAuth = checked
defaultValue: Settings.getDefaultValue("general.autoStartAuth")
}
NToggle {
label: I18n.tr("panels.lock-screen.allow-password-with-fprintd-label")
description: I18n.tr("panels.lock-screen.allow-password-with-fprintd-description")
checked: Settings.data.general.allowPasswordWithFprintd
onToggled: checked => Settings.data.general.allowPasswordWithFprintd = checked
defaultValue: Settings.getDefaultValue("general.allowPasswordWithFprintd")
}
NToggle {
label: I18n.tr("panels.lock-screen.show-session-buttons-label")
description: I18n.tr("panels.lock-screen.show-session-buttons-description")
checked: Settings.data.general.showSessionButtonsOnLockScreen
onToggled: checked => Settings.data.general.showSessionButtonsOnLockScreen = checked
defaultValue: Settings.getDefaultValue("general.showSessionButtonsOnLockScreen")
}
NToggle {
label: I18n.tr("panels.lock-screen.show-hibernate-label")
description: I18n.tr("panels.lock-screen.show-hibernate-description")
checked: Settings.data.general.showHibernateOnLockScreen
onToggled: checked => Settings.data.general.showHibernateOnLockScreen = checked
visible: Settings.data.general.showSessionButtonsOnLockScreen
defaultValue: Settings.getDefaultValue("general.showSessionButtonsOnLockScreen")
}
NToggle {
label: I18n.tr("panels.session-menu.enable-countdown-label")
description: I18n.tr("panels.session-menu.enable-countdown-description")
checked: Settings.data.general.enableLockScreenCountdown
onToggled: checked => Settings.data.general.enableLockScreenCountdown = checked
visible: Settings.data.general.showSessionButtonsOnLockScreen
defaultValue: Settings.getDefaultValue("general.enableLockScreenCountdown")
}
NValueSlider {
visible: Settings.data.general.showSessionButtonsOnLockScreen && Settings.data.general.enableLockScreenCountdown
Layout.fillWidth: true
label: I18n.tr("panels.session-menu.countdown-duration-label")
description: I18n.tr("panels.session-menu.countdown-duration-description")
from: 1000
to: 30000
stepSize: 1000
showReset: true
value: Settings.data.general.lockScreenCountdownDuration
onMoved: value => Settings.data.general.lockScreenCountdownDuration = value
text: Math.round(Settings.data.general.lockScreenCountdownDuration / 1000) + "s"
defaultValue: Settings.getDefaultValue("general.lockScreenCountdownDuration")
}
}
@@ -21,10 +21,15 @@ ColumnLayout {
checked: subTabBar.currentIndex === 0
}
NTabButton {
text: I18n.tr("common.monitors")
text: I18n.tr("common.behavior")
tabIndex: 1
checked: subTabBar.currentIndex === 1
}
NTabButton {
text: I18n.tr("common.monitors")
tabIndex: 2
checked: subTabBar.currentIndex === 2
}
}
Item {
@@ -37,6 +42,7 @@ ColumnLayout {
currentIndex: subTabBar.currentIndex
AppearanceSubTab {}
BehaviorSubTab {}
MonitorsSubTab {}
}
}
@@ -17,99 +17,45 @@ ColumnLayout {
defaultValue: Settings.getDefaultValue("notifications.respectExpireTimeout")
}
RowLayout {
spacing: Style.marginL
NValueSlider {
Layout.fillWidth: true
NValueSlider {
Layout.fillWidth: true
label: I18n.tr("panels.notifications.duration-low-urgency-label")
description: I18n.tr("panels.notifications.duration-low-urgency-description")
from: 1
to: 30
stepSize: 1
value: Settings.data.notifications.lowUrgencyDuration
onMoved: value => Settings.data.notifications.lowUrgencyDuration = value
text: Settings.data.notifications.lowUrgencyDuration + "s"
defaultValue: Settings.getDefaultValue("notifications.lowUrgencyDuration")
}
Item {
Layout.preferredWidth: 30 * Style.uiScaleRatio
Layout.preferredHeight: 30 * Style.uiScaleRatio
NIconButton {
icon: "restore"
baseSize: Style.baseWidgetSize * 0.8
tooltipText: I18n.tr("panels.notifications.duration-reset")
onClicked: Settings.data.notifications.lowUrgencyDuration = 3
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
}
}
label: I18n.tr("panels.notifications.duration-low-urgency-label")
description: I18n.tr("panels.notifications.duration-low-urgency-description")
from: 1
to: 30
stepSize: 1
showReset: true
value: Settings.data.notifications.lowUrgencyDuration
onMoved: value => Settings.data.notifications.lowUrgencyDuration = value
text: Settings.data.notifications.lowUrgencyDuration + "s"
defaultValue: Settings.getDefaultValue("notifications.lowUrgencyDuration")
}
RowLayout {
spacing: Style.marginL
NValueSlider {
Layout.fillWidth: true
NValueSlider {
Layout.fillWidth: true
label: I18n.tr("panels.notifications.duration-normal-urgency-label")
description: I18n.tr("panels.notifications.duration-normal-urgency-description")
from: 1
to: 30
stepSize: 1
value: Settings.data.notifications.normalUrgencyDuration
onMoved: value => Settings.data.notifications.normalUrgencyDuration = value
text: Settings.data.notifications.normalUrgencyDuration + "s"
defaultValue: Settings.getDefaultValue("notifications.normalUrgencyDuration")
}
Item {
Layout.preferredWidth: 30 * Style.uiScaleRatio
Layout.preferredHeight: 30 * Style.uiScaleRatio
NIconButton {
icon: "restore"
baseSize: Style.baseWidgetSize * 0.8
tooltipText: I18n.tr("panels.notifications.duration-reset")
onClicked: Settings.data.notifications.normalUrgencyDuration = 8
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
}
}
label: I18n.tr("panels.notifications.duration-normal-urgency-label")
description: I18n.tr("panels.notifications.duration-normal-urgency-description")
from: 1
to: 30
stepSize: 1
showReset: true
value: Settings.data.notifications.normalUrgencyDuration
onMoved: value => Settings.data.notifications.normalUrgencyDuration = value
text: Settings.data.notifications.normalUrgencyDuration + "s"
defaultValue: Settings.getDefaultValue("notifications.normalUrgencyDuration")
}
RowLayout {
spacing: Style.marginL
NValueSlider {
Layout.fillWidth: true
NValueSlider {
Layout.fillWidth: true
label: I18n.tr("panels.notifications.duration-critical-urgency-label")
description: I18n.tr("panels.notifications.duration-critical-urgency-description")
from: 1
to: 30
stepSize: 1
value: Settings.data.notifications.criticalUrgencyDuration
onMoved: value => Settings.data.notifications.criticalUrgencyDuration = value
text: Settings.data.notifications.criticalUrgencyDuration + "s"
defaultValue: Settings.getDefaultValue("notifications.criticalUrgencyDuration")
}
Item {
Layout.preferredWidth: 30 * Style.uiScaleRatio
Layout.preferredHeight: 30 * Style.uiScaleRatio
NIconButton {
icon: "restore"
baseSize: Style.baseWidgetSize * 0.8
tooltipText: I18n.tr("panels.notifications.duration-reset")
onClicked: Settings.data.notifications.criticalUrgencyDuration = 15
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
}
}
label: I18n.tr("panels.notifications.duration-critical-urgency-label")
description: I18n.tr("panels.notifications.duration-critical-urgency-description")
from: 1
to: 30
stepSize: 1
showReset: true
value: Settings.data.notifications.criticalUrgencyDuration
onMoved: value => Settings.data.notifications.criticalUrgencyDuration = value
text: Settings.data.notifications.criticalUrgencyDuration + "s"
defaultValue: Settings.getDefaultValue("notifications.criticalUrgencyDuration")
}
}
@@ -97,6 +97,7 @@ ColumnLayout {
from: 0
to: 1
stepSize: 0.01
showReset: true
value: Settings.data.notifications.backgroundOpacity
onMoved: value => Settings.data.notifications.backgroundOpacity = value
text: Math.round(Settings.data.notifications.backgroundOpacity * 100) + "%"
@@ -61,6 +61,7 @@ ColumnLayout {
from: 0
to: 1
stepSize: 0.01
showReset: true
value: Settings.data.notifications?.sounds?.volume ?? 0.5
onMoved: value => Settings.data.notifications.sounds.volume = value
text: Math.round((Settings.data.notifications?.sounds?.volume ?? 0.5) * 100) + "%"
@@ -79,6 +79,7 @@ ColumnLayout {
from: 0
to: 100
stepSize: 1
showReset: true
value: Settings.data.osd.backgroundOpacity * 100
defaultValue: (Settings.getDefaultValue("osd.backgroundOpacity") || 1) * 100
onMoved: value => Settings.data.osd.backgroundOpacity = value / 100
@@ -92,6 +93,7 @@ ColumnLayout {
from: 500
to: 5000
stepSize: 100
showReset: true
value: Settings.data.osd.autoHideMs
defaultValue: Settings.getDefaultValue("osd.autoHideMs")
onMoved: value => Settings.data.osd.autoHideMs = value
@@ -113,6 +113,7 @@ ColumnLayout {
from: 1000
to: 30000
stepSize: 1000
showReset: true
value: Settings.data.sessionMenu.countdownDuration
onMoved: value => Settings.data.sessionMenu.countdownDuration = value
text: Math.round(Settings.data.sessionMenu.countdownDuration / 1000) + "s"
@@ -163,6 +163,7 @@ Popup {
description: I18n.tr("placeholders.keybind-recording")
allowEmpty: true
maxKeybinds: 1
requireModifierForNormalKeys: false
currentKeybinds: keybindInputText ? [keybindInputText] : []
settingsPath: "sessionMenu.powerOptions[" + root.entryIndex + "].keybind"
onKeybindsChanged: newKeybinds => {
@@ -102,104 +102,50 @@ ColumnLayout {
Layout.fillWidth: true
}
RowLayout {
spacing: Style.marginL
NValueSlider {
Layout.fillWidth: true
NValueSlider {
Layout.fillWidth: true
label: I18n.tr("panels.user-interface.scaling-label")
description: I18n.tr("panels.user-interface.scaling-description")
from: 0.8
to: 1.2
stepSize: 0.05
value: Settings.data.general.scaleRatio
defaultValue: Settings.getDefaultValue("general.scaleRatio")
onMoved: value => Settings.data.general.scaleRatio = value
text: Math.floor(Settings.data.general.scaleRatio * 100) + "%"
}
Item {
Layout.preferredWidth: 30 * Style.uiScaleRatio
Layout.preferredHeight: 30 * Style.uiScaleRatio
NIconButton {
icon: "restore"
baseSize: Style.baseWidgetSize * 0.8
tooltipText: I18n.tr("panels.user-interface.scaling-reset-scaling")
onClicked: Settings.data.general.scaleRatio = 1.0
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
}
}
label: I18n.tr("panels.user-interface.scaling-label")
description: I18n.tr("panels.user-interface.scaling-description")
from: 0.8
to: 1.2
stepSize: 0.05
showReset: true
value: Settings.data.general.scaleRatio
defaultValue: Settings.getDefaultValue("general.scaleRatio")
onMoved: value => Settings.data.general.scaleRatio = value
text: Math.floor(Settings.data.general.scaleRatio * 100) + "%"
}
NDivider {
Layout.fillWidth: true
}
RowLayout {
spacing: Style.marginL
NValueSlider {
Layout.fillWidth: true
NValueSlider {
Layout.fillWidth: true
label: I18n.tr("panels.user-interface.box-border-radius-label")
description: I18n.tr("panels.user-interface.box-border-radius-description")
from: 0
to: 2
stepSize: 0.01
value: Settings.data.general.radiusRatio
defaultValue: Settings.getDefaultValue("general.radiusRatio")
onMoved: value => Settings.data.general.radiusRatio = value
text: Math.floor(Settings.data.general.radiusRatio * 100) + "%"
}
Item {
Layout.preferredWidth: 30 * Style.uiScaleRatio
Layout.preferredHeight: 30 * Style.uiScaleRatio
NIconButton {
icon: "restore"
baseSize: Style.baseWidgetSize * 0.8
tooltipText: I18n.tr("panels.user-interface.box-border-radius-reset")
onClicked: Settings.data.general.radiusRatio = 1.0
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
}
}
label: I18n.tr("panels.user-interface.box-border-radius-label")
description: I18n.tr("panels.user-interface.box-border-radius-description")
from: 0
to: 2
stepSize: 0.01
showReset: true
value: Settings.data.general.radiusRatio
defaultValue: Settings.getDefaultValue("general.radiusRatio")
onMoved: value => Settings.data.general.radiusRatio = value
text: Math.floor(Settings.data.general.radiusRatio * 100) + "%"
}
RowLayout {
spacing: Style.marginL
NValueSlider {
Layout.fillWidth: true
NValueSlider {
Layout.fillWidth: true
label: I18n.tr("panels.user-interface.control-border-radius-label")
description: I18n.tr("panels.user-interface.control-border-radius-description")
from: 0
to: 2
stepSize: 0.01
value: Settings.data.general.iRadiusRatio
defaultValue: Settings.getDefaultValue("general.iRadiusRatio")
onMoved: value => Settings.data.general.iRadiusRatio = value
text: Math.floor(Settings.data.general.iRadiusRatio * 100) + "%"
}
Item {
Layout.preferredWidth: 30 * Style.uiScaleRatio
Layout.preferredHeight: 30 * Style.uiScaleRatio
NIconButton {
icon: "restore"
baseSize: Style.baseWidgetSize * 0.8
tooltipText: I18n.tr("panels.user-interface.control-border-radius-reset")
onClicked: Settings.data.general.iRadiusRatio = 1.0
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
}
}
label: I18n.tr("panels.user-interface.control-border-radius-label")
description: I18n.tr("panels.user-interface.control-border-radius-description")
from: 0
to: 2
stepSize: 0.01
showReset: true
value: Settings.data.general.iRadiusRatio
defaultValue: Settings.getDefaultValue("general.iRadiusRatio")
onMoved: value => Settings.data.general.iRadiusRatio = value
text: Math.floor(Settings.data.general.iRadiusRatio * 100) + "%"
}
NDivider {
@@ -248,7 +194,7 @@ ColumnLayout {
icon: "restore"
baseSize: Style.baseWidgetSize * 0.8
tooltipText: I18n.tr("panels.user-interface.animation-speed-reset")
onClicked: Settings.data.general.animationSpeed = 1.0
onClicked: Settings.data.general.animationSpeed = Settings.getDefaultValue("general.animationSpeed")
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
}
@@ -34,6 +34,7 @@ ColumnLayout {
from: 0.4
to: 1
stepSize: 0.01
showReset: true
value: Settings.data.ui.panelBackgroundOpacity
defaultValue: Settings.getDefaultValue("ui.panelBackgroundOpacity")
onMoved: value => Settings.data.ui.panelBackgroundOpacity = value
@@ -47,6 +48,7 @@ ColumnLayout {
from: 0
to: 1
stepSize: 0.01
showReset: true
value: Settings.data.general.dimmerOpacity
defaultValue: Settings.getDefaultValue("general.dimmerOpacity")
onMoved: value => Settings.data.general.dimmerOpacity = value
@@ -54,7 +54,7 @@ ColumnLayout {
icon: "restore"
baseSize: Style.baseWidgetSize * 0.8
tooltipText: I18n.tr("panels.general.screen-corners-radius-reset")
onClicked: Settings.data.general.screenRadiusRatio = 1.0
onClicked: Settings.data.general.screenRadiusRatio = Settings.getDefaultValue("general.screenRadiusRatio")
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
}
@@ -201,6 +201,7 @@ ColumnLayout {
from: 0.0
to: 1.0
stepSize: 0.01
showReset: true
value: Settings.data.wallpaper.overviewBlur
onMoved: value => Settings.data.wallpaper.overviewBlur = value
text: ((Settings.data.wallpaper.overviewBlur) * 100).toFixed(0) + "%"
@@ -216,6 +217,7 @@ ColumnLayout {
from: 0.0
to: 1.0
stepSize: 0.01
showReset: true
value: Settings.data.wallpaper.overviewTint
onMoved: value => Settings.data.wallpaper.overviewTint = value
text: ((Settings.data.wallpaper.overviewTint) * 100).toFixed(0) + "%"
+30 -1
View File
@@ -6,6 +6,7 @@ import Quickshell.Bluetooth
import Quickshell.Io
import "../../Helpers/BluetoothUtils.js" as BluetoothUtils
import qs.Commons
import qs.Services.System
import qs.Services.UI
Singleton {
@@ -114,6 +115,16 @@ Singleton {
}
}
// Re-run polling once bluetoothctl availability is known
Connections {
target: ProgramCheckerService
function onBluetoothctlAvailableChanged() {
if (!adapter && ProgramCheckerService.bluetoothctlAvailable) {
requestCtlPoll(0);
}
}
}
function setAirplaneMode(state) {
if (state) {
Quickshell.execDetached(["rfkill", "block", "wifi"]);
@@ -182,7 +193,7 @@ Singleton {
id: ctlPollTimer
interval: adapter ? ctlPollMs : 2000
repeat: true
running: true
running: adapter || ProgramCheckerService.bluetoothctlAvailable
onTriggered: {
pollCtlState();
var targetInterval = adapter ? ctlPollMs : 2000;
@@ -193,11 +204,17 @@ Singleton {
}
function requestCtlPoll(delayMs) {
if (!adapter && !ProgramCheckerService.bluetoothctlAvailable) {
return;
}
ctlPollTimer.interval = Math.max(50, delayMs || ctlPollSoonMs);
ctlPollTimer.restart();
}
function pollCtlState() {
if (!adapter && !ProgramCheckerService.bluetoothctlAvailable) {
return;
}
if (ctlShowProcess.running) {
return;
}
@@ -280,6 +297,10 @@ Singleton {
// Unify discovery controls
function setScanActive(active) {
if (!adapter && !ProgramCheckerService.bluetoothctlAvailable) {
Logger.d("Bluetooth", "Scan request ignored: bluetoothctl unavailable");
return;
}
var nativeSuccess = false;
try {
if (adapter && adapter.discovering !== undefined) {
@@ -309,6 +330,10 @@ Singleton {
// Adapter power (enable/disable) via bluetoothctl
function setBluetoothEnabled(state) {
Logger.i("Bluetooth", "SetBluetoothEnabled", state);
if (!adapter && !ProgramCheckerService.bluetoothctlAvailable) {
Logger.i("Bluetooth", "Enable/Disable skipped: no adapter or bluetoothctl");
return;
}
try {
if (adapter) {
adapter.enabled = state;
@@ -327,6 +352,10 @@ Singleton {
// Toggle adapter discoverability (advertising visibility) via bluetoothctl
function setDiscoverable(state) {
if (!adapter && !ProgramCheckerService.bluetoothctlAvailable) {
Logger.d("Bluetooth", "Discoverable change skipped: no adapter or bluetoothctl");
return;
}
try {
if (adapter) {
adapter.discoverable = state;
+63 -13
View File
@@ -8,6 +8,7 @@ import Quickshell.Services.Notifications
import Quickshell.Wayland
import "../../Helpers/sha256.js" as Checksum
import qs.Commons
import qs.Services.Compositor
import qs.Services.Media
import qs.Services.Power
import qs.Services.UI
@@ -652,7 +653,9 @@ Singleton {
"urgency": item.urgency < 0 || item.urgency > 2 ? 1 : item.urgency,
"timestamp": time,
"originalImage": item.originalImage || "",
"cachedImage": cachedImage
"cachedImage": cachedImage,
"actionsJson": item.actionsJson || "[]",
"originalId": item.originalId || 0
});
}
} catch (e) {
@@ -896,45 +899,69 @@ Singleton {
quickshellIdToInternalId = {};
}
function invokeActionAndSuppressClose(id, actionId) {
const notifData = activeNotifications[id];
if (notifData && notifData.notification && notifData.onClosed) {
try {
notifData.notification.closed.disconnect(notifData.onClosed);
} catch (e) {}
}
return invokeAction(id, actionId);
}
function invokeAction(id, actionId) {
// 1. Try invoking via live object
let invoked = false;
const notifData = activeNotifications[id];
if (!notifData) {
// No data
} else if (!notifData.notification) {
// No notification object
} else {
// Use cached actions if live actions are empty (which happens if app closed notification)
if (notifData && notifData.notification) {
const actionsToUse = (notifData.notification.actions && notifData.notification.actions.length > 0) ? notifData.notification.actions : (notifData.cachedActions || []);
if (actionsToUse && actionsToUse.length > 0) {
for (const item of actionsToUse) {
const id = item.identifier; // Works for both raw object and wrapper (if properties match)
const actionObj = item.actionObject ? item.actionObject : item; // Unwrap if wrapper
const itemId = item.identifier;
const actionObj = item.actionObject ? item.actionObject : item;
if (id === actionId) {
if (itemId === actionId) {
if (actionObj.invoke) {
try {
actionObj.invoke();
invoked = true;
} catch (e) {
if (manualInvoke(notifData.metadata.originalId, id)) {
Logger.w("NotificationService", "invoke() failed, trying manual fallback: " + e);
if (manualInvoke(notifData.metadata.originalId, itemId)) {
invoked = true;
}
}
} else {
if (manualInvoke(notifData.metadata.originalId, id)) {
if (manualInvoke(notifData.metadata.originalId, itemId)) {
invoked = true;
}
}
break;
}
}
}
if (!invoked && notifData.metadata.originalId) {
Logger.w("NotificationService", "Action objects exhausted, trying manual invoke for id=" + id + " action=" + actionId);
invoked = manualInvoke(notifData.metadata.originalId, actionId);
}
} else if (!notifData) {
Logger.w("NotificationService", "No active notification data for id=" + id + ", searching history for manual invoke");
for (var i = 0; i < historyList.count; i++) {
if (historyList.get(i).id === id) {
const histEntry = historyList.get(i);
if (histEntry.originalId) {
invoked = manualInvoke(histEntry.originalId, actionId);
}
break;
}
}
}
if (!invoked) {
Logger.w("NotificationService", "Failed to invoke action '" + actionId + "' for notification " + id);
return false;
}
@@ -964,6 +991,29 @@ Singleton {
}
}
function focusSenderWindow(appName) {
if (!appName || appName === "" || appName === "Unknown")
return false;
const normalizedName = appName.toLowerCase().replace(/\s+/g, "");
for (var i = 0; i < CompositorService.windows.count; i++) {
const win = CompositorService.windows.get(i);
const winAppId = (win.appId || "").toLowerCase();
const segments = winAppId.split(".");
const lastSegment = segments[segments.length - 1] || "";
if (winAppId === normalizedName || lastSegment === normalizedName || winAppId.includes(normalizedName) || normalizedName.includes(lastSegment)) {
CompositorService.focusWindow(win);
return true;
}
}
Logger.d("NotificationService", "No window found for app: " + appName);
return false;
}
function removeFromHistory(notificationId) {
for (var i = 0; i < historyList.count; i++) {
const notif = historyList.get(i);
@@ -12,6 +12,7 @@ Singleton {
// Program availability properties
property bool nmcliAvailable: false
property bool bluetoothctlAvailable: false
property bool wlsunsetAvailable: false
property bool app2unitAvailable: false
property bool gnomeCalendarAvailable: false
@@ -20,6 +21,7 @@ Singleton {
// Programs to check - maps property names to commands
readonly property var programsToCheck: ({
"bluetoothctlAvailable": ["sh", "-c", "command -v bluetoothctl"],
"nmcliAvailable": ["sh", "-c", "command -v nmcli"],
"wlsunsetAvailable": ["sh", "-c", "command -v wlsunset"],
"app2unitAvailable": ["sh", "-c", "command -v app2unit"],
+3 -2
View File
@@ -18,6 +18,7 @@ Item {
property string settingsPath: ""
property int maxKeybinds: 2
property bool requireModifierForNormalKeys: true
signal keybindsChanged(var newKeybinds)
implicitHeight: contentLayout.implicitHeight
@@ -307,7 +308,7 @@ Item {
}
if (keyName) {
// Enforce modifier requirement (Ctrl or Alt) for "normal" keys
// Enforce modifier requirement (Ctrl or Alt) for "normal" keys unless explicitly disabled
// Allow Arrows, Nav, Function, and System keys without modifiers
const isSpecialKey = (event.key >= Qt.Key_F1 && event.key <= Qt.Key_F35) || (event.key >= Qt.Key_Left && event.key <= Qt.Key_Down) || (event.key === Qt.Key_Home || event.key === Qt.Key_End || event.key === Qt.Key_PageUp || event.key === Qt.Key_PageDown) || (event.key === Qt.Key_Insert || event.key === Qt.Key_Delete || event.key
=== Qt.Key_Backspace) || (event.key === Qt.Key_Tab || event.key
@@ -317,7 +318,7 @@ Item {
const hasModifier = (event.modifiers & Qt.ControlModifier) || (event.modifiers & Qt.AltModifier);
if (!hasModifier && !isSpecialKey) {
if (root.requireModifierForNormalKeys && !hasModifier && !isSpecialKey) {
hasConflict = true;
ToastService.showWarning(I18n.tr("panels.general.keybinds-modifier-title"), I18n.tr("panels.general.keybinds-modifier-description"));
conflictTimer.restart();
+9 -1
View File
@@ -190,7 +190,15 @@ Item {
boundsBehavior: Flickable.StopAtBounds
WheelHandler {
enabled: root.wheelScrollMultiplier !== 1.0
enabled: !root.contentOverflows
acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad
onWheel: event => {
event.accepted = true;
}
}
WheelHandler {
enabled: root.wheelScrollMultiplier !== 1.0 && root.contentOverflows
acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad
onWheel: event => {
const delta = event.pixelDelta.y !== 0 ? event.pixelDelta.y : event.angleDelta.y / 2;
+59 -36
View File
@@ -4,7 +4,7 @@ import QtQuick.Layouts
import qs.Commons
import qs.Widgets
ColumnLayout {
RowLayout {
id: root
property real from: 0
@@ -21,14 +21,15 @@ ColumnLayout {
property string label: ""
property string description: ""
property var defaultValue: undefined
property bool showReset: false
spacing: Style.marginL
Layout.fillWidth: true
// Signals
signal moved(real value)
signal pressedChanged(bool pressed, real value)
spacing: Style.marginS
Layout.fillWidth: true
readonly property bool isValueChanged: defaultValue !== undefined && (value !== defaultValue)
readonly property string indicatorTooltip: {
if (defaultValue === undefined)
@@ -50,43 +51,65 @@ ColumnLayout {
});
}
NLabel {
label: root.label
description: root.description
visible: root.label !== "" || root.description !== ""
showIndicator: root.isValueChanged
indicatorTooltip: root.indicatorTooltip
opacity: root.enabled ? 1.0 : 0.6
Layout.fillWidth: true
}
RowLayout {
spacing: Style.marginL
ColumnLayout {
spacing: Style.marginS
Layout.fillWidth: true
NSlider {
id: slider
NLabel {
label: root.label
description: root.description
visible: root.label !== "" || root.description !== ""
showIndicator: root.isValueChanged
indicatorTooltip: root.indicatorTooltip
opacity: root.enabled ? 1.0 : 0.6
Layout.fillWidth: true
from: root.from
to: root.to
value: root.value
stepSize: root.stepSize
cutoutColor: root.cutoutColor
snapAlways: root.snapAlways
heightRatio: root.customHeightRatio > 0 ? root.customHeightRatio : root.heightRatio
onMoved: root.moved(value)
onPressedChanged: root.pressedChanged(pressed, value)
}
NText {
visible: root.text !== ""
text: root.text
pointSize: root.textSize
family: Settings.data.ui.fontFixed
opacity: root.enabled ? 1.0 : 0.6
Layout.alignment: Qt.AlignVCenter
Layout.preferredWidth: 45 * Style.uiScaleRatio
horizontalAlignment: Text.AlignRight
RowLayout {
spacing: Style.marginL
Layout.fillWidth: true
NSlider {
id: slider
Layout.fillWidth: true
from: root.from
to: root.to
value: root.value
stepSize: root.stepSize
cutoutColor: root.cutoutColor
snapAlways: root.snapAlways
heightRatio: root.customHeightRatio > 0 ? root.customHeightRatio : root.heightRatio
onMoved: root.moved(value)
onPressedChanged: root.pressedChanged(pressed, value)
}
NText {
visible: root.text !== ""
text: root.text
pointSize: root.textSize
family: Settings.data.ui.fontFixed
opacity: root.enabled ? 1.0 : 0.6
Layout.alignment: Qt.AlignVCenter
Layout.preferredWidth: 45 * Style.uiScaleRatio
horizontalAlignment: Text.AlignRight
}
}
}
Item {
id: buttonItem
visible: root.showReset && root.defaultValue !== undefined
Layout.preferredWidth: 30 * Style.uiScaleRatio
Layout.preferredHeight: 30 * Style.uiScaleRatio
NIconButton {
icon: "restore"
enabled: root.enabled
baseSize: Style.baseWidgetSize * 0.8
tooltipText: I18n.tr("common.reset")
onClicked: root.moved(root.defaultValue)
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
}
}
}