From f4e8a920ff39d3b4a196b52455186267db4f6746 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 12 Apr 2026 18:50:07 +0200 Subject: [PATCH 01/10] i18n: translation updates from weblate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Aindriú Mac Giolla Eoin Co-authored-by: Amadɣas Co-authored-by: Asier Saratsua Garmendia Co-authored-by: Because789 Co-authored-by: ButterflyOfFire Co-authored-by: David Carvalho Co-authored-by: Deleted User Co-authored-by: Ettore Atalan Co-authored-by: Geeson Wan Co-authored-by: Hosted Weblate Co-authored-by: Hugo Carvalho Co-authored-by: Julien Brouillard Co-authored-by: Jun Hwi Ku Co-authored-by: Michael Murphy Co-authored-by: Thomas Worofsky Co-authored-by: Urocissa Caerulea.Tw Co-authored-by: Vilius Paliokas Co-authored-by: Walter William Beckerleg Bruckman Co-authored-by: defaultUser822 Co-authored-by: jonnysemon Co-authored-by: lorduskordus Co-authored-by: taijuin Lee Co-authored-by: therealmate Co-authored-by: 麋麓 BigELK176 Co-authored-by: 김유빈 Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-settings/ar/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-settings/cs/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-settings/de/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-settings/es_419/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-settings/fr/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-settings/ga/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-settings/hu/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-settings/kab/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-settings/ko/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-settings/lt/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-settings/pt/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-settings/pt_BR/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-settings/zh_Hant/ Translation: Pop OS/COSMIC Settings --- i18n/ar/cosmic_settings.ftl | 4 +- i18n/cs/cosmic_settings.ftl | 10 +- i18n/de/cosmic_settings.ftl | 48 ++- i18n/es-419/cosmic_settings.ftl | 3 + i18n/eu/cosmic_settings.ftl | 0 i18n/fr/cosmic_settings.ftl | 12 +- i18n/ga/cosmic_settings.ftl | 37 +- i18n/hu/cosmic_settings.ftl | 26 +- i18n/kab/cosmic_settings.ftl | 317 ++++++++++++++++ i18n/ko/cosmic_settings.ftl | 107 ++++-- i18n/lt/cosmic_settings.ftl | 1 + i18n/pt-BR/cosmic_settings.ftl | 100 +++--- i18n/pt/cosmic_settings.ftl | 37 +- i18n/zh-TW/cosmic_settings.ftl | 620 ++++++++++++++++++-------------- 14 files changed, 893 insertions(+), 429 deletions(-) create mode 100644 i18n/eu/cosmic_settings.ftl diff --git a/i18n/ar/cosmic_settings.ftl b/i18n/ar/cosmic_settings.ftl index df80466..88be08f 100644 --- a/i18n/ar/cosmic_settings.ftl +++ b/i18n/ar/cosmic_settings.ftl @@ -20,7 +20,7 @@ xdg-entry-desktop-comment = إعدادات خلفية الشاشة والمظه xdg-entry-displays = شاشات العرض xdg-entry-displays-comment = أدِر إعدادات تضبيط العرض xdg-entry-dock = الإرساء -xdg-entry-dock-comment = شريط اختياري للتطبيقات والبريمجات +xdg-entry-dock-comment = شريط إختياري للتطبيقات والبُريمجات xdg-entry-input = أجهزة الإدخال xdg-entry-input-comment = لوحة المفاتيح، المؤشر، إلخ xdg-entry-keyboard = لوحة المفاتيح @@ -208,7 +208,7 @@ desktop = سطح المكتب ## Desktop: Wallpaper -wallpaper = خلفية +wallpaper = الخلفية .change = غيِّر الصورة كل .fit = ملاءمة الخلفية .folder-dialog = اختر مجلد الخلفية diff --git a/i18n/cs/cosmic_settings.ftl b/i18n/cs/cosmic_settings.ftl index ffc06de..bc33e86 100644 --- a/i18n/cs/cosmic_settings.ftl +++ b/i18n/cs/cosmic_settings.ftl @@ -634,12 +634,12 @@ long = Dlouhé keyboard-typing-assist = Psaní .repeat-rate = Frekvence opakování .repeat-delay = Zpoždění opakování -keyboard-numlock-boot = Numlock - .boot-state = Stav při spuštění systému +keyboard-numlock-boot = Num Lock + .boot-state = Stav klávesy při spuštění systému .last-boot = Poslední spuštění systému - .on = Zapnuto - .off = Vypnuto - .set = Nastavit stav numlock při spuštění systému + .on = Zapnutý + .off = Vypnutý + .set = Num Lock při spuštění systému added = Přidáno type-to-search = Pište pro vyhledávání... show-extended-input-sources = Zobrazit rozšířené vstupní zdroje diff --git a/i18n/de/cosmic_settings.ftl b/i18n/de/cosmic_settings.ftl index 8002786..6c0dfdf 100644 --- a/i18n/de/cosmic_settings.ftl +++ b/i18n/de/cosmic_settings.ftl @@ -1,4 +1,4 @@ -app = COSMIC Einstellungen +app = COSMIC-Einstellungen dbus-connection-error = Verbindung zum DBus ist fehlgeschlagen ok = OK unknown = Unbekannt @@ -114,7 +114,7 @@ bluetooth-adapters = Bluetooth-Adapter ## Accessibility accessibility = Barrierefreiheit - .vision = Sehkraft + .vision = Sehen .on = Ein .off = Aus .unavailable = Nicht verfügbar @@ -122,7 +122,7 @@ accessibility = Barrierefreiheit .high-contrast = Modus für hohen Kontrast .invert-colors = Farben invertieren .color-filters = Farbfilter -hearing = Gehör +hearing = Hören .mono = Stereo-Audio als Mono abspielen default = Standard magnifier = Vergrößerungsglas @@ -221,7 +221,7 @@ container-background = Container-Hintergrund .reset = Auf automatisch zurücksetzen .desc = Wird für die Navigationsseitenleiste, Seitenschublade, Dialoge und ähnliche Widgets verwendet control-tint = Komponententönung steuern - .desc = Wird für Hintergründe von Standardschaltflächen, Sucheingaben, Texteingaben und ähnlichen Komponenten verwendet. + .desc = Wird für Hintergründe von Standardschaltflächen, Sucheingaben, Texteingaben und ähnlichen Komponenten verwendet frosted = Milchglaseffekt bei der Systemoberfläche .desc = Wendet Hintergrundunschärfe auf Panel, Dock, Applets, Starter und Anwendungsbibliothek an enable-export = Aktuelles Thema auf GNOME-Apps anwenden @@ -351,7 +351,6 @@ color = Farbe .sidebar = Farbprofile .temperature = Farbtemperatur display = Bildschirme - .desc = Bildschirme, Grafikumschaltung und Nachtlicht verwalten .arrangement = Bildschirmanordnung .arrangement-desc = Bildschirme ziehen, um sie neu anzuordnen. .enable = Bildschirm aktivieren @@ -413,8 +412,8 @@ sound-input = Eingang .device = Eingabegerät .level = Eingangspegel sound-alerts = Alarmsignale - .volume = Lautstärke von Alarmsignalen. - .sound = Alarmsignalklang. + .volume = Lautstärke von Alarmsignalen + .sound = Alarmsignalklang sound-applications = Anwendungen .desc = Lautstärken und Einstellungen von Anwendungen @@ -462,7 +461,7 @@ power-saving = Energiesparoptionen ## Input -acceleration-desc = Passt die Tracking-Empfindlichkeit automatisch an die Geschwindigkeit an. +acceleration-desc = Passt die Tracking-Empfindlichkeit automatisch an die Geschwindigkeit an disable-while-typing = Während dem Tippen deaktivieren input-devices = Eingabegeräte primary-button = Primäre Taste @@ -494,6 +493,7 @@ keyboard-sources = Eingabequellen keyboard-special-char = Eingabe von Sonderzeichen .alternate = Taste für alternative Zeichen .compose = Compose-Taste + .compose-desc = Mit der Compose-Taste kannst du viele verschiedene Zeichen eingeben. Drück einfach die Compose-Taste und dann die Zeichen, die du brauchst. Wenn du zum Beispiel die Compose-Taste und dann C und o drückst, kommt ©, und wenn du die Compose-Taste und dann a und ' drückst, kommt á. .caps = Feststelltaste keyboard-typing-assist = Tippen .repeat-rate = Wiederholungsrate @@ -512,7 +512,7 @@ show-extended-input-sources = Erweiterte Eingabequellen anzeigen keyboard-shortcuts = Tastenkombinationen .desc = Tastenkombinationen anzeigen und anpassen -add-another-keybinding = Weitere Tastenkombination hinzufügen +add-another-keybinding = Weitere Tastenbelegung hinzufügen cancel = Abbrechen command = Befehl custom = Benutzerdefiniert @@ -605,6 +605,7 @@ system-shortcut = System .app-library = App-Bibliothek öffnen .brightness-down = Bildschirmhelligkeit verringern .brightness-up = Bildschirmhelligkeit erhöhen + .display-toggle = Internen Bildschirm umschalten .home-folder = Persönlichen Ordner öffnen .keyboard-brightness-down = Tastaturhelligkeit verringern .keyboard-brightness-up = Tastaturhelligkeit erhöhen @@ -618,7 +619,9 @@ system-shortcut = System .play-prev = Vorheriger Titel .poweroff = System ausschalten .screenshot = Bildschirmfoto machen + .suspend = Bereitschaft .terminal = Terminal öffnen + .touchpad-toggle = Touchpad umschalten .volume-lower = Lautstärke der Audioausgabe verringern .volume-raise = Lautstärke der Audioausgabe erhöhen .web-browser = Webbrowser öffnen @@ -650,7 +653,7 @@ click-behavior = Klickverhalten .click-finger = Sekundärklick mit zwei Fingern und Mittelklick mit drei Fingern .button-areas = Sekundärklick in der unteren rechten Ecke und Mittelklick in der unteren Mitte pinch-to-zoom = Zwei-Finger-Zoom - .desc = Mit zwei Fingern in den Inhalt zoomen, wenn die Anwendung den Zoom unterstützt. + .desc = Mit zwei Fingern in den Inhalt zoomen, wenn die Anwendung den Zoom unterstützt tap-to-click = Tippen zum Klicken .desc = Ermöglicht das Tippen mit einem Finger für den Primärklick, das Tippen mit zwei Fingern für den Sekundärklick und das Tippen mit drei Fingern für den Mittelklick touchpad = Touchpad @@ -692,7 +695,7 @@ time-format = Datums- & Uhrzeitformat .monday = Montag time-region = Region & Sprache formatting = Formatierung - .dates = Daten + .dates = Datum .time = Uhrzeit .date-and-time = Datum & Uhrzeit .numbers = Zahlen @@ -739,10 +742,14 @@ startup-apps = Startanwendungen legacy-applications = Kompatibilität mit X11-Anwendungen # This is still work in progress, as I didn't have enough time. Therefore, I left this here temporarily. legacy-app-scaling = Anwendungsskalierung des X11-Fenstersystems - .scaled-by-system = Alle X11-Anwendungen skalieren - .system-description = X11-Anwendungen werden auf HiDPI-Bildschirmen unscharf dargestellt. - .scaled-natively = X11-Anwendungen in nativer Auflösung rendern - .native-description = X11-Anwendungen, die keine Skalierung unterstützen, werden klein dargestellt, wenn HiDPI-Bildschirme verwendet werden. Für Spiele aktivieren, um die volle Monitorauflösung auszunutzen. + .scaled-gaming = Für Spiele und Vollbild-Apps optimieren + .gaming-description = X11-Anwendungen können im Vergleich zu Wayland-Anwendungen etwas größer/kleiner erscheinen + .scaled-applications = Für Anwendungen optimieren + .applications-description = Spiele und Vollbild-X11-Anwendungen passen möglicherweise nicht zu deiner Bildschirmauflösung + .scaled-compatibility = Modus für maximale Kompatibilität + .compatibility-description = X11-Anwendungen können auf HiDPI-Bildschirmen unscharf erscheinen + .preferred-display = Bevorzugte Anzeige für Spiele und Vollbild-X11-Anwendungen + .no-display = Keine ## System @@ -894,3 +901,14 @@ invalid-username = Ungültiger Benutzername change-password = Passwort ändern xdg-entry-about-comment = Gerätename, Hardware-Informationen, Betriebssystem-Standardeinstellungen no-search-results = Es wurden keine Netzwerke gefunden, die deiner Suche entsprechen. +legacy-app-global-shortcuts = Globale Tastenkombinationen in X11-Anwendungen + .desc = Globale Tastenkombinationen ermöglichen es, dass in Anwendungen ausgeführte Tastenanschläge und Mausklicks von anderen Anwendungen für Funktionen wie Push-to-Talk oder Push-to-Mute erkannt werden. Standardmäßig sind globale Tastenkombinationen in X11-Anwendungen deaktiviert, um sicherzustellen, dass andere Anwendungen keine Tastatur- und Mausereignisse überwachen können, die sensible Informationen enthalten. + .none = Keine Tasten + .modifiers = Modifikatortasten (Super, Umschalt, Steuerung, Alt) + .combination = Alle Tasten, während die Modifikatortasten Super, Steuerung oder Alt gedrückt werden + .all = Alle Tasten + .mouse = Maustasten-Ereignisse in X11-Anwendungen +xdg-entry-desktop-keywords = COSMIC;Desktop; +xdg-entry-desktop = Desktop +xdg-entry-a11y-keywords = COSMIC;Barrierefreiheit;A11y;Bildschirm;Leser;Vergrößerungsglas;Kontrast;Farbe; +xdg-entry-a11y-comment = Bildschirmleser, Vergrößerungsglas, hoher Kontrast und Farbfilter diff --git a/i18n/es-419/cosmic_settings.ftl b/i18n/es-419/cosmic_settings.ftl index 8bf360f..b8db8f7 100644 --- a/i18n/es-419/cosmic_settings.ftl +++ b/i18n/es-419/cosmic_settings.ftl @@ -802,3 +802,6 @@ full-name = Nombre completo invalid-username = Nombre de usuario inválido. password-mismatch = Las contraseñas no coinciden. save = Guardar +xdg-entry-applications = Aplicaciones +xdg-entry-appearance = Apariencia +xdg-entry-a11y = Accesibilidad diff --git a/i18n/eu/cosmic_settings.ftl b/i18n/eu/cosmic_settings.ftl new file mode 100644 index 0000000..e69de29 diff --git a/i18n/fr/cosmic_settings.ftl b/i18n/fr/cosmic_settings.ftl index 63b971e..419dc72 100644 --- a/i18n/fr/cosmic_settings.ftl +++ b/i18n/fr/cosmic_settings.ftl @@ -854,11 +854,11 @@ sound-hd-audio = Audio HD sound-usb-audio = Audio USB sound-device-profiles = Profils des périphériques shadows-floating = Fenêtres flottantes - .clip = Aligner les coins du système et appliquer des ombres -shadows-tiling = Fenêtres ajustées - .clip = Aligner les coins du système - .shadow = Appliquer des ombres -shadow-and-corners = Les ombres et coins des fenêtres + .clip = Aligner avec les coins système et appliquer les ombres +shadows-tiling = Fenêtres agencées + .clip = Aligner avec les coins système + .shadow = Appliquer les ombres +shadow-and-corners = Ombres et arrondis des fenêtres workspaces-overview = Aperçu des espaces de travail .action-on-typing = Action lors de la saisie .none = Aucun @@ -899,6 +899,6 @@ xdg-entry-keywords = COSMIC;Paramètres; xdg-entry-region-language-keywords = COSMIC;Région;Langue;Date;Format;Heure;Paramètres régionaux;Localisation; xdg-entry-applications-keywords = COSMIC;Défaut;Application;Démarrage;X11;Compatibilité xdg-entry-keyboard-keywords = COSMIC;Clavier;Saisie;Source;Raccourcis; -xdg-entry-window-management-keywords = COSMIC;Fenêtre;Gestion;Ajustement;Super;Touche; +xdg-entry-window-management-keywords = COSMIC;Fenêtre;Gestion;Agencement;Super;Touche; xdg-entry-displays-keywords = COSMIC;Écran; no-search-results = Aucun réseau ne correspond à votre recherche. diff --git a/i18n/ga/cosmic_settings.ftl b/i18n/ga/cosmic_settings.ftl index b62ce2f..ace1bf1 100644 --- a/i18n/ga/cosmic_settings.ftl +++ b/i18n/ga/cosmic_settings.ftl @@ -265,8 +265,8 @@ end-segment = Deighleog deireadh large = Mór no-applets-found = Níor aimsíodh feidhmchláiríní... panel-bottom = Bun -panel-left = Clé -panel-right = Deas +panel-left = Ar chlé +panel-right = Ar dheis panel-top = Barr search-applets = Cuardach feidhmchláiríní... small = Beag @@ -518,8 +518,8 @@ migrate-workspace-next = Aistrigh spás oibre go dtí an chéad aschur eile migrate-workspace = Imirce spás oibre chuig aschur { $direction -> *[down] síos - [left] clé - [right] deas + [left] ar chlé + [right] ar dheis [up] suas } navigate = Nascleanúint @@ -541,19 +541,19 @@ nav-shortcuts = Nascleanúint .prev-workspace = Fócas ar spás oibre roimhe seo .next-workspace = Fócas ar an gcéad spás oibre eile .focus = - Fuinneog fócais { $direction -> + Fócas fuinneog { $direction -> *[down] síos [in] isteach - [left] clé + [left] ar chlé [out] amach - [right] deas + [right] ar dheis [up] suas } .output = Athraigh chuig aschur { $direction -> *[down] síos - [left] clé - [right] deas + [left] ar chlé + [right] ar dheis [up] suas } .workspace = Athraigh go spás oibre { $num } @@ -567,24 +567,24 @@ manage-windows = Bainistigh fuinneoga .toggle-sticky = Scoránaigh an fhuinneog greamaitheach move-windows = Bog fuinneoga .direction = - Bog Fuinneog { $direction -> + Bog an fhuinneog { $direction -> *[down] síos - [left] clé - [right] deas + [left] ar chlé + [right] ar dheis [up] suas } .display = - Bog fuinneog monatóir amháin { $direction -> + Bog an fhuinneog monatóir amháin { $direction -> *[down] síos - [left] clé - [right] deas + [left] ar chlé + [right] ar dheis [up] suas } .workspace = - Bog fuinneog spás oibre amháin { $direction -> + Bog an fhuinneog spás oibre amháin { $direction -> *[below] thíos - [left] clé - [right] deas + [left] ar chlé + [right] ar dheis [above] thuas } .workspace-num = Bog an fhuinneog go spás oibre { $num } @@ -910,3 +910,4 @@ xdg-entry-date-time-comment = Crios ama, socruithe uathoibríocha cloig, agus fo xdg-entry-x11-applications = Comhoiriúnacht Feidhmchláir X11 xdg-entry-window-management-comment = Gníomh na sár-eochrach, roghanna rialaithe fuinneoige, agus roghanna breise tíleála fuinneoige xdg-entry-wired-comment = Naisc sreangaithe agus próifílí nasc +no-search-results = Níl aon líonra ag teacht leis an gcuardach seo. diff --git a/i18n/hu/cosmic_settings.ftl b/i18n/hu/cosmic_settings.ftl index c7fd6c3..a3d2e76 100644 --- a/i18n/hu/cosmic_settings.ftl +++ b/i18n/hu/cosmic_settings.ftl @@ -70,9 +70,9 @@ add-vpn = VPN hozzáadása airplane-on = A repülőgép üzemmód be van kapcsolva cable-unplugged = Kábel kihúzva connect = Csatlakozás -connected = Csatlakozva +connected = Csatlakoztatva connecting = Csatlakozás… -disconnect = Leválasztás +disconnect = Bontás forget = Elfelejtés known-networks = Ismert hálózatok network-and-wireless = Hálózat és Wi-Fi @@ -91,14 +91,14 @@ auth-dialog = Azonosítás szükséges forget-dialog = El akarod felejteni ezt a Wi-Fi hálózatot? .description = A jelszót ismét meg kell adnod, ha újra csatlakozni szeretnél. network-device-state = - .activated = Csatlakozva + .activated = Csatlakoztatva .config = Csatlakozás… - .deactivating = Leválasztás… - .disconnected = Leválasztva + .deactivating = Bontás… + .disconnected = Kapcsolat bontva .failed = Csatlakozás sikertelen .ip-check = Kapcsolat ellenőrzése .ip-config = IP és router információk lekérése - .need-auth = Azonosítás szükséges + .need-auth = Hitelesítés szükséges .prepare = Felkészülés a kapcsolódáshoz .secondaries = Várakozás másodlagos kapcsolatra .unavailable = Nem elérhető @@ -151,11 +151,11 @@ confirm = Megerősítés enable = Engedélyezés bluetooth = Bluetooth .status = Ez a rendszer { $aliases } néven látható, amíg a Bluetooth beállítások vannak megnyitva. - .connected = Csatlakozva + .connected = Csatlakoztatva .connecting = Csatlakozás… - .disconnecting = Leválasztás… + .disconnecting = Bontás… .connect = Csatlakozás - .disconnect = Leválasztás + .disconnect = Bontás .forget = Elfelejtés .dbus-error = Hiba történt a DBus-szal való kommunikáció során: { $why } .disabled = A Bluetooth szolgáltatás le van tiltva @@ -865,10 +865,10 @@ sound-hd-audio = HD-hang sound-usb-audio = USB-hang sound-device-profiles = Eszközprofilok shadows-floating = Lebegő ablakok - .clip = A rendszer sarkainak követése és árnyék alkalmazása + .clip = Rendszersarkokhoz illeszkedés és árnyékok alkalmazása shadows-tiling = Csempézett ablakok - .clip = A rendszer sarkainak követése - .shadow = Árnyék alkalmazása + .clip = Rendszersarkokhoz illeszkedés + .shadow = Árnyékok alkalmazása shadow-and-corners = Ablakok árnyéka és sarkai workspaces-overview = Munkaterületek áttekintése .action-on-typing = Művelet gépeléskor @@ -877,7 +877,7 @@ workspaces-overview = Munkaterületek áttekintése .applications = Alkalmazások megnyitása xdg-entry-mouse-keywords = COSMIC;Egér;Gyorsítás;Görgetés; xdg-entry-notifications-keywords = COSMIC;Értesítés;Zárolás;Ne zavarjanak; -xdg-entry-startup-apps-keywords = COSMIC;Indítási;Alkalmazás; +xdg-entry-startup-apps-keywords = COSMIC;Automatikus;Indítási alkalmazás; xdg-entry-appearance-keywords = COSMIC;Kiemelő;Szín;Ikon;Betűkészlet;Téma; xdg-entry-dock-keywords = COSMIC;Dokk;Panel;Kisalkalmazás; xdg-entry-panel-keywords = COSMIC;Panel;Kisalkalmazás; diff --git a/i18n/kab/cosmic_settings.ftl b/i18n/kab/cosmic_settings.ftl index 92c105a..dd28af5 100644 --- a/i18n/kab/cosmic_settings.ftl +++ b/i18n/kab/cosmic_settings.ftl @@ -316,3 +316,320 @@ number = { $number } unknown = Arussin ok = IH dbus-connection-error = Ur izmir ara ad yeqqen ɣer DBus +zoom-out = Simẓi +zoom-in = Semɣeṛ +replace-shortcut-dialog = Semselsi anegzum? + .desc = { $shortcut } yettwaseqdec sɣur { $name }. Ma tsemselsiḍ-t, { $name } ad yettwsens. +window-tiling = Afser n yisfuyla + .horizontal = Sbadu taɣda taglawant + .vertical = Sbadu taɣda tubdidt + .swap-window = Asfaylu n usemmeskel + .toggle-tiling = Qluqel afsar n usfaylu + .toggle-stacking = Qluqel asettef n usfaylu + .toggle-floating = Qluqel asfaylu yettifliwen + .toggle-orientation = Qluqel taɣda +manage-windows = Sefrek isfuyla + .close = Mdel asfaylu + .maximize = Semɣer asfaylu + .fullscreen = Asfaylu n ugdil aččuran + .minimize = Semẓi asfaylu + .resize-inwards = Ales tiddi n usfaylu ɣer daxel + .resize-outwards = Ales tiddit n usfaylu ɣer berra + .toggle-sticky = Rmed/Sens asfaylu usbiḍ +modified = { $count } ttwasniflen +custom-shortcuts = Inegzumen yugnen + .add = Rnu anegzum + .context = Rnu anegzum yugnen + .none = Ulac inegzumen yugnen +type-key-combination = Aru asuddes n tsarut +toggle-stacking = Rmed/Sens asettef n isfuyla +terminate = Egg tagara +system-controls = Isenqaden n unagraw +shortcut-name = Isem n unegzum +navigate = Inig +migrate-workspace = + Inig tallunt n umahil ɣer tuffɣa { $direction -> + *[down] ukessar + [left] uzelmaḍ + [right] uyeffus + [up] usawen + } +migrate-workspace-next = Inig tallunt n umahil ɣer tuffɣa tuḍfirt +migrate-workspace-prev = Inig tallunt n umahil ɣer tuffɣa tuzwirt +input-source-switch = Beddel tutlayt n usekcem n unasiw +disabled = Insa +debug = Seɣti +custom = Yugnen +command = Taladna +add-another-keybinding = Rnu yiwen n unegzum n unasiw nniḍen +keyboard-shortcuts = Inegzumen n unasiw + .desc = Wali sakin sagen inegzumen +show-extended-input-sources = Sken tiɣbula n unekcum leqqayen +type-to-search = Aru iwakken ad tnadiḍ… +added = Yettwarna +keyboard-sources = Iɣbula n unekcum + .desc = Iɣbula n unekcum zemren ad ttwasneflen s useqdec n usuddes n tsarut Super+Space. Ayagi yezmer ad yettuwennez deg yiɣewwaṛen n unegzum n unasiw.. + .move-up = Ddu d asawen + .move-down = Ddu d akessar + .settings = Iɣewwaṛen + .view-layout = Wali taneɣruft n unasiw + .remove = Kkes + .add = Rnu aɣbalu n unekcum +keyboard = Anasiw +long = Aɣezfan +short = Awezlan +fast = Arurad +slow = Ẓẓay +scrolling = Adrurem + .two-finger = Drurem s sin iḍudan + .edge = Drurem arma d iri s yiwen uḍad + .speed = Arured n udrurem + .natural = Adrurem agaman + .natural-desc = Drurem agbur, deg wadeg n tmeẓri +primary-button = Taqeffalt tagejdant + .desc = Ad yesbadu amizzwer n tqeffalin tifekkanin + .left = Azelmaḍ + .right = Ayeffus +input-devices = ibenkan n unekcum +disable-while-typing = Sens ticki tettaruḍ +acceleration-desc = Seggem s wudem awurman aḥulfu n uneḍfar ilmend n urured +power-saving = Tinefrunin n uḥraz n tnezmart + .turn-off-screen-after = Sexsi agdil seld + .auto-suspend = Aseḥbes deg leɛḍil s wudem awurman + .auto-suspend-ac = Aseḥbes deg leɛḍil s wudem awurman mi ara yeqqen + .auto-suspend-battery = Aseḥbes deg leɛḍil s wudem awurman ɣef tezmer n uẓru +power-mode = Askar n tezmart + .battery = Asiɣzef n tudert n uẓru + .battery-desc = Aḥraz n tezmart d tmellit tasusamt + .balanced = Awliwal + .balanced-desc = Timellit tasussamt akked useqdec alemmas n tezmert + .performance = Timellit tafellayt + .performance-desc = Taqacuct useqdec n tmellit d tezmert + .no-backend = Ameẓlu n deffir ur yettwaf ara. Sbedd system76-power neɣ power-profiles-daemon. +connected-devices = Ibenkan yeqqnen + .unknown = Ibenk arussin +battery = Aẓru + .minute = + { $value } { $value -> + [one] tasdat + *[other] n tesdatin + } + .hour = + { $value } { $value -> + [one] asrag + *[other] n yisragen + } + .day = + { $value } { $value -> + [one] wass + *[other] n wussan + } + .less-than-minute = Ur tettaweḍ ara tesdat + .and = akked + .remaining-time = + { $time } alamma { $action -> + [full] yeččur + *[other] ifuk + } +power = Tazmert d uẓru +sound-device-profiles = Imuɣna n yibenk +sound-usb-audio = Imesli USB +sound-hd-audio = Imesli HD +amplification = Asedfu + .desc = Ad yesireg ableɣ alama d 150% +sound-input = Anekcam + .volume = Ableɣ n unekcum + .device = Ibenk n unekcum + .level = Aswir n unekcum +sound-output = Tuffɣa + .volume = Ableɣ n tuffɣa + .device = Ibenk n tuffɣa + .level = Aswir n tuffɣa + .config = Twila + .balance = Awliwel + .left = Azelmaḍ + .right = Ayeffus +sound = Imesli +dialog = Tanaka n udiwenni + .title = Eǧǧ iɣewwaren-agi n ubeqqeḍ? + .keep-changes = Eǧǧ ibeddilen + .change-prompt = Isenfal n yiɣewwaṛen ad ttwasfesxen s wudem awurman deg { $time } n tsinin. + .revert-settings = Err-d iɣewwaṛen +scheduling = Asɣiwes + .manual = Asɣiwes s ufus +vrr = Atug n usismeḍ n umutti + .enabled = Yettwarmed + .force = Yal tikelt + .auto = S wudem awarman + .disabled = Ittwarermed +orientation = Taɣda + .standard = Tizeɣt + .rotate-90 = Zzi s 90° + .rotate-180 = Zzi s 180° + .rotate-270 = Zzi s 270° +night-light = Tafat n yiḍ + .auto = Awurman (seg uɣelluy ɣer walluy) + .desc = Senqes tafat tazegzawt s yiniten yeḥman +-requires-restart = Yesra asenker tikelt-nniḍen +workspaces-multi-behavior = Tiddin n uget n yigdilen + .span = Tallunin n umahil tteddunt ɣef ddeqs n yigdilen + .separate = Igdilen sɛan tallunin n umahil i yiman-nsent +workspaces-behavior = Tiddin n tallunt n umahil + .dynamic = Tallunin n umahil s wudem asmussaw + .dynamic-desc = Kkes s wudem awurman tallunin n umahil tilmawin + .fixed = Amḍan usbiḍ n tallunin n umahil + .fixed-desc = Rnu neɣ kkes tallunin n umahil deg teskant. +workspaces-overview = Taskant n tallunin n umahil + .action-on-typing = Tigawt deg tira + .none = Ula yiwen + .launcher = Ldi Amsekkar + .applications = Ldi Isnasen +workspaces = Tallunin n umahil +focus-navigation = Asaḍas n yinig + .focus-follows-cursor = Asaḍas i uḍfar n teḥnaccaḍt + .focus-follows-cursor-delay = Asaḍas i uḍfar n teḥnaccaḍt s usmezger s mili-tasint + .cursor-follows-focus = Taḥnaccaṭ teḍfer asaḍas +window-controls = Isenqaden n usfaylu + .maximize = Sken taqeffalt n usemɣer + .minimize = Sken taqeffalt n usemẓi + .active-window-hint = Sken amatar n usfaylu urmid +edge-gravity = Ajbad n yisfuyla yettifliwen ɣer yiran iqerben +super-key = Tigawt n tsarut Super + .launcher = Ldi amsekkar + .workspaces = Ldi tallunin n umahil + .applications = Ldi isnasen + .disable = Sens +window-management = Amsefrak n yisfuyla +panel-missing = Tawila n ugalis ulac-itt + .desc = Afaylu n twila n ugalis ulac-it ɣef sebba n useqdec n twila yugnen neɣ yexṣer. + .fix = Ales awennez ɣer umezwer +panel-applets = Tawila + .dock-desc = Swel tiplaḍin n udekkan + .desc = Swel tiplaḍin n ugalis +panel-style = Aɣanib + .anchor-gap = Ilem gar ugalis d yiran n ugdil + .dock-anchor-gap = Ilem gar udekkan d yiran n ugdil + .extend = Seɣzef agalis ɣer yiran n ugdil + .dock-extend = Seɣzef adekkan ɣer yiran n ugdil + .appearance = Timeẓriwt + .size = Teɣzi + .background-opacity = Tiḍullest n ugilal +panel-behavior-and-position = Tiddin akked wadigen + .autohide = Ffer s wudem awurman agalis + .dock-autohide = Ffer s wudem awurman adekkan + .position = Ideg deg ugdil + .display = Sken deg ubeqqeḍ +panel-appearance = Timeẓriwt + .match = Amṣada d tnarit + .light = Aceɛlal + .dark = Aɣmayan +start-segment = Aḥric n tazwara +small = Ameẓyan +search-applets = Nadi tiplaḍin… +panel-top = Uksawen +panel-right = Ayeffus +panel-left = Azelmaḍ +panel-bottom = Ukessar +no-applets-found = Ulac tiplaḍin yettwafen... +large = Meqqer +end-segment = Aḥric n taggara +place-here = Sers tiplaḍin dagi +center-segment = Aḥric alemmas +no-search-results = Ulac ifuyla inmeɣran akked unadi-ik·im. +password-mismatch = Awal uffir akked usentem ilaq ad mṣadan +invalid-username = Isem n useqdac d armeɣtu +full-name = Isem ummid +remove-user = Kkes aseqdac +change-password = Asnifel n wawal uffir +add-user = Rnu aseqdac +administrator = Anedbal + .desc = Inedbalen zemren ad beddlen iɣewwaṛen i yiseqdacen meṛṛa, ad rnun neɣ ad kksen iseqdacen-nniḍen +users = Iseqdacen + .admin = Anedbal + .standard = Tizeɣt + .profile-add = Fren tugna n umaɣnu +firmware = Afreɣẓan +about-related = Iɣewwaṛen icudden + .support = Awi-d tallelt +about-os = Anagraw n wammud + .os = Anagraw n wammud + .os-architecture = Tasegda n unagraw n wammud + .kernel = Lqem n yiɣes + .desktop-environment = Twennaḍt n tnarit + .windowing-system = Anagraw n yisfuyla +about-hardware = Arrum + .model = Tamudemt n warrum + .memory = Takatut + .processor = Asekkar + .graphics = Udlifen + .disk-capacity = Akettur n uḍebsi +about-device = Isem n yibenk + .desc = Isem-agi yettban-d deg ibenkan-nniḍen n uẓeṭṭa neɣ n Bluetooth +about = Ɣef +system = Anagraw akked imiḍanen +legacy-applications = Amṣada n yisnasen X11 +startup-apps = Isnasen n usekker + .add = Rnu asnas + .user = Isnasen ttwasnekren mi ara tkecmeḍ + .none = Ulac isnasen n usekker yettwarnan + .remove-dialog-title = Kkes { $name }? + .remove-dialog-description = Kkes asnas-agi n usekker? + .add-startup-app = Rnu asnas n usekker +default-apps = Isnasen imezwar + .web-browser = Iminig n web + .file-manager = Amsefrak n ifuyla + .mail-client = Amsaɣ n yimayl + .music = Aẓawan + .video = Tavidyut + .photos = Tiwlafin + .calendar = Awitay + .terminal = Ixef + .other-associations = Tidukliwin-nniḍen + .text-editor = Amaẓrag n uḍris + .not-installed = Ur yettusbedd ara +applications = Isnasen +region = Tamnaḍt +install-additional-languages = Sbedd tutlayin nniḍen +add-language = Rnu tutlayt + .context = Rnu tutlayt +preferred-languages = Tutlayin timenyafin + .desc = Amizzwer n tutlayin yemmal-d anta tutlayt i yettwasqedcen i ugrudem n useqdac. Isenfal ad ddun deg tuqqna tuḍfirt. +formatting = Amsal + .dates = Izemzen + .time = Akud + .date-and-time = Azemz & akud + .numbers = Uṭṭunen + .measurement = Akat + .paper = Lkaɣeḍ +time-region = Tamnaḍt akked tutlayt +time-format = Amasal n uzemz akked usrag + .twenty-four = akud n 24 n yisragen + .show-seconds = Sken tasinin + .first = Ass amezwaru n dduṛt + .show-date = Sken azemz deg tappleṭ n wakud + .friday = Sem + .saturday = Sed + .sunday = Acer + .monday = Arim +time-zone = Tamnaḍt n wakud + .auto = Tamnaḍt n wakud tawurmant + .auto-info = Yesra imeẓla n wadig akked unekcum ɣer internet +time-date = Azemz akked wakud + .auto = Sbadu s wudem awurman + .auto-ntp = Azemz akked wakud ad ttwaleqqmen s wudem awurman ticki ara tesbaduḍ tamnaḍt n wakud +time = Akkud akked tutlayt +open-workspaces-view = Taskant n tallunin n umahil yeldin +open-application-library = Ldi tamkarḍit n yisnasen +switch-between-windows = Senfel gar isfuyla +switch-workspaces = Senfel tallunin n umahil + .horizontal = Aḍummu n kuẓ n yiḍudan ɣer zelmaḍ/yefus + .vertical = Aḍummu n kuẓ n yiḍudan ɣer usawen/ukessar +touchpad = Talwiḥt n unnal + .acceleration = Rmed tasɣiwelt n telwiḥt n unnal + .speed = Arurad n telwiḥt n unnal +click-behavior = Tiddin n usiti + .click-finger = Asiti wis sin s sin iḍudan akked d usiti alemmas s kraḍ n yiḍudan + .button-areas = Asiti wis sin deg teɣmert tayeffust n wadda akked usiti alemmas di tlemmast n wadda +mouse = Taɣerdayt + .speed = Arured n tɣerdayt + .acceleration = Rmed asɣiwel n tɣerdayt diff --git a/i18n/ko/cosmic_settings.ftl b/i18n/ko/cosmic_settings.ftl index 21f1261..77d04a2 100644 --- a/i18n/ko/cosmic_settings.ftl +++ b/i18n/ko/cosmic_settings.ftl @@ -2,7 +2,6 @@ app = COSMIC 설정 desktop = 데스크톱 dbus-connection-error = DBus 연결에 실패했습니다 time-region = 지역 & 언어 - .desc = 사용자 지역 기반 날짜 형식, 시간, 숫자 panel-left = 좌측 connect = 연결 super-key = Super 키 동작 @@ -17,13 +16,11 @@ vrr = 가변 주사율 .auto = 자동 .disabled = 비활성화 window-hint-accent = 활성 창 강조 색상 -power = 전원 및 배터리 - .desc = 전원 설정 관리 +power = 전원 & 배터리 fit-to-screen = 화면 채우기 control-tint = 컨트롤 컴포넌트 색조 .desc = 표준 버튼, 검색 입력란, 텍스트 입력란 및 유사한 컴포넌트의 배경에 사용됩니다 time-date = 날짜 및 시간 - .desc = 시간대, 자동 시계 설정 및 시간 형식 .auto = 자동으로 설정 .auto-ntp = 시간대가 설정되면 날짜 및 시간이 자동으로 업데이트됩니다 save = 저장 @@ -74,7 +71,7 @@ cable-unplugged = 케이블 분리됨 color-picker = 색상 추출기 interface-font = 시스템 글꼴 forget-dialog = 이 Wi-Fi 네트워크를 지우시겠습니까? - .description = 나중에 이 Wi-Fi 네트워크를 다시 사용하려면 비밀번호를 다시 입력해야 합니다. + .description = 나중에 이 Wi-Fi 네트워크를 다시 사용하려면 암호를 다시 입력해야 합니다. remove = 제거 default = 기본 zoom-out = 축소 @@ -85,7 +82,6 @@ keyboard-typing-assist = 입력 .repeat-delay = 반복 지연 edge-gravity = 플로팅 창이 인접한 가장자리에 붙음 bluetooth = 블루투스 - .desc = 블루투스 장치 관리 .status = 블루투스 설정이 열려있는 동안 시스템이 { $aliases }(으)로 표시됩니다. .connected = 연결됨 .connecting = 연결 중 @@ -96,7 +92,7 @@ bluetooth = 블루투스 .dbus-error = D-Bus 통신 중 오류가 발생했습니다: { $why } .disabled = 블루투스 서비스가 비활성화 되었습니다. .inactive = 블루투스 서비스가 시작되지 않았습니다. - .unknown = 블루투스 서비스를 시작할 수 없습니다. BlueZ가 설치됐는지 확인하세요. + .unknown = 블루투스 서비스를 시작할 수 없습니다. BlueZ가 설치됐나요? amplification = 증폭 .desc = 음량을 150%까지 올릴 수 있게 합니다. recent-colors = 최근 색상 @@ -124,7 +120,6 @@ accessibility = 접근성 .invert-colors = 색상 반전 .color-filters = 색상 필터 firmware = 펌웨어 - .desc = 펌웨어 세부 정보 container-background = 컨테이너 배경 .desc-detail = 컨테이너 배경색은 탐색 사이드바, 사이드 드로어, 대화 상자 및 유사한 위젯에 사용됩니다. 기본적으로 컨테이너 배경색은 창 배경색에서 자동으로 파생됩니다. .reset = 자동으로 재설정 @@ -188,7 +183,6 @@ battery = 배터리 search-applets = 애플릿 검색... export = 내보내기 window-management = 창 관리 - .desc = Super 키 동작, 창 제어 및 추가적인 창 타일링 옵션 pinch-to-zoom = 핀치하여 확대/축소 .desc = 확대/축소를 지원하는 앱에서 두 손가락을 사용하여 콘텐츠를 확대하거나 축소합니다 wifi = Wi-Fi @@ -205,13 +199,10 @@ full-name = 성명 app-background = 창 배경 panel-right = 우측 appearance = 외관 - .desc = 강조 색상 및 꾸미기 mouse = 마우스 - .desc = 마우스 속도, 가속, 자연스러운 스크롤 .speed = 마우스 속도 .acceleration = 마우스 가속 활성화 dock = 독 - .desc = 앱과 애플릿을 위한 추가적인 바 keyboard-sources = 입력 소스 .desc = Super+Space 키 조합을 사용하여 입력 소스를 전환할 수 있습니다. 이는 키보드 단축키 설정에서 사용자 지정할 수 있습니다. .move-up = 위로 이동 @@ -248,7 +239,6 @@ hearing = 청각 preferred-languages = 선호하는 언어 .desc = 언어 순서에 따라 사용자 인터페이스에 표시될 언어가 결정됩니다. 변경 사항은 다음 로그인 후에 적용됩니다. display = 디스플레이 - .desc = 디스플레이 및 야간 조명 관리 .arrangement = 디스플레이 배치 .arrangement-desc = 디스플레이를 드래그하여 다시 배치하세요 .enable = 디스플레이 사용 @@ -286,7 +276,6 @@ disconnect = 연결 해제 ok = 확인 debug = 디버그 sound = 소리 - .desc = N/A number = { $number } shortcut-name = 단축키 이름 style = 스타일 @@ -299,7 +288,6 @@ panel-applets = 구성 qr-code-unavailable = QR 코드를 사용할 수 없음 small = 작게 notifications = 알림 - .desc = 방해 금지, 잠금 화면 알림 및 앱 별 설정 window-tiling = 창 타일링 .horizontal = 가로 방향 설정 .vertical = 세로 방향 설정 @@ -315,7 +303,6 @@ copied-to-clipboard = 클립보드로 복사됨 bluetooth-confirm-pin = 블루투스 PIN 확인 .description = { $device }에 표시된 PIN 번호가 다음과 일치하는지 확인하세요 startup-apps = 시작 앱 - .desc = 로그인 시 실행되는 앱을 설정합니다 .add = 앱 추가 .user = 로그인 시 실행되는 앱 .none = 추가된 시작 앱이 없습니다 @@ -335,9 +322,7 @@ night-light = 야간 조명 .auto = 자동 (일몰부터 일출까지) .desc = 따뜻한 색을 사용하여 블루라이트를 줄입니다 about = 정보 - .desc = 장치 이름, 하드웨어 정보, 운영체제 기본 input-devices = 입력 장치 - .desc = 입력 장치 custom-shortcuts = 사용자 정의 단축키 .add = 단축키 추가 .context = 사용자 정의 단축키 추가 @@ -346,7 +331,7 @@ visible-networks = 사용 가능한 네트워크 applets = 애플릿 terminate = 종료 window-hint-accent-toggle = 활성 창 강조에 테마 강조 색상 사용 -type-to-search = 입력하여 검색... +type-to-search = 입력하여 검색… workspaces-behavior = 작업 공간 동작 .dynamic = 동적 작업 공간 .dynamic-desc = 비어있는 작업 공간을 자동으로 제거합니다. @@ -355,10 +340,9 @@ workspaces-behavior = 작업 공간 동작 wireguard-dialog = WireGuard 장치 추가 .description = WireGuard 설정을 위해 사용할 장치 이름을 지정하세요. remove-connection-dialog = 연결 프로필을 제거할까요? - .vpn-description = 나중에 이 네트워크를 다시 사용하려면 비밀번호를 다시 입력해야 합니다. + .vpn-description = 나중에 이 네트워크를 다시 사용하려면 암호를 다시 입력해야 합니다. .wired-description = 나중에 다시 사용하려면 프로필을 다시 생성해야 합니다. workspaces = 작업 공간 - .desc = 작업 공간 방향 및 동작 password-confirm = 암호 확인 move-windows = 창 이동 .direction = @@ -423,7 +407,6 @@ slow = 느리게 network-name = 네트워크 이름 large = 크게 panel = 패널 - .desc = 메뉴와 애플릿을 위한 기본 시스템 바 confirm = 확인 auth-dialog = 인증 필요 .vpn-description = VPN 서비스를 위해 사용자 이름과 암호를 입력하세요. @@ -445,7 +428,6 @@ add-applet = 애플릿 추가 show-extended-input-sources = 확장 입력 소스 표시 mode-and-colors = 모드 및 색상 users = 사용자 - .desc = 인증 및 사용자 계정 .admin = 관리자 .standard = 기본 .profile-add = 프로필 이미지 선택 @@ -474,7 +456,6 @@ auto = 자동 end-segment = 끝 영역 bluetooth-adapters = 블루투스 어댑터 legacy-applications = X11 앱 호환성 - .desc = X11 창 시스템 앱 스케일링 및 전역 단축키 time-format = 날짜 & 시간 형식 .twenty-four = 24시간 형식 .show-seconds = 초 표시 @@ -506,7 +487,6 @@ window-management-appearance = 창 관리 .gaps = 타일링된 창 간 간격 migrate-workspace-prev = 작업 공간을 이전 디스플레이로 이동 keyboard = 키보드 - .desc = 입력 소스, 전환, 특수 문자 입력 및 단축키 설정 legacy-app-global-shortcuts = X11 앱의 전역 단축키 .desc = 전역 단축키를 사용하면 눌러서 말하기 또는 눌러서 음소거와 같은 기능을 위해, 특정 앱에서 수행된 키 입력 및 마우스 버튼 이벤트를 다른 앱이 인식할 수 있습니다. 기본적으로 X11 앱에서는 다른 앱이 민감한 정보가 포함된 키보드 및 마우스 이벤트를 감시하지 못하도록 전역 단축키 기능이 비활성화되어 있습니다. .none = 키 없음 @@ -531,7 +511,6 @@ add-network = 네트워크 추가 .profile = 프로필 추가 touchpad = 터치패드 .acceleration = 터치패드 가속 활성화 - .desc = 터치패드 속도, 클릭 옵션, 제스처 .speed = 터치패드 속도 command = 명령 gestures = 제스처 @@ -547,7 +526,6 @@ panel-bottom = 하단 share = 네트워크 공유 add = 추가 time = 시간 & 언어 - .desc = N/A fill = 채우기 custom = 사용자 정의 bluetooth-paired = 이전에 연결된 장치 @@ -660,12 +638,11 @@ vpn-error = VPN 에러 .with-password = nmcli를 통한 VPN { $field -> *[username] 사용자 이름 - [password] 비밀번호 - [password-flags] 비밀번호 플래그 + [password] 암호 + [password-flags] 암호 플래그 } 설정 실패 wallpaper = 배경화면 .change = 이미지 변경 주기 - .desc = 배경화면 이미지, 색상 및 슬라이드쇼 옵션 .fit = 배경화면 맞춤 방식 .folder-dialog = 배경화면 폴더 선택 .image-dialog = 배경화면 이미지 선택 @@ -692,7 +669,6 @@ click-behavior = 클릭 동작 .click-finger = 두 손가락으로 보조 클릭, 세 손가락으로 중앙 클릭 .button-areas = 오른쪽 아래 모서리에서 보조 클릭, 하단 중앙에서 중앙 클릭 default-apps = 기본 앱 - .desc = 기본 웹 브라우저, 메일 클라이언트, 파일 관리자 및 기타 앱을 설정합니다. .web-browser = 웹 브라우저 .file-manager = 파일 관리자 .mail-client = 메일 클라이언트 @@ -703,6 +679,7 @@ default-apps = 기본 앱 .terminal = 터미널 .other-associations = 기타 연결 프로그램 .text-editor = 텍스트 편집기 + .not-installed = 설치되지 않음 power-saving = 절전 옵션 .turn-off-screen-after = 다음 시간 후 화면 끄기 .auto-suspend = 자동 절전 모드 @@ -719,3 +696,71 @@ keyboard-special-char = 특수 문자 입력 .compose = 조합 키 .compose-desc = 조합 키를 사용하면 매우 다양한 특수 문자를 입력할 수 있습니다. 조합 키를 먼저 누른 다음, 정해진 순서대로 문자들을 입력하세요. 예를 들어, 조합 키를 누른 후 C와 o를 차례로 누르면 ©가 입력되고, a와 '를 누르면 á가 입력됩니다. .caps = Caps Lock 키 +xdg-entry-wired = 유선 +xdg-entry-mouse-keywords = COSMIC;마우스;가속;스크롤; +xdg-entry-bluetooth-comment = 블루투스 장치 관리 +xdg-entry-notifications-keywords = COSMIC;알림;잠금; +xdg-entry-default-apps-comment = 기본 웹 브라우저와 메일 클라이언트, 파일 탐색기 및 다른 앱 +xdg-entry-keyboard-comment = 입력 소스, 전환, 특수 문자 모음, 단축키 +xdg-entry-wired-keywords = COSMIC;유선;LAN;네트워크;연결; +xdg-entry-power = 전원 & 배터리 +xdg-entry-appearance-keywords = COSMIC;강조;색상;아이콘;글꼴;테마 +xdg-entry-mouse = 마우스 +xdg-entry-dock-keywords = COSMIC;독;패널;애플릿 +xdg-entry-mouse-comment = 마우스 속도와 가속 및 자연스러운 스크롤 +xdg-entry-panel-keywords = COSMIC;패널;애플릿 +xdg-entry-window-management = 창 관리 +xdg-entry-a11y = 접근성 +xdg-entry-desktop-keywords = COSMIC;데스크톱; +xdg-entry-x11-applications-keywords = COSMIC;X11;앱;게임;호환성; +xdg-entry-displays-comment = 표시 구성 관리 설정 +xdg-entry-default-apps = 기본 앱 +xdg-entry-wireless-keywords = COSMIC;WiFi;Wi-Fi;네트워크;연결; +xdg-entry-applications-comment = 기본 앱과 시작 앱 및 X11 앱 호환성 설정 +xdg-entry-about-keywords = COSMIC;정보 +xdg-entry-panel = 패널 +xdg-entry-notifications = 알림 +xdg-entry-a11y-keywords = COSMIC;접근성;접근성;스크린;리더;돋보기;대비;색상; +xdg-entry-wireless-comment = Wi-Fi 연결 및 연결 프로필 +xdg-entry-desktop = 데스크톱 +xdg-entry-date-time-keywords = COSMIC;시간;대; +xdg-entry-desktop-comment = 바탕화면과 외관, 패널, 독, 창 관리 및 작업 공간 설정 +xdg-entry-wallpaper = 배경화면 +xdg-entry-keyboard = 키보드 +xdg-entry-a11y-comment = 스크린 리더, 돋보기, 고대비, 색상 필터 +xdg-entry-displays = 표시 +xdg-entry-network = 네트워크 & 무선 +xdg-entry-date-time = 날짜 & 시간 +xdg-entry-input-comment = 키보드와 마우스 설정 +xdg-entry-bluetooth-keywords = COSMIC;블루투스; +xdg-entry-dock-comment = 앱과 애플릿을 위한 선택적 바 +xdg-entry-network-keywords = COSMIC;네트워크;무선;WiFi;VPN; +xdg-entry-dock = 독 +xdg-entry-wireless = Wi-Fi +xdg-entry-workspaces-keywords = COSMIC;작업 공간;방향;개요;모니터; +xdg-entry-users-keywords = COSMIC;사용자;계정; +xdg-entry-about-comment = 장치 이름, 하드웨어 정보, 운영체제 기본값 +xdg-entry-vpn-keywords = COSMIC;VPN;네트워크;연결;OpenVPN;OpenConnect; +xdg-entry-appearance-comment = 강조 색상과 테마 +xdg-entry-input-keywords = COSMIC;입력;키보드;마우스;마우스; +xdg-entry-comment = COSMIC 데스크톱을 위한 설정 앱 +xdg-entry-notifications-comment = 방해 금지와 잠금 화면 알림 및 애플리케이션별 설정 +xdg-entry-applications = 앱 +xdg-entry-power-keywords = COSMIC;전원;배터리 +xdg-entry-default-apps-keywords = COSMIC;기본;앱 +xdg-entry-keywords = COSMIC;설정; +xdg-entry-about = 정보 +xdg-entry-input = 입력 장치 +xdg-entry-applications-keywords = COSMIC;기본;앱;시작;X11;호환성 +xdg-entry-keyboard-keywords = COSMIC;키보드;입력;소스;단축키; +xdg-entry-vpn-comment = VPN 연결 및 연결 프로필 +xdg-entry-appearance = 외관 +xdg-entry-window-management-keywords = COSMIC;창;관리;타일링;Super;키; +xdg-entry-workspaces-comment = 작업 공간 방향과 개요 및 다중 모니터 동작 +xdg-entry-network-comment = 네트워크 연결 관리 +xdg-entry-power-comment = 전원 모드 및 절전 옵션 +xdg-entry-displays-keywords = COSMIC;표시; +xdg-entry-workspaces = 작업 공간 +xdg-entry-date-time-comment = 시간대와 자동 시계 설정 및 시간 형식 +xdg-entry-x11-applications = X11 앱 호환성 +xdg-entry-wired-comment = 유선 연결 및 연결 프로필 diff --git a/i18n/lt/cosmic_settings.ftl b/i18n/lt/cosmic_settings.ftl index 0b3a2c6..880dc9f 100644 --- a/i18n/lt/cosmic_settings.ftl +++ b/i18n/lt/cosmic_settings.ftl @@ -813,3 +813,4 @@ xdg-entry-workspaces = Darbo sritys xdg-entry-date-time-comment = Laiko juosta, automatiniai laikrodžio nustatymai ir laiko formatavimas xdg-entry-x11-applications = X11 Aplikacijų Suderinamumas xdg-entry-wired-comment = Laidiniai ryšiai ir ryšių profiliai +no-search-results = Joks tinklas neatitinka jūsų paieškos. diff --git a/i18n/pt-BR/cosmic_settings.ftl b/i18n/pt-BR/cosmic_settings.ftl index c904e48..cfc2d69 100644 --- a/i18n/pt-BR/cosmic_settings.ftl +++ b/i18n/pt-BR/cosmic_settings.ftl @@ -70,7 +70,7 @@ vpn-error = Erro de VPN [password] a senha [password-flags] os sinalizadores da senha } da VPN com nmcli -wired = Rede Cabeada +wired = Rede cabeada .adapter = Adaptador de rede cabeada { $id } .connections = Conexões de rede cabeada .devices = Dispositivos de rede cabeada @@ -83,8 +83,8 @@ wireguard-dialog = Adicionar Dispositivo WireGuard ## Networking: Online Accounts -online-accounts = Contas Online - .desc = Adicionar contas, IMAP e SMTP, logins empresariais +online-accounts = Contas online + .desc = Adicionar contas, IMAP e SMTP, sessões corporativas # Bluetooth @@ -304,7 +304,7 @@ dock = Dock window-management = Gerenciamento de janelas super-key = Ação da tecla Super (Windows) .launcher = Abrir o lançador - .workspaces = Abrir a visão geral das áreas de trabalho + .workspaces = Abrir a visão geral dos espaços de trabalho .applications = Abrir o menu de aplicativos .disable = Desabilitar edge-gravity = Janelas flutuantes gravitam em direção às bordas próximas @@ -319,23 +319,23 @@ focus-navigation = Navegação de foco ## Desktop: Workspaces -workspaces = Áreas de trabalho -workspaces-behavior = Comportamento das áreas de trabalho - .dynamic = Áreas de trabalho dinâmicas - .dynamic-desc = Remove automaticamente áreas de trabalho vazias. - .fixed = Número fixo de áreas de trabalho - .fixed-desc = Adicionar ou remover áreas de trabalho na visão geral. +workspaces = Espaços de trabalho +workspaces-behavior = Comportamento dos espaços de trabalho + .dynamic = Espaços de trabalho dinâmicos + .dynamic-desc = Remove automaticamente espaços de trabalho vazios. + .fixed = Número fixo de espaços de trabalho + .fixed-desc = Adiciona ou remove espaços de trabalho na visão geral. workspaces-multi-behavior = Comportamento de vários monitores - .span = Áreas de trabalho se expandem a todas as telas - .separate = Telas têm áreas de trabalho separadas -workspaces-overview-thumbnails = Miniaturas da visão geral das áreas de trabalho - .show-number = Mostrar o número da área de trabalho - .show-name = Mostrar o nome da área de trabalho -workspaces-orientation = Orientação das áreas de trabalho + .span = Espaços de trabalho se expandem a todas as telas + .separate = Telas têm espaços de trabalho separados +workspaces-overview-thumbnails = Miniaturas da visão geral dos espaços de trabalho + .show-number = Mostrar o número do espaço de trabalho + .show-name = Mostrar o nome do espaço de trabalho +workspaces-orientation = Orientação dos espaços de trabalho .vertical = Vertical .horizontal = Horizontal hot-corner = Canto ativo - .top-left-corner = Habilitar o canto superior esquerdo para exibir as áreas de trabalho + .top-left-corner = Habilitar o canto superior esquerdo para exibir os espaços de trabalho ## Displays @@ -479,7 +479,7 @@ fast = Rápido short = Curto long = Longo keyboard = Teclado -keyboard-sources = Fontes de Entrada +keyboard-sources = Fontes de entrada .desc = As fontes de entrada podem ser alternadas usando a combinação de teclas Super+Espaço. Isso pode ser personalizado nas configurações de atalho de teclado. .move-up = Mover para cima .move-down = Mover para baixo @@ -515,10 +515,10 @@ custom = Personalizado debug = Debug disabled = Desativado input-source-switch = Alterar fonte de entrada de idioma do teclado -migrate-workspace-prev = Migrar a área de trabalho para a saída anterior -migrate-workspace-next = Migrar a área de trabalho para a próxima saída +migrate-workspace-prev = Migrar o espaço de trabalho para a saída anterior +migrate-workspace-next = Migrar o espaço de trabalho para a próxima saída migrate-workspace = - Migrar a área de trabalho para a saída { $direction -> + Migrar o espaço de trabalho para a saída { $direction -> *[down] abaixo [left] à esquerda [right] à direita @@ -539,9 +539,9 @@ modified = { $count } modificado(s) nav-shortcuts = Navegação .prev-output = Focar a saída anterior .next-output = Focar a próxima saída - .last-workspace = Focar a última área de trabalho - .prev-workspace = Focar a área de trabalho anterior - .next-workspace = Focar a próxima área de trabalho + .last-workspace = Focar o último espaço de trabalho + .prev-workspace = Focar o espaço de trabalho anterior + .next-workspace = Focar o próximo espaço de trabalho .focus = Focar a janela { $direction -> *[down] abaixo @@ -558,7 +558,7 @@ nav-shortcuts = Navegação [right] à direita [up] acima } - .workspace = Alternar para a área de trabalho { $num } + .workspace = Alternar para o espaço de trabalho { $num } manage-windows = Gerenciamento de Janelas .close = Fechar janela .maximize = Maximizar janela @@ -583,20 +583,20 @@ move-windows = Mover janelas [up] acima } .workspace = - Mover janela uma área de trabalho { $direction -> + Mover janela um espaço de trabalho { $direction -> *[below] abaixo [left] à esquerda [right] à direita [above] acima } - .workspace-num = Mover janela para a área de trabalho { $num } - .prev-workspace = Mover janela para a área de trabalho anterior - .next-workspace = Mover janela para a próxima área de trabalho - .last-workspace = Mover janela para a última área de trabalho + .workspace-num = Mover janela para o espaço de trabalho { $num } + .prev-workspace = Mover janela para o espaço de trabalho anterior + .next-workspace = Mover janela para o próximo espaço de trabalho + .last-workspace = Mover janela para o último espaço de trabalho .next-display = Mover janela para a próxima tela .prev-display = Mover janela para a tela anterior - .send-to-prev-workspace = Mover janela para a área de trabalho anterior - .send-to-next-workspace = Mover janela para a próxima área de trabalho + .send-to-prev-workspace = Mover janela para o espaço de trabalho anterior + .send-to-next-workspace = Mover janela para o próximo espaço de trabalho system-shortcut = Sistema .app-library = Abrir a biblioteca de aplicativos .brightness-down = Reduzir o brilho da tela @@ -623,7 +623,7 @@ system-shortcut = Sistema .web-browser = Abrir um navegador web .window-switcher = Alternar entre as janelas abertas .window-switcher-previous = Alternar entre as janelas abertas na ordem inversa - .workspace-overview = Abrir a visão geral das áreas de trabalho + .workspace-overview = Abrir a visão geral dos espaços de trabalho window-tiling = Janelas lado a lado .horizontal = Definir orientação horizontal .vertical = Definir orientação vertical @@ -664,12 +664,12 @@ gestures = Gestos .four-finger-right = Deslizar quatro dedos para a direita .four-finger-up = Deslizar quatro dedos para cima .three-finger-any = Deslizar três dedos para qualquer direção -switch-workspaces = Alternar entre áreas de trabalho +switch-workspaces = Alternar entre espaços de trabalho .horizontal = Deslizar quatro dedos para a direita ou esquerda .vertical = Deslizar quatro dedos para cima ou para baixo switch-between-windows = Alternar entre janelas open-application-library = Abrir o menu de aplicativos -open-workspaces-view = Abrir a visão geral das áreas de trabalho +open-workspaces-view = Abrir a visão geral dos espaços de trabalho ## Time & Language @@ -697,8 +697,8 @@ formatting = Formatação .numbers = Números .measurement = Medidas .paper = Papel -preferred-languages = Idiomas Preferidos - .desc = A ordem dos idiomas determina qual idioma será usado para a tradução do desktop. As alterações entram em vigor no próximo login. +preferred-languages = Idiomas preferidos + .desc = A ordem dos idiomas determina qual idioma será usado para a tradução do desktop. As alterações entram em vigor no próximo início de sessão. add-language = Adicionar idioma .context = Adicionar Idioma install-additional-languages = Instalar idiomas adicionais @@ -727,7 +727,7 @@ default-apps = Aplicativos Padrão startup-apps = Aplicativos de inicialização .add = Adicionar aplicativo - .user = Aplicativos que serão iniciados ao fazer login no sistema + .user = Aplicativos que serão iniciados ao iniciar sessão .none = Não há aplicativos de inicialização adicionados .remove-dialog-title = Remover { $name }? .remove-dialog-description = Remover esse aplicativo de inicialização? @@ -797,13 +797,13 @@ invalid-username = Nome de usuário inválido password-mismatch = A senha e a confirmação devem ser iguais save = Salvar add-another-keybinding = Adicionar outra tecla de atalho -qr-code-unavailable = QR code inválido +qr-code-unavailable = Código QR não disponível network-name = Nome da rede share = Compartilhar rede -scan-to-connect-description = Escaneie o QR code para se conectar a esta rede. +scan-to-connect-description = Leia o código QR para se conectar a esta rede. place-here = Colocar miniaplicativos aqui sound-device-port-unplugged = Desplugado -sound-hd-audio = Áudio HD +sound-hd-audio = Áudio de alta definição sound-usb-audio = Áudio USB sound-device-profiles = Perfis de dispositivo shadows-floating = Janelas flutuantes @@ -812,21 +812,21 @@ shadows-tiling = Janelas lado a lado .clip = Corresponder com os cantos do sistema .shadow = Aplicar sombras shadow-and-corners = Cantos e sombras de janelas -workspaces-overview = Visão geral das áreas de trabalho +workspaces-overview = Visão geral dos espaços de trabalho .action-on-typing = Ação ao digitar .none = Nenhuma .launcher = Abrir lançador .applications = Abrir aplicativos xdg-entry-touchpad = Touchpad -xdg-entry-wired = Rede Cabeada -xdg-entry-startup-apps-comment = Configurar aplicativos que serão executados na inicialização do sistema +xdg-entry-wired = Rede cabeada +xdg-entry-startup-apps-comment = Configurar aplicativos que serão executados ao iniciar sessão xdg-entry-region-language = Região e Idioma xdg-entry-mouse-keywords = COSMIC;Mouse;Aceleração;Rolagem; xdg-entry-bluetooth-comment = Gerenciar dispositivos Bluetooth xdg-entry-notifications-keywords = COSMIC;Notificação;Bloqueio; xdg-entry-startup-apps-keywords = COSMIC;Iniciar;Inicialização;Aplicativo; xdg-entry-default-apps-comment = Navegador padrão, cliente de email, navegador de arquivos e outros aplicativos -xdg-entry-keyboard-comment = Dispositivos de entrada, alternância, entrada de caracteres especiais, atalhos +xdg-entry-keyboard-comment = Fontes de entrada, alternância, entrada de caracteres especiais, atalhos xdg-entry-wired-keywords = COSMIC;Wired;Cabeada;LAN;Rede;Conexão; xdg-entry-power = Energia e bateria xdg-entry-appearance-keywords = COSMIC;Destaque;Accent;Cor;Ícone;Fonte;Tema @@ -855,7 +855,7 @@ xdg-entry-a11y-keywords = COSMIC;Acessibilidade;A11y;Tela;Leitor;Lupa;Ampliador; xdg-entry-wireless-comment = Conexões Wi-Fi e perfis de conexão xdg-entry-desktop = Área de trabalho xdg-entry-date-time-keywords = COSMIC;Hora;Fuso; -xdg-entry-desktop-comment = Plano de fundo, aparência, painel, dock, gerenciamento de janelas e configurações de áreas de trabalho +xdg-entry-desktop-comment = Plano de fundo, aparência, painel, dock, gerenciamento de janelas e configurações de espaços de trabalho xdg-entry-wallpaper = Plano de fundo xdg-entry-keyboard = Teclado xdg-entry-a11y-comment = Leitor de tela, ampliador de tela, alto contraste e filtros de cor @@ -871,7 +871,7 @@ xdg-entry-wallpaper-comment = Imagens do plano de fundo, cores e opções de tra xdg-entry-dock = Dock xdg-entry-startup-apps = Aplicativos de Inicialização xdg-entry-wireless = Wi-Fi -xdg-entry-workspaces-keywords = COSMIC;Área;Espaço;Trabalho;Orientação;Visão;Geral;Monitor;Tela; +xdg-entry-workspaces-keywords = COSMIC;Espaço;Trabalho;Orientação;Visão;Geral;Monitor;Tela; xdg-entry-system-comment = Informações do sistema, contas e atualizações de firmware xdg-entry-x11-applications-comment = Escalonamento de aplicativos com sistema de janelas X11, tela primária e atalhos globais xdg-entry-region-language-comment = Formatação de datas, horas e números baseados em sua região @@ -898,14 +898,14 @@ xdg-entry-touchpad-comment = Velocidade do touchpad, opções do clique e gestos xdg-entry-keyboard-keywords = COSMIC;Teclado;Entrada;Dispositivos;Atalhos; xdg-entry-vpn-comment = Conexões VPN e perfis de conexão xdg-entry-appearance = Aparência -xdg-entry-window-management-keywords = COSMIC;Janela;Gerenciamento;Tiling;Lado a lado;Super;Key; -xdg-entry-workspaces-comment = Orientação da área de trabalho, visão geral e comportamento com monitores múltiplos +xdg-entry-window-management-keywords = COSMIC;Janela;Gerenciamento;Tiling;Lado;Super;Tecla; +xdg-entry-workspaces-comment = Orientação dos espaços de trabalho, visão geral e comportamento com monitores múltiplos xdg-entry-network-comment = Gerenciar conexões de rede xdg-entry-panel-comment = Barra de sistema primária para menus e miniaplicativos xdg-entry-sound = Som xdg-entry-power-comment = Modos de energia e opções de economia de energia xdg-entry-displays-keywords = COSMIC;Tela;Monitor; -xdg-entry-workspaces = Áreas de Trabalho +xdg-entry-workspaces = Espaços de trabalho xdg-entry-date-time-comment = Fuso horário, configurações de relógio e formatação de hora xdg-entry-x11-applications = Compatibilidade com aplicativos X11 xdg-entry-window-management-comment = Ação da tecla Super, opções de controle de janela e opções de janelas lado a lado (tiling) diff --git a/i18n/pt/cosmic_settings.ftl b/i18n/pt/cosmic_settings.ftl index 78fb930..c5e60f3 100644 --- a/i18n/pt/cosmic_settings.ftl +++ b/i18n/pt/cosmic_settings.ftl @@ -54,7 +54,7 @@ xdg-entry-wired = Rede Cabeada xdg-entry-wired-comment = Conexões de rede cabeada e perfis de conexão xdg-entry-wireless-comment = Conexões de rede sem fio e perfis de conexão xdg-entry-workspaces = Áreas de Trabalho -xdg-entry-workspaces-comment = Orientação e comportamento da área de trabalho +xdg-entry-workspaces-comment = Orientação das áreas de trabalho, visão geral e comportamento com vários monitores xdg-entry-x11-applications = Compatibilidade com aplicativos X11. xdg-entry-x11-applications-comment = Dimensionamento de aplicativos com sistema de janelas X11 e atalhos globais @@ -213,10 +213,10 @@ dock = Doca window-management = Gestão de Janelas .desc = Ação da tecla Super, opções de controlo de janelas, e opções adicionais de alinhamento de janelas. -super-key = Tecla Super - .launcher = Abrir Lançador - .workspaces = Abrir Áreas de trabalho - .applications = Abrir Aplicações +super-key = Ação da tecla Super + .launcher = Abrir lançador + .workspaces = Abrir áreas de trabalho + .applications = Abrir aplicações .disable = Desativar window-controls = Controlos de janela .maximize = Mostrar o botão de maximizar @@ -226,23 +226,22 @@ window-controls = Controlos de janela ## Desktop: Workspaces workspaces = Áreas de trabalho - .desc = Definir número, comportamento e posição da área de trabalho. -workspaces-behavior = Comportamento da área de trabalho +workspaces-behavior = Comportamento das áreas de trabalho .dynamic = Áreas de trabalho dinâmicas .dynamic-desc = Remove automaticamente áreas de trabalho vazias. .fixed = Número fixo de áreas de trabalho .fixed-desc = Adiciona ou remove áreas de trabalho na visão geral. workspaces-multi-behavior = Comportamento de vários monitores - .span = Áreas de trabalho expandem os ecrãs + .span = Áreas de trabalho se expandem a todos os ecrãs .separate = Ecrãs têm áreas de trabalho separadas -workspaces-overview-thumbnails = Miniaturas da visão geral da área de trabalho - .show-number = Mostrar número da área de trabalho - .show-name = Mostrar nome da área de trabalho +workspaces-overview-thumbnails = Miniaturas da visão geral das áreas de trabalho + .show-number = Mostrar o número da área de trabalho + .show-name = Mostrar o nome da área de trabalho workspaces-orientation = Orientação das áreas de trabalho .vertical = Vertical .horizontal = Horizontal hot-corner = Canto ativo - .top-left-corner = Ativar o canto superior esquerdo para as áreas de trabalho + .top-left-corner = Ativar o canto superior esquerdo para exibir as áreas de trabalho ## Desktop: Display @@ -456,7 +455,7 @@ manage-windows = Gerir janelas .resize-inwards = Redimensionar janela para dentro .resize-outwards = Redimensionar janela para fora .toggle-sticky = Tornar janela fixa -move-windows = Mover Janelas +move-windows = Mover janelas .direction = Mover janela { $direction -> *[down] para baixo @@ -481,7 +480,7 @@ move-windows = Mover Janelas .workspace-num = Mover janela para a área de trabalho { $num } .prev-workspace = Mover janela para a área de trabalho anterior .next-workspace = Mover janela para a área de trabalho seguinte - .last-workspace = Mover janela para a última área de trabalho + .last-workspace = Mover janela para o última área de trabalho .next-display = Mover janela para o ecrã seguinte .prev-display = Mover janela para o ecrã anterior .send-to-prev-workspace = Mover janela para a área de trabalho anterior @@ -504,8 +503,9 @@ system-shortcut = Sistema .play-prev = Faixa anterior .poweroff = Desligar .screenshot = Tirar uma captura de ecrã + .suspend = Suspender .terminal = Abrir o terminal - .touchpad-toggle = Ativar painel tátil + .touchpad-toggle = Ativar ou desativar o painel tátil .volume-lower = Diminuir o volume da saída do áudio .volume-raise = Aumentar o volume da saída do áudio .web-browser = Abrir um navegador de Internet @@ -852,3 +852,10 @@ full-name = Nome completo invalid-username = Nome de utilizador inválido. password-mismatch = A palavra-passe e a confirmação devem ser iguais. save = Guardar +xdg-entry-desktop-comment = Papel de parede, aparência, painel, doca, gestão de janelas e definições de áreas de trabalho +xdg-entry-workspaces-keywords = COSMIC;Área;Trabalho;Orientação;Visão;Geral;Monitor;Ecrã; +workspaces-overview = Visão geral das áreas de trabalho + .action-on-typing = Ação ao digitar + .none = Nenhuma + .launcher = Abrir lançador + .applications = Abrir aplicações diff --git a/i18n/zh-TW/cosmic_settings.ftl b/i18n/zh-TW/cosmic_settings.ftl index ac99a11..413d3a4 100644 --- a/i18n/zh-TW/cosmic_settings.ftl +++ b/i18n/zh-TW/cosmic_settings.ftl @@ -31,7 +31,7 @@ auth-dialog = 需要驗證 .vpn-description = 請輸入 VPN 服務所需的使用者名稱及密碼。 .wifi-description = 請輸入密碼或加密金鑰。你也可以按下路由器上的「WPS」按鈕來連接。 forget-dialog = 忘記這個 Wi-Fi 網路? - .description = 日後如要使用此 Wi-Fi 網路,將需重新輸入密碼。 + .description = 日後若要使用此 Wi-Fi 網路,將需重新輸入密碼。 network-device-state = .activated = 已連線 .config = 連線中 @@ -48,8 +48,8 @@ network-device-state = .unmanaged = 未管理 .unplugged = 網路線已拔除 remove-connection-dialog = 移除連線設定檔? - .vpn-description = 日後如要使用此 VPN,將需重新輸入密碼。 - .wired-description = 若要再次使用此設定檔,需重新建立。 + .vpn-description = 日後若要使用此網路,將需重新輸入密碼。 + .wired-description = 日後若要使用此設定檔,將需重新建立。 vpn = VPN .connections = VPN 連線 .error = 新增 VPN 設定失敗 @@ -57,34 +57,34 @@ vpn = VPN .select-file = 選擇 VPN 配置檔案 vpn-error = VPN 錯誤 .config = 新增 VPN 設定失敗 - .connect = 無法連線到 VPN + .connect = 連線至 VPN 失敗 .connection-editor = 連線編輯器失敗 - .connection-settings = 無法取得使用中連線的設定 - .updating-state = 網路管理員狀態更新失敗 - .wireguard-config-path = WireGuard 配置檔案路徑無效 - .wireguard-config-path-desc = 選擇的檔案必須位於本機檔案系統。 - .wireguard-device = 無法建立 WireGuard 裝置 + .connection-settings = 取得活動連線的設定失敗 + .updating-state = 更新網路管理員狀態失敗 + .wireguard-config-path = WireGuard 設定的檔案路徑無效 + .wireguard-config-path-desc = 所選檔案必須位於本機檔案系統上。 + .wireguard-device = 建立 WireGuard 裝置失敗 .with-password = - 使用 nmcli 指令設定 VPN { $field -> + 使用 nmcli 設定 VPN { $field -> *[username] 使用者名稱 [password] 密碼 - [password-flags] password-flags - } 失敗 + [password-flags] 密碼選項 + }失敗 wired = 有線網路 .adapter = 有線網路卡 { $id } .connections = 有線網路連線 - .devices = 有線網路設備 + .devices = 有線網路裝置 .remove = 移除連線設定檔 -wifi = 無線網路 - .adapter = 無線網路卡 { $id } +wifi = Wi-Fi + .adapter = Wi-Fi 網路卡 { $id } .forget = 忘記此網路 -wireguard-dialog = 新增 WireGuard 設備 - .description = 為 WireGuard 配置選擇裝置名稱。 +wireguard-dialog = 新增 WireGuard 裝置 + .description = 為 WireGuard 設定選擇裝置名稱。 ## Networking: Online Accounts online-accounts = 線上帳號 - .desc = 新增帳號、郵件(IMAP、SMTP)或企業登入 + .desc = 新增帳號、郵件與企業登入 # Bluetooth @@ -92,25 +92,24 @@ activate = 啟用 confirm = 確認 enable = 啟用 bluetooth = 藍牙 - .desc = 管理藍牙設備 .status = 當藍牙設定開啟時,此系統顯示為 { $aliases }。 - .connected = 已連線 + .connected = 已經連線 .connecting = 連線中 .disconnecting = 中斷連線中 .connect = 連線 .disconnect = 中斷連線 .forget = 忘記 .dbus-error = 與 DBus 互動時發生錯誤:{ $why } - .disabled = 藍牙服務已停用 - .inactive = 藍牙服務未啟用 - .unknown = 無法啟用藍牙服務。是否已安裝 BlueZ? -bluetooth-paired = 先前連線過的裝置 - .connect = 連線 - .battery = { $percentage }% 電池電量 -bluetooth-confirm-pin = 確認藍牙PIN碼 - .description = 請確認以下 PIN 碼與顯示在 { $device } 上的 PIN 碼相符 + .disabled = 藍牙服務已經停用 + .inactive = 藍牙服務尚未啟用 + .unknown = 無法啟用藍牙服務。是否已經安裝 BlueZ? +bluetooth-paired = 先前連接的裝置 + .connect = 連接 + .battery = 電量 { $percentage }% +bluetooth-confirm-pin = 確認藍牙 PIN 碼 + .description = 請確認以下 PIN 碼與 { $device } 上顯示的是否相符 bluetooth-available = 附近的裝置 -bluetooth-adapters = 藍牙接收器 +bluetooth-adapters = 藍牙介面卡 ## Accessibility @@ -121,14 +120,14 @@ accessibility = 無障礙功能 .unavailable = 無法使用 .screen-reader = 螢幕閱讀器 .high-contrast = 高對比模式 - .invert-colors = 反相顏色 - .color-filters = 濾色鏡 + .invert-colors = 反轉顏色 + .color-filters = 色彩濾鏡 hearing = 聽覺 - .mono = 將立體聲音訊作為單聲道播放 + .mono = 將立體聲播放為單聲道 default = 預設 magnifier = 放大鏡 .controls = - 或使用這些快捷鍵: { $zoom_in -> + 或使用這些快速鍵: { $zoom_in -> [zero] { "" } *[other] { "" } @@ -149,12 +148,12 @@ magnifier = 放大鏡 .continuous = 跟隨指標連續移動 .onedge = 指標到達邊緣時移動 .centered = 保持指標置中 -color-filter = 濾色鏡類型 +color-filter = 色彩濾鏡類型 .unknown = 未知的濾鏡已啟用 .greyscale = 灰階 - .deuteranopia = 綠/紅(綠色弱,Deuteranopia) - .protanopia = 紅/綠(紅色弱,Protanopia) - .tritanopia = 藍/黃(藍色弱,Tritanopia) + .deuteranopia = 綠/紅(綠色弱視,第二型色盲) + .protanopia = 紅/綠(紅色弱視,第一型色盲) + .tritanopia = 藍/黃(藍色弱視,第三型色盲) ## Desktop @@ -164,22 +163,21 @@ desktop = 桌面 wallpaper = 桌布 .change = 更換圖片每隔 - .desc = 桌布圖片、顏色和幻燈片選項。 .fit = 桌布調整 .folder-dialog = 選擇桌布資料夾 .image-dialog = 選擇桌布圖片 .plural = 桌布 - .same = 所有顯示器使用相同的桌布 - .slide = 幻燈片放映 -add-color = 新增顏色 + .same = 全部顯示器使用相同的桌布 + .slide = 投影片放映 +add-color = 新增色彩 add-image = 新增圖片 all-displays = 所有顯示器 -colors = 顏色 +colors = 色彩 dialog-add = 新增 fill = 填滿 -fit-to-screen = 適應螢幕 -open-new-folder = 開啟新的資料夾 -recent-folders = 最近使用的資料夾 +fit-to-screen = 符合螢幕大小 +open-new-folder = 開啟新資料夾 +recent-folders = 最近使用資料夾 x-minutes = { $number } { $number -> [one] 分鐘 @@ -190,71 +188,70 @@ x-hours = [one] 小時 *[other] 小時 } -never = 從不 +never = 永不 ## Desktop: Appearance appearance = 外觀 accent-color = 強調色 -app-background = 應用程式背景 +app-background = 視窗背景 auto = 自動 close = 關閉 -color-picker = 調色盤 +color-picker = 色彩選擇器 copied-to-clipboard = 已複製到剪貼簿 copy-to-clipboard = 複製到剪貼簿 -dark = 暗色 +dark = 深色 export = 匯出 -hex = Hex +hex = 十六進位 import = 匯入 -light = 亮色 +light = 淺色 mode-and-colors = 色彩與模式 -recent-colors = 近似色 +recent-colors = 最近使用的色彩 reset-to-default = 重新設定至預設 rgb = RGB -window-hint-accent = 使用中視窗的提示色 -window-hint-accent-toggle = 使用主題強調色作為使用中視窗的提示色 -auto-switch = 自動在明亮和夜色模式之間切換 - .sunrise = 清晨時切換為亮色調 - .sunset = 黃昏時切換為夜色調 - .next-sunrise = 下次清晨切換為亮色調 - .next-sunset = 下次黃昏切換為夜色調 +window-hint-accent = 作用中視窗提示色彩 +window-hint-accent-toggle = 使用強調色作為作用中視窗提示色彩 +auto-switch = 在淺色與深色模式間自動切換 + .sunrise = 日出時切換為淺色模式 + .sunset = 日落時切換為深色模式 + .next-sunrise = 下次日出時切換為淺色模式 + .next-sunset = 下次日落時切換為深色模式 container-background = 容器背景 .desc-detail = 容器背景與導航列、側邊欄、對話方塊等元件相關,預設從應用程式或視窗背景進行衍生。 .reset = 重設至自動 - .desc = 容器背景色與導航列、側邊欄、對話方塊等元件相關。 + .desc = 容器背景色與導航列、側邊欄、對話方塊等元件相關 control-tint = 控制元件色調 - .desc = 標準按鈕、搜尋輸入、文字輸入和類似元件的背景。 + .desc = 使用於標準按鈕、搜尋輸入、文字輸入和類似元件的背景 frosted = 系統介面呈現磨砂玻璃的透明效果 - .desc = 將磨砂玻璃的透明效果套用至面板、容器、基座、工具程式、啟動器及程式庫。 -enable-export = 將此主題套用於 GNOME 應用程式 - .desc = 並非所有圖形介面程式庫都支援自動切換,非 COSMIC 原生圖形介面程式庫所開發的程式可能需要在重啟啟動後才會套用新的主題。 -icon-theme = 圖示佈景主題 - .desc = 將不同的圖示集套用至應用程式。 + .desc = 將磨砂玻璃的透明效果套用至面板、程式塢、工具程式、啟動器及程式庫 +enable-export = 將目前主題套用至 GNOME 應用程式 + .desc = 並非所有工具組都支援自動切換。非 COSMIC 應用程式在主題變更後可能需要重新啟動。 +icon-theme = 圖示主題 + .desc = 套用不同的圖示集至應用程式 text-tint = 介面文字色調 - .desc = 在各種背景中衍生出足夠對比色的顏色。 -style = 風格 + .desc = 用來衍生出介面文字的顏色,其有足夠對比於各種表面 +style = 樣式 .round = 圓角 - .slightly-round = 半圓角 - .square = 正角 + .slightly-round = 略為圓角 + .square = 直角 interface-density = 介面密度 .comfortable = 舒適 .compact = 緊湊 .spacious = 寬敞 window-management-appearance = 視窗管理 - .active-hint = 作用中視窗提示尺寸 - .gaps = 平鋪視窗模式下的間隔距離 + .active-hint = 作用中視窗提示大小 + .gaps = 平鋪視窗周圍的間隙 ### Experimental experimental-settings = 實驗性設定 -icons-and-toolkit = 圖示和工具組佈景主題 +icons-and-toolkit = 圖示與工具組主題 interface-font = 系統字型 monospace-font = 等寬字型 ## Desktop: Notifications notifications = 通知 - .desc = 勿擾模式,鎖定畫面通知以及個別應用程式設定。 ## Desktop: Panel @@ -275,27 +272,27 @@ search-applets = 搜尋工具程式... small = 小 start-segment = 起始位置 panel-appearance = 外觀 - .match = 符合桌布主題 + .match = 符合桌面 .light = 淺色 .dark = 深色 panel-behavior-and-position = 行為和位置 .autohide = 自動隱藏面板 - .dock-autohide = 自動隱藏基座 + .dock-autohide = 自動隱藏程式塢 .position = 螢幕上的位置 .display = 顯示在螢幕上 panel-style = 樣式 .anchor-gap = 面板與螢幕邊緣的間距 - .dock-anchor-gap = 基座與螢幕邊緣的間距 + .dock-anchor-gap = 程式塢與螢幕邊緣的間距 .extend = 將面板延伸至螢幕邊緣 - .dock-extend = 將基座延伸至螢幕邊緣 + .dock-extend = 將程式塢延伸至螢幕邊緣 .appearance = 外觀 .size = 尺寸 .background-opacity = 背景透明度 panel-applets = 配置 - .dock-desc = 配置基座工具程式 + .dock-desc = 配置程式塢工具程式 .desc = 配置工具程式面板 -panel-missing = 面板配置遺失 - .desc = 由於使用自訂設定或設定檔損毀,面板配置遺失。 +panel-missing = 面板設定遺失 + .desc = 面板設定檔案因使用自訂設定而遺失,或已損毀。 .fix = 重設為預設值 ## Desktop: Dock @@ -305,62 +302,59 @@ dock = 程式塢 ## Desktop: Window management window-management = 視窗管理 - .desc = 超級鍵動作、視窗控制選項,以及額外的視窗平鋪選項。 -super-key = 超級鍵動作 +super-key = Super 鍵動作 .launcher = 開啟啟動器 .workspaces = 開啟工作區 .applications = 開啟應用程式 - .disable = 關閉 -edge-gravity = 浮動視窗吸附至鄰近邊緣 + .disable = 停用 +edge-gravity = 浮動視窗吸附至附近邊緣 window-controls = 視窗控制項 .maximize = 顯示最大化按鈕 .minimize = 顯示最小化按鈕 - .active-window-hint = 顯示活動視窗提示 -focus-navigation = 焦點導航 - .focus-follows-cursor = 焦點跟隨滑鼠游標 - .focus-follows-cursor-delay = 焦點跟隨滑鼠游標延遲(毫秒) - .cursor-follows-focus = 滑鼠游標跟隨焦點 + .active-window-hint = 顯示作用中視窗提示 +focus-navigation = 焦點導覽 + .focus-follows-cursor = 焦點跟隨游標 + .focus-follows-cursor-delay = 焦點跟隨游標延遲(毫秒) + .cursor-follows-focus = 游標跟隨焦點 ## Desktop: Workspaces workspaces = 工作區 - .desc = 工作區方向和行為。 workspaces-behavior = 工作區行為 .dynamic = 動態工作區 - .dynamic-desc = 自動移除空白工作區。 + .dynamic-desc = 自動移除空的工作區。 .fixed = 固定數量的工作區 - .fixed-desc = 在總覽中新增或移除工作區。 + .fixed-desc = 在概覽中新增或移除工作區。 workspaces-multi-behavior = 多螢幕行為 - .span = 工作區跨螢幕顯示 - .separate = 螢幕擁有各自的工作區 -workspaces-overview-thumbnails = 工作區概觀縮圖 + .span = 工作區橫跨顯示器 + .separate = 顯示器有各自的工作區 +workspaces-overview-thumbnails = 工作區總覽縮圖 .show-number = 顯示工作區編號 .show-name = 顯示工作區名稱 workspaces-orientation = 工作區方向 .vertical = 垂直 .horizontal = 水平 -hot-corner = 觸發角 - .top-left-corner = 啟用左上角觸發角以切換工作區 +hot-corner = 熱區 + .top-left-corner = 啟用左上角熱區以開啟工作區 ## Displays -requires-restart = 需要重新啟動 -color = 顏色 +color = 色彩 .depth = 色彩深度 - .profile = 色彩特性 - .sidebar = 色彩特性 - .temperature = 色彩溫度 -display = 螢幕 - .desc = 管理螢幕、影像切換及夜色模式 + .profile = 色彩設定檔 + .sidebar = 色彩設定檔 + .temperature = 色溫 +display = 顯示螢幕 .arrangement = 螢幕排列 .arrangement-desc = 拖曳螢幕來更改排列方式 - .enable = 啟用螢幕 - .external = { $size } { $output } 外接螢幕 - .laptop = { $size } 筆記型螢幕 - .options = 螢幕選項 - .refresh-rate = 螢幕更新率 + .enable = 啟用顯示螢幕 + .external = { $size } { $output } 外接顯示螢幕 + .laptop = { $size } 筆電顯示螢幕 + .options = 顯示螢幕螢幕選項 + .refresh-rate = 螢幕更新頻率 .resolution = 解析度 - .scale = 縮放比例 + .scale = 縮放大小 .additional-scale-options = 其他縮放選項 mirroring = 投影 .id = 正在投影 { $id } @@ -377,13 +371,13 @@ mirroring = 投影 *[other] 螢幕 } night-light = 夜間模式 - .auto = 自動 (黃昏後到清晨前期間啟用) - .desc = 以暖色調來減少藍光。 + .auto = 自動(日落至日出) + .desc = 以暖色調來減少藍光 orientation = 螢幕方向 .standard = 橫式 - .rotate-90 = 旋轉 90° - .rotate-180 = 旋轉 180° - .rotate-270 = 旋轉 270° + .rotate-90 = 旋轉 90 度 + .rotate-180 = 旋轉 180 度 + .rotate-270 = 旋轉 270 度 vrr = 可變刷新率 .enabled = 已啟用 .force = 總是 @@ -392,37 +386,35 @@ vrr = 可變刷新率 scheduling = 排程 .manual = 手動排程 dialog = 對話框 - .title = 保留這些顯示設定? + .title = 保留這些顯示器設定? .keep-changes = 保留變更 .change-prompt = 設定變更將在 { $time } 秒後自動還原。 .revert-settings = 還原設定 ## Sound -sound = 音效 - .desc = N/A +sound = 音響 sound-output = 輸出 - .volume = 音量 + .volume = 輸出音量 .device = 輸出裝置 - .level = 音量大小 - .config = 設定 + .level = 輸出等級 + .config = 組態 .balance = 平衡 .left = 左 .right = 右 sound-input = 輸入 - .volume = 音量 + .volume = 輸入音量 .device = 輸入裝置 - .level = 音量大小 -sound-alerts = 警示音 - .volume = 音量 - .sound = 警示聲音 -sound-applications = 程式音效 - .desc = 程式音效設定 + .level = 輸入等級 +sound-alerts = 提示音 + .volume = 提示音音量 + .sound = 提示音音效 +sound-applications = 應用程式 + .desc = 應用程式音量與設定 ## Power -power = 電源 & 電池 - .desc = 管理電源設定 +power = 電源與電池 battery = 電池 .minute = { $value } { $value -> @@ -439,22 +431,22 @@ battery = 電池 [one] 天 *[other] 天 } - .less-than-minute = 小於一分鐘 - .and = 和 + .less-than-minute = 少於一分鐘 + .and = 與 .remaining-time = { $time } 直到 { $action -> [full] 充滿 - *[other] 電量耗盡 + *[other] 耗盡 } -connected-devices = 已連線裝置 +connected-devices = 已連接的裝置 .unknown = 未知裝置 power-mode = 電源模式 .battery = 延長電池續航力 - .battery-desc = 降低耗電量並以靜音模式運作。 + .battery-desc = 降低耗電量與靜音效能 .balanced = 平衡 - .balanced-desc = 安靜的效能和適中的耗電量。 + .balanced-desc = 安靜的效能與適度的耗電量 .performance = 高效能 - .performance-desc = 最高效能和耗電量。 + .performance-desc = 最高效能與高耗電量 .no-backend = 找不到後端。請安裝 system76-power 或 power-profiles-daemon。 power-saving = 省電選項 .turn-off-screen-after = 閒置多久後關閉螢幕 @@ -464,20 +456,19 @@ power-saving = 省電選項 ## Input -acceleration-desc = 自動依照觸控板移動加速度即時變更滑鼠速度。 -disable-while-typing = 鍵盤輸入時關閉觸控板 +acceleration-desc = 自動調整追蹤靈敏度基於速度 +disable-while-typing = 輸入時停用觸控板 input-devices = 輸入裝置 - .desc = 輸入裝置 primary-button = 主要按鈕 - .desc = 設定實體按鈕的順序。 + .desc = 設定實體按鈕的順序 .left = 左 .right = 右 scrolling = 捲動 - .two-finger = 以雙指捲動 - .edge = 在觸控板邊緣以單指捲動 + .two-finger = 使用兩指捲動 + .edge = 使用一指沿邊緣捲動 .speed = 捲動速度 .natural = 自然捲動 - .natural-desc = 捲動內容而非視界 + .natural-desc = 捲動內容而非檢視畫面 ## Input: Keyboard @@ -486,132 +477,133 @@ fast = 快 short = 短 long = 長 keyboard = 鍵盤 - .desc = 鍵盤輸入來源、切換、特殊字元輸入、捷徑。 keyboard-sources = 輸入法 - .desc = 輸入法可使用 Super+Space 按鍵組合進行切換,此項設定可以在鍵盤快捷鍵設定頁面進行修改 + .desc = 輸入法可使用 Super+Space 按鍵組合進行切換,此項設定可以在鍵盤快速鍵設定頁面進行修改 .move-up = 往上 .move-down = 往下 .settings = 設定 .view-layout = 檢視鍵盤布局 .remove = 移除 .add = 新增輸入法 -keyboard-special-char = 特殊輸入 +keyboard-special-char = 特殊字輸入 .alternate = 進階按鍵 - .compose = 組合鍵 + .compose = 組合按鍵 + .compose-desc = 組合按鍵允許輸入多樣字元。要使用它,請按組合按鍵,再按字元依序。例如,按組合按鍵接著按 C 和 o 鍵,將輸入 ©;按組合按鍵接著按 a 和 ‘ 鍵,將輸入 á。 .caps = 大寫鎖定鍵 -keyboard-typing-assist = 鍵盤輸入 - .repeat-rate = 重複率 +keyboard-typing-assist = 輸入 + .repeat-rate = 重複速率 .repeat-delay = 重複延遲 -keyboard-numlock-boot = 鍵盤數字鎖定開機 - .boot-state = 開機狀態 - .last-boot = 上次開機狀態 - .on = 開 - .off = 關 - .set = 設定數字鎖定鍵開機狀態 -added = 新增 +keyboard-numlock-boot = 數字鍵盤鎖定 + .boot-state = 開機時的狀態 + .last-boot = 上次開機 + .on = 開啟 + .off = 關閉 + .set = 設定數字鍵盤鎖定開機狀態 +added = 已新增 type-to-search = 輸入進行搜尋... show-extended-input-sources = 顯示延伸輸入來源 ## Input: Keyboard: Shortcuts -keyboard-shortcuts = 鍵盤快捷鍵 - .desc = 顯示與修改快捷鍵 +keyboard-shortcuts = 鍵盤快速鍵 + .desc = 顯示與修改快速鍵 add-another-keybinding = 添加另一個按鍵組合 cancel = 取消 -command = 命令 +command = 指令 custom = 自訂 -debug = 除錯 +debug = 偵錯 disabled = 已停用 -input-source-switch = 切換鍵盤輸入法 -migrate-workspace-prev = 將工作區移至上一個輸出 -migrate-workspace-next = 將工作區移至下一個輸出 +input-source-switch = 切換鍵盤語言輸入來源 +migrate-workspace-prev = 將工作區遷移至上一個輸出 +migrate-workspace-next = 將工作區遷移至下一個輸出 migrate-workspace = - 將工作區移至輸出 { $direction -> + 將工作區遷移至 { $direction -> *[down] 下方 - [left] 左方 - [right] 右方 + [left] 左側 + [right] 右側 [up] 上方 - } + }的輸出 navigate = 導覽 replace = 取代 -shortcut-name = 捷徑名稱 +shortcut-name = 快速鍵名稱 system-controls = 系統控制 terminate = 終止 toggle-stacking = 切換視窗堆疊 type-key-combination = 輸入按鍵組合 -custom-shortcuts = 自訂捷徑 - .add = 新增捷徑 - .context = 新增自訂捷徑 - .none = 沒有自訂捷徑 -modified = { $count } 項已修改 +custom-shortcuts = 自訂快速鍵 + .add = 添增快速鍵 + .context = 添增自訂快速鍵 + .none = 無自訂快速鍵 +modified = { $count } 項已經修改 nav-shortcuts = 導覽 - .prev-output = 聚焦到前一個輸出 - .next-output = 聚焦到下一個輸出 - .last-workspace = 聚焦到上一個工作區 - .prev-workspace = 聚焦到前一個工作區 - .next-workspace = 聚焦到下一個工作區 + .prev-output = 聚焦上一個輸出 + .next-output = 聚焦下一個輸出 + .last-workspace = 聚焦最後一個工作區 + .prev-workspace = 聚焦上一個工作區 + .next-workspace = 聚焦下一個工作區 .focus = - 聚焦視窗 { $direction -> + 聚焦 { $direction -> *[down] 下方 - [in] 內 - [left] 左方 - [out] 外 - [right] 右方 + [in] 內部 + [left] 左側 + [out] 外部 + [right] 右側 [up] 上方 - } + }的視窗 .output = - 切換到輸出 { $direction -> + 切換至 { $direction -> *[down] 下方 - [left] 左方 - [right] 右方 + [left] 左側 + [right] 右側 [up] 上方 - } - .workspace = 切換到工作區 { $num } + }的輸出 + .workspace = 切換至工作區 { $num } manage-windows = 管理視窗 .close = 關閉視窗 .maximize = 最大化視窗 .fullscreen = 全螢幕視窗 .minimize = 最小化視窗 - .resize-inwards = 向內調整視窗大小 - .resize-outwards = 向外調整視窗大小 + .resize-inwards = 將視窗向內調整大小 + .resize-outwards = 將視窗向外調整大小 .toggle-sticky = 切換置頂視窗 move-windows = 移動視窗 .direction = - 移動視窗 { $direction -> + 向 { $direction -> *[down] 下 [left] 左 [right] 右 [up] 上 - } + }移動視窗 .display = - 將視窗移動到另一個螢幕 { $direction -> - *[down] 下 - [left] 左 - [right] 右 - [up] 上 - } + 將視窗移至 { $direction -> + *[down] 下方 + [left] 左側 + [right] 右側 + [up] 上方 + }的一個螢幕 .workspace = - 將視窗移動到另一個工作區 { $direction -> + 將視窗移至 { $direction -> *[below] 下方 - [left] 左方 - [right] 右方 + [left] 左側 + [right] 右側 [above] 上方 - } - .workspace-num = 將視窗移動到工作區 { $num } - .prev-workspace = 將視窗移動到上一個工作區 - .next-workspace = 將視窗移動到下一個工作區 - .last-workspace = 將視窗移動到最後一個工作區 - .next-display = 將視窗移動到下一個顯示器 - .prev-display = 將視窗移動到上一個顯示器 - .send-to-prev-workspace = 將視窗移動到上一個工作區 - .send-to-next-workspace = 將視窗移動到下一個工作區 + }的一個工作區 + .workspace-num = 將視窗移至工作區 { $num } + .prev-workspace = 將視窗移至上一個工作區 + .next-workspace = 將視窗移至下一個工作區 + .last-workspace = 將視窗移至最後一個工作區 + .next-display = 將視窗移至下一個顯示器 + .prev-display = 將視窗移至上一個顯示器 + .send-to-prev-workspace = 將視窗移至上一個工作區 + .send-to-next-workspace = 將視窗移至下一個工作區 system-shortcut = 系統 .app-library = 開啟應用程式庫 .brightness-down = 降低螢幕亮度 - .brightness-up = 增加螢幕亮度 - .home-folder = 開啟主目錄 + .brightness-up = 提高螢幕亮度 + .display-toggle = 切換內部顯示螢幕 + .home-folder = 開啟家目錄 .keyboard-brightness-down = 降低鍵盤亮度 - .keyboard-brightness-up = 增加鍵盤亮度 + .keyboard-brightness-up = 提高鍵盤亮度 .launcher = 開啟啟動器 .log-out = 登出 .lock-screen = 鎖定螢幕 @@ -621,15 +613,16 @@ system-shortcut = 系統 .play-next = 下一首 .play-prev = 上一首 .poweroff = 關機 - .screenshot = 截圖 + .screenshot = 螢幕擷圖 + .suspend = 休眠 .terminal = 開啟終端機 .touchpad-toggle = 切換觸控板 .volume-lower = 降低音量 - .volume-raise = 增加音量 + .volume-raise = 提高音量 .web-browser = 開啟網頁瀏覽器 .window-switcher = 切換視窗 .window-switcher-previous = 反向切換視窗 - .workspace-overview = 開啟工作區概覽 + .workspace-overview = 開啟工作區總覽 window-tiling = 視窗平鋪 .horizontal = 設定水平方向 .vertical = 設定垂直方向 @@ -638,7 +631,7 @@ window-tiling = 視窗平鋪 .toggle-stacking = 切換視窗堆疊 .toggle-floating = 切換視窗浮動 .toggle-orientation = 切換方向 -replace-shortcut-dialog = 取代捷徑? +replace-shortcut-dialog = 取代快速鍵? .desc = { $shortcut } 已被 { $name } 使用。如果您取代它, { $name } 將會被停用。 zoom-in = 放大 zoom-out = 縮小 @@ -646,22 +639,20 @@ zoom-out = 縮小 ## Input: Mouse mouse = 滑鼠 - .desc = 滑鼠靈敏度、加速及捲動設定 .speed = 滑鼠速度 .acceleration = 啟用滑鼠加速 ## Input: Touchpad -click-behavior = 觸控模式 - .click-finger = 觸控板雙指點擊視為滑鼠右鍵,三指點擊視為滑鼠中鍵 - .button-areas = 觸控板右下方點擊視為滑鼠右鍵,於中間下方點擊視為滑鼠中鍵 +click-behavior = 點擊行為 + .click-finger = 兩指點擊為次要點擊,三指點擊為中鍵點擊 + .button-areas = 右下角點擊為次要點擊,中下角點擊為中鍵點擊 pinch-to-zoom = 雙指撥動縮放 - .desc = 若應用程式支援,可用雙指撥動來縮放內容。 -tap-to-click = 觸擊 - .desc = 啟用單指觸擊視作滑鼠左鍵,雙指觸擊視作滑鼠右鍵,三指觸擊視作滑鼠中鍵。 + .desc = 可用雙指撥動來縮放內容,應用程式功能如有支援 +tap-to-click = 滑觸點按 + .desc = 啟用單指滑觸視作點按滑鼠左鍵,雙指滑觸視作點按滑鼠右鍵,三指滑觸視作點按滑鼠中鍵 touchpad = 觸控板 .acceleration = 啟用觸控板加速 - .desc = 觸控靈敏度、點擊和手勢 .speed = 觸控靈敏度 ## Input: Gestures @@ -673,43 +664,40 @@ gestures = 手勢 .four-finger-up = 四指向上滑動 .three-finger-any = 三指向任何方向滑動 switch-workspaces = 切換工作區 - .horizontal = 四指左右滑動 - .vertical = 四指上下滑動 -switch-between-windows = 視窗間切換 + .horizontal = 四指向左/右滑動 + .vertical = 四指向上/下滑動 +switch-between-windows = 在視窗間切換 open-application-library = 開啟應用程式庫 -open-workspaces-view = 開啟工作區概觀 +open-workspaces-view = 開啟工作區總覽 ## Time & Language -time = 時間和語言 - .desc = N/A -time-date = 日期和時間 - .desc = 時區、自動時間校正、時間格式設定 - .auto = 自動設定 - .auto-ntp = 設定時區後,日期和時間將會自動更新。 +time = 時間與語言 +time-date = 日期與時間 + .auto = 設定自動 + .auto-ntp = 設定時區後,日期與時間將會自動更新 time-zone = 時區 .auto = 自動設定時區 - .auto-info = 需要定位服務和網路存取能力 -time-format = 日期和時間格式 + .auto-info = 需要定位服務與網際網路存取 +time-format = 日期與時間格式 .twenty-four = 24 小時制 .show-seconds = 顯示秒數 - .first = 每週的第一天 - .show-date = 在條狀面板顯示日期 + .first = 每週第一天 + .show-date = 在時間工具程式中顯示日期 .friday = 星期五 .saturday = 星期六 .sunday = 星期日 .monday = 星期一 -time-region = 地區和語言 - .desc = 基於地區來格式化日期、時間及數字。 +time-region = 地區與語言 formatting = 格式設定 .dates = 日期 .time = 時間 - .date-and-time = 日期 & 時間 + .date-and-time = 日期與時間 .numbers = 數字 .measurement = 度量衡 .paper = 紙張 preferred-languages = 偏好語言 - .desc = 語言的順序決定桌面的翻譯語言,變更將在下次登入時生效。 + .desc = 語言順序決定使用者介面使用的語言。變更將在下次登入時生效。 add-language = 新增語言 .context = 新增語言 install-additional-languages = 安裝其他語言 @@ -722,7 +710,6 @@ applications = 應用程式 ## Applications: Default Applications default-apps = 預設應用程式 - .desc = 預設網頁瀏覽器、郵件用戶端、檔案瀏覽器和其他應用程式。 .web-browser = 網頁瀏覽器 .file-manager = 檔案管理員 .mail-client = 郵件用戶端 @@ -733,83 +720,80 @@ default-apps = 預設應用程式 .terminal = 終端機 .other-associations = 其他關聯 .text-editor = 文字編輯器 + .not-installed = 尚未安裝 ## Applications: Startup Applications startup-apps = 啟動應用程式 - .desc = 設定登入時執行的應用程式。 - .add = 新增應用程式 + .add = 添增應用程式 .user = 您登入時啟動的應用程式 - .none = 未新增啟動應用程式 - .remove-dialog-title = 移除 { $name }? - .remove-dialog-description = 您確定要移除此啟動應用程式嗎? - .search-for-application = 搜尋應用程式 + .none = 尚無添新增啟動應用程式 + .remove-dialog-title = 移除 { $name } 嗎? + .remove-dialog-description = 是否移除此啟動應用程式? + .add-startup-app = 添增啟動應用程式 ## Applications: Legacy Applications legacy-applications = X11 應用程式相容性 - .desc = X11 視窗系統應用程式縮放和全域快捷鍵。 -legacy-app-global-shortcuts = X11 應用程式中的全域快捷鍵 - .desc = 全域快捷鍵允許在應用程式中執行的按鍵和滑鼠按鈕事件被其他應用程式識別,用於「按鍵通話」或「按鍵靜音」等功能。預設情況下,此功能在 X11 應用程式中被停用,以確保其他應用程式無法監視包含敏感資訊的鍵盤和滑鼠事件。 +legacy-app-global-shortcuts = X11 應用程式中的整體快速鍵 + .desc = 整體快速鍵允許在應用程式中執行的按鍵和滑鼠按鈕事件被其他應用程式識別,用於「按鍵通話」或「按鍵靜音」等功能。預設情況下,此功能在 X11 應用程式中被停用,以確保其他應用程式無法監視包含敏感資訊的鍵盤和滑鼠事件。 .none = 無按鍵 .modifiers = 修飾鍵 (Super, Shift, Control, Alt) - .combination = 當按下 Super、Control 或 Alt 修飾鍵時的所有按鍵 - .all = 所有按鍵 + .combination = 當按下 Super、Control 或 Alt 修飾鍵時的全部按鍵 + .all = 全部按鍵 .mouse = X11 應用程式中的滑鼠按鈕事件 legacy-app-scaling = X11 視窗系統應用程式縮放 - .scaled-gaming = 為遊戲和全螢幕應用程式最佳化 - .gaming-description = X11 應用程式可能比 Wayland 應用程式稍大/稍小。 - .scaled-applications = 為應用程式最佳化 - .applications-description = 遊戲和全螢幕 X11 應用程式可能不符合您的顯示器解析度。 + .scaled-gaming = 針對遊戲與全螢幕應用程式最佳化 + .gaming-description = X11 應用程式相較於 Wayland 應用程式可能顯得稍大/稍小 + .scaled-applications = 針對應用程式最佳化 + .applications-description = 遊戲與全螢幕 X11 應用程式可能無法符合您的顯示器解析度 .scaled-compatibility = 最大相容性模式 - .compatibility-description = X11 應用程式在 HiDPI 螢幕上可能會出現模糊。 - .preferred-display = 遊戲和全螢幕 X11 應用程式的偏好顯示器 + .compatibility-description = X11 應用程式在 HiDPI 螢幕上可能顯得模糊 + .preferred-display = 遊戲與全螢幕 X11 應用程式的偏好顯示器 .no-display = 無 ## System -system = 系統與帳戶 +system = 系統與帳號 ## System: About about = 關於 - .desc = 裝置名稱、硬體資訊、作業系統。 about-device = 裝置名稱 - .desc = 此名稱用於顯示給其他網路或藍牙裝置。 + .desc = 此名稱用於顯示給其他網路或藍牙裝置 about-hardware = 硬體 .model = 硬體型號 .memory = 記憶體 .processor = 處理器 .graphics = 顯示卡 - .disk-capacity = 硬碟空間 + .disk-capacity = 磁碟容量 about-os = 作業系統 .os = 系統 .os-architecture = 系統架構 + .kernel = 核心版本 .desktop-environment = 桌面環境 .windowing-system = 視窗系統 about-related = 相關設定 - .support = 取得幫助 + .support = 取得支援 ## System: Firmware firmware = 韌體 - .desc = 韌體資訊。 ## System: Users users = 使用者 - .desc = 驗證、登入、畫面鎖定 .admin = 管理員 .standard = 標準 .profile-add = 選擇個人資料圖片 administrator = 系統管理員 - .desc = 系統管理員可以變更所有使用者的設定,新增和移除其他使用者。 + .desc = 系統管理員可以變更全部使用者的設定,添增和移除其他使用者 add-user = 新增使用者 change-password = 變更密碼 remove-user = 移除使用者 -full-name = 姓名 -invalid-username = 無效的使用者名稱。 -password-mismatch = 密碼與確認密碼必須相符。 +full-name = 全名 +invalid-username = 無效的使用者名稱 +password-mismatch = 密碼與確認密碼必須相符 save = 儲存 xdg-entry-dock-comment = 可選的應用程式和工具程式的工具欄 xdg-entry-dock = 程式塢 @@ -839,3 +823,91 @@ xdg-entry-about-comment = 裝置名稱、硬體資訊、作業系統預設 xdg-entry-about = 關於 xdg-entry-keywords = COSMIC;設定; xdg-entry-dock-keywords = COSMIC;程式塢;面板;工具程式 +xdg-entry-region-language = 地區與語言 +xdg-entry-notifications-keywords = COSMIC;通知;鎖定; +xdg-entry-power = 電源與電池 +xdg-entry-panel-keywords = COSMIC;面板;工具程式 +xdg-entry-panel = 面板 +xdg-entry-notifications = 通知 +xdg-entry-startup-apps = 開機啟動應用程式 +xdg-entry-region-language-comment = 依據您所在的地區設定日期、時間和數字的格式 +xdg-entry-notifications-comment = 勿擾模式、鎖定螢幕通知、及各個應用程式設定 +xdg-entry-sound-keywords = COSMIC;音響;音訊;提醒;Pipewire; +xdg-entry-power-keywords = COSMIC;電源;電池 +xdg-entry-region-language-keywords = COSMIC;地區;語言;日期;格式;時間;本地;本地化; +xdg-entry-sound-comment = 裝置、提醒和應用程式的音訊設定 +xdg-entry-panel-comment = 主要系統列, 用於選單和工具程式 +xdg-entry-sound = 音響 +xdg-entry-power-comment = 電源模式和省電選項 +xdg-entry-network-keywords = COSMIC;網路;無線;WiFi;VPN; +xdg-entry-network-comment = 管理網路連線 +xdg-entry-network = 網路與無線 +xdg-entry-mouse-keywords = COSMIC;滑鼠;加速度;滾動; +xdg-entry-mouse-comment = 滑鼠速度、加速度和自然滾動 +xdg-entry-mouse = 滑鼠 +xdg-entry-keyboard-keywords = COSMIC;鍵盤;輸入;輸入源;快速鍵; +xdg-entry-keyboard-comment = 輸入源、切換、特殊字符輸入、快速鍵 +xdg-entry-keyboard = 鍵盤 +xdg-entry-input-keywords = COSMIC;輸入;鍵盤;滑鼠; +xdg-entry-input-comment = 鍵盤與滑鼠設定 +xdg-entry-input = 輸入裝置 +xdg-entry-desktop-comment = 桌布、外觀、面板、程式塢、視窗管理和工作區設定 +xdg-entry-default-apps-comment = 預設網頁瀏覽器、郵件用戶端、檔案管理器和其他應用程式 +xdg-entry-touchpad = 觸控板 +xdg-entry-wired = 有線連接 +xdg-entry-startup-apps-comment = 當登入運行的應用程式進行調設 +xdg-entry-startup-apps-keywords = COSMIC;開機啟動;應用程式; +xdg-entry-wired-keywords = COSMIC;有線連接;LAN;網路;連接; +xdg-entry-system = 系統與帳號 +xdg-entry-window-management = 視窗管理 +xdg-entry-time-language-comment = 管理系統日期、時間、區域及語言 +xdg-entry-x11-applications-keywords = COSMIC;X11;應用程式;遊戲;相容性; +xdg-entry-time-language = 時間與語言 +xdg-entry-users = 使用者 +xdg-entry-system-keywords = COSMIC;系統;資訊;帳號;韌體; +xdg-entry-wireless-keywords = COSMIC;WiFi;Wi-Fi;網路;連接; +xdg-entry-wireless-comment = Wi-Fi 連接與連接設定檔案 +xdg-entry-wallpaper = 背景圖片 +xdg-entry-users-comment = 身份驗證與使用者帳號 +xdg-entry-wallpaper-comment = 背景圖片、顏色及投影片選項 +xdg-entry-wireless = Wi-Fi +xdg-entry-workspaces-keywords = COSMIC;工作區;方向;總覽;螢幕; +xdg-entry-system-comment = 系統資訊、帳號及韌體更新 +xdg-entry-x11-applications-comment = X11 視窗系統應用程式縮放大小、主要顯示螢幕和整體快速鍵 +xdg-entry-wallpaper-keywords = COSMIC;背景圖片;背景;投影片; +xdg-entry-users-keywords = COSMIC;使用者;帳戶; +xdg-entry-vpn-keywords = COSMIC;VPN;網路;連接;OpenVPN;OpenConnect; +xdg-entry-time-language-keywords = COSMIC;系統;時間;日期;地區;語言; +xdg-entry-touchpad-comment = 觸控板速度、點按選項及手勢 +xdg-entry-vpn-comment = VPN 連接和連接設定檔案 +xdg-entry-window-management-keywords = COSMIC;視窗;管理;平鋪;Super;鍵; +xdg-entry-workspaces-comment = 工作區方向、總覽及多重顯示器行為 +xdg-entry-workspaces = 工作區 +xdg-entry-x11-applications = X11 應用程式相容性 +xdg-entry-window-management-comment = Super 鍵動作、視窗控制選項及附加視窗平鋪選項 +xdg-entry-wired-comment = 有線連接和連接設定檔案 +share = 分享網路 +scan-to-connect-description = 掃描 QR 碼以連接至該網路。 +qr-code-unavailable = QR 碼無可使用 +network-name = 網路名稱 +xdg-entry-touchpad-keywords = COSMIC;觸控板;手勢; +xdg-entry-comment = COSMIC 桌面設定應用程式 +sound-device-profiles = 裝置設定檔案 +sound-usb-audio = USB 音訊 +sound-hd-audio = 高解析度音訊 +sound-device-port-unplugged = 尚未插接 +amplification = 音量擴大 + .desc = 允許將音量提高至 150% +workspaces-overview = 工作區總覽 + .action-on-typing = 輸入動作 + .none = 無 + .launcher = 開啟啟動器 + .applications = 開啟應用程式 +place-here = 在此放置工具程式 +shadow-and-corners = 視窗陰影與角型 +shadows-tiling = 平鋪視窗 + .clip = 符合系統角型 + .shadow = 套用陰影 +shadows-floating = 浮動視窗 + .clip = 符合系統角型和套用陰影 +no-search-results = 沒有網路符合您所要搜尋的。 From 96ce377ebfd6581c8519d4625d71076fd7c0ed02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vuka=C5=A1in=20Vojinovi=C4=87?= <150025636+git-f0x@users.noreply.github.com> Date: Sat, 4 Apr 2026 17:50:25 +0200 Subject: [PATCH 02/10] chore: update libcosmic --- Cargo.lock | 406 +++++++++--------- Cargo.toml | 12 +- .../src/pages/accessibility/magnifier.rs | 76 ++-- .../src/pages/accessibility/mod.rs | 84 ++-- .../pages/applications/legacy_applications.rs | 136 +++--- cosmic-settings/src/pages/bluetooth/mod.rs | 10 +- .../src/pages/desktop/appearance/drawer.rs | 2 +- .../pages/desktop/appearance/font_config.rs | 48 +-- .../src/pages/desktop/appearance/mod.rs | 51 +-- .../desktop/appearance/mode_and_colors.rs | 146 ++++--- cosmic-settings/src/pages/desktop/dock/mod.rs | 13 +- .../src/pages/desktop/panel/inner.rs | 55 +-- .../src/pages/desktop/wallpaper/mod.rs | 17 +- .../src/pages/desktop/window_management.rs | 49 +-- .../src/pages/desktop/workspaces.rs | 62 +-- cosmic-settings/src/pages/display/mod.rs | 10 +- .../src/pages/input/keyboard/mod.rs | 38 +- .../pages/input/keyboard/shortcuts/common.rs | 7 +- .../pages/input/keyboard/shortcuts/custom.rs | 4 +- cosmic-settings/src/pages/input/touchpad.rs | 52 +-- cosmic-settings/src/pages/networking/wifi.rs | 12 +- cosmic-settings/src/pages/power/mod.rs | 25 +- cosmic-settings/src/pages/sound/mod.rs | 14 +- cosmic-settings/src/pages/system/users/mod.rs | 99 ++--- cosmic-settings/src/pages/time/date.rs | 68 +-- cosmic-settings/src/pages/time/region.rs | 96 +---- cosmic-settings/src/widget/mod.rs | 93 ++-- page/src/section.rs | 4 +- 28 files changed, 729 insertions(+), 960 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index dbf69d3..e9205b2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -209,7 +209,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f2a1bb052857d5dd49572219344a7332b31b76405648eabac5bc68978251bcd" dependencies = [ "android-properties", - "bitflags 2.11.0", + "bitflags 2.11.1", "cc", "jni", "libc", @@ -388,7 +388,7 @@ dependencies = [ "enumflags2", "futures-channel", "futures-util", - "rand 0.9.2", + "rand 0.9.4", "raw-window-handle", "serde", "serde_repr", @@ -406,7 +406,7 @@ dependencies = [ "enumflags2", "futures-channel", "futures-util", - "rand 0.9.2", + "rand 0.9.4", "serde", "serde_repr", "tokio", @@ -696,7 +696,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ "annotate-snippets", - "bitflags 2.11.0", + "bitflags 2.11.1", "cexpr", "clang-sys", "itertools 0.13.0", @@ -737,20 +737,20 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" dependencies = [ "serde_core", ] [[package]] name = "bitstream-io" -version = "4.9.0" +version = "4.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60d4bd9d1db2c6bdf285e223a7fa369d5ce98ec767dec949c6ca62863ce61757" +checksum = "7eff00be299a18769011411c9def0d827e8f2d7bf0c3dbf53633147a8867fd1f" dependencies = [ - "core2", + "no_std_io2", ] [[package]] @@ -951,7 +951,7 @@ version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dbf9978365bac10f54d1d4b04f7ce4427e51f71d61f2fe15e3fed5166474df7" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "polling", "rustix 1.1.4", "slab", @@ -981,9 +981,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.59" +version = "1.2.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7a4d3ec6524d28a329fc53654bbadc9bdd7b0431f5d65f1a56ffb28a1ee5283" +checksum = "43c5703da9466b66a946814e1adf53ea2c90f10063b86290cc9eb67ce3478a20" dependencies = [ "find-msvc-tools", "jobserver", @@ -1085,9 +1085,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.6.0" +version = "4.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" +checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" dependencies = [ "clap_builder", "clap_derive", @@ -1107,9 +1107,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.6.0" +version = "4.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a" +checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -1337,20 +1337,11 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "core-foundation 0.10.1", "libc", ] -[[package]] -name = "core2" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" -dependencies = [ - "memchr", -] - [[package]] name = "core_maths" version = "0.1.1" @@ -1363,7 +1354,7 @@ dependencies = [ [[package]] name = "cosmic-bg-config" version = "1.0.3" -source = "git+https://github.com/pop-os/cosmic-bg#644993abd84bf04d7b3f2211e3656002c2a6f00b" +source = "git+https://github.com/pop-os/cosmic-bg#06970d5945b45a634b9ed314f5ca3a86a8502fd8" dependencies = [ "cosmic-config", "derive_setters", @@ -1377,7 +1368,7 @@ name = "cosmic-client-toolkit" version = "0.1.0" source = "git+https://github.com/pop-os/cosmic-protocols//?rev=d0e95be#d0e95be25e423cfe523b11111a3666ed7aaf0dc4" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "cosmic-protocols", "libc", "smithay-client-toolkit", @@ -1388,7 +1379,7 @@ dependencies = [ [[package]] name = "cosmic-comp-config" version = "1.0.0" -source = "git+https://github.com/pop-os/cosmic-comp#3e84968dacb6a50a82ef5e35c0ac373c38172681" +source = "git+https://github.com/pop-os/cosmic-comp#4df95190db07f7410666cec4d3bf648de90f81dd" dependencies = [ "cosmic-config", "input", @@ -1400,7 +1391,7 @@ dependencies = [ [[package]] name = "cosmic-config" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#6caccaba337ed9bab21c5fe3c2aa7392e322e89c" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "atomicwrites", "cosmic-config-derive", @@ -1421,7 +1412,7 @@ dependencies = [ [[package]] name = "cosmic-config-derive" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#6caccaba337ed9bab21c5fe3c2aa7392e322e89c" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "quote", "syn 2.0.117", @@ -1440,7 +1431,7 @@ name = "cosmic-dbus-networkmanager" version = "0.1.0" source = "git+https://github.com/pop-os/dbus-settings-bindings#507e342c21d3ce6ae41b1d4f3fa2f0ad5ee23e75" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "derive_builder", "jiff", "procfs", @@ -1451,7 +1442,7 @@ dependencies = [ [[package]] name = "cosmic-freedesktop-icons" version = "0.4.0" -source = "git+https://github.com/pop-os/freedesktop-icons#7a61a704f6d1ec41f71cbe766e3cc484858523fa" +source = "git+https://github.com/pop-os/freedesktop-icons#9c562fe3ecf03241a46a60c0078cd6ea10bd75ce" dependencies = [ "bstr", "btoi", @@ -1514,7 +1505,7 @@ name = "cosmic-protocols" version = "0.1.0" source = "git+https://github.com/pop-os/cosmic-protocols//?rev=d0e95be#d0e95be25e423cfe523b11111a3666ed7aaf0dc4" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -1529,7 +1520,7 @@ version = "0.1.0" source = "git+https://github.com/pop-os/cosmic-randr#6e8e795970fa06d434af22775e415b517f7552d3" dependencies = [ "cosmic-protocols", - "indexmap 2.13.1", + "indexmap 2.14.0", "thiserror 2.0.18", "tokio", "tracing", @@ -1593,7 +1584,7 @@ dependencies = [ "iced_winit", "icu", "image", - "indexmap 2.13.1", + "indexmap 2.14.0", "itertools 0.14.0", "itoa", "jiff", @@ -1726,7 +1717,7 @@ dependencies = [ name = "cosmic-settings-network-manager-subscription" version = "1.0.7" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "cosmic-dbus-networkmanager", "futures", "iced_futures", @@ -1813,9 +1804,9 @@ dependencies = [ [[package]] name = "cosmic-text" version = "0.18.2" -source = "git+https://github.com/pop-os/cosmic-text.git#9a2ab09f06905e91f41d64ac6eee887726e7fd76" +source = "git+https://github.com/pop-os/cosmic-text.git#4d74f795cc771fdcc7ea0f9cacba63fcf036fad6" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "fontdb", "harfrust", "linebender_resource_handle", @@ -1836,7 +1827,7 @@ dependencies = [ [[package]] name = "cosmic-theme" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#6caccaba337ed9bab21c5fe3c2aa7392e322e89c" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "almost", "configparser", @@ -2182,7 +2173,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block2 0.6.2", "libc", "objc2 0.6.4", @@ -2213,7 +2204,7 @@ name = "dnd" version = "0.1.0" source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "mime 0.1.0", "raw-window-handle", "smithay-client-toolkit", @@ -2244,7 +2235,7 @@ checksum = "117240f60069e65410b3ae1bb213295bd828f707b5bec6596a1afc8793ce0cbc" [[package]] name = "dpi" version = "0.1.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" [[package]] name = "drm" @@ -2252,7 +2243,7 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0f8a69e60d75ae7dab4ef26a59ca99f2a89d4c142089b537775ae0c198bdcde" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "bytemuck", "drm-ffi", "drm-fourcc", @@ -2608,9 +2599,9 @@ checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "font-types" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d9237c6d82152100c691fb77ea18037b402bcc7257d2c876a4ffac81bc22a1c" +checksum = "5b38ad915f6dadd993ced50848a8291a543bd41ca62bc10740d5e64e2ab4cfd7" dependencies = [ "bytemuck", ] @@ -2695,7 +2686,7 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc6d3a3635983a889f065aa9ce760384713f23a9b4a04f696f86c39a5d7a6a5a" dependencies = [ - "indexmap 2.13.1", + "indexmap 2.14.0", "nom 8.0.0", ] @@ -2907,9 +2898,9 @@ dependencies = [ [[package]] name = "gif" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5df2ba84018d80c213569363bdcd0c64e6933c67fe4c1d60ecf822971a3c35e" +checksum = "ee8cfcc411d9adbbaba82fb72661cc1bcca13e8bba98b364e62b2dba8f960159" dependencies = [ "color_quant", "weezl", @@ -2971,7 +2962,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "gpu-alloc-types", ] @@ -2981,7 +2972,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", ] [[package]] @@ -3002,7 +2993,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "gpu-descriptor-types", "hashbrown 0.15.5", ] @@ -3013,7 +3004,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", ] [[package]] @@ -3050,7 +3041,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9da2e5ae821f6e96664977bf974d6d6a2d6682f9ccee23e62ec1d134246845f9" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "bytemuck", "core_maths", "read-fonts", @@ -3081,6 +3072,12 @@ dependencies = [ "foldhash 0.2.0", ] +[[package]] +name = "hashbrown" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" + [[package]] name = "heck" version = "0.4.1" @@ -3253,7 +3250,7 @@ dependencies = [ [[package]] name = "iced" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#6caccaba337ed9bab21c5fe3c2aa7392e322e89c" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "dnd", "iced_accessibility", @@ -3274,7 +3271,7 @@ dependencies = [ [[package]] name = "iced_accessibility" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#6caccaba337ed9bab21c5fe3c2aa7392e322e89c" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "accesskit", "accesskit_winit", @@ -3283,9 +3280,9 @@ dependencies = [ [[package]] name = "iced_core" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#6caccaba337ed9bab21c5fe3c2aa7392e322e89c" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "bytes", "cosmic-client-toolkit", "dnd", @@ -3308,7 +3305,7 @@ dependencies = [ [[package]] name = "iced_debug" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#6caccaba337ed9bab21c5fe3c2aa7392e322e89c" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "iced_core", "iced_futures", @@ -3318,7 +3315,7 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#6caccaba337ed9bab21c5fe3c2aa7392e322e89c" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "futures", "iced_core", @@ -3332,9 +3329,9 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#6caccaba337ed9bab21c5fe3c2aa7392e322e89c" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "bytemuck", "cosmic-text", "half", @@ -3353,7 +3350,7 @@ dependencies = [ [[package]] name = "iced_program" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#6caccaba337ed9bab21c5fe3c2aa7392e322e89c" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "iced_graphics", "iced_runtime", @@ -3362,7 +3359,7 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#6caccaba337ed9bab21c5fe3c2aa7392e322e89c" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "iced_graphics", "iced_tiny_skia", @@ -3374,7 +3371,7 @@ dependencies = [ [[package]] name = "iced_runtime" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#6caccaba337ed9bab21c5fe3c2aa7392e322e89c" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "bytes", "cosmic-client-toolkit", @@ -3390,7 +3387,7 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#6caccaba337ed9bab21c5fe3c2aa7392e322e89c" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "bytemuck", "cosmic-text", @@ -3407,10 +3404,10 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#6caccaba337ed9bab21c5fe3c2aa7392e322e89c" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "as-raw-xcb-connection", - "bitflags 2.11.0", + "bitflags 2.11.1", "bytemuck", "cosmic-client-toolkit", "cryoglyph", @@ -3438,7 +3435,7 @@ dependencies = [ [[package]] name = "iced_widget" version = "0.14.2" -source = "git+https://github.com/pop-os/libcosmic#6caccaba337ed9bab21c5fe3c2aa7392e322e89c" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "cosmic-client-toolkit", "dnd", @@ -3458,7 +3455,7 @@ dependencies = [ [[package]] name = "iced_winit" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#6caccaba337ed9bab21c5fe3c2aa7392e322e89c" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "cosmic-client-toolkit", "cursor-icon", @@ -3930,7 +3927,7 @@ dependencies = [ "byteorder-lite", "color_quant", "exr", - "gif 0.14.1", + "gif 0.14.2", "image-webp", "moxcms", "num-traits", @@ -3944,6 +3941,15 @@ dependencies = [ "zune-jpeg 0.5.15", ] +[[package]] +name = "image-extras" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86d29ba92ef6970a2685cc758b455d190842b8b9e96c865ffd31cdb9954b7548" +dependencies = [ + "image", +] + [[package]] name = "image-webp" version = "0.2.4" @@ -3985,12 +3991,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.13.1" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45a8a2b9cb3e0b0c1803dbb0758ffac5de2f425b23c28f518faabd9d805342ff" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.0", "serde", "serde_core", ] @@ -4010,7 +4016,7 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd5b3eaf1a28b758ac0faa5a4254e8ab2705605496f1b1f3fbbc3988ad73d199" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "inotify-sys", "libc", ] @@ -4040,7 +4046,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbdc09524a91f9cacd26f16734ff63d7dc650daffadd2b6f84d17a285bd875a9" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "input-sys", "libc", "log", @@ -4247,9 +4253,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.94" +version = "0.3.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e04e2ef80ce82e13552136fabeef8a5ed1f985a96805761cbb9a2c34e7664d9" +checksum = "2964e92d1d9dc3364cae4d718d93f227e3abb088e747d92e0395bfdedf1c12ca" dependencies = [ "cfg-if", "futures-util", @@ -4463,7 +4469,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fbe853b403ae61a04233030ae8a79d94975281ed9770a1f9e246732b534b28d" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "serde", ] @@ -4554,14 +4560,14 @@ checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8" [[package]] name = "libc" -version = "0.2.184" +version = "0.2.185" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48f5d2a454e16a5ea0f4ced81bd44e4cfc7bd3a507b61887c99fd3538b28e4af" +checksum = "52ff2c0fe9bc6cb6b14a0592c2ff4fa9ceb83eea9db979b0487cd054946a2b8f" [[package]] name = "libcosmic" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#6caccaba337ed9bab21c5fe3c2aa7392e322e89c" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "apply", "ashpd 0.12.3", @@ -4590,6 +4596,7 @@ dependencies = [ "iced_widget", "iced_winit", "image", + "image-extras", "jiff", "libc", "log", @@ -4644,7 +4651,7 @@ version = "2.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "909eb3049e16e373680fe65afe6e2a722ace06b671250cc4849557bc57d6a397" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "libc", "libpulse-sys", "num-derive", @@ -4667,14 +4674,14 @@ dependencies = [ [[package]] name = "libredox" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ddbf48fd451246b1f8c2610bd3b4ac0cc6e149d89832867093ab69a17194f08" +checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "libc", "plain", - "redox_syscall 0.7.3", + "redox_syscall 0.7.4", ] [[package]] @@ -4683,7 +4690,7 @@ version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6b8cfa2a7656627b4c92c6b9ef929433acd673d5ab3708cda1b18478ac00df4" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "cc", "convert_case", "cookie-factory", @@ -4818,9 +4825,9 @@ dependencies = [ [[package]] name = "lru" -version = "0.16.3" +version = "0.16.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1dc47f592c06f33f8e3aea9591776ec7c9f9e4124778ff8a3c3b87159f7e593" +checksum = "7f66e8d5d03f609abc3a39e6f08e4164ebf1447a732906d39eb9b99b7919ef39" [[package]] name = "lyon" @@ -4952,7 +4959,7 @@ version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block", "core-graphics-types 0.2.0", "foreign-types", @@ -5037,14 +5044,14 @@ checksum = "066cf25f0e8b11ee0df221219010f213ad429855f57c494f995590c861a9a7d8" dependencies = [ "arrayvec", "bit-set", - "bitflags 2.11.0", + "bitflags 2.11.1", "cfg-if", "cfg_aliases 0.2.1", "codespan-reporting", "half", "hashbrown 0.16.1", "hexf-parse", - "indexmap 2.13.1", + "indexmap 2.14.0", "libm", "log", "num-traits", @@ -5061,7 +5068,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "jni-sys 0.3.1", "log", "ndk-sys", @@ -5097,7 +5104,7 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "cfg-if", "cfg_aliases 0.2.1", "libc", @@ -5111,6 +5118,15 @@ dependencies = [ "zbus", ] +[[package]] +name = "no_std_io2" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b51ed7824b6e07d354605f4abb3d9d300350701299da96642ee084f5ce631550" +dependencies = [ + "memchr", +] + [[package]] name = "nom" version = "7.1.3" @@ -5142,7 +5158,7 @@ version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "fsevent-sys", "inotify", "kqueue", @@ -5160,7 +5176,7 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42b8cfee0e339a0337359f3c88165702ac6e600dc01c0cc9579a92d62b08477a" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", ] [[package]] @@ -5351,7 +5367,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block2 0.5.1", "libc", "objc2 0.5.2", @@ -5367,7 +5383,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block2 0.6.2", "objc2 0.6.4", "objc2-core-foundation", @@ -5380,7 +5396,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -5392,7 +5408,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block2 0.6.2", "dispatch2", "objc2 0.6.4", @@ -5404,7 +5420,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "libc", "objc2-core-foundation", ] @@ -5427,7 +5443,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "objc2-core-foundation", "objc2-core-graphics", ] @@ -5444,7 +5460,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block2 0.5.1", "libc", "objc2 0.5.2", @@ -5456,7 +5472,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block2 0.6.2", "objc2 0.6.4", "objc2-core-foundation", @@ -5478,7 +5494,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -5490,7 +5506,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -5503,7 +5519,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "objc2 0.6.4", "objc2-core-foundation", "objc2-foundation 0.3.2", @@ -5834,7 +5850,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9688b89abf11d756499f7c6190711d6dbe5a3acdb30c8fbf001d6596d06a8d44" dependencies = [ "anyhow", - "bitflags 2.11.0", + "bitflags 2.11.1", "libc", "libspa", "libspa-sys", @@ -5857,9 +5873,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "plain" @@ -5886,7 +5902,7 @@ version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "crc32fast", "fdeflate", "flate2", @@ -5921,9 +5937,9 @@ checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" [[package]] name = "portable-atomic-util" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "091397be61a01d4be58e7841595bd4bfedb15f1cd54977d79b8271e94ed799a3" +checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618" dependencies = [ "portable-atomic", ] @@ -6029,7 +6045,7 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25485360a54d6861439d60facef26de713b1e126bf015ec8f98239467a2b82f7" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "procfs-core", "rustix 1.1.4", ] @@ -6040,7 +6056,7 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6401bf7b6af22f78b563665d15a22e9aef27775b79b149a66ca022468a4e405" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "hex", ] @@ -6158,9 +6174,9 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.5", @@ -6243,7 +6259,7 @@ dependencies = [ "num-traits", "paste", "profiling", - "rand 0.9.2", + "rand 0.9.4", "rand_chacha 0.9.0", "simd_helpers", "thiserror 2.0.18", @@ -6274,9 +6290,9 @@ checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] name = "rayon" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" dependencies = [ "either", "rayon-core", @@ -6309,16 +6325,16 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", ] [[package]] name = "redox_syscall" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce70a74e890531977d37e532c34d45e9055d2409ed08ddba14529471ed0be16" +checksum = "f450ad9c3b1da563fb6948a8e0fb0fb9269711c9c73d9ea1de5058c79c8d643a" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", ] [[package]] @@ -6444,7 +6460,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db09040cc89e461f1a265139777a2bde7f8d8c67c4936f700c63ce3e2904d468" dependencies = [ "base64", - "bitflags 2.11.0", + "bitflags 2.11.1", "serde", "serde_derive", "unicode-ident", @@ -6456,7 +6472,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4147b952f3f819eca0e99527022f7d6a8d05f111aeb0a62960c74eb283bec8fc" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "once_cell", "serde", "serde_derive", @@ -6537,7 +6553,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "errno", "libc", "linux-raw-sys 0.4.15", @@ -6550,7 +6566,7 @@ version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "errno", "libc", "linux-raw-sys 0.12.1", @@ -6569,7 +6585,7 @@ version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd3c7c96f8a08ee34eff8857b11b49b07d71d1c3f4e88f8a88d4c9e9f90b1702" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "bytemuck", "core_maths", "log", @@ -6728,7 +6744,7 @@ version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ - "indexmap 2.13.1", + "indexmap 2.14.0", "itoa", "memchr", "serde", @@ -6766,7 +6782,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.13.1", + "indexmap 2.14.0", "schemars 0.9.0", "schemars 1.2.1", "serde_core", @@ -6932,7 +6948,7 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "bytemuck", "calloop", "calloop-wayland-source", @@ -7023,7 +7039,7 @@ version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", ] [[package]] @@ -7407,9 +7423,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.51.1" +version = "1.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f66bf9585cda4b724d3e78ab34b73fb2bbaba9011b9bfdf69dc836382ea13b8c" +checksum = "a91135f59b1cbf38c91e73cf3386fca9bb77915c45ce2771460c9d92f0f3d776" dependencies = [ "bytes", "libc", @@ -7459,7 +7475,7 @@ version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ - "indexmap 2.13.1", + "indexmap 2.14.0", "serde_core", "serde_spanned", "toml_datetime", @@ -7483,7 +7499,7 @@ version = "0.25.11+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" dependencies = [ - "indexmap 2.13.1", + "indexmap 2.14.0", "toml_datetime", "toml_parser", "winnow 1.0.1", @@ -7811,9 +7827,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.23.0" +version = "1.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ac8b6f42ead25368cf5b098aeb3dc8a1a2c05a3eee8a9a1a68c640edbfc79d9" +checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76" dependencies = [ "js-sys", "serde_core", @@ -7885,9 +7901,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.117" +version = "0.2.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0551fc1bb415591e3372d0bc4780db7e587d84e2a7e79da121051c5c4b89d0b0" +checksum = "0bf938a0bacb0469e83c1e148908bd7d5a6010354cf4fb73279b7447422e3a89" dependencies = [ "cfg-if", "once_cell", @@ -7898,9 +7914,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.67" +version = "0.4.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03623de6905b7206edd0a75f69f747f134b7f0a2323392d664448bf2d3c5d87e" +checksum = "f371d383f2fb139252e0bfac3b81b265689bf45b6874af544ffa4c975ac1ebf8" dependencies = [ "js-sys", "wasm-bindgen", @@ -7908,9 +7924,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.117" +version = "0.2.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fbdf9a35adf44786aecd5ff89b4563a90325f9da0923236f6104e603c7e86be" +checksum = "eeff24f84126c0ec2db7a449f0c2ec963c6a49efe0698c4242929da037ca28ed" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7918,9 +7934,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.117" +version = "0.2.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dca9693ef2bab6d4e6707234500350d8dad079eb508dca05530c85dc3a529ff2" +checksum = "9d08065faf983b2b80a79fd87d8254c409281cf7de75fc4b773019824196c904" dependencies = [ "bumpalo", "proc-macro2", @@ -7931,9 +7947,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.117" +version = "0.2.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39129a682a6d2d841b6c429d0c51e5cb0ed1a03829d8b3d1e69a011e62cb3d3b" +checksum = "5fd04d9e306f1907bd13c6361b5c6bfc7b3b3c095ed3f8a9246390f8dbdee129" dependencies = [ "unicode-ident", ] @@ -7955,7 +7971,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" dependencies = [ "anyhow", - "indexmap 2.13.1", + "indexmap 2.14.0", "wasm-encoder", "wasmparser", ] @@ -7966,9 +7982,9 @@ version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "hashbrown 0.15.5", - "indexmap 2.13.1", + "indexmap 2.14.0", "semver", ] @@ -8006,7 +8022,7 @@ version = "0.31.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "645c7c96bb74690c3189b5c9cb4ca1627062bb23693a4fad9d8c3de958260144" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "rustix 1.1.4", "wayland-backend", "wayland-scanner", @@ -8018,7 +8034,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "cursor-icon", "wayland-backend", ] @@ -8040,7 +8056,7 @@ version = "0.32.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "563a85523cade2429938e790815fd7319062103b9f4a2dc806e9b53b95982d8f" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "wayland-backend", "wayland-client", "wayland-scanner", @@ -8053,7 +8069,7 @@ version = "20250721.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -8066,7 +8082,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e9567599ef23e09b8dad6e429e5738d4509dfc46b3b21f32841a304d16b29c8" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -8079,7 +8095,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b6d8cf1eb2c1c31ed1f5643c88a6e53538129d4af80030c8cabd1f9fa884d91" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -8092,7 +8108,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -8117,7 +8133,7 @@ version = "0.31.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc1846eb04c49182e04f4a099e2a830a2b745610bbc1d61246e206f29c7000a0" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "downcast-rs 1.2.1", "rustix 1.1.4", "wayland-backend", @@ -8138,9 +8154,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.94" +version = "0.3.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd70027e39b12f0849461e08ffc50b9cd7688d942c1c8e3c7b22273236b4dd0a" +checksum = "4f2dfbb17949fa2088e5d39408c48368947b86f7834484e87b73de55bc14d97d" dependencies = [ "js-sys", "wasm-bindgen", @@ -8169,7 +8185,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfe68bac7cde125de7a731c3400723cadaaf1703795ad3f4805f187459cd7a77" dependencies = [ "arrayvec", - "bitflags 2.11.0", + "bitflags 2.11.1", "cfg-if", "cfg_aliases 0.2.1", "document-features", @@ -8200,12 +8216,12 @@ dependencies = [ "arrayvec", "bit-set", "bit-vec", - "bitflags 2.11.0", + "bitflags 2.11.1", "bytemuck", "cfg_aliases 0.2.1", "document-features", "hashbrown 0.16.1", - "indexmap 2.13.1", + "indexmap 2.14.0", "log", "naga", "once_cell", @@ -8260,7 +8276,7 @@ dependencies = [ "arrayvec", "ash", "bit-set", - "bitflags 2.11.0", + "bitflags 2.11.1", "block", "bytemuck", "cfg-if", @@ -8305,7 +8321,7 @@ version = "27.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afdcf84c395990db737f2dd91628706cb31e86d72e53482320d368e52b5da5eb" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "bytemuck", "js-sys", "log", @@ -8865,9 +8881,9 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winit" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "cfg_aliases 0.2.1", "cursor-icon", "dpi", @@ -8891,10 +8907,10 @@ dependencies = [ [[package]] name = "winit-android" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" dependencies = [ "android-activity", - "bitflags 2.11.0", + "bitflags 2.11.1", "dpi", "ndk", "raw-window-handle", @@ -8906,9 +8922,9 @@ dependencies = [ [[package]] name = "winit-appkit" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block2 0.6.2", "dispatch2", "dpi", @@ -8928,7 +8944,7 @@ dependencies = [ [[package]] name = "winit-common" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" dependencies = [ "memmap2 0.9.10", "objc2 0.6.4", @@ -8943,9 +8959,9 @@ dependencies = [ [[package]] name = "winit-core" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "cursor-icon", "dpi", "keyboard-types", @@ -8957,14 +8973,14 @@ dependencies = [ [[package]] name = "winit-orbital" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "dpi", "libredox", "orbclient", "raw-window-handle", - "redox_syscall 0.7.3", + "redox_syscall 0.7.4", "smol_str", "tracing", "winit-core", @@ -8973,9 +8989,9 @@ dependencies = [ [[package]] name = "winit-uikit" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block2 0.6.2", "dispatch2", "dpi", @@ -8993,10 +9009,10 @@ dependencies = [ [[package]] name = "winit-wayland" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" dependencies = [ "ahash", - "bitflags 2.11.0", + "bitflags 2.11.1", "calloop", "cursor-icon", "dpi", @@ -9019,10 +9035,10 @@ dependencies = [ [[package]] name = "winit-web" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" dependencies = [ "atomic-waker", - "bitflags 2.11.0", + "bitflags 2.11.1", "concurrent-queue", "cursor-icon", "dpi", @@ -9041,9 +9057,9 @@ dependencies = [ [[package]] name = "winit-win32" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "cursor-icon", "dpi", "raw-window-handle", @@ -9057,9 +9073,9 @@ dependencies = [ [[package]] name = "winit-x11" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "bytemuck", "calloop", "cursor-icon", @@ -9132,7 +9148,7 @@ checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" dependencies = [ "anyhow", "heck 0.5.0", - "indexmap 2.13.1", + "indexmap 2.14.0", "prettyplease", "syn 2.0.117", "wasm-metadata", @@ -9162,8 +9178,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" dependencies = [ "anyhow", - "bitflags 2.11.0", - "indexmap 2.13.1", + "bitflags 2.11.1", + "indexmap 2.14.0", "log", "serde", "serde_derive", @@ -9182,7 +9198,7 @@ checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" dependencies = [ "anyhow", "id-arena", - "indexmap 2.13.1", + "indexmap 2.14.0", "log", "semver", "serde", @@ -9322,7 +9338,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "dlib", "log", "once_cell", diff --git a/Cargo.toml b/Cargo.toml index cb0afc9..c42187c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -75,11 +75,13 @@ cosmic-client-toolkit = { git = "https://github.com/pop-os/cosmic-protocols//", # cosmic-config = { path = "../libcosmic/cosmic-config" } # cosmic-theme = { path = "../libcosmic/cosmic-theme" } # iced_futures = { path = "../libcosmic/iced/futures" } -# -#iced_futures = { git = "https://github.com/pop-os/libcosmic//" } -#libcosmic = { git = "https://github.com/pop-os/libcosmic//" } -#cosmic-config = { git = "https://github.com/pop-os/libcosmic//" } -#cosmic-theme = { git = "https://github.com/pop-os/libcosmic//" } +# iced_winit = { path = "../libcosmic/iced/winit" } + +# libcosmic = { git = "https://github.com/pop-os/libcosmic//" } +# cosmic-config = { git = "https://github.com/pop-os/libcosmic//" } +# cosmic-theme = { git = "https://github.com/pop-os/libcosmic//" } +# iced_futures = { git = "https://github.com/pop-os/libcosmic//" } +# iced_winit = { git = "https://github.com/pop-os/libcosmic//" } # [patch.'https://github.com/pop-os/dbus-settings-bindings'] # cosmic-dbus-networkmanager = { path = "../dbus-settings-bindings/networkmanager" } diff --git a/cosmic-settings/src/pages/accessibility/magnifier.rs b/cosmic-settings/src/pages/accessibility/magnifier.rs index 5f9db8d..d476b71 100644 --- a/cosmic-settings/src/pages/accessibility/magnifier.rs +++ b/cosmic-settings/src/pages/accessibility/magnifier.rs @@ -219,19 +219,18 @@ pub fn magnifier( .add( settings::item::builder(&descriptions[magnifier]) .description(&descriptions[controls]) - .control( - widget::toggler(page.magnifier_state).on_toggle(Message::SetMagnifier), - ), + .toggler(page.magnifier_state, Message::SetMagnifier), + ) + .add( + settings::item::builder(&descriptions[scroll_controls]).toggler( + page.zoom_config.enable_mouse_zoom_shortcuts, + Message::SetMouseShortcuts, + ), + ) + .add( + settings::item::builder(&descriptions[show_overlay]) + .toggler(page.zoom_config.show_overlay, Message::SetOverlay), ) - .add(settings::item( - &descriptions[scroll_controls], - widget::toggler(page.zoom_config.enable_mouse_zoom_shortcuts) - .on_toggle(Message::SetMouseShortcuts), - )) - .add(settings::item( - &descriptions[show_overlay], - widget::toggler(page.zoom_config.show_overlay).on_toggle(Message::SetOverlay), - )) .add(settings::item( &descriptions[increment], widget::dropdown::popup_dropdown( @@ -247,10 +246,10 @@ pub fn magnifier( }, ), )) - .add(settings::item( - &descriptions[signin], - widget::toggler(page.zoom_config.start_on_login).on_toggle(Message::SetSignin), - )) + .add( + settings::item::builder(&descriptions[signin]) + .toggler(page.zoom_config.start_on_login, Message::SetSignin), + ) .apply(Element::from) .map(crate::pages::Message::AccessibilityMagnifier) }) @@ -300,36 +299,21 @@ pub fn view_movement() -> section::Section { settings::section() .title(§ion.title) - .add(widget::settings::item_row(vec![ - widget::radio( - text::body(&descriptions[continuous]), - ZoomMovement::Continuously, - Some(page.zoom_config.view_moves), - Message::SetMovement, - ) - .width(Length::Fill) - .into(), - ])) - .add(widget::settings::item_row(vec![ - widget::radio( - text::body(&descriptions[onedge]), - ZoomMovement::OnEdge, - Some(page.zoom_config.view_moves), - Message::SetMovement, - ) - .width(Length::Fill) - .into(), - ])) - .add(widget::settings::item_row(vec![ - widget::radio( - text::body(&descriptions[centered]), - ZoomMovement::Centered, - Some(page.zoom_config.view_moves), - Message::SetMovement, - ) - .width(Length::Fill) - .into(), - ])) + .add(settings::item::builder(&descriptions[continuous]).radio( + ZoomMovement::Continuously, + Some(page.zoom_config.view_moves), + Message::SetMovement, + )) + .add(settings::item::builder(&descriptions[onedge]).radio( + ZoomMovement::OnEdge, + Some(page.zoom_config.view_moves), + Message::SetMovement, + )) + .add(settings::item::builder(&descriptions[centered]).radio( + ZoomMovement::Centered, + Some(page.zoom_config.view_moves), + Message::SetMovement, + )) .apply(Element::from) .map(crate::pages::Message::AccessibilityMagnifier) }) diff --git a/cosmic-settings/src/pages/accessibility/mod.rs b/cosmic-settings/src/pages/accessibility/mod.rs index 889039a..a7bc8f6 100644 --- a/cosmic-settings/src/pages/accessibility/mod.rs +++ b/cosmic-settings/src/pages/accessibility/mod.rs @@ -1,11 +1,11 @@ use cosmic::{ - Task, + Apply, Element, Task, cosmic_theme::{CosmicPalette, ThemeBuilder}, iced::core::text::Wrapping, iced::stream, surface, theme::CosmicTheme, - widget::{dropdown, settings, text, toggler}, + widget::{dropdown, list, settings, text}, }; pub use cosmic_comp_config::ZoomMovement; use cosmic_config::CosmicConfigEntry; @@ -200,6 +200,22 @@ pub fn vision() -> section::Section { .view::(move |binder, page, section| { let descriptions = §ion.descriptions; + let (magnifier_entity, _magnifier_info) = binder + .info + .iter() + .find(|(_, v)| v.id == "accessibility_magnifier") + .expect("magnifier page not found"); + + let status_text = if page.wayland_available.is_some() { + if page.magnifier_state { + &descriptions[on] + } else { + &descriptions[off] + } + } else { + &descriptions[unavailable] + }; + settings::section() .title(§ion.title) .add( @@ -210,31 +226,13 @@ pub fn vision() -> section::Section { }, ), ) - .add({ - let (magnifier_entity, _magnifier_info) = binder - .info - .iter() - .find(|(_, v)| v.id == "accessibility_magnifier") - .expect("magnifier page not found"); - - let status_text = if page.wayland_available.is_some() { - if page.magnifier_state { - &descriptions[on] - } else { - &descriptions[off] - } - } else { - &descriptions[unavailable] - }; - - crate::widget::go_next_with_item( - &descriptions[magnifier], - text::body(status_text).wrapping(Wrapping::Word), - page.wayland_available - .is_some() - .then_some(crate::pages::Message::Page(magnifier_entity)), - ) - }) + .add(crate::widget::go_next_with_item( + &descriptions[magnifier], + text::body(status_text).wrapping(Wrapping::Word), + page.wayland_available + .is_some() + .then_some(crate::pages::Message::Page(magnifier_entity)), + )) .add( settings::item::builder(&descriptions[high_contrast]) .toggler(page.theme.is_high_contrast, |enable| { @@ -242,21 +240,19 @@ pub fn vision() -> section::Section { }), ) .add( - settings::item::builder(&descriptions[invert_colors]).control( - toggler(page.screen_inverted).on_toggle_maybe( - page.wayland_available - .is_some_and(|ver| ver >= 2) - .then_some(|set| Message::SetScreenInverted(set).into()), - ), + settings::item::builder(&descriptions[invert_colors]).toggler_maybe( + page.screen_inverted, + page.wayland_available + .is_some_and(|ver| ver >= 2) + .then_some(|set| Message::SetScreenInverted(set).into()), ), ) .add( - settings::item::builder(&descriptions[color_filters]).control( - toggler(page.screen_filter_active).on_toggle_maybe( - page.wayland_available - .is_some_and(|ver| ver >= 2) - .then_some(|set| Message::SetScreenFilterActive(set).into()), - ), + settings::item::builder(&descriptions[color_filters]).toggler_maybe( + page.screen_filter_active, + page.wayland_available + .is_some_and(|ver| ver >= 2) + .then_some(|set| Message::SetScreenFilterActive(set).into()), ), ) .add({ @@ -304,13 +300,11 @@ pub fn hearing() -> section::Section { settings::section() .title(§ion.title) .add( - cosmic::Element::from( - settings::item::builder(&descriptions[mono]) - .toggler(page.daemon_config.mono_sound, Message::SetSoundMono), - ) - .map(crate::pages::Message::Accessibility), + settings::item::builder(&descriptions[mono]) + .toggler(page.daemon_config.mono_sound, Message::SetSoundMono), ) - .into() + .apply(Element::from) + .map(crate::pages::Message::Accessibility) }) } diff --git a/cosmic-settings/src/pages/applications/legacy_applications.rs b/cosmic-settings/src/pages/applications/legacy_applications.rs index a2ea759..81bbcfe 100644 --- a/cosmic-settings/src/pages/applications/legacy_applications.rs +++ b/cosmic-settings/src/pages/applications/legacy_applications.rs @@ -14,7 +14,7 @@ use cosmic::{ cosmic_config::{self, ConfigGet, ConfigSet}, iced::{Length, stream}, surface, - widget::{self, dropdown, text}, + widget::{self, dropdown, settings, text}, }; use cosmic_comp_config::{EavesdroppingKeyboardMode, XwaylandDescaling, XwaylandEavesdropping}; use cosmic_randr_shell::List; @@ -277,61 +277,46 @@ pub fn legacy_application_global_shortcuts() -> Section { .title(fl!("legacy-app-global-shortcuts")) .descriptions(descriptions) .view::(move |_binder, page, section| { - let title = widget::text::body(§ion.title).font(cosmic::font::bold()); - let description = widget::text::body(§ion.descriptions[desc]); + let title = text::body(§ion.title).font(cosmic::font::bold()); + let description = text::body(§ion.descriptions[desc]); - let content = widget::settings::section::<'_, crate::pages::Message>() - .add(widget::settings::item_row(vec![ - widget::radio( - text::body(§ion.descriptions[none]), - EavesdroppingKeyboardMode::None, - Some(page.comp_config_xwayland_eavesdropping.keyboard), - |t| Message::SetXwaylandKeyboardMode(t).into(), - ) - .width(Length::Fill) - .into(), - ])) - .add(widget::settings::item_row(vec![ - widget::radio( - text::body(§ion.descriptions[modifiers]), + let content = settings::section::<'_, crate::pages::Message>() + .add(settings::item::builder(§ion.descriptions[none]).radio( + EavesdroppingKeyboardMode::None, + Some(page.comp_config_xwayland_eavesdropping.keyboard), + |t| Message::SetXwaylandKeyboardMode(t).into(), + )) + .add( + settings::item::builder(§ion.descriptions[modifiers]).radio( EavesdroppingKeyboardMode::Modifiers, Some(page.comp_config_xwayland_eavesdropping.keyboard), |t| Message::SetXwaylandKeyboardMode(t).into(), - ) - .width(Length::Fill) - .into(), - ])) - .add(widget::settings::item_row(vec![ - widget::radio( - text::body(§ion.descriptions[combination]), + ), + ) + .add( + settings::item::builder(§ion.descriptions[combination]).radio( EavesdroppingKeyboardMode::Combinations, Some(page.comp_config_xwayland_eavesdropping.keyboard), |t| Message::SetXwaylandKeyboardMode(t).into(), - ) - .width(Length::Fill) - .into(), - ])) - .add(widget::settings::item_row(vec![ - widget::radio( - text::body(§ion.descriptions[all]), - EavesdroppingKeyboardMode::All, - Some(page.comp_config_xwayland_eavesdropping.keyboard), - |t| Message::SetXwaylandKeyboardMode(t).into(), - ) - .width(Length::Fill) - .into(), - ])) - .add(widget::settings::item( - §ion.descriptions[mouse], - widget::toggler(page.comp_config_xwayland_eavesdropping.pointer) - .on_toggle(|t| Message::SetXwaylandMouseButtonMode(t).into()), - )); + ), + ) + .add(settings::item::builder(§ion.descriptions[all]).radio( + EavesdroppingKeyboardMode::All, + Some(page.comp_config_xwayland_eavesdropping.keyboard), + |t| Message::SetXwaylandKeyboardMode(t).into(), + )) + .add( + settings::item::builder(§ion.descriptions[mouse]) + .toggler(page.comp_config_xwayland_eavesdropping.pointer, |t| { + Message::SetXwaylandMouseButtonMode(t).into() + }), + ); widget::column::with_capacity(3) .push(title) .push(description) .push(content) - .spacing(cosmic::theme::active().cosmic().spacing.space_xxs) + .spacing(cosmic::theme::spacing().space_xxs) .apply(cosmic::Element::from) .map(Into::into) }) @@ -356,42 +341,33 @@ pub fn legacy_application_scaling() -> Section { let descriptions = §ion.descriptions; widget::settings::section() .title(§ion.title) - .add(widget::settings::item_row(vec![ - widget::radio( - widget::column::with_capacity(2) - .push(text::body(&descriptions[gaming])) - .push(text::caption(&descriptions[gaming_desc])), - XwaylandDescaling::Fractional, - Some(page.comp_config_descale_xwayland), - Message::SetXwaylandDescaling, - ) - .width(Length::Fill) - .into(), - ])) - .add(widget::settings::item_row(vec![ - widget::radio( - widget::column::with_capacity(2) - .push(text::body(&descriptions[apps])) - .push(text::caption(&descriptions[apps_desc])), - XwaylandDescaling::Enabled, - Some(page.comp_config_descale_xwayland), - Message::SetXwaylandDescaling, - ) - .width(Length::Fill) - .into(), - ])) - .add(widget::settings::item_row(vec![ - widget::radio( - widget::column::with_capacity(2) - .push(text::body(&descriptions[compat])) - .push(text::caption(&descriptions[compat_desc])), - XwaylandDescaling::Disabled, - Some(page.comp_config_descale_xwayland), - Message::SetXwaylandDescaling, - ) - .width(Length::Fill) - .into(), - ])) + .add( + widget::settings::item::builder(&descriptions[gaming]) + .description(&descriptions[gaming_desc]) + .radio( + XwaylandDescaling::Fractional, + Some(page.comp_config_descale_xwayland), + Message::SetXwaylandDescaling, + ), + ) + .add( + widget::settings::item::builder(&descriptions[apps]) + .description(&descriptions[apps_desc]) + .radio( + XwaylandDescaling::Enabled, + Some(page.comp_config_descale_xwayland), + Message::SetXwaylandDescaling, + ), + ) + .add( + widget::settings::item::builder(&descriptions[compat]) + .description(&descriptions[compat_desc]) + .radio( + XwaylandDescaling::Disabled, + Some(page.comp_config_descale_xwayland), + Message::SetXwaylandDescaling, + ), + ) .add(widget::settings::item( &descriptions[preferred_display], dropdown::popup_dropdown( diff --git a/cosmic-settings/src/pages/bluetooth/mod.rs b/cosmic-settings/src/pages/bluetooth/mod.rs index 147f6af..f8d1338 100644 --- a/cosmic-settings/src/pages/bluetooth/mod.rs +++ b/cosmic-settings/src/pages/bluetooth/mod.rs @@ -772,12 +772,10 @@ fn status() -> Section { } widget::list_column() - .add( - bluetooth_toggle.control( - widget::toggler(matches!(status, Active::Enabling | Active::Enabled)) - .on_toggle(|active| Message::SetActive(active).into()), - ), - ) + .add(bluetooth_toggle.toggler( + matches!(status, Active::Enabling | Active::Enabled), + |active| Message::SetActive(active).into(), + )) .apply(Element::from) }) } diff --git a/cosmic-settings/src/pages/desktop/appearance/drawer.rs b/cosmic-settings/src/pages/desktop/appearance/drawer.rs index 7b7caa0..ad1cecb 100644 --- a/cosmic-settings/src/pages/desktop/appearance/drawer.rs +++ b/cosmic-settings/src/pages/desktop/appearance/drawer.rs @@ -4,7 +4,7 @@ use cosmic::cosmic_config::{Config, ConfigSet}; use cosmic::cosmic_theme::Spacing; use cosmic::iced::core::{Color, Length}; use cosmic::widget::{ - ColorPickerModel, color_picker::ColorPickerUpdate, container, flex_row, settings, text, + ColorPickerModel, color_picker::ColorPickerUpdate, container, flex_row, list, settings, text, }; use cosmic::{Apply, Task}; use cosmic::{Element, widget}; diff --git a/cosmic-settings/src/pages/desktop/appearance/font_config.rs b/cosmic-settings/src/pages/desktop/appearance/font_config.rs index 6d9846f..417a671 100644 --- a/cosmic-settings/src/pages/desktop/appearance/font_config.rs +++ b/cosmic-settings/src/pages/desktop/appearance/font_config.rs @@ -1,18 +1,18 @@ // Copyright 2024 System76 // SPDX-License-Identifier: GPL-3.0-only -use std::rc::Rc; use std::sync::Arc; use cosmic::{ Apply, Element, Task, config::{CosmicTk, FontConfig}, iced::core::text::Wrapping, - widget::{self, settings, space::horizontal as horizontal_space, svg}, + widget::{self, settings, svg}, }; use cosmic_config::ConfigSet; use crate::app; +use crate::widget::selection_context_item; use super::{ContextView, Message, drawer}; @@ -177,10 +177,6 @@ impl Model { context_view: &ContextView, callback: impl Fn(Arc) -> super::Message, ) -> Element<'_, super::Message> { - let svg_accent = Rc::new(|theme: &cosmic::Theme| svg::Style { - color: Some(theme.cosmic().accent_text_color().into()), - }); - let (mut families, current_font) = match *context_view { ContextView::MonospaceFont => { (&self.monospace_font_families, &self.monospace_font.family) @@ -193,36 +189,16 @@ impl Model { families = &self.font_filter; } - let list = families.iter().fold(widget::list_column(), |list, family| { - let selected = &**family == current_font; - list.add( - settings::item_row(vec![ - widget::text::body(&**family) - .class(if selected { - cosmic::theme::Text::Accent - } else { - cosmic::theme::Text::Default - }) - .wrapping(Wrapping::Word) - .width(cosmic::iced::Length::Fill) - .into(), - if selected { - widget::icon::from_name("object-select-symbolic") - .size(16) - .icon() - .class(cosmic::theme::Svg::Custom(svg_accent.clone())) - .into() - } else { - horizontal_space().width(16.).into() - }, - ]) - .apply(widget::container) - .class(cosmic::theme::Container::List) - .apply(widget::button::custom) - .class(cosmic::theme::Button::Transparent) - .on_press(callback(family.clone())), - ) - }); + let list = families.iter().fold( + widget::list_column::with_capacity(families.len()), + |list, family| { + let selected = &**family == current_font; + list.add( + widget::list::button(selection_context_item(&**family, selected)) + .on_press(callback(family.clone())), + ) + }, + ); list.into() } diff --git a/cosmic-settings/src/pages/desktop/appearance/mod.rs b/cosmic-settings/src/pages/desktop/appearance/mod.rs index 190f5ef..609a084 100644 --- a/cosmic-settings/src/pages/desktop/appearance/mod.rs +++ b/cosmic-settings/src/pages/desktop/appearance/mod.rs @@ -22,8 +22,8 @@ use cosmic::dialog::file_chooser::{self, FileFilter}; use cosmic::iced::Subscription; use cosmic::iced::core::{Alignment, Length}; use cosmic::widget::{ - button, color_picker::ColorPickerUpdate, container, radio, row, settings, - space::horizontal as horizontal_space, text, + button, color_picker::ColorPickerUpdate, container, list, row, settings, space::horizontal, + text, }; use cosmic::{Apply, Element, Task, widget}; #[cfg(feature = "wayland")] @@ -790,36 +790,21 @@ pub fn interface_density() -> Section { settings::section() .title(§ion.title) - .add(settings::item_row(vec![ - radio( - text::body(&descriptions[compact]), - Density::Compact, - Some(page.density), - Message::Density, - ) - .width(Length::Fill) - .into(), - ])) - .add(settings::item_row(vec![ - radio( - text::body(&descriptions[comfortable]), - Density::Standard, - Some(page.density), - Message::Density, - ) - .width(Length::Fill) - .into(), - ])) - .add(settings::item_row(vec![ - radio( - text::body(&descriptions[spacious]), - Density::Spacious, - Some(page.density), - Message::Density, - ) - .width(Length::Fill) - .into(), - ])) + .add(settings::item::builder(&descriptions[compact]).radio( + Density::Compact, + Some(page.density), + Message::Density, + )) + .add(settings::item::builder(&descriptions[comfortable]).radio( + Density::Standard, + Some(page.density), + Message::Density, + )) + .add(settings::item::builder(&descriptions[spacious]).radio( + Density::Spacious, + Some(page.density), + Message::Density, + )) .apply(Element::from) .map(crate::pages::Message::Appearance) }) @@ -933,7 +918,7 @@ pub fn reset_button() -> Section { .on_press(Message::Reset) .into() } else { - horizontal_space().width(1.).apply(Element::from) + horizontal().width(1.).apply(Element::from) } .map(crate::pages::Message::Appearance) }) diff --git a/cosmic-settings/src/pages/desktop/appearance/mode_and_colors.rs b/cosmic-settings/src/pages/desktop/appearance/mode_and_colors.rs index c8bdbd3..01b31d0 100644 --- a/cosmic-settings/src/pages/desktop/appearance/mode_and_colors.rs +++ b/cosmic-settings/src/pages/desktop/appearance/mode_and_colors.rs @@ -4,7 +4,7 @@ use cosmic::cosmic_theme::palette::Srgba; use cosmic::iced::ContentFit; use cosmic::iced::core::{Alignment, Length}; use cosmic::widget::icon::{from_name, icon}; -use cosmic::widget::{self, button, container, settings, text}; +use cosmic::widget::{self, button, container, list, settings, text}; use cosmic::{Apply, Element}; use cosmic_settings_page::Section; use cosmic_settings_wallpaper as wallpaper; @@ -64,105 +64,117 @@ fn container_background<'a>( page: &Page, section: &'a Section, labels: &HashMap, -) -> impl Into> { +) -> list::ListButton<'a, Message> { let descriptions = §ion.descriptions; let go_next_icon = from_name("go-next-symbolic").handle(); - settings::item::builder(&descriptions[labels["container_bg"]]) - .description(&descriptions[labels["container_bg_desc"]]) - .control( - if page - .drawer - .container_background - .get_applied_color() - .is_some() - { - Element::from( - page.drawer - .container_background - .picker_button( - |_| Message::DrawerOpen(ContextView::ContainerBackground), - Some(24), - ) - .width(Length::Fixed(48.0)) - .height(Length::Fixed(24.0)), - ) - } else { - container( - button::text(&descriptions[labels["auto"]]) - .trailing_icon(go_next_icon.clone()) - .on_press(Message::DrawerOpen(ContextView::ContainerBackground)), - ) - .into() - }, - ) + list::button( + settings::item::builder(&descriptions[labels["container_bg"]]) + .description(&descriptions[labels["container_bg_desc"]]) + .control( + if page + .drawer + .container_background + .get_applied_color() + .is_some() + { + Element::from( + page.drawer + .container_background + .picker_button( + |_| Message::DrawerOpen(ContextView::ContainerBackground), + Some(24), + ) + .width(Length::Fixed(48.0)) + .height(Length::Fixed(24.0)), + ) + } else { + container( + button::text(&descriptions[labels["auto"]]) + .trailing_icon(go_next_icon.clone()) + .on_press(Message::DrawerOpen(ContextView::ContainerBackground)), + ) + .into() + }, + ), + ) + .on_press(Message::DrawerOpen(ContextView::ContainerBackground)) } fn application_background<'a>( page: &Page, section: &'a Section, labels: &HashMap, -) -> impl Into> { +) -> list::ListButton<'a, Message> { let descriptions = §ion.descriptions; - settings::item::builder(&descriptions[labels["app_bg"]]).control( - page.drawer - .application_background - .picker_button( - |_| Message::DrawerOpen(ContextView::ApplicationBackground), - Some(24), - ) - .width(Length::Fixed(48.0)) - .height(Length::Fixed(24.0)), + list::button( + settings::item::builder(&descriptions[labels["app_bg"]]).control( + page.drawer + .application_background + .picker_button( + |_| Message::DrawerOpen(ContextView::ApplicationBackground), + Some(24), + ) + .width(Length::Fixed(48.0)) + .height(Length::Fixed(24.0)), + ), ) + .on_press(Message::DrawerOpen(ContextView::ApplicationBackground)) } fn control_tint<'a>( page: &Page, section: &'a Section, labels: &HashMap, -) -> impl Into> { +) -> list::ListButton<'a, Message> { let descriptions = §ion.descriptions; - settings::item::builder(&descriptions[labels["control_tint"]]) - .description(&descriptions[labels["control_tint_desc"]]) - .control( - page.drawer - .control_component - .picker_button( - |_| Message::DrawerOpen(ContextView::ControlComponent), - Some(24), - ) - .width(Length::Fixed(48.0)) - .height(Length::Fixed(24.0)), - ) + list::button( + settings::item::builder(&descriptions[labels["control_tint"]]) + .description(&descriptions[labels["control_tint_desc"]]) + .control( + page.drawer + .control_component + .picker_button( + |_| Message::DrawerOpen(ContextView::ControlComponent), + Some(24), + ) + .width(Length::Fixed(48.0)) + .height(Length::Fixed(24.0)), + ), + ) + .on_press(Message::DrawerOpen(ContextView::ControlComponent)) } fn interface_text<'a>( page: &Page, section: &'a Section, labels: &HashMap, -) -> impl Into> { +) -> list::ListButton<'a, Message> { let descriptions = §ion.descriptions; - settings::item::builder(&descriptions[labels["text_tint"]]) - .description(&descriptions[labels["text_tint_desc"]]) - .control( - page.drawer - .interface_text - .picker_button( - |_| Message::DrawerOpen(ContextView::InterfaceText), - Some(24), - ) - .width(Length::Fixed(48.0)) - .height(Length::Fixed(24.0)), - ) + list::button( + settings::item::builder(&descriptions[labels["text_tint"]]) + .description(&descriptions[labels["text_tint_desc"]]) + .control( + page.drawer + .interface_text + .picker_button( + |_| Message::DrawerOpen(ContextView::InterfaceText), + Some(24), + ) + .width(Length::Fixed(48.0)) + .height(Length::Fixed(24.0)), + ), + ) + .on_press(Message::DrawerOpen(ContextView::InterfaceText)) } fn auto_switch<'a>( page: &Page, section: &'a Section, labels: &HashMap, -) -> impl Into> { +) -> list::ListButton<'a, Message> { let descriptions = §ion.descriptions; settings::item::builder(&descriptions[labels["auto_switch"]]) diff --git a/cosmic-settings/src/pages/desktop/dock/mod.rs b/cosmic-settings/src/pages/desktop/dock/mod.rs index 5f94e07..40738aa 100644 --- a/cosmic-settings/src/pages/desktop/dock/mod.rs +++ b/cosmic-settings/src/pages/desktop/dock/mod.rs @@ -4,7 +4,7 @@ use cosmic::Apply; use cosmic::{ Element, Task, cosmic_config::{ConfigSet, CosmicConfigEntry}, - widget::{settings, text, toggler}, + widget::{settings, text}, }; use cosmic_panel_config::{CosmicPanelConfig, CosmicPanelContainerConfig}; use cosmic_settings_page::{self as page, Section, section}; @@ -170,16 +170,15 @@ pub(crate) fn enable() -> Section { }; settings::section() .title(§ion.title) - .add(settings::item( - &descriptions[dock], - toggler( + .add( + settings::item::builder(&descriptions[dock]).toggler( container_config .config_list .iter() .any(|e| e.name.as_str() == "Dock"), - ) - .on_toggle(Message::EnableDock), - )) + Message::EnableDock, + ), + ) .apply(Element::from) .map(crate::pages::Message::Dock) }) diff --git a/cosmic-settings/src/pages/desktop/panel/inner.rs b/cosmic-settings/src/pages/desktop/panel/inner.rs index e5d5d74..74f0c10 100644 --- a/cosmic-settings/src/pages/desktop/panel/inner.rs +++ b/cosmic-settings/src/pages/desktop/panel/inner.rs @@ -4,11 +4,8 @@ use cosmic::{ cosmic_config::{self, CosmicConfigEntry}, cosmic_theme::Density, iced::{Alignment, Length}, - surface, theme, - widget::{ - button, container, dropdown, icon, row, settings, slider, - space::horizontal as horizontal_space, text, toggler, - }, + surface, + widget::{button, container, dropdown, list, row, settings, slider, space, text}, }; use cosmic::Apply; @@ -119,10 +116,10 @@ pub(crate) fn behavior_and_position< }; settings::section() .title(§ion.title) - .add(settings::item( - &descriptions[autohide_label], - toggler(panel_config.autohide.is_some()).on_toggle(Message::AutoHidePanel), - )) + .add( + settings::item::builder(&descriptions[autohide_label]) + .toggler(panel_config.autohide.is_some(), Message::AutoHidePanel), + ) .add(settings::item( &descriptions[position], dropdown::popup_dropdown( @@ -180,14 +177,14 @@ pub(crate) fn style< }; settings::section() .title(§ion.title) - .add(settings::item( - &descriptions[gap_label], - toggler(panel_config.anchor_gap).on_toggle(Message::AnchorGap), - )) - .add(settings::item( - &descriptions[extend_label], - toggler(panel_config.expand_to_edges).on_toggle(Message::ExtendToEdge), - )) + .add( + settings::item::builder(&descriptions[gap_label]) + .toggler(panel_config.anchor_gap, Message::AnchorGap), + ) + .add( + settings::item::builder(&descriptions[extend_label]) + .toggler(panel_config.expand_to_edges, Message::ExtendToEdge), + ) .add(settings::item( &descriptions[appearance], dropdown::popup_dropdown( @@ -292,24 +289,10 @@ pub(crate) fn configuration + PanelPage>( .iter() .find(|(_, v)| v.id == page.applets_page_id()) { - let control = row::with_children(vec![ - horizontal_space().into(), - icon::from_name("go-next-symbolic").size(16).into(), - ]); - - settings.add( - settings::item::builder(&*descriptions[applets_label]) - .control(control) - .spacing(16) - .width(Length::Fill) - .apply(container) - .class(theme::Container::List) - .apply(button::custom) - .width(Length::Fill) - .class(theme::Button::Transparent) - .width(Length::Fill) - .on_press(crate::pages::Message::Page(panel_applets_entity)), - ) + settings.add(crate::widget::go_next_item( + &*descriptions[applets_label], + crate::pages::Message::Page(panel_applets_entity), + )) } else { settings }; @@ -358,7 +341,7 @@ pub fn reset_button< let descriptions = §ion.descriptions; let inner = page.inner(); if inner.system_default == inner.panel_config { - Element::from(horizontal_space().width(1.)) + Element::from(space()) } else { button::standard(&descriptions[reset_to_default]) .on_press(Message::ResetPanel) diff --git a/cosmic-settings/src/pages/desktop/wallpaper/mod.rs b/cosmic-settings/src/pages/desktop/wallpaper/mod.rs index 3894fa3..7f99b25 100644 --- a/cosmic-settings/src/pages/desktop/wallpaper/mod.rs +++ b/cosmic-settings/src/pages/desktop/wallpaper/mod.rs @@ -28,7 +28,7 @@ use cosmic::{ segmented_button::{self, SingleSelectModel}, settings, space::horizontal as horizontal_space, - tab_bar, text, toggler, + tab_bar, text, }, }; use cosmic::{ @@ -1275,18 +1275,17 @@ pub fn settings() -> Section { children.push({ let mut column = list_column() - .add(settings::item( - &descriptions[same_label], - toggler(page.wallpaper_service_config.same_on_all) - .on_toggle(Message::SameWallpaper), + .add(settings::item::builder(&descriptions[same_label]).toggler( + page.wallpaper_service_config.same_on_all, + Message::SameWallpaper, )) .add(settings::item(&descriptions[fit_label], wallpaper_fit)); if show_slideshow_toggle { - column = column.add(settings::item( - &descriptions[slide_label], - toggler(slideshow_enabled).on_toggle(Message::Slideshow), - )); + column = column.add( + settings::item::builder(&descriptions[slide_label]) + .toggler(slideshow_enabled, Message::Slideshow), + ); } // The rotation frequency dropdown should only be shown when the slideshow is enabled. diff --git a/cosmic-settings/src/pages/desktop/window_management.rs b/cosmic-settings/src/pages/desktop/window_management.rs index 354972c..e5d5092 100644 --- a/cosmic-settings/src/pages/desktop/window_management.rs +++ b/cosmic-settings/src/pages/desktop/window_management.rs @@ -5,7 +5,7 @@ use cosmic::{ Apply, Element, iced::{Alignment, Length}, surface, - widget::{self, settings, toggler}, + widget::{self, settings}, }; use cosmic_comp_config::CosmicCompConfig; @@ -259,13 +259,10 @@ pub fn window_management() -> Section { ), )) .add( - settings::flex_item( - &descriptions[edge_gravity], - toggler(page.edge_snap_threshold != 0).on_toggle(|is_enabled| { + settings::item::builder(&descriptions[edge_gravity]) + .toggler(page.edge_snap_threshold != 0, |is_enabled| { Message::SetEdgeSnapThreshold(if is_enabled { 10 } else { 0 }) }), - ) - .align_items(Alignment::Center), ) .apply(Element::from) .map(crate::pages::Message::WindowManagement) @@ -287,18 +284,18 @@ pub fn window_controls() -> Section { settings::section() .title(§ion.title) - .add(settings::item( - &descriptions[active_window_hint], - toggler(page.show_active_hint).on_toggle(Message::ShowActiveWindowHint), - )) - .add(settings::item( - &descriptions[maximize], - toggler(cosmic::config::show_maximize()).on_toggle(Message::ShowMaximizeButton), - )) - .add(settings::item( - &descriptions[minimize], - toggler(cosmic::config::show_minimize()).on_toggle(Message::ShowMinimizeButton), - )) + .add( + settings::item::builder(&descriptions[active_window_hint]) + .toggler(page.show_active_hint, Message::ShowActiveWindowHint), + ) + .add( + settings::item::builder(&descriptions[maximize]) + .toggler(cosmic::config::show_maximize(), Message::ShowMaximizeButton), + ) + .add( + settings::item::builder(&descriptions[minimize]) + .toggler(cosmic::config::show_minimize(), Message::ShowMinimizeButton), + ) .apply(Element::from) .map(crate::pages::Message::WindowManagement) }) @@ -319,10 +316,10 @@ pub fn focus_navigation() -> Section { settings::section() .title(§ion.title) - .add(settings::item( - &descriptions[focus_follows_cursor], - toggler(page.focus_follows_cursor).on_toggle(Message::SetFocusFollowsCursor), - )) + .add( + settings::item::builder(&descriptions[focus_follows_cursor]) + .toggler(page.focus_follows_cursor, Message::SetFocusFollowsCursor), + ) .add(settings::item( &descriptions[focus_follows_cursor_delay], widget::editable_input("", &page.focus_delay_text, false, |editing| { @@ -333,10 +330,10 @@ pub fn focus_navigation() -> Section { .on_submit(|_| Message::SaveFocusFollowsCursorDelay(true)) .width(Length::Fixed(80.0)), )) - .add(settings::item( - &descriptions[cursor_follows_focus], - toggler(page.cursor_follows_focus).on_toggle(Message::SetCursorFollowsFocus), - )) + .add( + settings::item::builder(&descriptions[cursor_follows_focus]) + .toggler(page.cursor_follows_focus, Message::SetCursorFollowsFocus), + ) .apply(Element::from) .map(crate::pages::Message::WindowManagement) }) diff --git a/cosmic-settings/src/pages/desktop/workspaces.rs b/cosmic-settings/src/pages/desktop/workspaces.rs index 081d526..230ac7f 100644 --- a/cosmic-settings/src/pages/desktop/workspaces.rs +++ b/cosmic-settings/src/pages/desktop/workspaces.rs @@ -8,7 +8,7 @@ use cosmic::{ cosmic_config::{self, ConfigGet, ConfigSet}, iced::Length, surface, - widget::{self, radio, settings, text}, + widget::{self, settings, text}, }; use cosmic_comp_config::workspace::{Action, WorkspaceConfig, WorkspaceLayout, WorkspaceMode}; use cosmic_settings_page::Section; @@ -209,26 +209,16 @@ fn multi_behavior() -> Section { let descriptions = §ion.descriptions; settings::section() .title(§ion.title) - .add(settings::item_row(vec![ - radio( - text::body(&descriptions[span]), - WorkspaceMode::Global, - Some(page.comp_workspace_config.workspace_mode), - Message::SetWorkspaceMode, - ) - .width(Length::Fill) - .into(), - ])) - .add(settings::item_row(vec![ - radio( - text::body(&descriptions[separate]), - WorkspaceMode::OutputBound, - Some(page.comp_workspace_config.workspace_mode), - Message::SetWorkspaceMode, - ) - .width(Length::Fill) - .into(), - ])) + .add(settings::item::builder(&descriptions[span]).radio( + WorkspaceMode::Global, + Some(page.comp_workspace_config.workspace_mode), + Message::SetWorkspaceMode, + )) + .add(settings::item::builder(&descriptions[separate]).radio( + WorkspaceMode::OutputBound, + Some(page.comp_workspace_config.workspace_mode), + Message::SetWorkspaceMode, + )) .apply(Element::from) .map(crate::pages::Message::DesktopWorkspaces) }) @@ -247,26 +237,16 @@ fn workspace_orientation() -> Section { let descriptions = §ion.descriptions; settings::section() .title(§ion.title) - .add(settings::item_row(vec![ - radio( - text::body(&descriptions[vertical]), - WorkspaceLayout::Vertical, - Some(page.comp_workspace_config.workspace_layout), - Message::SetWorkspaceLayout, - ) - .width(Length::Fill) - .into(), - ])) - .add(settings::item_row(vec![ - radio( - text::body(&descriptions[horizontal]), - WorkspaceLayout::Horizontal, - Some(page.comp_workspace_config.workspace_layout), - Message::SetWorkspaceLayout, - ) - .width(Length::Fill) - .into(), - ])) + .add(settings::item::builder(&descriptions[vertical]).radio( + WorkspaceLayout::Vertical, + Some(page.comp_workspace_config.workspace_layout), + Message::SetWorkspaceLayout, + )) + .add(settings::item::builder(&descriptions[horizontal]).radio( + WorkspaceLayout::Horizontal, + Some(page.comp_workspace_config.workspace_layout), + Message::SetWorkspaceLayout, + )) .apply(Element::from) .map(crate::pages::Message::DesktopWorkspaces) }) diff --git a/cosmic-settings/src/pages/display/mod.rs b/cosmic-settings/src/pages/display/mod.rs index 30e5db6..1b73211 100644 --- a/cosmic-settings/src/pages/display/mod.rs +++ b/cosmic-settings/src/pages/display/mod.rs @@ -10,7 +10,7 @@ use cosmic::iced::core::text::{Ellipsize, EllipsizeHeightLimit}; use cosmic::iced::widget::scrollable::RelativeOffset; use cosmic::iced::{Alignment, Length, stream, time}; use cosmic::widget::{ - self, column, container, dropdown, list_column, segmented_button, tab_bar, text, toggler, + self, column, container, dropdown, list_column, segmented_button, tab_bar, text, }; use cosmic::{Apply, Element, Task, surface}; use cosmic_randr_shell::{ @@ -1370,10 +1370,10 @@ pub fn display_configuration() -> Section { || !active_output.enabled { list_column() - .add(widget::settings::item( - &descriptions[enable_label], - toggler(active_output.enabled).on_toggle(Message::DisplayToggle), - )) + .add( + widget::settings::item::builder(&descriptions[enable_label]) + .toggler(active_output.enabled, Message::DisplayToggle), + ) .add(widget::settings::item( &descriptions[mirroring_label], widget::dropdown::multi::dropdown( diff --git a/cosmic-settings/src/pages/input/keyboard/mod.rs b/cosmic-settings/src/pages/input/keyboard/mod.rs index ddb355e..22080f8 100644 --- a/cosmic-settings/src/pages/input/keyboard/mod.rs +++ b/cosmic-settings/src/pages/input/keyboard/mod.rs @@ -11,7 +11,7 @@ use cosmic::{ cosmic_config::{self, ConfigSet}, iced::{Alignment, Length}, theme, - widget::{self, ListColumn, button, container, icon, radio, row, settings}, + widget::{self, ListColumn, button, container, icon, list, row, settings}, }; use cosmic_comp_config::{KeyboardConfig, NumlockState, XkbConfig}; use cosmic_settings_page::{self as page, Section, section}; @@ -243,15 +243,10 @@ fn special_char_radio_row<'a>( desc: &'a str, value: Option<&'static str>, current_value: Option<&'a str>, -) -> cosmic::Element<'a, Message> { - settings::item_row(vec![ - radio(desc, value, Some(current_value), |_| { - Message::SpecialCharacterSelect(value) - }) - .width(Length::Fill) - .into(), - ]) - .into() +) -> list::ListButton<'a, Message> { + settings::item::builder(desc).radio(value, Some(current_value), |_| { + Message::SpecialCharacterSelect(value) + }) } impl page::Page for Page { @@ -552,9 +547,11 @@ impl Page { pub fn add_input_source_view(&self) -> Element<'_, crate::pages::Message> { let space_l = theme::spacing().space_l; - let toggler = settings::item::builder(fl!("show-extended-input-sources")).toggler( - self.show_extended_input_sources, - Message::SetShowExtendedInputSources, + let toggler = settings::section().add( + settings::item::builder(fl!("show-extended-input-sources")).toggler( + self.show_extended_input_sources, + Message::SetShowExtendedInputSources, + ), ); let mut list = widget::list_column(); @@ -653,16 +650,11 @@ impl Page { let mut list = cosmic::widget::list_column(); for (desc, state) in options { - list = list.add(settings::item_row(vec![ - radio( - cosmic::widget::text(desc), - Some(state), - Some(Some(current)), - |_| Message::SetNumlockState(state), - ) - .width(Length::Fill) - .into(), - ])); + list = list.add(settings::item::builder(desc).radio( + Some(state), + Some(Some(current)), + |_| Message::SetNumlockState(state), + )); } list.into() diff --git a/cosmic-settings/src/pages/input/keyboard/shortcuts/common.rs b/cosmic-settings/src/pages/input/keyboard/shortcuts/common.rs index 9e8923c..70e1952 100644 --- a/cosmic-settings/src/pages/input/keyboard/shortcuts/common.rs +++ b/cosmic-settings/src/pages/input/keyboard/shortcuts/common.rs @@ -779,10 +779,7 @@ fn context_drawer<'a>( show_action: bool, ) -> Element<'a, ShortcutMessage> { let cosmic::cosmic_theme::Spacing { - space_xxs, - space_xs, - space_l, - .. + space_xs, space_l, .. } = theme::spacing(); let model = &shortcuts[id]; @@ -798,7 +795,7 @@ fn context_drawer<'a>( }); let bindings = model.bindings.iter().enumerate().fold( - widget::list_column().spacing(space_xxs), + widget::list_column(), |section, (_, (bind_id, shortcut))| { let editing = editing == Some(bind_id); let text: Cow<'_, str> = if !editing && shortcut.binding.is_set() { diff --git a/cosmic-settings/src/pages/input/keyboard/shortcuts/custom.rs b/cosmic-settings/src/pages/input/keyboard/shortcuts/custom.rs index a3b835f..7b04dea 100644 --- a/cosmic-settings/src/pages/input/keyboard/shortcuts/custom.rs +++ b/cosmic-settings/src/pages/input/keyboard/shortcuts/custom.rs @@ -452,7 +452,7 @@ impl Page { .padding([16, 24]); let keys = self.add_shortcut.keys.iter().fold( - widget::list_column().spacing(0), + widget::list_column(), |column, (id, (text, widget_id))| { let key_combination = widget::editable_input( fl!("type-key-combination"), @@ -474,7 +474,7 @@ impl Page { }, ); - let controls = widget::list_column().add(input_fields).add(keys).spacing(0); + let controls = widget::list_column().add(input_fields).add(keys); let add_keybinding_button = widget::button::standard(fl!("add-another-keybinding")) .on_press(Message::AddShortcut) diff --git a/cosmic-settings/src/pages/input/touchpad.rs b/cosmic-settings/src/pages/input/touchpad.rs index e1cf4d3..ba667ef 100644 --- a/cosmic-settings/src/pages/input/touchpad.rs +++ b/cosmic-settings/src/pages/input/touchpad.rs @@ -166,27 +166,17 @@ fn click_behavior() -> Section { settings::section() .title(&*section.title) // Secondary click via two fingers, and middle-click via three fingers - .add(settings::item_row(vec![ - widget::radio( - text::body(&descriptions[click_finger]), - ClickMethod::Clickfinger, - page.input_touchpad.click_method, - |option| Message::SetSecondaryClickBehavior(Some(option), true), - ) - .width(Length::Fill) - .into(), - ])) + .add(settings::item::builder(&descriptions[click_finger]).radio( + ClickMethod::Clickfinger, + page.input_touchpad.click_method, + |option| Message::SetSecondaryClickBehavior(Some(option), true), + )) // Secondary and middle-click via button areas. - .add(settings::item_row(vec![ - widget::radio( - text::body(&descriptions[button_areas]), - ClickMethod::ButtonAreas, - page.input_touchpad.click_method, - |option| Message::SetSecondaryClickBehavior(Some(option), true), - ) - .width(Length::Fill) - .into(), - ])) + .add(settings::item::builder(&descriptions[button_areas]).radio( + ClickMethod::ButtonAreas, + page.input_touchpad.click_method, + |option| Message::SetSecondaryClickBehavior(Some(option), true), + )) .add( settings::item::builder(&descriptions[tap_to_click]).toggler( page.input_touchpad @@ -222,33 +212,27 @@ fn scrolling() -> Section { settings::section() .title(§ion.title) // Two-finger scrolling toggle - .add(settings::item_row(vec![ - widget::radio( - text::body(&descriptions[two_finger]), + .add( + settings::item::builder(&descriptions[two_finger]).radio( ScrollMethod::TwoFinger, page.input_touchpad .scroll_config .as_ref() .and_then(|x| x.method), |option| Message::SetScrollMethod(Some(option), true), - ) - .width(Length::Fill) - .into(), - ])) + ), + ) // Edge scrolling toggle - .add(settings::item_row(vec![ - widget::radio( - text::body(&descriptions[edge]), + .add( + settings::item::builder(&descriptions[edge]).radio( ScrollMethod::Edge, page.input_touchpad .scroll_config .as_ref() .and_then(|x| x.method), |option| Message::SetScrollMethod(Some(option), true), - ) - .width(Length::Fill) - .into(), - ])) + ), + ) // Scroll speed slider .add(settings::item(&descriptions[scroll_speed], { let value = page diff --git a/cosmic-settings/src/pages/networking/wifi.rs b/cosmic-settings/src/pages/networking/wifi.rs index 1e5a9e0..cc1f43b 100644 --- a/cosmic-settings/src/pages/networking/wifi.rs +++ b/cosmic-settings/src/pages/networking/wifi.rs @@ -13,7 +13,7 @@ use cosmic::{ iced::core::text::Wrapping, iced::{Alignment, Length, widget::operation::focus_next}, task, - widget::{self, column, icon, space::horizontal as horizontal_space, text_input::focus}, + widget::{self, column, icon, space::horizontal, text_input::focus}, }; use cosmic_settings_network_manager_subscription::{ self as network_manager, NetworkManagerState, @@ -195,7 +195,7 @@ impl page::Page for Page { widget::button::standard(fl!("cancel")).on_press(Message::CancelDialog); let control: Element<_> = if let Some(identity) = identity { - widget::Column::new() + column::with_capacity(2) .spacing(8) .push( widget::text_input::text_input(fl!("identity"), identity) @@ -883,7 +883,7 @@ fn devices_view() -> Section { let spacing = cosmic::theme::spacing(); let wifi_enable = widget::settings::item::builder(§ion.descriptions[wifi_txt]) - .control(widget::toggler(state.wifi_enabled).on_toggle(Message::WiFiEnable)); + .toggler(state.wifi_enabled, Message::WiFiEnable); let mut view = widget::column::with_capacity(4) .push(widget::list_column().add(wifi_enable)) @@ -1019,7 +1019,7 @@ fn devices_view() -> Section { let item = widget::settings::item_row(vec![ identifier.into(), - horizontal_space().into(), + horizontal().into(), controls.into(), ]); @@ -1124,7 +1124,7 @@ fn devices_view() -> Section { let item = widget::settings::item_row(vec![ identifier.into(), - horizontal_space().into(), + horizontal().into(), controls.into(), ]); @@ -1234,7 +1234,7 @@ fn devices_view() -> Section { let item = widget::settings::item_row(vec![ identifier.into(), - horizontal_space().into(), + horizontal().into(), connect, ]); diff --git a/cosmic-settings/src/pages/power/mod.rs b/cosmic-settings/src/pages/power/mod.rs index b2a42d7..b68b135 100644 --- a/cosmic-settings/src/pages/power/mod.rs +++ b/cosmic-settings/src/pages/power/mod.rs @@ -7,7 +7,7 @@ use cosmic::Task; use cosmic::iced::core::text::{Ellipsize, EllipsizeHeightLimit}; use cosmic::iced::widget::{column, row}; use cosmic::iced::{self, Alignment, Length, stream}; -use cosmic::widget::{self, radio, settings, space::horizontal as horizontal_space, text}; +use cosmic::widget::{self, settings, space, text}; use cosmic::{Apply, surface}; use cosmic_config::{Config, CosmicConfigEntry}; use cosmic_idle_config::CosmicIdleConfig; @@ -508,12 +508,8 @@ fn connected_devices() -> Section { .map(|mut device_row| { cosmic::Element::from( row!( - device_row.next().unwrap_or( - horizontal_space().width(Length::Fill).into() - ), - device_row.next().unwrap_or( - horizontal_space().width(Length::Fill).into() - ), + device_row.next().unwrap_or(space::horizontal().into()), + device_row.next().unwrap_or(space::horizontal().into()), ) .spacing(8), ) @@ -543,18 +539,9 @@ fn profiles() -> Section { section = profiles .into_iter() .map(|profile| { - settings::item_row(vec![ - radio( - widget::column::with_capacity(2) - .push(text::body(profile.title())) - .push(text::caption(profile.description())), - profile, - Some(current_profile), - Message::PowerProfileChange, - ) - .width(Length::Fill) - .into(), - ]) + settings::item::builder(profile.title()) + .description(profile.description()) + .radio(profile, Some(current_profile), Message::PowerProfileChange) }) .fold(section, settings::Section::add); } diff --git a/cosmic-settings/src/pages/sound/mod.rs b/cosmic-settings/src/pages/sound/mod.rs index 6793a91..a2a7699 100644 --- a/cosmic-settings/src/pages/sound/mod.rs +++ b/cosmic-settings/src/pages/sound/mod.rs @@ -320,10 +320,9 @@ fn input() -> Section { controls = controls.add( settings::item::builder(&*section.descriptions[amplification]) .description(&*section.descriptions[amplification_desc]) - .control( - widget::toggler(page.amplification_source) - .on_toggle(|t| Message::ToggleOverAmplificationSource(t).into()), - ), + .toggler(page.amplification_source, |t| { + Message::ToggleOverAmplificationSource(t).into() + }), ); Element::from(controls) @@ -435,10 +434,9 @@ fn output() -> Section { controls = controls.add( settings::item::builder(&*section.descriptions[amplification]) .description(&*section.descriptions[amplification_desc]) - .control( - widget::toggler(page.amplification_sink) - .on_toggle(|t| Message::ToggleOverAmplificationSink(t).into()), - ), + .toggler(page.amplification_sink, |t| { + Message::ToggleOverAmplificationSink(t).into() + }), ); Element::from(controls) diff --git a/cosmic-settings/src/pages/system/users/mod.rs b/cosmic-settings/src/pages/system/users/mod.rs index 079c39c..5d23597 100644 --- a/cosmic-settings/src/pages/system/users/mod.rs +++ b/cosmic-settings/src/pages/system/users/mod.rs @@ -8,7 +8,7 @@ use cosmic::{ Apply, Element, dialog::file_chooser, iced::{Alignment, Length}, - widget::{self, column, icon, row, settings, space::horizontal as horizontal_space, text}, + widget::{self, column, icon, list, row, settings, space::horizontal, text}, }; use cosmic_settings_page::{self as page, Section, section}; use image::GenericImageView; @@ -322,7 +322,7 @@ impl page::Page for Page { ))) .width(Length::Fill), ) - .push(horizontal_space().width(5.)) + .push(horizontal().width(5.)) .push(admin_toggler) .align_y(Alignment::Center), ), @@ -785,16 +785,13 @@ fn user_list() -> Section { .descriptions(descriptions) .view::(move |_binder, page, section| { let descriptions = §ion.descriptions; - - let cosmic::cosmic_theme::Spacing { - space_xxs, space_m, .. - } = cosmic::theme::active().cosmic().spacing; + let space_xxs = cosmic::theme::spacing().space_xxs; let users_list = page .users .iter() .enumerate() - .flat_map(|(idx, user)| { + .map(|(idx, user)| { let expanded = matches!(page.selected_user_idx, Some(user_idx) if user_idx == idx); @@ -832,37 +829,6 @@ fn user_list() -> Section { &descriptions[user_type_standard] }); - let expanded_details = expanded.then(|| { - let mut details_list = widget::list_column() - .add(settings::item(&page.fullname_label, fullname)) - .add(settings::item(&page.username_label, username)) - .add(settings::item(&page.password_label, password)) - .add(settings::item_row(vec![ - column::with_capacity(2) - .push(text::body(crate::fl!("administrator"))) - .push(text::caption(crate::fl!("administrator", "desc"))) - .width(Length::Fill) - .into(), - horizontal_space().width(5.).into(), - widget::toggler(user.is_admin) - .on_toggle(|enabled| { - Message::SelectedUserSetAdmin(user.id, enabled) - }) - .into(), - ])); - - if page.users.len() > 1 { - details_list = details_list.add(settings::item_row(vec![ - horizontal_space().width(Length::Fill).into(), - widget::button::destructive(crate::fl!("remove-user")) - .on_press(Message::SelectedUserDelete(user.id)) - .into(), - ])); - } - - details_list.apply(Element::from) - }); - let profile_icon_handle = user .profile_icon .clone() @@ -884,8 +850,8 @@ fn user_list() -> Section { ) .align_y(Alignment::Center) .spacing(space_xxs) + .width(Length::Fill) .into(), - horizontal_space().width(Length::Fill).into(), icon::from_name(if expanded { "go-up-symbolic" } else { @@ -896,28 +862,49 @@ fn user_list() -> Section { .into(), ]); - let account_details = Some( - widget::button::custom(account_details_content) - .padding([space_xxs, space_m]) - .on_press(Message::SelectUser(idx)) - .class(cosmic::theme::Button::ListItem) - .width(Length::Fill) + let mut user_list = widget::list_column().add( + list::button(account_details_content) .selected(expanded) - .apply(Element::from), + .on_press(Message::SelectUser(idx)), ); - vec![account_details, expanded_details] + if expanded { + user_list = user_list + .add(settings::item(&page.fullname_label, fullname)) + .add(settings::item(&page.username_label, username)) + .add(settings::item(&page.password_label, password)) + .add(settings::item_row(vec![ + column::with_capacity(2) + .push(text::body(crate::fl!("administrator"))) + .push(text::caption(crate::fl!("administrator", "desc"))) + .width(Length::Fill) + .into(), + horizontal().width(5.).into(), + widget::toggler(user.is_admin) + .on_toggle(|enabled| { + Message::SelectedUserSetAdmin(user.id, enabled) + }) + .into(), + ])); + + if page.users.len() > 1 { + user_list = user_list.add(settings::item_row(vec![ + horizontal().width(Length::Fill).into(), + widget::button::destructive(crate::fl!("remove-user")) + .on_press(Message::SelectedUserDelete(user.id)) + .into(), + ])); + } + } + + Element::from(user_list) }) - .flatten() .fold( - widget::list_column() - .spacing(0) - .padding([8, 0]) - .divider_padding(0) - .list_item_padding(0), - widget::ListColumn::add, + widget::column::with_capacity(page.users.len()), + |col, user| col.push(user), ) - .apply(|list| Element::from(settings::section::with_column(list))); + .spacing(space_xxs) + .width(Length::Fill); let add_user = widget::button::standard(crate::fl!("add-user")) .on_press(Message::Dialog(Some(Dialog::AddNewUser(User::default())))) @@ -928,7 +915,7 @@ fn user_list() -> Section { widget::column::with_capacity(2) .push(users_list) .push(add_user) - .spacing(space_m) + .spacing(space_xxs) .apply(Element::from) .map(crate::pages::Message::User) }) diff --git a/cosmic-settings/src/pages/time/date.rs b/cosmic-settings/src/pages/time/date.rs index d63f0d5..d2f83ff 100644 --- a/cosmic-settings/src/pages/time/date.rs +++ b/cosmic-settings/src/pages/time/date.rs @@ -1,13 +1,14 @@ // Copyright 2023 System76 // SPDX-License-Identifier: GPL-3.0-only +use crate::widget::selection_context_item; use cosmic::{ Apply, Element, Task, app::ContextDrawer, cosmic_config::{self, ConfigGet, ConfigSet}, iced::core::text::Wrapping, surface, - widget::{self, dropdown, settings, space::horizontal as horizontal_space}, + widget::{self, dropdown, list, settings}, }; use cosmic_settings_page::{self as page, Section, section}; use icu::{ @@ -20,7 +21,6 @@ use icu::{ locale::{Locale, preferences::extensions::unicode::keywords::HourCycle}, }; use slotmap::{Key, SlotMap}; -use std::rc::Rc; pub use timedate_zbus::TimeDateProxy; use tracing::error; @@ -335,7 +335,10 @@ impl Page { for (id, timezone) in self.timezone_list.iter().enumerate() { if search_input.is_empty() || timezone.to_lowercase().contains(search_input) { - list = list.add(self.timezone_context_item(id, timezone)); + list = list.add( + list::button(selection_context_item(timezone, Some(id) == self.timezone)) + .on_press(Message::Timezone(id)), + ); } } @@ -343,40 +346,6 @@ impl Page { .map(crate::pages::Message::DateAndTime) } - fn timezone_context_item<'a>(&self, id: usize, timezone: &'a str) -> Element<'a, Message> { - let svg_accent = Rc::new(|theme: &cosmic::Theme| cosmic::widget::svg::Style { - color: Some(theme.cosmic().accent_text_color().into()), - }); - let selected = Some(id) == self.timezone; - - widget::settings::item_row(vec![ - widget::text::body(timezone) - .class(if selected { - cosmic::theme::Text::Accent - } else { - cosmic::theme::Text::Default - }) - .wrapping(Wrapping::Word) - .width(cosmic::iced::Length::Fill) - .into(), - if selected { - widget::icon::from_name("object-select-symbolic") - .size(16) - .icon() - .class(cosmic::theme::Svg::Custom(svg_accent.clone())) - .into() - } else { - horizontal_space().width(16.).into() - }, - ]) - .apply(widget::container) - .class(cosmic::theme::Container::List) - .apply(widget::button::custom) - .class(cosmic::theme::Button::Transparent) - .on_press(Message::Timezone(id)) - .into() - } - fn update_local_time(&mut self) { self.local_time = Some(update_local_time()); @@ -498,30 +467,19 @@ fn timezone() -> Section { .title(fl!("time-zone")) .descriptions(descriptions) .view::(move |_binder, page, section| { - let timezone_context_button = widget::row::with_capacity(2) - .spacing(12) - .push( + settings::section() + .title(§ion.title) + // Time zone select + .add(crate::widget::go_next_with_item( + &*section.descriptions[time_zone], widget::text::body( page.timezone .map(|id| &*page.timezone_list[id]) .unwrap_or_default(), ) .wrapping(Wrapping::Word), - ) - .push(widget::icon::from_name("go-next-symbolic").size(16).icon()) - .apply(widget::container) - .class(cosmic::theme::Container::List) - .apply(widget::button::custom) - .class(cosmic::theme::Button::Transparent) - .on_press(Message::TimezoneContext); - - settings::section() - .title(§ion.title) - // Time zone select - .add( - settings::item::builder(&*section.descriptions[time_zone]) - .control(timezone_context_button), - ) + Message::TimezoneContext, + )) .apply(cosmic::Element::from) .map(crate::pages::Message::DateAndTime) }) diff --git a/cosmic-settings/src/pages/time/region.rs b/cosmic-settings/src/pages/time/region.rs index 9f618c9..86d4e8f 100644 --- a/cosmic-settings/src/pages/time/region.rs +++ b/cosmic-settings/src/pages/time/region.rs @@ -2,13 +2,12 @@ // SPDX-License-Identifier: GPL-3.0-only use std::collections::{BTreeMap, BTreeSet}; -use std::rc::Rc; use std::sync::Arc; +use crate::widget::selection_context_item; use cosmic::app::{ContextDrawer, context_drawer}; -use cosmic::iced::core::text::Wrapping; use cosmic::iced::{Alignment, Length}; -use cosmic::widget::{self, button, space::horizontal as horizontal_space}; +use cosmic::widget::{self, button, list}; use cosmic::{Apply, Element}; use cosmic_config::{ConfigGet, ConfigSet}; use cosmic_settings_page::Section; @@ -361,14 +360,9 @@ impl Page { } fn add_language_view(&self) -> cosmic::Element<'_, crate::pages::Message> { - let mut list = widget::list_column(); - + let mut list = widget::list_column::with_capacity(self.available_languages.len()); let search_input = &self.add_language_search.trim().to_lowercase(); - let svg_accent = Rc::new(|theme: &cosmic::Theme| cosmic::widget::svg::Style { - color: Some(theme.cosmic().accent_text_color().into()), - }); - for (id, available_language) in &self.available_languages { if search_input.is_empty() || available_language @@ -381,37 +375,17 @@ impl Page { .as_ref() .is_some_and(|(_, locales)| locales.contains(&available_language.lang_code)); - let button = widget::settings::item_row(vec![ - widget::text::body(&available_language.display_name) - .class(if is_installed { - cosmic::theme::Text::Accent - } else { - cosmic::theme::Text::Default - }) - .wrapping(Wrapping::Word) - .width(Length::Fill) - .into(), - if is_installed { - widget::icon::from_name("object-select-symbolic") - .size(16) - .icon() - .class(cosmic::theme::Svg::Custom(svg_accent.clone())) - .into() + list = list.add( + list::button(selection_context_item( + &available_language.display_name, + is_installed, + )) + .on_press(if is_installed { + Message::RemoveLanguage(id) } else { - horizontal_space().width(16.).into() - }, - ]) - .apply(widget::container) - .class(cosmic::theme::Container::List) - .apply(widget::button::custom) - .class(cosmic::theme::Button::Transparent) - .on_press(if is_installed { - Message::RemoveLanguage(id) - } else { - Message::AddLanguage(id) - }); - - list = list.add(button) + Message::AddLanguage(id) + }), + ) } } @@ -492,12 +466,7 @@ impl Page { } fn region_view(&self) -> cosmic::Element<'_, crate::pages::Message> { - let svg_accent = Rc::new(|theme: &cosmic::Theme| { - let color = theme.cosmic().accent_text_color().into(); - cosmic::widget::svg::Style { color: Some(color) } - }); - - let mut list = widget::list_column(); + let mut list = widget::list_column::with_capacity(self.available_languages.len()); let search_input = &self.add_language_search.trim().to_lowercase(); @@ -509,37 +478,14 @@ impl Page { .as_ref() .is_some_and(|l| l.lang_code == locale.lang_code); - let button = widget::settings::item_row(vec![ - widget::text::body(&locale.region_name) - .class(if is_selected { - cosmic::theme::Text::Accent + list = list.add( + list::button(selection_context_item(&locale.region_name, is_selected)) + .on_press_maybe(if is_selected { + None } else { - cosmic::theme::Text::Default - }) - .wrapping(Wrapping::Word) - .width(Length::Fill) - .into(), - if is_selected { - widget::icon::from_name("object-select-symbolic") - .size(16) - .icon() - .class(cosmic::theme::Svg::Custom(svg_accent.clone())) - .into() - } else { - horizontal_space().width(16.).into() - }, - ]) - .apply(widget::container) - .class(cosmic::theme::Container::List) - .apply(widget::button::custom) - .class(cosmic::theme::Button::Transparent) - .on_press_maybe(if is_selected { - None - } else { - Some(Message::SelectRegion(id)) - }); - - list = list.add(button) + Some(Message::SelectRegion(id)) + }), + ) } } diff --git a/cosmic-settings/src/widget/mod.rs b/cosmic-settings/src/widget/mod.rs index 59c1283..80a5ca2 100644 --- a/cosmic-settings/src/widget/mod.rs +++ b/cosmic-settings/src/widget/mod.rs @@ -2,14 +2,15 @@ // SPDX-License-Identifier: GPL-3.0-only use std::borrow::Cow; +use std::rc::Rc; use cosmic::cosmic_theme::Spacing; use cosmic::iced::core::text::Wrapping; use cosmic::iced::{Alignment, Length}; use cosmic::widget::color_picker::ColorPickerUpdate; use cosmic::widget::{ - self, ColorPickerModel, button, column, container, divider, icon, row, settings, - space::{horizontal as horizontal_space, vertical as vertical_space}, + self, ColorPickerModel, button, column, container, divider, icon, list, row, settings, + space::{horizontal, vertical}, text, }; use cosmic::{Apply, Element, theme}; @@ -75,7 +76,7 @@ pub fn search_header( .into(), ); - column_children.push(vertical_space().height(Length::Fixed(8.)).into()); + column_children.push(vertical().height(Length::Fixed(8.)).into()); column_children.push(divider::horizontal::heavy().into()); column::with_children(column_children).into() @@ -89,12 +90,12 @@ pub fn search_page_link(title: &str) -> button::TextButton<'_, pub fn page_title(page: &page::Info) -> Element<'_, Message> { row::with_capacity(2) .push(text::title3(page.title.as_str())) - .push(horizontal_space()) + .push(horizontal()) .into() } #[must_use] -pub fn unimplemented_page() -> Element<'static, Message> { +pub fn unimplemented_page() -> Element<'static, Message> { settings::section().title("") .add(text::body("We haven't created that panel yet, and/or it is using a similar idea as current Pop! designs.")) .into() @@ -184,50 +185,68 @@ pub fn sub_page_header<'a, Message: 'static + Clone>( .into() } -pub fn go_next_item( +pub fn go_next_item( description: &str, msg_opt: impl Into>, -) -> cosmic::Element<'_, Msg> { +) -> list::ListButton<'_, Msg> { settings::item_row(vec![ - text::body(description).wrapping(Wrapping::Word).into(), - horizontal_space().into(), + text::body(description) + .width(Length::Fill) + .wrapping(Wrapping::Word) + .into(), icon::from_name("go-next-symbolic").size(16).icon().into(), ]) - .width(Length::Fill) - .apply(widget::container) - .class(cosmic::theme::Container::List) - .width(Length::Fill) - .apply(button::custom) - .width(Length::Fill) - .padding(0) - .class(theme::Button::Transparent) + .apply(list::button) + .on_press_maybe(msg_opt.into()) +} + +pub fn go_next_with_item<'a, Msg: 'static>( + description: &'a str, + item: impl Into>, + msg_opt: impl Into>, +) -> list::ListButton<'_, Msg> { + settings::item_row(vec![ + text::body(description).wrapping(Wrapping::Word).into(), + horizontal().into(), + row::with_capacity(2) + .push(item) + .push(icon::from_name("go-next-symbolic").size(16).icon()) + .align_y(Alignment::Center) + .spacing(theme::spacing().space_s) + .into(), + ]) + .apply(list::button) .on_press_maybe(msg_opt.into()) .into() } -pub fn go_next_with_item<'a, Msg: Clone + 'static>( - description: &'a str, - item: impl Into>, - msg_opt: impl Into>, +pub fn selection_context_item<'a, Msg: 'static>( + name: &'a str, + selected: bool, ) -> cosmic::Element<'a, Msg> { + let svg_accent = Rc::new(|theme: &cosmic::Theme| widget::svg::Style { + color: Some(theme.cosmic().accent_text_color().into()), + }); + settings::item_row(vec![ - text::body(description).wrapping(Wrapping::Word).into(), - horizontal_space().into(), - widget::row::with_capacity(2) - .push(item) - .push(icon::from_name("go-next-symbolic").size(16).icon()) - .align_y(Alignment::Center) - .spacing(cosmic::theme::spacing().space_s) + text::body(name) + .class(if selected { + theme::Text::Accent + } else { + theme::Text::Default + }) + .wrapping(Wrapping::Word) + .width(Length::Fill) .into(), + if selected { + icon::from_name("object-select-symbolic") + .size(16) + .icon() + .class(theme::Svg::Custom(svg_accent.clone())) + .into() + } else { + horizontal().width(16.).into() + }, ]) - .width(Length::Fill) - .apply(widget::container) - .class(cosmic::theme::Container::List) - .width(Length::Fill) - .apply(button::custom) - .padding(0) - .width(Length::Fill) - .class(theme::Button::Transparent) - .on_press_maybe(msg_opt.into()) .into() } diff --git a/page/src/section.rs b/page/src/section.rs index 3492e3a..c8cf839 100644 --- a/page/src/section.rs +++ b/page/src/section.rs @@ -40,7 +40,7 @@ pub struct Section { pub search_ignore: bool, } -impl Default for Section { +impl Default for Section { fn default() -> Self { Self { title: String::new(), @@ -120,7 +120,7 @@ impl Section { #[must_use] #[inline] -pub fn unimplemented<'a, Message: 'static>( +pub fn unimplemented<'a, Message: Clone + 'static>( _binder: &'a Binder, _page: &'a dyn Page, _section: &'a Section, From eb55cd020fa1fa33b02b1650b5fd66f16991ea25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vuka=C5=A1in=20Vojinovi=C4=87?= <150025636+git-f0x@users.noreply.github.com> Date: Thu, 16 Apr 2026 19:18:11 +0200 Subject: [PATCH 03/10] chore: clippy --- .../src/pages/accessibility/mod.rs | 2 +- .../pages/applications/legacy_applications.rs | 2 +- .../src/pages/desktop/appearance/drawer.rs | 2 +- .../pages/desktop/appearance/font_config.rs | 12 +++---- .../src/pages/desktop/appearance/mod.rs | 3 +- .../src/pages/desktop/panel/inner.rs | 4 +-- .../src/pages/desktop/wallpaper/widgets.rs | 2 +- .../src/pages/desktop/window_management.rs | 2 +- .../src/pages/desktop/workspaces.rs | 3 +- cosmic-settings/src/pages/time/date.rs | 11 ++++--- cosmic-settings/src/pages/time/region.rs | 31 +++++++++---------- cosmic-settings/src/widget/mod.rs | 9 +++--- 12 files changed, 41 insertions(+), 42 deletions(-) diff --git a/cosmic-settings/src/pages/accessibility/mod.rs b/cosmic-settings/src/pages/accessibility/mod.rs index a7bc8f6..f8b75f2 100644 --- a/cosmic-settings/src/pages/accessibility/mod.rs +++ b/cosmic-settings/src/pages/accessibility/mod.rs @@ -5,7 +5,7 @@ use cosmic::{ iced::stream, surface, theme::CosmicTheme, - widget::{dropdown, list, settings, text}, + widget::{dropdown, settings, text}, }; pub use cosmic_comp_config::ZoomMovement; use cosmic_config::CosmicConfigEntry; diff --git a/cosmic-settings/src/pages/applications/legacy_applications.rs b/cosmic-settings/src/pages/applications/legacy_applications.rs index 81bbcfe..a21d605 100644 --- a/cosmic-settings/src/pages/applications/legacy_applications.rs +++ b/cosmic-settings/src/pages/applications/legacy_applications.rs @@ -12,7 +12,7 @@ use std::{ use cosmic::{ Apply, Element, Task, cosmic_config::{self, ConfigGet, ConfigSet}, - iced::{Length, stream}, + iced::stream, surface, widget::{self, dropdown, settings, text}, }; diff --git a/cosmic-settings/src/pages/desktop/appearance/drawer.rs b/cosmic-settings/src/pages/desktop/appearance/drawer.rs index ad1cecb..7b7caa0 100644 --- a/cosmic-settings/src/pages/desktop/appearance/drawer.rs +++ b/cosmic-settings/src/pages/desktop/appearance/drawer.rs @@ -4,7 +4,7 @@ use cosmic::cosmic_config::{Config, ConfigSet}; use cosmic::cosmic_theme::Spacing; use cosmic::iced::core::{Color, Length}; use cosmic::widget::{ - ColorPickerModel, color_picker::ColorPickerUpdate, container, flex_row, list, settings, text, + ColorPickerModel, color_picker::ColorPickerUpdate, container, flex_row, settings, text, }; use cosmic::{Apply, Task}; use cosmic::{Element, widget}; diff --git a/cosmic-settings/src/pages/desktop/appearance/font_config.rs b/cosmic-settings/src/pages/desktop/appearance/font_config.rs index 417a671..d2b2558 100644 --- a/cosmic-settings/src/pages/desktop/appearance/font_config.rs +++ b/cosmic-settings/src/pages/desktop/appearance/font_config.rs @@ -6,8 +6,7 @@ use std::sync::Arc; use cosmic::{ Apply, Element, Task, config::{CosmicTk, FontConfig}, - iced::core::text::Wrapping, - widget::{self, settings, svg}, + widget, }; use cosmic_config::ConfigSet; @@ -193,10 +192,11 @@ impl Model { widget::list_column::with_capacity(families.len()), |list, family| { let selected = &**family == current_font; - list.add( - widget::list::button(selection_context_item(&**family, selected)) - .on_press(callback(family.clone())), - ) + list.add(selection_context_item( + family, + selected, + callback(family.clone()), + )) }, ); list.into() diff --git a/cosmic-settings/src/pages/desktop/appearance/mod.rs b/cosmic-settings/src/pages/desktop/appearance/mod.rs index 609a084..aa28ea8 100644 --- a/cosmic-settings/src/pages/desktop/appearance/mod.rs +++ b/cosmic-settings/src/pages/desktop/appearance/mod.rs @@ -22,8 +22,7 @@ use cosmic::dialog::file_chooser::{self, FileFilter}; use cosmic::iced::Subscription; use cosmic::iced::core::{Alignment, Length}; use cosmic::widget::{ - button, color_picker::ColorPickerUpdate, container, list, row, settings, space::horizontal, - text, + button, color_picker::ColorPickerUpdate, container, row, settings, space::horizontal, text, }; use cosmic::{Apply, Element, Task, widget}; #[cfg(feature = "wayland")] diff --git a/cosmic-settings/src/pages/desktop/panel/inner.rs b/cosmic-settings/src/pages/desktop/panel/inner.rs index 74f0c10..77d2d9b 100644 --- a/cosmic-settings/src/pages/desktop/panel/inner.rs +++ b/cosmic-settings/src/pages/desktop/panel/inner.rs @@ -5,7 +5,7 @@ use cosmic::{ cosmic_theme::Density, iced::{Alignment, Length}, surface, - widget::{button, container, dropdown, list, row, settings, slider, space, text}, + widget::{button, container, dropdown, row, settings, slider, space, text}, }; use cosmic::Apply; @@ -290,7 +290,7 @@ pub(crate) fn configuration + PanelPage>( .find(|(_, v)| v.id == page.applets_page_id()) { settings.add(crate::widget::go_next_item( - &*descriptions[applets_label], + &descriptions[applets_label], crate::pages::Message::Page(panel_applets_entity), )) } else { diff --git a/cosmic-settings/src/pages/desktop/wallpaper/widgets.rs b/cosmic-settings/src/pages/desktop/wallpaper/widgets.rs index 8544dac..f9d2bcb 100644 --- a/cosmic-settings/src/pages/desktop/wallpaper/widgets.rs +++ b/cosmic-settings/src/pages/desktop/wallpaper/widgets.rs @@ -4,7 +4,7 @@ use super::Message; use cosmic::iced::Radius; use cosmic::iced::core::Border; -use cosmic::iced::core::{self, Background, Color, Degrees, Length, gradient::Linear}; +use cosmic::iced::core::{Background, Color, Degrees, Length, gradient::Linear}; use cosmic::iced::runtime::core::image::Handle as ImageHandle; use cosmic::prelude::*; use cosmic::widget::{Space, button, container}; diff --git a/cosmic-settings/src/pages/desktop/window_management.rs b/cosmic-settings/src/pages/desktop/window_management.rs index e5d5092..b93e0f8 100644 --- a/cosmic-settings/src/pages/desktop/window_management.rs +++ b/cosmic-settings/src/pages/desktop/window_management.rs @@ -3,7 +3,7 @@ use cosmic::{ Apply, Element, - iced::{Alignment, Length}, + iced::Length, surface, widget::{self, settings}, }; diff --git a/cosmic-settings/src/pages/desktop/workspaces.rs b/cosmic-settings/src/pages/desktop/workspaces.rs index 230ac7f..b179693 100644 --- a/cosmic-settings/src/pages/desktop/workspaces.rs +++ b/cosmic-settings/src/pages/desktop/workspaces.rs @@ -6,9 +6,8 @@ use cosmic::{ Apply, Element, cosmic_config::{self, ConfigGet, ConfigSet}, - iced::Length, surface, - widget::{self, settings, text}, + widget::{self, settings}, }; use cosmic_comp_config::workspace::{Action, WorkspaceConfig, WorkspaceLayout, WorkspaceMode}; use cosmic_settings_page::Section; diff --git a/cosmic-settings/src/pages/time/date.rs b/cosmic-settings/src/pages/time/date.rs index d2f83ff..16cc382 100644 --- a/cosmic-settings/src/pages/time/date.rs +++ b/cosmic-settings/src/pages/time/date.rs @@ -335,10 +335,11 @@ impl Page { for (id, timezone) in self.timezone_list.iter().enumerate() { if search_input.is_empty() || timezone.to_lowercase().contains(search_input) { - list = list.add( - list::button(selection_context_item(timezone, Some(id) == self.timezone)) - .on_press(Message::Timezone(id)), - ); + list = list.add(selection_context_item( + timezone, + Some(id) == self.timezone, + Message::Timezone(id), + )); } } @@ -471,7 +472,7 @@ fn timezone() -> Section { .title(§ion.title) // Time zone select .add(crate::widget::go_next_with_item( - &*section.descriptions[time_zone], + §ion.descriptions[time_zone], widget::text::body( page.timezone .map(|id| &*page.timezone_list[id]) diff --git a/cosmic-settings/src/pages/time/region.rs b/cosmic-settings/src/pages/time/region.rs index 86d4e8f..36128f7 100644 --- a/cosmic-settings/src/pages/time/region.rs +++ b/cosmic-settings/src/pages/time/region.rs @@ -375,17 +375,15 @@ impl Page { .as_ref() .is_some_and(|(_, locales)| locales.contains(&available_language.lang_code)); - list = list.add( - list::button(selection_context_item( - &available_language.display_name, - is_installed, - )) - .on_press(if is_installed { + list = list.add(selection_context_item( + &available_language.display_name, + is_installed, + if is_installed { Message::RemoveLanguage(id) } else { Message::AddLanguage(id) - }), - ) + }, + )) } } @@ -478,14 +476,15 @@ impl Page { .as_ref() .is_some_and(|l| l.lang_code == locale.lang_code); - list = list.add( - list::button(selection_context_item(&locale.region_name, is_selected)) - .on_press_maybe(if is_selected { - None - } else { - Some(Message::SelectRegion(id)) - }), - ) + list = list.add(selection_context_item( + &locale.region_name, + is_selected, + if is_selected { + None + } else { + Some(Message::SelectRegion(id)) + }, + )) } } diff --git a/cosmic-settings/src/widget/mod.rs b/cosmic-settings/src/widget/mod.rs index 80a5ca2..a5b8322 100644 --- a/cosmic-settings/src/widget/mod.rs +++ b/cosmic-settings/src/widget/mod.rs @@ -204,7 +204,7 @@ pub fn go_next_with_item<'a, Msg: 'static>( description: &'a str, item: impl Into>, msg_opt: impl Into>, -) -> list::ListButton<'_, Msg> { +) -> list::ListButton<'a, Msg> { settings::item_row(vec![ text::body(description).wrapping(Wrapping::Word).into(), horizontal().into(), @@ -217,13 +217,13 @@ pub fn go_next_with_item<'a, Msg: 'static>( ]) .apply(list::button) .on_press_maybe(msg_opt.into()) - .into() } pub fn selection_context_item<'a, Msg: 'static>( name: &'a str, selected: bool, -) -> cosmic::Element<'a, Msg> { + msg_opt: impl Into>, +) -> list::ListButton<'a, Msg> { let svg_accent = Rc::new(|theme: &cosmic::Theme| widget::svg::Style { color: Some(theme.cosmic().accent_text_color().into()), }); @@ -248,5 +248,6 @@ pub fn selection_context_item<'a, Msg: 'static>( horizontal().width(16.).into() }, ]) - .into() + .apply(list::button) + .on_press_maybe(msg_opt.into()) } From 2b7fd9b8e223d63f99a0cc637deb81becc56d353 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vuka=C5=A1in=20Vojinovi=C4=87?= <150025636+git-f0x@users.noreply.github.com> Date: Thu, 16 Apr 2026 19:21:58 +0200 Subject: [PATCH 04/10] chore: update CI --- .github/workflows/ci.yml | 14 +++++++------- .github/workflows/validate-desktop-files.yml | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d826e44..7c204e3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,9 +15,9 @@ jobs: name: Rustfmt runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v6 - name: install toolchain - run: rustup toolchain install 1.80.1 --component rustfmt + run: rustup toolchain install 1.90.0 --component rustfmt - name: fmt run: cargo fmt --all --check @@ -27,9 +27,9 @@ jobs: steps: - name: install system dependencies run: sudo apt-get update && sudo apt-get install lld cmake libclang-dev libexpat1-dev libfontconfig-dev libfreetype-dev libpipewire-0.3-dev libpulse-dev pkg-config libxkbcommon-dev libudev-dev libinput-dev libwayland-dev - - uses: actions/checkout@v3 + - uses: actions/checkout@v6 - name: install toolchain - run: rustup toolchain install 1.80.1 --component clippy + run: rustup toolchain install 1.90.0 --component clippy - name: clippy run: cargo clippy --all-features @@ -39,7 +39,7 @@ jobs: steps: - name: install system dependencies run: sudo apt-get update && sudo apt-get install lld cmake libclang-dev libexpat1-dev libfontconfig-dev libfreetype-dev libpipewire-0.3-dev libpulse-dev pkg-config libxkbcommon-dev libudev-dev libinput-dev libwayland-dev - - uses: actions/checkout@v3 + - uses: actions/checkout@v6 - name: install toolchain run: rustup show - name: test @@ -51,8 +51,8 @@ jobs: steps: - name: install system dependencies run: sudo apt-get update && sudo apt-get install lld cmake libclang-dev libexpat1-dev libfontconfig-dev libfreetype-dev libpipewire-0.3-dev libpulse-dev pkg-config libxkbcommon-dev libudev-dev libinput-dev libwayland-dev just - - uses: actions/checkout@v3 + - uses: actions/checkout@v6 - name: install toolchain run: rustup show - name: check features - run: just check-features \ No newline at end of file + run: just check-features diff --git a/.github/workflows/validate-desktop-files.yml b/.github/workflows/validate-desktop-files.yml index 1230268..a752e6e 100644 --- a/.github/workflows/validate-desktop-files.yml +++ b/.github/workflows/validate-desktop-files.yml @@ -18,7 +18,7 @@ jobs: image: ubuntu:25.10 steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Install desktop-file-utils run: | From d0fa882596f1a45bd8f98686ac3e2b06bde4fffe Mon Sep 17 00:00:00 2001 From: Daniel Fox Franke Date: Mon, 20 Apr 2026 09:12:52 -0400 Subject: [PATCH 05/10] feat(keyboard): add "swap with control" for caps lock key --- cosmic-settings/src/pages/input/keyboard/mod.rs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/cosmic-settings/src/pages/input/keyboard/mod.rs b/cosmic-settings/src/pages/input/keyboard/mod.rs index 22080f8..468ecbb 100644 --- a/cosmic-settings/src/pages/input/keyboard/mod.rs +++ b/cosmic-settings/src/pages/input/keyboard/mod.rs @@ -48,6 +48,7 @@ static CAPS_LOCK_OPTIONS: &[(&str, &str)] = &[ ("Backspace", "caps:backspace"), ("Super", "caps:super"), ("Control", "caps:ctrl_modifier"), + ("Swap with Control", "ctrl:swapcaps"), ]; #[derive(Clone, Debug)] @@ -151,11 +152,11 @@ impl SpecialKey { } } - pub fn prefix(self) -> &'static str { + pub fn prefixes(self) -> &'static [&'static str] { match self { - Self::Compose => "compose:", - Self::AlternateCharacters => "lv3:", - Self::CapsLock => "caps:", + Self::Compose => &["compose:"], + Self::AlternateCharacters => &["lv3:"], + Self::CapsLock => &["caps:", "ctrl:"], } } } @@ -508,10 +509,10 @@ impl Page { Message::SpecialCharacterSelect(id) => { if let Some(Context::SpecialCharacter(special_key)) = self.context { let options = self.xkb.options.as_deref().unwrap_or_default(); - let prefix = special_key.prefix(); + let prefixes = special_key.prefixes(); let new_options = options .split(',') - .filter(|x| !x.starts_with(prefix)) + .filter(|x| !prefixes.iter().any(|prefix| x.starts_with(prefix))) .chain(id) .join(","); @@ -607,13 +608,13 @@ impl Page { SpecialKey::AlternateCharacters => (ALTERNATE_CHARACTER_OPTIONS, None), SpecialKey::CapsLock => (CAPS_LOCK_OPTIONS, None), }; - let prefix = special_key.prefix(); + let prefixes = special_key.prefixes(); let current = self .xkb .options .iter() .flat_map(|x| x.split(',')) - .find(|x| x.starts_with(prefix)); + .find(|x| prefixes.iter().any(|prefix| x.starts_with(prefix))); // TODO layout default From c06b184ecf4356f06f73e8a90146c020ea8b41e1 Mon Sep 17 00:00:00 2001 From: Oleksiy Buell <89757188+olekawaii@users.noreply.github.com> Date: Mon, 20 Apr 2026 09:14:37 -0400 Subject: [PATCH 06/10] feat(workspaces): add workspace wrapping toggle --- .../src/pages/desktop/workspaces.rs | 27 +++++++++++++++++++ i18n/en/cosmic_settings.ftl | 3 +++ 2 files changed, 30 insertions(+) diff --git a/cosmic-settings/src/pages/desktop/workspaces.rs b/cosmic-settings/src/pages/desktop/workspaces.rs index b179693..6f5e1f2 100644 --- a/cosmic-settings/src/pages/desktop/workspaces.rs +++ b/cosmic-settings/src/pages/desktop/workspaces.rs @@ -20,6 +20,7 @@ pub enum Message { SetActionOnTyping(usize), SetWorkspaceMode(WorkspaceMode), SetWorkspaceLayout(WorkspaceLayout), + SetWorkspaceWraparound(bool), SetShowName(bool), SetShowNumber(bool), Surface(surface::Action), @@ -87,6 +88,7 @@ impl page::Page for Page { sections.insert(action_on_typing()), sections.insert(multi_behavior()), sections.insert(workspace_orientation()), + sections.insert(workspace_navigation()), ]) } @@ -125,6 +127,10 @@ impl Page { into_active_selection(&self.comp_workspace_config.action_on_typing); self.save_comp_config(); } + Message::SetWorkspaceWraparound(value) => { + self.comp_workspace_config.workspace_wraparound = value; + self.save_comp_config(); + } Message::SetShowName(value) => { self.show_workspace_name = value; if let Err(err) = self.config.set("show_workspace_name", value) { @@ -250,3 +256,24 @@ fn workspace_orientation() -> Section { .map(crate::pages::Message::DesktopWorkspaces) }) } + +fn workspace_navigation() -> Section { + crate::slab!(descriptions { + description = fl!("workspaces-navigation", "wraparound"); + }); + + Section::default() + .title(fl!("workspaces-navigation")) + .descriptions(descriptions) + .view::(move |_binder, page, section| { + let descriptions = §ion.descriptions; + settings::section() + .title(§ion.title) + .add(settings::item::builder(&descriptions[description]).toggler( + page.comp_workspace_config.workspace_wraparound, + Message::SetWorkspaceWraparound, + )) + .apply(Element::from) + .map(crate::pages::Message::DesktopWorkspaces) + }) +} diff --git a/i18n/en/cosmic_settings.ftl b/i18n/en/cosmic_settings.ftl index 735d892..535477b 100644 --- a/i18n/en/cosmic_settings.ftl +++ b/i18n/en/cosmic_settings.ftl @@ -521,6 +521,9 @@ workspaces-orientation = Workspaces orientation hot-corner = Hot Corner .top-left-corner = Enable top-left hot corner for Workspaces +workspaces-navigation = Navigation + .wraparound = Move between first and last workspace using keyboard shortcuts and gestures + ## Displays -requires-restart = Requires restart From 95a82c0d69c12c383acaf5c5ce14082871e63989 Mon Sep 17 00:00:00 2001 From: Lysander Treumann Date: Tue, 21 Apr 2026 15:01:27 +0200 Subject: [PATCH 07/10] Changes behavior of the panel/dock size slider - from: new size is committed as soon as the slider position is changed (triggers panel/dock restart), - to: new size is committed only when slider is released. --- cosmic-settings/src/pages/desktop/panel/inner.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/cosmic-settings/src/pages/desktop/panel/inner.rs b/cosmic-settings/src/pages/desktop/panel/inner.rs index 77d2d9b..9974e54 100644 --- a/cosmic-settings/src/pages/desktop/panel/inner.rs +++ b/cosmic-settings/src/pages/desktop/panel/inner.rs @@ -24,6 +24,7 @@ pub struct PageInner { pub(crate) panel_config: Option, pub opacity: f32, pub opacity_changing: bool, + pub size: PanelSize, pub outputs: Vec, pub anchors: Vec, pub backgrounds: Vec, @@ -41,6 +42,7 @@ impl Default for PageInner { panel_config: Option::default(), opacity: 0.0, opacity_changing: false, + size: PanelSize::M, outputs: vec![fl!("all-displays")], anchors: vec![ Anchor(PanelAnchor::Left).to_string(), @@ -207,7 +209,7 @@ pub(crate) fn style< text::body(fl!("small")).into(), slider( 0..=4, - match panel_config.size { + match inner.size { PanelSize::XS => 0, PanelSize::S => 1, PanelSize::M => 2, @@ -229,6 +231,7 @@ pub(crate) fn style< } }, ) + .on_release(Message::PanelSizeCommit) .width(Length::Fill) .apply(cosmic::widget::container) .max_width(250) @@ -420,6 +423,7 @@ pub enum Message { Output(usize), AnchorGap(bool), PanelSize(PanelSize), + PanelSizeCommit, Appearance(usize), ExtendToEdge(bool), OpacityRequest(f32), @@ -500,6 +504,7 @@ impl PageInner { if let Err(err) = default.write_entry(config) { tracing::error!(?err, "Error resetting panel config."); } + self.size.clone_from(&default.size); self.system_default = Some(default.clone()); self.panel_config.clone_from(&self.system_default); } else { @@ -598,7 +603,10 @@ impl PageInner { _ = panel_config.set_border_radius(helper, new_radius).unwrap(); } Message::PanelSize(size) => { - _ = panel_config.set_size(helper, size); + self.size = size; + } + Message::PanelSizeCommit => { + _ = panel_config.set_size(helper, self.size.clone()); // Reset any size overrides the user might have set _ = panel_config.set_size_center(helper, None); _ = panel_config.set_size_wings(helper, None); @@ -661,6 +669,7 @@ impl PageInner { } } Message::PanelConfig(c) => { + self.size = c.size.clone(); self.panel_config = Some(*c); return Task::none(); } From ba5fb65b44302d2aae5d969917d9f3d7b04c8d1e Mon Sep 17 00:00:00 2001 From: Lysander Treumann Date: Tue, 21 Apr 2026 17:04:55 +0200 Subject: [PATCH 08/10] Changes the PageInner.size field to have no explicit default. It is only initialized (not None) when PageInner.panel_config is initialized. This implementation fails faster and more verbose, when program is in an unintended state. --- cosmic-settings/src/pages/desktop/panel/inner.rs | 14 +++++++------- cosmic-settings/src/pages/desktop/panel/mod.rs | 2 ++ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/cosmic-settings/src/pages/desktop/panel/inner.rs b/cosmic-settings/src/pages/desktop/panel/inner.rs index 9974e54..d6b7574 100644 --- a/cosmic-settings/src/pages/desktop/panel/inner.rs +++ b/cosmic-settings/src/pages/desktop/panel/inner.rs @@ -22,9 +22,9 @@ use crate::pages::desktop::appearance::Roundness; pub struct PageInner { pub(crate) config_helper: Option, pub(crate) panel_config: Option, + pub size: Option, pub opacity: f32, pub opacity_changing: bool, - pub size: PanelSize, pub outputs: Vec, pub anchors: Vec, pub backgrounds: Vec, @@ -40,9 +40,9 @@ impl Default for PageInner { Self { config_helper: Option::default(), panel_config: Option::default(), + size: Option::default(), opacity: 0.0, opacity_changing: false, - size: PanelSize::M, outputs: vec![fl!("all-displays")], anchors: vec![ Anchor(PanelAnchor::Left).to_string(), @@ -209,7 +209,7 @@ pub(crate) fn style< text::body(fl!("small")).into(), slider( 0..=4, - match inner.size { + match inner.size.as_ref().expect("inner.size is None even though inner.panel_config is Some") { PanelSize::XS => 0, PanelSize::S => 1, PanelSize::M => 2, @@ -504,7 +504,7 @@ impl PageInner { if let Err(err) = default.write_entry(config) { tracing::error!(?err, "Error resetting panel config."); } - self.size.clone_from(&default.size); + self.size = Some(default.size.clone()); self.system_default = Some(default.clone()); self.panel_config.clone_from(&self.system_default); } else { @@ -603,10 +603,10 @@ impl PageInner { _ = panel_config.set_border_radius(helper, new_radius).unwrap(); } Message::PanelSize(size) => { - self.size = size; + self.size = Some(size); } Message::PanelSizeCommit => { - _ = panel_config.set_size(helper, self.size.clone()); + _ = panel_config.set_size(helper, self.size.as_ref().expect("PageInner.size is None even though it should be Some").clone()); // Reset any size overrides the user might have set _ = panel_config.set_size_center(helper, None); _ = panel_config.set_size_wings(helper, None); @@ -669,7 +669,7 @@ impl PageInner { } } Message::PanelConfig(c) => { - self.size = c.size.clone(); + self.size = Some(c.size.clone()); self.panel_config = Some(*c); return Task::none(); } diff --git a/cosmic-settings/src/pages/desktop/panel/mod.rs b/cosmic-settings/src/pages/desktop/panel/mod.rs index 4f98e64..7748618 100644 --- a/cosmic-settings/src/pages/desktop/panel/mod.rs +++ b/cosmic-settings/src/pages/desktop/panel/mod.rs @@ -79,6 +79,7 @@ impl Default for Page { // If the config is not present, it will be created with the default values and the name will not match (panel_config.name == "Panel").then_some(panel_config) }); + let size = panel_config.as_ref().map(|c| c.size.clone()); let system_default = cosmic::cosmic_config::Config::system( &format!("{}.Panel", cosmic_panel_config::NAME), CosmicPanelConfig::VERSION, @@ -98,6 +99,7 @@ impl Default for Page { inner: PageInner { config_helper, panel_config, + size, container_config, outputs_map: HashMap::new(), system_default, From 48eae39858a4926a0df0c011cff335b091c7394c Mon Sep 17 00:00:00 2001 From: Lysander Treumann Date: Tue, 21 Apr 2026 17:21:57 +0200 Subject: [PATCH 09/10] Incorporates format suggestions from 'cargo fmt --all --check', Improves error messages when PageInner.size is unexpectedly None --- cosmic-settings/src/pages/desktop/panel/inner.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/cosmic-settings/src/pages/desktop/panel/inner.rs b/cosmic-settings/src/pages/desktop/panel/inner.rs index d6b7574..bcd7bb3 100644 --- a/cosmic-settings/src/pages/desktop/panel/inner.rs +++ b/cosmic-settings/src/pages/desktop/panel/inner.rs @@ -209,7 +209,9 @@ pub(crate) fn style< text::body(fl!("small")).into(), slider( 0..=4, - match inner.size.as_ref().expect("inner.size is None even though inner.panel_config is Some") { + match inner.size.as_ref().expect( + "PageInner.size is None even though PageInner.panel_config is Some", + ) { PanelSize::XS => 0, PanelSize::S => 1, PanelSize::M => 2, @@ -606,7 +608,13 @@ impl PageInner { self.size = Some(size); } Message::PanelSizeCommit => { - _ = panel_config.set_size(helper, self.size.as_ref().expect("PageInner.size is None even though it should be Some").clone()); + _ = panel_config.set_size( + helper, + self.size + .as_ref() + .expect("PageInner.size is None even though it should be Some, since PageInner.panel_config is Some") + .clone() + ); // Reset any size overrides the user might have set _ = panel_config.set_size_center(helper, None); _ = panel_config.set_size_wings(helper, None); From 52ce463a592484e2e76aecd081df9e05b62ee976 Mon Sep 17 00:00:00 2001 From: Votre Nom Date: Wed, 22 Apr 2026 15:09:01 +0200 Subject: [PATCH 10/10] window-management: toggle for macOS-style window controls position MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a new toggler "Place buttons on the left (macOS style)" in *Desktop → Window Management → Window controls*, next to the existing show_maximize / show_minimize controls. When enabled, writes `WindowControlsPosition::Start` into the `CosmicTk` config (com.system76.CosmicTk); when disabled, writes `End` (default). All libcosmic-based applications rebuilt against a libcosmic that exposes `WindowControlsPosition` pick up the change live through the existing cosmic-config subscription. Includes: - new Message variant WindowControlsPositionStart(bool) + handler - `window-controls.position-start` fluent key added in en + fr locales - Cargo.toml: activate local [patch] override to libcosmic (dev only, not suitable for upstream merge) Requires: libcosmic >= 5c331935 (header_bar WindowControlsPosition). Co-Authored-By: Claude Opus 4.7 (1M context) --- Cargo.toml | 12 +++++----- .../src/pages/desktop/window_management.rs | 22 +++++++++++++++++++ i18n/en/cosmic_settings.ftl | 1 + i18n/fr/cosmic_settings.ftl | 1 + 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index c42187c..5a67aae 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -70,12 +70,12 @@ cosmic-client-toolkit = { git = "https://github.com/pop-os/cosmic-protocols//", # cosmic-settings-config = { git = "https://github.com/pop-os/cosmic-settings-daemon//", branch = "input_nobuild" } # For development and testing purposes -# [patch.'https://github.com/pop-os/libcosmic'] -# libcosmic = { path = "../libcosmic" } -# cosmic-config = { path = "../libcosmic/cosmic-config" } -# cosmic-theme = { path = "../libcosmic/cosmic-theme" } -# iced_futures = { path = "../libcosmic/iced/futures" } -# iced_winit = { path = "../libcosmic/iced/winit" } +[patch.'https://github.com/pop-os/libcosmic'] +libcosmic = { path = "../libcosmic" } +cosmic-config = { path = "../libcosmic/cosmic-config" } +cosmic-theme = { path = "../libcosmic/cosmic-theme" } +iced_futures = { path = "../libcosmic/iced/futures" } +iced_winit = { path = "../libcosmic/iced/winit" } # libcosmic = { git = "https://github.com/pop-os/libcosmic//" } # cosmic-config = { git = "https://github.com/pop-os/libcosmic//" } diff --git a/cosmic-settings/src/pages/desktop/window_management.rs b/cosmic-settings/src/pages/desktop/window_management.rs index b93e0f8..7b68acc 100644 --- a/cosmic-settings/src/pages/desktop/window_management.rs +++ b/cosmic-settings/src/pages/desktop/window_management.rs @@ -27,6 +27,7 @@ pub enum Message { ShowActiveWindowHint(bool), ShowMaximizeButton(bool), ShowMinimizeButton(bool), + WindowControlsPositionStart(bool), SetEdgeSnapThreshold(u32), Surface(surface::Action), } @@ -177,6 +178,19 @@ impl Page { .set_show_minimize(&config, value); } } + Message::WindowControlsPositionStart(left) => { + if let Ok(config) = cosmic::config::CosmicTk::config() { + let position = if left { + cosmic::widget::WindowControlsPosition::Start + } else { + cosmic::widget::WindowControlsPosition::End + }; + let _res = cosmic::config::COSMIC_TK + .write() + .unwrap() + .set_window_controls_position(&config, position); + } + } Message::ShowActiveWindowHint(value) => { self.show_active_hint = value; if let Err(err) = self.comp_config.set("active_hint", value) { @@ -274,6 +288,7 @@ pub fn window_controls() -> Section { maximize = fl!("window-controls", "maximize"); minimize = fl!("window-controls", "minimize"); active_window_hint = fl!("window-controls", "active-window-hint"); + position_start = fl!("window-controls", "position-start"); }); Section::default() @@ -296,6 +311,13 @@ pub fn window_controls() -> Section { settings::item::builder(&descriptions[minimize]) .toggler(cosmic::config::show_minimize(), Message::ShowMinimizeButton), ) + .add(settings::item::builder(&descriptions[position_start]).toggler( + matches!( + cosmic::config::window_controls_position(), + cosmic::widget::WindowControlsPosition::Start + ), + Message::WindowControlsPositionStart, + )) .apply(Element::from) .map(crate::pages::Message::WindowManagement) }) diff --git a/i18n/en/cosmic_settings.ftl b/i18n/en/cosmic_settings.ftl index 535477b..f5a614e 100644 --- a/i18n/en/cosmic_settings.ftl +++ b/i18n/en/cosmic_settings.ftl @@ -484,6 +484,7 @@ window-controls = Window controls .maximize = Show maximize button .minimize = Show minimize button .active-window-hint = Show active window hint + .position-start = Place buttons on the left (macOS style) focus-navigation = Focus navigation .focus-follows-cursor = Focus follows cursor diff --git a/i18n/fr/cosmic_settings.ftl b/i18n/fr/cosmic_settings.ftl index 419dc72..098a741 100644 --- a/i18n/fr/cosmic_settings.ftl +++ b/i18n/fr/cosmic_settings.ftl @@ -322,6 +322,7 @@ window-controls = Contrôles des fenêtres .maximize = Afficher le bouton maximiser .minimize = Afficher le bouton minimiser .active-window-hint = Afficher l'indice de la fenêtre active + .position-start = Placer les boutons à gauche (style macOS) focus-navigation = Navigation par le focus .focus-follows-cursor = Le focus suit le curseur .focus-follows-cursor-delay = Délai de suivi du focus en ms