From 405fddda2d74ef509997c09f40493c0422f99b10 Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Wed, 29 Apr 2026 11:54:20 -0400 Subject: [PATCH 01/29] wip: blur --- Cargo.lock | 143 ++++++-- Cargo.toml | 20 +- cosmic-app-list/src/app.rs | 345 ++++++++++-------- cosmic-applet-a11y/src/app.rs | 28 +- cosmic-applet-audio/src/lib.rs | 64 ++-- cosmic-applet-battery/Cargo.toml | 4 +- cosmic-applet-battery/src/app.rs | 29 +- cosmic-applet-bluetooth/src/app.rs | 28 +- cosmic-applet-input-sources/src/lib.rs | 26 +- cosmic-applet-minimize/src/lib.rs | 67 ++-- cosmic-applet-network/src/app.rs | 33 +- cosmic-applet-notifications/src/lib.rs | 24 +- cosmic-applet-power/src/lib.rs | 28 +- .../src/components/app.rs | 250 +++++++------ cosmic-applet-tiling/src/window.rs | 24 +- cosmic-applet-time/src/window.rs | 56 +-- .../src/components/app.rs | 30 +- cosmic-panel-button/src/lib.rs | 2 +- 18 files changed, 706 insertions(+), 495 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bdd37740..8026e49d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1308,7 +1308,7 @@ dependencies = [ [[package]] name = "cosmic-client-toolkit" version = "0.2.0" -source = "git+https://github.com/pop-os/cosmic-protocols//?branch=main#c253ec1d6804afbcdf250f5cc37ae1194bba7bd2" +source = "git+https://github.com/pop-os/cosmic-protocols//?rev=a7d2d7a#a7d2d7a6188425f699eaddf7a025617ce56068ae" dependencies = [ "bitflags 2.11.1", "cosmic-protocols", @@ -1331,7 +1331,7 @@ dependencies = [ [[package]] name = "cosmic-config" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#758c13723fc35b1d82d7fa4f35859c9f7f3c1b0c" +source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" dependencies = [ "atomicwrites", "cosmic-config-derive", @@ -1352,7 +1352,7 @@ dependencies = [ [[package]] name = "cosmic-config-derive" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#758c13723fc35b1d82d7fa4f35859c9f7f3c1b0c" +source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" dependencies = [ "quote", "syn", @@ -1446,7 +1446,7 @@ dependencies = [ [[package]] name = "cosmic-protocols" version = "0.2.0" -source = "git+https://github.com/pop-os/cosmic-protocols//?branch=main#c253ec1d6804afbcdf250f5cc37ae1194bba7bd2" +source = "git+https://github.com/pop-os/cosmic-protocols//?rev=a7d2d7a#a7d2d7a6188425f699eaddf7a025617ce56068ae" dependencies = [ "bitflags 2.11.1", "wayland-backend", @@ -1567,7 +1567,6 @@ dependencies = [ [[package]] name = "cosmic-settings-upower-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#1f225d19ce582423fe8713fc6669c51d162f256f" dependencies = [ "futures", "iced_futures", @@ -1605,13 +1604,14 @@ dependencies = [ [[package]] name = "cosmic-theme" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#758c13723fc35b1d82d7fa4f35859c9f7f3c1b0c" +source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" dependencies = [ "almost", "configparser", "cosmic-config", "csscolorparser", "dirs", + "hex_color", "palette", "ron 0.12.1", "serde", @@ -2706,7 +2706,7 @@ dependencies = [ "log", "presser", "thiserror 2.0.18", - "windows 0.62.2", + "windows 0.58.0", ] [[package]] @@ -2832,6 +2832,17 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hex_color" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d37f101bf4c633f7ca2e4b5e136050314503dd198e78e325ea602c327c484ef0" +dependencies = [ + "arrayvec", + "rand 0.8.6", + "serde", +] + [[package]] name = "hexf-parse" version = "0.2.1" @@ -2950,7 +2961,7 @@ dependencies = [ [[package]] name = "iced" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#758c13723fc35b1d82d7fa4f35859c9f7f3c1b0c" +source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" dependencies = [ "dnd", "iced_accessibility", @@ -2971,7 +2982,7 @@ dependencies = [ [[package]] name = "iced_accessibility" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#758c13723fc35b1d82d7fa4f35859c9f7f3c1b0c" +source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" dependencies = [ "accesskit", "accesskit_winit", @@ -2980,7 +2991,7 @@ dependencies = [ [[package]] name = "iced_core" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#758c13723fc35b1d82d7fa4f35859c9f7f3c1b0c" +source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" dependencies = [ "bitflags 2.11.1", "bytes", @@ -3005,7 +3016,7 @@ dependencies = [ [[package]] name = "iced_debug" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#758c13723fc35b1d82d7fa4f35859c9f7f3c1b0c" +source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" dependencies = [ "iced_core", "iced_futures", @@ -3015,7 +3026,7 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#758c13723fc35b1d82d7fa4f35859c9f7f3c1b0c" +source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" dependencies = [ "futures", "iced_core", @@ -3029,7 +3040,7 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#758c13723fc35b1d82d7fa4f35859c9f7f3c1b0c" +source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" dependencies = [ "bitflags 2.11.1", "bytemuck", @@ -3050,7 +3061,7 @@ dependencies = [ [[package]] name = "iced_program" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#758c13723fc35b1d82d7fa4f35859c9f7f3c1b0c" +source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" dependencies = [ "iced_graphics", "iced_runtime", @@ -3059,7 +3070,7 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#758c13723fc35b1d82d7fa4f35859c9f7f3c1b0c" +source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" dependencies = [ "iced_graphics", "iced_tiny_skia", @@ -3071,7 +3082,7 @@ dependencies = [ [[package]] name = "iced_runtime" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#758c13723fc35b1d82d7fa4f35859c9f7f3c1b0c" +source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" dependencies = [ "bytes", "cosmic-client-toolkit", @@ -3086,7 +3097,7 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#758c13723fc35b1d82d7fa4f35859c9f7f3c1b0c" +source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" dependencies = [ "bytemuck", "cosmic-text", @@ -3103,7 +3114,7 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#758c13723fc35b1d82d7fa4f35859c9f7f3c1b0c" +source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" dependencies = [ "as-raw-xcb-connection", "bitflags 2.11.1", @@ -3134,7 +3145,7 @@ dependencies = [ [[package]] name = "iced_widget" version = "0.14.2" -source = "git+https://github.com/pop-os/libcosmic#758c13723fc35b1d82d7fa4f35859c9f7f3c1b0c" +source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" dependencies = [ "cosmic-client-toolkit", "dnd", @@ -3152,7 +3163,7 @@ dependencies = [ [[package]] name = "iced_winit" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#758c13723fc35b1d82d7fa4f35859c9f7f3c1b0c" +source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" dependencies = [ "cosmic-client-toolkit", "cursor-icon", @@ -4010,7 +4021,7 @@ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libcosmic" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#758c13723fc35b1d82d7fa4f35859c9f7f3c1b0c" +source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" dependencies = [ "apply", "ashpd 0.12.3", @@ -4024,6 +4035,7 @@ dependencies = [ "cosmic-theme", "css-color", "derive_setters", + "enumflags2", "float-cmp 0.10.0", "freedesktop-desktop-entry", "futures", @@ -5375,6 +5387,8 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ + "libc", + "rand_chacha 0.3.1", "rand_core 0.6.4", ] @@ -5384,10 +5398,20 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ - "rand_chacha", + "rand_chacha 0.9.0", "rand_core 0.9.5", ] +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + [[package]] name = "rand_chacha" version = "0.9.0" @@ -5403,6 +5427,9 @@ name = "rand_core" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.17", +] [[package]] name = "rand_core" @@ -7368,6 +7395,16 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core 0.58.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows" version = "0.61.3" @@ -7411,14 +7448,27 @@ dependencies = [ "windows-core 0.62.2", ] +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", + "windows-strings 0.1.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows-core" version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ - "windows-implement", - "windows-interface", + "windows-implement 0.60.2", + "windows-interface 0.59.3", "windows-link 0.1.3", "windows-result 0.3.4", "windows-strings 0.4.2", @@ -7430,8 +7480,8 @@ version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ - "windows-implement", - "windows-interface", + "windows-implement 0.60.2", + "windows-interface 0.59.3", "windows-link 0.2.1", "windows-result 0.4.1", "windows-strings 0.5.1", @@ -7459,6 +7509,17 @@ dependencies = [ "windows-threading 0.2.1", ] +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "windows-implement" version = "0.60.2" @@ -7470,6 +7531,17 @@ dependencies = [ "syn", ] +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "windows-interface" version = "0.59.3" @@ -7513,6 +7585,15 @@ dependencies = [ "windows-link 0.2.1", ] +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-result" version = "0.3.4" @@ -7531,6 +7612,16 @@ dependencies = [ "windows-link 0.2.1", ] +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result 0.2.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows-strings" version = "0.4.2" diff --git a/Cargo.toml b/Cargo.toml index f97b6b28..8c94e4b8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,11 +25,11 @@ resolver = "3" [workspace.dependencies] anyhow = "1.0.102" -cctk = { git = "https://github.com/pop-os/cosmic-protocols", package = "cosmic-client-toolkit", rev = "d0e95be" } +cctk = { git = "https://github.com/pop-os/cosmic-protocols", package = "cosmic-client-toolkit", rev = "a7d2d7a" } cosmic-applets-config = { path = "cosmic-applets-config" } cosmic-protocols = { git = "https://github.com/pop-os/cosmic-protocols", default-features = false, features = [ "client", -], rev = "d0e95be" } +], rev = "a7d2d7a" } futures = "0.3" futures-util = "0.3" @@ -70,24 +70,20 @@ lto = "thin" [workspace.metadata.cargo-machete] ignored = ["libcosmic"] -# [patch."https://github.com/pop-os/libcosmic"] +[patch."https://github.com/pop-os/libcosmic"] # cosmic-config = { path = "../libcosmic/cosmic-config" } # libcosmic = { path = "../libcosmic" } # iced_futures = { path = "../libcosmic/iced/futures" } -# cosmic-config = { git = "https://github.com/pop-os/libcosmic//" } -# libcosmic = { git = "https://github.com/pop-os/libcosmic//" } -# iced_futures = { git = "https://github.com/pop-os/libcosmic//" } - -# [patch."https://github.com/pop-os/winit.git"] -# winit = { git = "https://github.com/rust-windowing/winit.git", rev = "241b7a80bba96c91fa3901729cd5dec66abb9be4" } -# winit = { path = "../winit" } +cosmic-config = { git = "https://github.com/pop-os/libcosmic//", branch = "theme-v2" } +libcosmic = { git = "https://github.com/pop-os/libcosmic//", branch = "theme-v2" } +iced_futures = { git = "https://github.com/pop-os/libcosmic//", branch = "theme-v2" } [patch."https://github.com/smithay/client-toolkit.git"] sctk = { package = "smithay-client-toolkit", version = "0.20.0" } [patch."https://github.com/pop-os/cosmic-protocols"] -cosmic-protocols = { git = "https://github.com/pop-os/cosmic-protocols//", branch = "main" } -cosmic-client-toolkit = { git = "https://github.com/pop-os/cosmic-protocols//", branch = "main" } +cosmic-protocols = { git = "https://github.com/pop-os/cosmic-protocols//", rev = "a7d2d7a" } +cosmic-client-toolkit = { git = "https://github.com/pop-os/cosmic-protocols//", rev = "a7d2d7a" } # [patch.'https://github.com/pop-os/dbus-settings-bindings'] # cosmic-dbus-networkmanager = { path = "../dbus-settings-bindings/networkmanager" } diff --git a/cosmic-app-list/src/app.rs b/cosmic-app-list/src/app.rs index 932ffd6c..50dd375b 100755 --- a/cosmic-app-list/src/app.rs +++ b/cosmic-app-list/src/app.rs @@ -906,44 +906,52 @@ impl cosmic::Application for CosmicAppList { .iter() .chain(self.pinned_list.iter()) .find(|t| t.id == id) + .cloned() { - let Some(rectangle) = self.rectangles.get(&toplevel_group.id.into()) else { + let Some(rectangle) = self.rectangles.get(&toplevel_group.id.into()).copied() + else { tracing::error!("No rectangle found for toplevel group"); return Task::none(); }; + let popup_task = + cosmic::surface::surface_task(cosmic::surface::action::app_popup( + move |app: &mut Self| { + let new_id = window::Id::unique(); + app.popup = Some(Popup { + parent: parent_window_id, + id: new_id, + dock_item: toplevel_group.clone(), + popup_type: PopupType::RightClickMenu, + }); - let new_id = window::Id::unique(); - self.popup = Some(Popup { - parent: parent_window_id, - id: new_id, - dock_item: toplevel_group.clone(), - popup_type: PopupType::RightClickMenu, - }); - - let mut popup_settings = self.core.applet.get_popup_settings( - parent_window_id, - new_id, - None, - None, - None, - ); - let iced::Rectangle { - x, - y, - width, - height, - } = *rectangle; - popup_settings.positioner.anchor_rect = iced::Rectangle:: { - x: x as i32, - y: y as i32, - width: width as i32, - height: height as i32, - }; + let mut popup_settings = app.core.applet.get_popup_settings( + parent_window_id, + new_id, + None, + None, + None, + ); + let iced::Rectangle { + x, + y, + width, + height, + } = rectangle; + popup_settings.positioner.anchor_rect = iced::Rectangle:: { + x: x as i32, + y: y as i32, + width: width as i32, + height: height as i32, + }; + popup_settings + }, + None, + )); let gpu_update = Task::perform(try_get_gpus(), |gpus| { cosmic::Action::App(Message::GpuRequest(gpus)) }); - return Task::batch([gpu_update, get_popup(popup_settings)]); + return Task::batch([gpu_update, popup_task]); } } Message::ToplevelListPopup(id, parent_window_id) => { @@ -974,10 +982,10 @@ impl cosmic::Application for CosmicAppList { } } - let Some(rectangle) = self.rectangles.get(&toplevel_group.id.into()) else { + let Some(rectangle) = self.rectangles.get(&toplevel_group.id.into()).copied() + else { return Task::none(); }; - let new_id = window::Id::unique(); self.popup = Some(Popup { parent: parent_window_id, @@ -985,48 +993,55 @@ impl cosmic::Application for CosmicAppList { dock_item: toplevel_group.clone(), popup_type: PopupType::ToplevelList, }); + let popup_task = + cosmic::surface::surface_task(cosmic::surface::action::app_popup( + move |app: &mut Self| { + let mut popup_settings = app.core.applet.get_popup_settings( + parent_window_id, + new_id, + None, + None, + None, + ); + let iced::Rectangle { + x, + y, + width, + height, + } = rectangle; + popup_settings.positioner.anchor_rect = iced::Rectangle:: { + x: x as i32, + y: y as i32, + width: width as i32, + height: height as i32, + }; + let max_windows = 7.0; + let window_spacing = 8.0; + popup_settings.positioner.size_limits = match app.core.applet.anchor + { + PanelAnchor::Right | PanelAnchor::Left => Limits::NONE + .min_width(100.0) + .min_height(30.0) + .max_width(window_spacing * 2.0 + TOPLEVEL_BUTTON_WIDTH) + .max_height( + TOPLEVEL_BUTTON_HEIGHT * max_windows + + window_spacing * (max_windows + 1.0), + ), + PanelAnchor::Bottom | PanelAnchor::Top => Limits::NONE + .min_width(30.0) + .min_height(100.0) + .max_width( + TOPLEVEL_BUTTON_WIDTH * max_windows + + window_spacing * (max_windows + 1.0), + ) + .max_height(window_spacing * 2.0 + TOPLEVEL_BUTTON_HEIGHT), + }; + popup_settings + }, + None, + )); - let mut popup_settings = self.core.applet.get_popup_settings( - parent_window_id, - new_id, - None, - None, - None, - ); - let iced::Rectangle { - x, - y, - width, - height, - } = *rectangle; - popup_settings.positioner.anchor_rect = iced::Rectangle:: { - x: x as i32, - y: y as i32, - width: width as i32, - height: height as i32, - }; - let max_windows = 7.0; - let window_spacing = 8.0; - popup_settings.positioner.size_limits = match self.core.applet.anchor { - PanelAnchor::Right | PanelAnchor::Left => Limits::NONE - .min_width(100.0) - .min_height(30.0) - .max_width(window_spacing * 2.0 + TOPLEVEL_BUTTON_WIDTH) - .max_height( - TOPLEVEL_BUTTON_HEIGHT * max_windows - + window_spacing * (max_windows + 1.0), - ), - PanelAnchor::Bottom | PanelAnchor::Top => Limits::NONE - .min_width(30.0) - .min_height(100.0) - .max_width( - TOPLEVEL_BUTTON_WIDTH * max_windows - + window_spacing * (max_windows + 1.0), - ) - .max_height(window_spacing * 2.0 + TOPLEVEL_BUTTON_HEIGHT), - }; - - return get_popup(popup_settings); + return popup_task; } } Message::ToplevelHoverChanged(handle, entering) => { @@ -1590,52 +1605,62 @@ impl cosmic::Application for CosmicAppList { if create_new { let new_id = window::Id::unique(); self.overflow_active_popup = Some(new_id); - let rectangle = self.rectangles.get(&DockItemId::ActiveOverflow); - let mut popup_settings = self.core.applet.get_popup_settings( - self.core.main_window_id().unwrap(), - new_id, - None, - None, - None, - ); - if let Some(iced::Rectangle { + let Some(iced::Rectangle { x, y, width, height, - }) = rectangle - { - popup_settings.positioner.anchor_rect = iced::Rectangle:: { - x: *x as i32, - y: *y as i32, - width: *width as i32, - height: *height as i32, - }; - } - let applet_suggested_size = self.core.applet.suggested_size(false).0 - + 2 * self.core.applet.suggested_padding(false).0; - let (_favorite_popup_cutoff, active_popup_cutoff) = - self.panel_overflow_lengths(); - let popup_applet_count = - self.active_list.len().saturating_sub( - (active_popup_cutoff.unwrap_or_default()).saturating_sub(1), - ) as f32; - let popup_applet_size = applet_suggested_size as f32 * popup_applet_count - + 4.0 * (popup_applet_count - 1.); - let (max_width, max_height) = match self.core.applet.anchor { - PanelAnchor::Top | PanelAnchor::Bottom => { - (popup_applet_size, applet_suggested_size as f32) - } - PanelAnchor::Left | PanelAnchor::Right => { - (applet_suggested_size as f32, popup_applet_size) - } + }) = self.rectangles.get(&DockItemId::ActiveOverflow).copied() + else { + return Task::none(); }; - popup_settings.positioner.size_limits = Limits::NONE - .max_width(max_width) - .min_width(1.) - .max_height(max_height) - .min_height(1.); - cmds.push(get_popup(popup_settings)); + + let popup_task = + cosmic::surface::surface_task(cosmic::surface::action::app_popup( + move |app: &mut Self| { + let mut popup_settings = app.core.applet.get_popup_settings( + app.core.main_window_id().unwrap(), + new_id, + None, + None, + None, + ); + + popup_settings.positioner.anchor_rect = iced::Rectangle:: { + x: x as i32, + y: y as i32, + width: width as i32, + height: height as i32, + }; + + let applet_suggested_size = app.core.applet.suggested_size(false).0 + + 2 * app.core.applet.suggested_padding(false).0; + let (_favorite_popup_cutoff, active_popup_cutoff) = + app.panel_overflow_lengths(); + let popup_applet_count = app.active_list.len().saturating_sub( + (active_popup_cutoff.unwrap_or_default()).saturating_sub(1), + ) as f32; + let popup_applet_size = applet_suggested_size as f32 + * popup_applet_count + + 4.0 * (popup_applet_count - 1.); + let (max_width, max_height) = match app.core.applet.anchor { + PanelAnchor::Top | PanelAnchor::Bottom => { + (popup_applet_size, applet_suggested_size as f32) + } + PanelAnchor::Left | PanelAnchor::Right => { + (applet_suggested_size as f32, popup_applet_size) + } + }; + popup_settings.positioner.size_limits = Limits::NONE + .max_width(max_width) + .min_width(1.) + .max_height(max_height) + .min_height(1.); + popup_settings + }, + None, + )); + cmds.push(popup_task); } return Task::batch(cmds); } @@ -1647,52 +1672,62 @@ impl cosmic::Application for CosmicAppList { if create_new { let new_id = window::Id::unique(); self.overflow_favorites_popup = Some(new_id); - let rectangle = self.rectangles.get(&DockItemId::FavoritesOverflow); - let mut popup_settings = self.core.applet.get_popup_settings( - self.core.main_window_id().unwrap(), - new_id, - None, - None, - None, - ); - if let Some(iced::Rectangle { + let Some(iced::Rectangle { x, y, width, height, - }) = rectangle - { - popup_settings.positioner.anchor_rect = iced::Rectangle:: { - x: *x as i32, - y: *y as i32, - width: *width as i32, - height: *height as i32, - }; - } - let applet_suggested_size = self.core.applet.suggested_size(false).0 - + 2 * self.core.applet.suggested_padding(false).0; - let (favorite_popup_cutoff, _active_popup_cutoff) = - self.panel_overflow_lengths(); - let popup_applet_count = - self.pinned_list.len().saturating_sub( - favorite_popup_cutoff.unwrap_or_default().saturating_sub(1), - ) as f32; - let popup_applet_size = applet_suggested_size as f32 * popup_applet_count - + 4.0 * (popup_applet_count - 1.); - let (max_width, max_height) = match self.core.applet.anchor { - PanelAnchor::Top | PanelAnchor::Bottom => { - (popup_applet_size, applet_suggested_size as f32) - } - PanelAnchor::Left | PanelAnchor::Right => { - (applet_suggested_size as f32, popup_applet_size) - } + }) = self.rectangles.get(&DockItemId::FavoritesOverflow).copied() + else { + return Task::none(); }; - popup_settings.positioner.size_limits = Limits::NONE - .max_width(max_width) - .min_width(1.) - .max_height(max_height) - .min_height(1.); - cmds.push(get_popup(popup_settings)); + + let popup_task = + cosmic::surface::surface_task(cosmic::surface::action::app_popup( + move |app: &mut Self| { + let mut popup_settings = app.core.applet.get_popup_settings( + app.core.main_window_id().unwrap(), + new_id, + None, + None, + None, + ); + + popup_settings.positioner.anchor_rect = iced::Rectangle:: { + x: x as i32, + y: y as i32, + width: width as i32, + height: height as i32, + }; + + let applet_suggested_size = app.core.applet.suggested_size(false).0 + + 2 * app.core.applet.suggested_padding(false).0; + let (favorite_popup_cutoff, _active_popup_cutoff) = + app.panel_overflow_lengths(); + let popup_applet_count = app.pinned_list.len().saturating_sub( + favorite_popup_cutoff.unwrap_or_default().saturating_sub(1), + ) as f32; + let popup_applet_size = applet_suggested_size as f32 + * popup_applet_count + + 4.0 * (popup_applet_count - 1.); + let (max_width, max_height) = match app.core.applet.anchor { + PanelAnchor::Top | PanelAnchor::Bottom => { + (popup_applet_size, applet_suggested_size as f32) + } + PanelAnchor::Left | PanelAnchor::Right => { + (applet_suggested_size as f32, popup_applet_size) + } + }; + popup_settings.positioner.size_limits = Limits::NONE + .max_width(max_width) + .min_width(1.) + .max_height(max_height) + .min_height(1.); + popup_settings + }, + None, + )); + cmds.push(popup_task); } return Task::batch(cmds); } @@ -2200,7 +2235,7 @@ impl cosmic::Application for CosmicAppList { //TODO: move style to libcosmic .class(theme::Container::custom(|theme| { let cosmic = theme.cosmic(); - let component = &cosmic.background.component; + let component = &cosmic.background(theme.transparent).component; container::Style { icon_color: Some(component.on.into()), text_color: Some(component.on.into()), diff --git a/cosmic-applet-a11y/src/app.rs b/cosmic-applet-a11y/src/app.rs index ad5f2a1e..a20551b0 100644 --- a/cosmic-applet-a11y/src/app.rs +++ b/cosmic-applet-a11y/src/app.rs @@ -133,20 +133,26 @@ impl cosmic::Application for CosmicA11yApplet { } Message::TogglePopup => { if let Some(p) = self.popup.take() { - return destroy_popup(p); + return cosmic::surface::surface_task(cosmic::surface::action::destroy_popup( + p, + )); } else { - let new_id = window::Id::unique(); - self.popup.replace(new_id); + return cosmic::surface::surface_task(cosmic::surface::action::app_popup( + |app: &mut CosmicA11yApplet| { + let new_id = window::Id::unique(); + app.popup.replace(new_id); - let popup_settings = self.core.applet.get_popup_settings( - self.core.main_window_id().unwrap(), - new_id, - Some((1, 1)), + let popup_settings = app.core.applet.get_popup_settings( + app.core.main_window_id().unwrap(), + new_id, + Some((1, 1)), + None, + None, + ); + popup_settings + }, None, - None, - ); - - return get_popup(popup_settings); + )); } } Message::CloseRequested(id) => { diff --git a/cosmic-applet-audio/src/lib.rs b/cosmic-applet-audio/src/lib.rs index 9bd585d9..e0c12631 100644 --- a/cosmic-applet-audio/src/lib.rs +++ b/cosmic-applet-audio/src/lib.rs @@ -290,39 +290,47 @@ impl cosmic::Application for Audio { Message::Ignore => {} Message::TogglePopup => { if let Some(p) = self.popup.take() { - return destroy_popup(p); + return cosmic::surface::surface_task(cosmic::surface::action::destroy_popup( + p, + )); } else { - let new_id = window::Id::unique(); - self.popup.replace(new_id); + return cosmic::surface::surface_task(cosmic::surface::action::app_popup( + |app: &mut Self| { + let new_id = window::Id::unique(); + app.popup.replace(new_id); - (self.max_sink_volume, self.sink_breakpoints) = if amplification_sink() { - (150, &[100][..]) - } else { - (100, &[][..]) - }; + (app.max_sink_volume, app.sink_breakpoints) = if amplification_sink() { + (150, &[100][..]) + } else { + (100, &[][..]) + }; - (self.max_source_volume, self.source_breakpoints) = if amplification_source() { - (150, &[100][..]) - } else { - (100, &[][..]) - }; + (app.max_source_volume, app.source_breakpoints) = + if amplification_source() { + (150, &[100][..]) + } else { + (100, &[][..]) + }; - let mut popup_settings = self.core.applet.get_popup_settings( - self.core.main_window_id().unwrap(), - new_id, + let popup_settings = app.core.applet.get_popup_settings( + app.core.main_window_id().unwrap(), + new_id, + None, + None, + None, + ); + if let Some(r) = app.rectangle { + popup_settings.positioner.anchor_rect = Rectangle { + x: r.x as i32, + y: r.y as i32, + width: r.width as i32, + height: r.height as i32, + }; + } + popup_settings + }, None, - None, - None, - ); - if let Some(r) = self.rectangle { - popup_settings.positioner.anchor_rect = Rectangle { - x: r.x as i32, - y: r.y as i32, - width: r.width as i32, - height: r.height as i32, - }; - } - return get_popup(popup_settings); + )); } } diff --git a/cosmic-applet-battery/Cargo.toml b/cosmic-applet-battery/Cargo.toml index 8c8f6e1d..14549ea4 100644 --- a/cosmic-applet-battery/Cargo.toml +++ b/cosmic-applet-battery/Cargo.toml @@ -24,8 +24,8 @@ zbus.workspace = true serde.workspace = true [dependencies.cosmic-settings-upower-subscription] -git = "https://github.com/pop-os/cosmic-settings" -# path = "../../cosmic-settings/subscriptions/upower" +# git = "https://github.com/pop-os/cosmic-settings" +path = "../../cosmic-settings/subscriptions/upower" [dependencies.cosmic-settings-daemon-subscription] git = "https://github.com/pop-os/cosmic-settings" diff --git a/cosmic-applet-battery/src/app.rs b/cosmic-applet-battery/src/app.rs index c210d51a..24b85b0d 100644 --- a/cosmic-applet-battery/src/app.rs +++ b/cosmic-applet-battery/src/app.rs @@ -365,23 +365,30 @@ impl cosmic::Application for CosmicBatteryApplet { let _ = tx.send(KeyboardBacklightRequest::Get); } - let new_id = window::Id::unique(); - self.popup.replace(new_id); - - let popup_settings = self.core.applet.get_popup_settings( - self.core.main_window_id().unwrap(), - new_id, - Some((1, 1)), - None, - None, - ); if let Some(tx) = self.power_profile_sender.as_ref() { let _ = tx.send(PowerProfileRequest::Get); } if let Some(tx) = self.update_trigger.as_ref() { let _ = tx.send(()); } - let mut tasks = vec![get_popup(popup_settings)]; + let mut tasks = vec![cosmic::surface::surface_task( + cosmic::surface::action::app_popup( + |app: &mut Self| { + let new_id = window::Id::unique(); + app.popup.replace(new_id); + + let popup_settings = app.core.applet.get_popup_settings( + app.core.main_window_id().unwrap(), + new_id, + Some((1, 1)), + None, + None, + ); + popup_settings + }, + None, + ), + )]; if let Some(tx) = &self.settings_daemon_sender { let _ = tx.send(settings_daemon::Request::GetDisplayBrightness); let _ = tx.send(settings_daemon::Request::GetMaxDisplayBrightness); diff --git a/cosmic-applet-bluetooth/src/app.rs b/cosmic-applet-bluetooth/src/app.rs index e27af8ef..08d2ca47 100644 --- a/cosmic-applet-bluetooth/src/app.rs +++ b/cosmic-applet-bluetooth/src/app.rs @@ -120,20 +120,24 @@ impl cosmic::Application for CosmicBluetoothApplet { } else { set_discovery(true); - // TODO request update of state maybe - let new_id = window::Id::unique(); - self.popup.replace(new_id); - - let popup_settings = self.core.applet.get_popup_settings( - self.core.main_window_id().unwrap(), - new_id, - None, - None, - None, - ); + let get_popup_task = + cosmic::surface::surface_task(cosmic::surface::action::app_popup( + move |app: &mut Self| { + let new_id = window::Id::unique(); + app.popup.replace(new_id); + app.core.applet.get_popup_settings( + app.core.main_window_id().unwrap(), + new_id, + None, + None, + None, + ) + }, + None, + )); return Task::batch([ - get_popup(popup_settings), + get_popup_task, cosmic::task::future(set_tick(Duration::from_secs(3))) .map(|()| cosmic::Action::App(Message::Ignore)), ]); diff --git a/cosmic-applet-input-sources/src/lib.rs b/cosmic-applet-input-sources/src/lib.rs index 93e84283..0f448a94 100644 --- a/cosmic-applet-input-sources/src/lib.rs +++ b/cosmic-applet-input-sources/src/lib.rs @@ -142,19 +142,23 @@ impl cosmic::Application for Window { match message { Message::TogglePopup => { return if let Some(p) = self.popup.take() { - destroy_popup(p) + return crate::surface::surface_task(crate::surface::action::destroy_popup(p)); } else { - let new_id = Id::unique(); - self.popup.replace(new_id); - let popup_settings = self.core.applet.get_popup_settings( - self.core.main_window_id().unwrap(), - new_id, + return crate::surface::surface_task(crate::surface::action::app_popup( + |app: &mut Window| { + let new_id = Id::unique(); + app.popup.replace(new_id); + let popup_settings = app.core.applet.get_popup_settings( + app.core.main_window_id().unwrap(), + new_id, + None, + None, + None, + ); + popup_settings + }, None, - None, - None, - ); - - get_popup(popup_settings) + )); }; } Message::PopupClosed(id) => { diff --git a/cosmic-applet-minimize/src/lib.rs b/cosmic-applet-minimize/src/lib.rs index e40a7551..b4390cbb 100644 --- a/cosmic-applet-minimize/src/lib.rs +++ b/cosmic-applet-minimize/src/lib.rs @@ -248,40 +248,47 @@ impl cosmic::Application for Minimize { } Message::OpenOverflowPopup => { if let Some(id) = self.overflow_popup.take() { - return destroy_popup(id); + return cosmic::surface::surface_task(cosmic::surface::action::destroy_popup( + id, + )); } else { - let new_id = window::Id::unique(); - let pos = self.max_icon_count().unwrap_or_default(); + return cosmic::surface::surface_task(cosmic::surface::action::app_popup( + |app: &mut Self| { + let new_id = window::Id::unique(); + let pos = app.max_icon_count().unwrap_or_default(); - self.overflow_popup = Some(new_id); - let icon_size = self.core.applet.suggested_size(true).0 as u32 - + 2 * self.core.applet.suggested_padding(true).1 as u32; - let spacing = self.core.system_theme().cosmic().space_xxs() as u32; - let major_axis_len = (icon_size + spacing) * (pos.saturating_sub(1) as u32); - let rectangle = match self.core.applet.anchor { - PanelAnchor::Top | PanelAnchor::Bottom => iced::Rectangle { - x: major_axis_len as i32, - y: 0, - width: icon_size as i32, - height: icon_size as i32, + app.overflow_popup = Some(new_id); + let icon_size = app.core.applet.suggested_size(true).0 as u32 + + 2 * app.core.applet.suggested_padding(true).1 as u32; + let spacing = app.core.system_theme().cosmic().space_xxs() as u32; + let major_axis_len = + (icon_size + spacing) * (pos.saturating_sub(1) as u32); + let rectangle = match app.core.applet.anchor { + PanelAnchor::Top | PanelAnchor::Bottom => iced::Rectangle { + x: major_axis_len as i32, + y: 0, + width: icon_size as i32, + height: icon_size as i32, + }, + PanelAnchor::Left | PanelAnchor::Right => iced::Rectangle { + x: 0, + y: major_axis_len as i32, + width: icon_size as i32, + height: icon_size as i32, + }, + }; + let mut popup_settings = app.core.applet.get_popup_settings( + app.core.main_window_id().unwrap(), + new_id, + None, + None, + None, + ); + popup_settings.positioner.anchor_rect = rectangle; + popup_settings }, - PanelAnchor::Left | PanelAnchor::Right => iced::Rectangle { - x: 0, - y: major_axis_len as i32, - width: icon_size as i32, - height: icon_size as i32, - }, - }; - let mut popup_settings = self.core.applet.get_popup_settings( - self.core.main_window_id().unwrap(), - new_id, None, - None, - None, - ); - popup_settings.positioner.anchor_rect = rectangle; - - return get_popup(popup_settings); + )); } } Message::CloseOverflowPopup => todo!(), diff --git a/cosmic-applet-network/src/app.rs b/cosmic-applet-network/src/app.rs index 0b6dbe24..805cec41 100644 --- a/cosmic-applet-network/src/app.rs +++ b/cosmic-applet-network/src/app.rs @@ -741,22 +741,29 @@ impl cosmic::Application for CosmicNetworkApplet { ); tasks.push(secret_agent_task(my_id).map(Message::SecretAgent)); } - // TODO request update of state maybe - let new_id = window::Id::unique(); - self.popup.replace(new_id); - let popup_settings = self.core.applet.get_popup_settings( - self.core.main_window_id().unwrap(), - new_id, - None, - None, - None, - ); + tasks.push(system_conn().map(cosmic::Action::App)); - tasks.push(system_conn()); - tasks.push(get_popup(popup_settings)); + tasks.push(cosmic::surface::surface_task( + cosmic::surface::action::app_popup( + |app: &mut Self| { + let new_id = window::Id::unique(); + app.popup.replace(new_id); - return Task::batch(tasks).map(cosmic::Action::App); + let popup_settings = app.core.applet.get_popup_settings( + app.core.main_window_id().unwrap(), + new_id, + None, + None, + None, + ); + popup_settings + }, + None, + ), + )); + + return Task::batch(tasks); } } Message::ToggleAirplaneMode(enabled) => { diff --git a/cosmic-applet-notifications/src/lib.rs b/cosmic-applet-notifications/src/lib.rs index 438696b9..896b72c9 100644 --- a/cosmic-applet-notifications/src/lib.rs +++ b/cosmic-applet-notifications/src/lib.rs @@ -157,18 +157,22 @@ impl cosmic::Application for Notifications { if let Some(p) = self.popup.take() { return destroy_popup(p); } else { - let new_id = window::Id::unique(); - self.popup.replace(new_id); + return cosmic::surface::surface_task(cosmic::surface::action::app_popup( + |app: &mut Self| { + let new_id = window::Id::unique(); + app.popup.replace(new_id); - let popup_settings = self.core.applet.get_popup_settings( - self.core.main_window_id().unwrap(), - new_id, + let popup_settings = app.core.applet.get_popup_settings( + app.core.main_window_id().unwrap(), + new_id, + None, + None, + None, + ); + popup_settings + }, None, - None, - None, - ); - - return get_popup(popup_settings); + )); } } Message::DoNotDisturb(b) => { diff --git a/cosmic-applet-power/src/lib.rs b/cosmic-applet-power/src/lib.rs index 67725fbc..3ef10d71 100644 --- a/cosmic-applet-power/src/lib.rs +++ b/cosmic-applet-power/src/lib.rs @@ -120,20 +120,26 @@ impl cosmic::Application for Power { match message { Message::TogglePopup => { if let Some(p) = self.popup.take() { - return destroy_popup(p); + return cosmic::surface::surface_task(cosmic::surface::action::destroy_popup( + p, + )); } else { - let new_id = window::Id::unique(); - self.popup.replace(new_id); + return cosmic::surface::surface_task(cosmic::surface::action::app_popup( + |app: &mut Power| { + let new_id = window::Id::unique(); + app.popup.replace(new_id); - let popup_settings = self.core.applet.get_popup_settings( - self.core.main_window_id().unwrap(), - new_id, + let popup_settings = app.core.applet.get_popup_settings( + app.core.main_window_id().unwrap(), + new_id, + None, + None, + None, + ); + popup_settings + }, None, - None, - None, - ); - - return get_popup(popup_settings); + )); } } Message::OpenSettings => { diff --git a/cosmic-applet-status-area/src/components/app.rs b/cosmic-applet-status-area/src/components/app.rs index 1071d7ac..3c5272c5 100644 --- a/cosmic-applet-status-area/src/components/app.rs +++ b/cosmic-applet-status-area/src/components/app.rs @@ -237,38 +237,48 @@ impl cosmic::Application for App { if let Some(popup_id) = self.popup.take() { cmds.push(destroy_popup(popup_id)); } - let popup_id = self.next_popup_id(); - let i = self.menus.keys().position(|&i| i == id).unwrap(); - let (i, parent) = self - .overflow_index() - .and_then(|overflow_i| { - if overflow_i <= i { - Some(i - overflow_i).zip(self.overflow_popup) - } else { - Some((i, self.core.main_window_id().unwrap())) - } - }) - .unwrap_or((i, self.core.main_window_id().unwrap())); - let mut popup_settings = self - .core - .applet - .get_popup_settings(parent, popup_id, None, None, None); - self.popup = Some(popup_id); + let popup_task = + cosmic::surface::surface_task(cosmic::surface::action::app_popup( + move |app: &mut Self| { + let popup_id = app.next_popup_id(); + let i = app.menus.keys().position(|&i| i == id).unwrap(); + let (i, parent) = app + .overflow_index() + .and_then(|overflow_i| { + if overflow_i <= i { + Some(i - overflow_i).zip(app.overflow_popup) + } else { + Some((i, app.core.main_window_id().unwrap())) + } + }) + .unwrap_or((i, app.core.main_window_id().unwrap())); - if matches!( - self.core.applet.anchor, - PanelAnchor::Left | PanelAnchor::Right - ) { - let suggested_size = self.core.applet.suggested_size(false).1 - + 2 * self.core.applet.suggested_padding(false).1; - popup_settings.positioner.anchor_rect.y = i as i32 * suggested_size as i32; - } else { - let suggested_size = self.core.applet.suggested_size(false).0 - + 2 * self.core.applet.suggested_padding(false).1; - popup_settings.positioner.anchor_rect.x = i as i32 * suggested_size as i32; - } - cmds.push(get_popup(popup_settings)); + let mut popup_settings = app + .core + .applet + .get_popup_settings(parent, popup_id, None, None, None); + app.popup = Some(popup_id); + + if matches!( + app.core.applet.anchor, + PanelAnchor::Left | PanelAnchor::Right + ) { + let suggested_size = app.core.applet.suggested_size(false).1 + + 2 * app.core.applet.suggested_padding(false).1; + popup_settings.positioner.anchor_rect.y = + i as i32 * suggested_size as i32; + } else { + let suggested_size = app.core.applet.suggested_size(false).0 + + 2 * app.core.applet.suggested_padding(false).1; + popup_settings.positioner.anchor_rect.x = + i as i32 * suggested_size as i32; + } + popup_settings + }, + None, + )); + cmds.push(popup_task); return app::Task::batch(cmds); } else if let Some(popup_id) = self.popup { self.menus[&id].closed(); @@ -326,39 +336,48 @@ impl cosmic::Application for App { } else { return Task::none(); } - let popup_id = self.next_popup_id(); - let i = self.menus.keys().position(|&i| i == id).unwrap(); + let popup_task = cosmic::surface::surface_task(cosmic::surface::action::app_popup( + move |app: &mut Self| { + let popup_id = app.next_popup_id(); + let i = app.menus.keys().position(|&i| i == id).unwrap(); - let (i, parent) = self - .overflow_index() - .and_then(|overflow_i| { - if overflow_i <= i { - Some(i - overflow_i).zip(self.overflow_popup) + let (i, parent) = app + .overflow_index() + .and_then(|overflow_i| { + if overflow_i <= i { + Some(i - overflow_i).zip(app.overflow_popup) + } else { + Some((i, app.core.main_window_id().unwrap())) + } + }) + .unwrap_or((i, app.core.main_window_id().unwrap())); + + let mut popup_settings = app + .core + .applet + .get_popup_settings(parent, popup_id, None, None, None); + app.popup = Some(popup_id); + + if matches!( + app.core.applet.anchor, + PanelAnchor::Left | PanelAnchor::Right + ) { + let suggested_size = app.core.applet.suggested_size(true).1 + + 2 * app.core.applet.suggested_padding(true).1; + popup_settings.positioner.anchor_rect.y = + i as i32 * suggested_size as i32; } else { - Some((i, self.core.main_window_id().unwrap())) + let suggested_size = app.core.applet.suggested_size(true).0 + + 2 * app.core.applet.suggested_padding(true).0; + popup_settings.positioner.anchor_rect.x = + i as i32 * suggested_size as i32; } - }) - .unwrap_or((i, self.core.main_window_id().unwrap())); + popup_settings + }, + None, + )); + cmds.push(popup_task); - let mut popup_settings = self - .core - .applet - .get_popup_settings(parent, popup_id, None, None, None); - self.popup = Some(popup_id); - - if matches!( - self.core.applet.anchor, - PanelAnchor::Left | PanelAnchor::Right - ) { - let suggested_size = self.core.applet.suggested_size(true).1 - + 2 * self.core.applet.suggested_padding(true).1; - popup_settings.positioner.anchor_rect.y = i as i32 * suggested_size as i32; - } else { - let suggested_size = self.core.applet.suggested_size(true).0 - + 2 * self.core.applet.suggested_padding(true).0; - popup_settings.positioner.anchor_rect.x = i as i32 * suggested_size as i32; - } - cmds.push(get_popup(popup_settings)); Task::batch(cmds) } Msg::Surface(a) => { @@ -373,33 +392,40 @@ impl cosmic::Application for App { return destroy_popup(popup_id); } else if let Some(overflow_index) = self.overflow_index() { // If we don't have an overflow, create it - let popup_id = self.next_popup_id(); - let mut popup_settings = self.core.applet.get_popup_settings( - self.core.main_window_id().unwrap(), - popup_id, - None, - None, - None, - ); - popup_settings.close_with_children = false; + let popup_task = + cosmic::surface::surface_task(cosmic::surface::action::app_popup( + move |app: &mut Self| { + let popup_id = app.next_popup_id(); + let mut popup_settings = app.core.applet.get_popup_settings( + app.core.main_window_id().unwrap(), + popup_id, + None, + None, + None, + ); + popup_settings.close_with_children = false; - if matches!( - self.core.applet.anchor, - PanelAnchor::Left | PanelAnchor::Right - ) { - let suggested_size = self.core.applet.suggested_size(true).1 - + 2 * self.core.applet.suggested_padding(true).1; - popup_settings.positioner.anchor_rect.y = - overflow_index as i32 * suggested_size as i32; - } else { - let suggested_size = self.core.applet.suggested_size(true).0 - + 2 * self.core.applet.suggested_padding(true).0; - popup_settings.positioner.anchor_rect.x = - overflow_index as i32 * suggested_size as i32; - } + if matches!( + app.core.applet.anchor, + PanelAnchor::Left | PanelAnchor::Right + ) { + let suggested_size = app.core.applet.suggested_size(true).1 + + 2 * app.core.applet.suggested_padding(true).1; + popup_settings.positioner.anchor_rect.y = + overflow_index as i32 * suggested_size as i32; + } else { + let suggested_size = app.core.applet.suggested_size(true).0 + + 2 * app.core.applet.suggested_padding(true).0; + popup_settings.positioner.anchor_rect.x = + overflow_index as i32 * suggested_size as i32; + } - self.overflow_popup = Some(popup_id); - return get_popup(popup_settings); + app.overflow_popup = Some(popup_id); + popup_settings + }, + None, + )); + return popup_task; } else { return Task::none(); } @@ -417,34 +443,40 @@ impl cosmic::Application for App { } else { return Task::none(); } - - let popup_id = self.next_popup_id(); - let mut popup_settings = self.core.applet.get_popup_settings( - self.core.main_window_id().unwrap(), - popup_id, - None, - None, - None, - ); - self.popup = Some(popup_id); - let Some(i) = self.overflow_index() else { return Task::batch(cmds); }; + let popup_task = cosmic::surface::surface_task(cosmic::surface::action::app_popup( + move |app: &mut Self| { + let popup_id = app.next_popup_id(); + let mut popup_settings = app.core.applet.get_popup_settings( + app.core.main_window_id().unwrap(), + popup_id, + None, + None, + None, + ); + app.popup = Some(popup_id); - if matches!( - self.core.applet.anchor, - PanelAnchor::Left | PanelAnchor::Right - ) { - let suggested_size = self.core.applet.suggested_size(false).1 - + 2 * self.core.applet.suggested_padding(false).1; - popup_settings.positioner.anchor_rect.y = i as i32 * suggested_size as i32; - } else { - let suggested_size = self.core.applet.suggested_size(false).0 - + 2 * self.core.applet.suggested_padding(false).1; - popup_settings.positioner.anchor_rect.x = i as i32 * suggested_size as i32; - } - cmds.push(get_popup(popup_settings)); + if matches!( + app.core.applet.anchor, + PanelAnchor::Left | PanelAnchor::Right + ) { + let suggested_size = app.core.applet.suggested_size(false).1 + + 2 * app.core.applet.suggested_padding(false).1; + popup_settings.positioner.anchor_rect.y = + i as i32 * suggested_size as i32; + } else { + let suggested_size = app.core.applet.suggested_size(false).0 + + 2 * app.core.applet.suggested_padding(false).1; + popup_settings.positioner.anchor_rect.x = + i as i32 * suggested_size as i32; + } + popup_settings + }, + None, + )); + cmds.push(popup_task); Task::batch(cmds) } } @@ -595,7 +627,7 @@ fn menu_icon_button<'a>( .class(if symbolic { cosmic::theme::Svg::Custom(std::rc::Rc::new(|theme| { cosmic::iced::widget::svg::Style { - color: Some(theme.cosmic().background.on.into()), + color: Some(theme.cosmic().background(theme.transparent).on.into()), } })) } else { diff --git a/cosmic-applet-tiling/src/window.rs b/cosmic-applet-tiling/src/window.rs index 327d5d75..da6098f9 100644 --- a/cosmic-applet-tiling/src/window.rs +++ b/cosmic-applet-tiling/src/window.rs @@ -146,17 +146,21 @@ impl cosmic::Application for Window { return if let Some(p) = self.popup.take() { destroy_popup(p) } else { - let new_id = Id::unique(); - self.popup = Some(new_id); - let popup_settings = self.core.applet.get_popup_settings( - self.core.main_window_id().unwrap(), - new_id, - Some((1, 1)), + return cosmic::surface::surface_task(cosmic::surface::action::app_popup( + |app: &mut Self| { + let new_id = Id::unique(); + app.popup = Some(new_id); + let popup_settings = app.core.applet.get_popup_settings( + app.core.main_window_id().unwrap(), + new_id, + Some((1, 1)), + None, + None, + ); + popup_settings + }, None, - None, - ); - - get_popup(popup_settings) + )); }; } Message::PopupClosed(id) => { diff --git a/cosmic-applet-time/src/window.rs b/cosmic-applet-time/src/window.rs index a44d81ee..6a529b20 100644 --- a/cosmic-applet-time/src/window.rs +++ b/cosmic-applet-time/src/window.rs @@ -520,35 +520,39 @@ impl cosmic::Application for Window { if let Some(p) = self.popup.take() { destroy_popup(p) } else { - self.date_today = self.now.date(); - self.date_selected = self.date_today; + return cosmic::surface::surface_task(cosmic::surface::action::app_popup( + |app: &mut Self| { + app.date_today = app.now.date(); + app.date_selected = app.date_today; - let new_id = window::Id::unique(); - self.popup = Some(new_id); + let new_id = window::Id::unique(); + app.popup = Some(new_id); - let mut popup_settings = self.core.applet.get_popup_settings( - self.core.main_window_id().unwrap(), - new_id, + let mut popup_settings = app.core.applet.get_popup_settings( + app.core.main_window_id().unwrap(), + new_id, + None, + None, + None, + ); + let Rectangle { + x, + y, + width, + height, + } = app.rectangle; + popup_settings.positioner.anchor_rect = Rectangle:: { + x: x.max(1.) as i32, + y: y.max(1.) as i32, + width: width.max(1.) as i32, + height: height.max(1.) as i32, + }; + + popup_settings.positioner.size = None; + popup_settings + }, None, - None, - None, - ); - let Rectangle { - x, - y, - width, - height, - } = self.rectangle; - popup_settings.positioner.anchor_rect = Rectangle:: { - x: x.max(1.) as i32, - y: y.max(1.) as i32, - width: width.max(1.) as i32, - height: height.max(1.) as i32, - }; - - popup_settings.positioner.size = None; - - get_popup(popup_settings) + )); } } Message::Tick => { diff --git a/cosmic-applet-workspaces/src/components/app.rs b/cosmic-applet-workspaces/src/components/app.rs index dc4ccdc4..62680f77 100644 --- a/cosmic-applet-workspaces/src/components/app.rs +++ b/cosmic-applet-workspaces/src/components/app.rs @@ -202,24 +202,20 @@ impl cosmic::Application for IcedWorkspacesApplet { let content = column!(content, space::horizontal().width(Length::Fixed(width))) .align_x(Alignment::Center); - let btn = button( - container(content) - .align_x(Alignment::Center) - .align_y(Alignment::Center), - ) - .padding(if horizontal { - [0, self.core.applet.suggested_padding(true).1] - } else { - [self.core.applet.suggested_padding(true).1, 0] - }) - .on_press( - if w.state.contains(ext_workspace_handle_v1::State::Active) { - Message::WorkspaceOverview + let btn = button(content) + .padding(if horizontal { + [0, self.core.applet.suggested_padding(true).1] } else { - Message::WorkspacePressed(w.handle.clone()) - }, - ) - .padding(0); + [self.core.applet.suggested_padding(true).1, 0] + }) + .on_press( + if w.state.contains(ext_workspace_handle_v1::State::Active) { + Message::WorkspaceOverview + } else { + Message::WorkspacePressed(w.handle.clone()) + }, + ) + .padding(0); btn.class( if w.state.contains(ext_workspace_handle_v1::State::Active) { diff --git a/cosmic-panel-button/src/lib.rs b/cosmic-panel-button/src/lib.rs index 45ee1ca2..fe411f82 100644 --- a/cosmic-panel-button/src/lib.rs +++ b/cosmic-panel-button/src/lib.rs @@ -66,7 +66,7 @@ impl Button { .class(if symbolic { cosmic::theme::Svg::Custom(std::rc::Rc::new(|theme| { cosmic::iced::widget::svg::Style { - color: Some(theme.cosmic().background.on.into()), + color: Some(theme.cosmic().background(theme.transparent).on.into()), } })) } else { From de1884e032299cccc12d33e5422145838a29c726 Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Tue, 12 May 2026 23:53:59 -0400 Subject: [PATCH 02/29] chore: update deps --- Cargo.lock | 75 +++----------------------------- cosmic-applet-battery/Cargo.toml | 4 +- 2 files changed, 8 insertions(+), 71 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8026e49d..ac2fb66f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1567,6 +1567,7 @@ dependencies = [ [[package]] name = "cosmic-settings-upower-subscription" version = "1.0.7" +source = "git+https://github.com/pop-os/cosmic-settings#f19da761296a28ea97d6dadc2971de0bf2c0ad85" dependencies = [ "futures", "iced_futures", @@ -2706,7 +2707,7 @@ dependencies = [ "log", "presser", "thiserror 2.0.18", - "windows 0.58.0", + "windows 0.62.2", ] [[package]] @@ -7395,16 +7396,6 @@ dependencies = [ "thiserror 1.0.69", ] -[[package]] -name = "windows" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" -dependencies = [ - "windows-core 0.58.0", - "windows-targets 0.52.6", -] - [[package]] name = "windows" version = "0.61.3" @@ -7448,27 +7439,14 @@ dependencies = [ "windows-core 0.62.2", ] -[[package]] -name = "windows-core" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" -dependencies = [ - "windows-implement 0.58.0", - "windows-interface 0.58.0", - "windows-result 0.2.0", - "windows-strings 0.1.0", - "windows-targets 0.52.6", -] - [[package]] name = "windows-core" version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ - "windows-implement 0.60.2", - "windows-interface 0.59.3", + "windows-implement", + "windows-interface", "windows-link 0.1.3", "windows-result 0.3.4", "windows-strings 0.4.2", @@ -7480,8 +7458,8 @@ version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ - "windows-implement 0.60.2", - "windows-interface 0.59.3", + "windows-implement", + "windows-interface", "windows-link 0.2.1", "windows-result 0.4.1", "windows-strings 0.5.1", @@ -7509,17 +7487,6 @@ dependencies = [ "windows-threading 0.2.1", ] -[[package]] -name = "windows-implement" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "windows-implement" version = "0.60.2" @@ -7531,17 +7498,6 @@ dependencies = [ "syn", ] -[[package]] -name = "windows-interface" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "windows-interface" version = "0.59.3" @@ -7585,15 +7541,6 @@ dependencies = [ "windows-link 0.2.1", ] -[[package]] -name = "windows-result" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" -dependencies = [ - "windows-targets 0.52.6", -] - [[package]] name = "windows-result" version = "0.3.4" @@ -7612,16 +7559,6 @@ dependencies = [ "windows-link 0.2.1", ] -[[package]] -name = "windows-strings" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" -dependencies = [ - "windows-result 0.2.0", - "windows-targets 0.52.6", -] - [[package]] name = "windows-strings" version = "0.4.2" diff --git a/cosmic-applet-battery/Cargo.toml b/cosmic-applet-battery/Cargo.toml index 14549ea4..8c8f6e1d 100644 --- a/cosmic-applet-battery/Cargo.toml +++ b/cosmic-applet-battery/Cargo.toml @@ -24,8 +24,8 @@ zbus.workspace = true serde.workspace = true [dependencies.cosmic-settings-upower-subscription] -# git = "https://github.com/pop-os/cosmic-settings" -path = "../../cosmic-settings/subscriptions/upower" +git = "https://github.com/pop-os/cosmic-settings" +# path = "../../cosmic-settings/subscriptions/upower" [dependencies.cosmic-settings-daemon-subscription] git = "https://github.com/pop-os/cosmic-settings" From f0ca9e7aee49325a170ad6d5ef2413a307cf1e4a Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Fri, 15 May 2026 14:43:13 -0400 Subject: [PATCH 03/29] chore: update libcosmic --- cosmic-app-list/src/app.rs | 4 ++++ cosmic-applet-a11y/src/app.rs | 1 + cosmic-applet-audio/src/lib.rs | 1 + cosmic-applet-battery/src/app.rs | 1 + cosmic-applet-bluetooth/src/app.rs | 1 + cosmic-applet-input-sources/src/lib.rs | 1 + cosmic-applet-minimize/src/lib.rs | 1 + cosmic-applet-network/src/app.rs | 13 +++++++++---- cosmic-applet-notifications/src/lib.rs | 1 + cosmic-applet-power/src/lib.rs | 1 + cosmic-applet-status-area/src/components/app.rs | 4 ++++ cosmic-applet-tiling/src/window.rs | 1 + cosmic-applet-time/src/window.rs | 1 + 13 files changed, 27 insertions(+), 4 deletions(-) diff --git a/cosmic-app-list/src/app.rs b/cosmic-app-list/src/app.rs index 50dd375b..36149e81 100755 --- a/cosmic-app-list/src/app.rs +++ b/cosmic-app-list/src/app.rs @@ -915,6 +915,7 @@ impl cosmic::Application for CosmicAppList { }; let popup_task = cosmic::surface::surface_task(cosmic::surface::action::app_popup( + |_| Default::default(), move |app: &mut Self| { let new_id = window::Id::unique(); app.popup = Some(Popup { @@ -995,6 +996,7 @@ impl cosmic::Application for CosmicAppList { }); let popup_task = cosmic::surface::surface_task(cosmic::surface::action::app_popup( + |_| Default::default(), move |app: &mut Self| { let mut popup_settings = app.core.applet.get_popup_settings( parent_window_id, @@ -1617,6 +1619,7 @@ impl cosmic::Application for CosmicAppList { let popup_task = cosmic::surface::surface_task(cosmic::surface::action::app_popup( + |_| Default::default(), move |app: &mut Self| { let mut popup_settings = app.core.applet.get_popup_settings( app.core.main_window_id().unwrap(), @@ -1684,6 +1687,7 @@ impl cosmic::Application for CosmicAppList { let popup_task = cosmic::surface::surface_task(cosmic::surface::action::app_popup( + |_| Default::default(), move |app: &mut Self| { let mut popup_settings = app.core.applet.get_popup_settings( app.core.main_window_id().unwrap(), diff --git a/cosmic-applet-a11y/src/app.rs b/cosmic-applet-a11y/src/app.rs index a20551b0..d03c087d 100644 --- a/cosmic-applet-a11y/src/app.rs +++ b/cosmic-applet-a11y/src/app.rs @@ -138,6 +138,7 @@ impl cosmic::Application for CosmicA11yApplet { )); } else { return cosmic::surface::surface_task(cosmic::surface::action::app_popup( + |_| Default::default(), |app: &mut CosmicA11yApplet| { let new_id = window::Id::unique(); app.popup.replace(new_id); diff --git a/cosmic-applet-audio/src/lib.rs b/cosmic-applet-audio/src/lib.rs index e0c12631..83c4bd69 100644 --- a/cosmic-applet-audio/src/lib.rs +++ b/cosmic-applet-audio/src/lib.rs @@ -295,6 +295,7 @@ impl cosmic::Application for Audio { )); } else { return cosmic::surface::surface_task(cosmic::surface::action::app_popup( + |_| Default::default(), |app: &mut Self| { let new_id = window::Id::unique(); app.popup.replace(new_id); diff --git a/cosmic-applet-battery/src/app.rs b/cosmic-applet-battery/src/app.rs index 24b85b0d..f5113eff 100644 --- a/cosmic-applet-battery/src/app.rs +++ b/cosmic-applet-battery/src/app.rs @@ -373,6 +373,7 @@ impl cosmic::Application for CosmicBatteryApplet { } let mut tasks = vec![cosmic::surface::surface_task( cosmic::surface::action::app_popup( + |_| Default::default(), |app: &mut Self| { let new_id = window::Id::unique(); app.popup.replace(new_id); diff --git a/cosmic-applet-bluetooth/src/app.rs b/cosmic-applet-bluetooth/src/app.rs index 08d2ca47..a3bba4c3 100644 --- a/cosmic-applet-bluetooth/src/app.rs +++ b/cosmic-applet-bluetooth/src/app.rs @@ -122,6 +122,7 @@ impl cosmic::Application for CosmicBluetoothApplet { let get_popup_task = cosmic::surface::surface_task(cosmic::surface::action::app_popup( + |_| Default::default(), move |app: &mut Self| { let new_id = window::Id::unique(); app.popup.replace(new_id); diff --git a/cosmic-applet-input-sources/src/lib.rs b/cosmic-applet-input-sources/src/lib.rs index 0f448a94..fc7dcc32 100644 --- a/cosmic-applet-input-sources/src/lib.rs +++ b/cosmic-applet-input-sources/src/lib.rs @@ -145,6 +145,7 @@ impl cosmic::Application for Window { return crate::surface::surface_task(crate::surface::action::destroy_popup(p)); } else { return crate::surface::surface_task(crate::surface::action::app_popup( + |_| Default::default(), |app: &mut Window| { let new_id = Id::unique(); app.popup.replace(new_id); diff --git a/cosmic-applet-minimize/src/lib.rs b/cosmic-applet-minimize/src/lib.rs index b4390cbb..803ca97c 100644 --- a/cosmic-applet-minimize/src/lib.rs +++ b/cosmic-applet-minimize/src/lib.rs @@ -253,6 +253,7 @@ impl cosmic::Application for Minimize { )); } else { return cosmic::surface::surface_task(cosmic::surface::action::app_popup( + |_| Default::default(), |app: &mut Self| { let new_id = window::Id::unique(); let pos = app.max_icon_count().unwrap_or_default(); diff --git a/cosmic-applet-network/src/app.rs b/cosmic-applet-network/src/app.rs index 805cec41..efa1f18e 100644 --- a/cosmic-applet-network/src/app.rs +++ b/cosmic-applet-network/src/app.rs @@ -731,21 +731,26 @@ impl cosmic::Application for CosmicNetworkApplet { } else { let mut tasks = Vec::with_capacity(2); if let Some(conn) = self.conn.clone() { - tasks.push(update_state(conn.clone())); - tasks.push(update_devices(conn.clone())); - tasks.push(load_vpns(conn)); + tasks.push(update_state(conn.clone()).map(cosmic::Action::App)); + tasks.push(update_devices(conn.clone()).map(cosmic::Action::App)); + tasks.push(load_vpns(conn).map(cosmic::Action::App)); let uuid = uuid::Uuid::new_v4().to_string().replace("-", "_"); let my_id = format!( "com.system76.CosmicSettings.Applet._{uuid}.NetworkManager.SecretAgent", ); - tasks.push(secret_agent_task(my_id).map(Message::SecretAgent)); + tasks.push( + secret_agent_task(my_id) + .map(Message::SecretAgent) + .map(cosmic::Action::App), + ); } tasks.push(system_conn().map(cosmic::Action::App)); tasks.push(cosmic::surface::surface_task( cosmic::surface::action::app_popup( + |_| Default::default(), |app: &mut Self| { let new_id = window::Id::unique(); app.popup.replace(new_id); diff --git a/cosmic-applet-notifications/src/lib.rs b/cosmic-applet-notifications/src/lib.rs index 896b72c9..720f8d63 100644 --- a/cosmic-applet-notifications/src/lib.rs +++ b/cosmic-applet-notifications/src/lib.rs @@ -158,6 +158,7 @@ impl cosmic::Application for Notifications { return destroy_popup(p); } else { return cosmic::surface::surface_task(cosmic::surface::action::app_popup( + |_| Default::default(), |app: &mut Self| { let new_id = window::Id::unique(); app.popup.replace(new_id); diff --git a/cosmic-applet-power/src/lib.rs b/cosmic-applet-power/src/lib.rs index 3ef10d71..3bdfbb13 100644 --- a/cosmic-applet-power/src/lib.rs +++ b/cosmic-applet-power/src/lib.rs @@ -125,6 +125,7 @@ impl cosmic::Application for Power { )); } else { return cosmic::surface::surface_task(cosmic::surface::action::app_popup( + |_| Default::default(), |app: &mut Power| { let new_id = window::Id::unique(); app.popup.replace(new_id); diff --git a/cosmic-applet-status-area/src/components/app.rs b/cosmic-applet-status-area/src/components/app.rs index 3c5272c5..ef61e26b 100644 --- a/cosmic-applet-status-area/src/components/app.rs +++ b/cosmic-applet-status-area/src/components/app.rs @@ -240,6 +240,7 @@ impl cosmic::Application for App { let popup_task = cosmic::surface::surface_task(cosmic::surface::action::app_popup( + |_| Default::default(), move |app: &mut Self| { let popup_id = app.next_popup_id(); let i = app.menus.keys().position(|&i| i == id).unwrap(); @@ -337,6 +338,7 @@ impl cosmic::Application for App { return Task::none(); } let popup_task = cosmic::surface::surface_task(cosmic::surface::action::app_popup( + |_| Default::default(), move |app: &mut Self| { let popup_id = app.next_popup_id(); let i = app.menus.keys().position(|&i| i == id).unwrap(); @@ -394,6 +396,7 @@ impl cosmic::Application for App { // If we don't have an overflow, create it let popup_task = cosmic::surface::surface_task(cosmic::surface::action::app_popup( + |_| Default::default(), move |app: &mut Self| { let popup_id = app.next_popup_id(); let mut popup_settings = app.core.applet.get_popup_settings( @@ -447,6 +450,7 @@ impl cosmic::Application for App { return Task::batch(cmds); }; let popup_task = cosmic::surface::surface_task(cosmic::surface::action::app_popup( + |_| Default::default(), move |app: &mut Self| { let popup_id = app.next_popup_id(); let mut popup_settings = app.core.applet.get_popup_settings( diff --git a/cosmic-applet-tiling/src/window.rs b/cosmic-applet-tiling/src/window.rs index da6098f9..d4090541 100644 --- a/cosmic-applet-tiling/src/window.rs +++ b/cosmic-applet-tiling/src/window.rs @@ -147,6 +147,7 @@ impl cosmic::Application for Window { destroy_popup(p) } else { return cosmic::surface::surface_task(cosmic::surface::action::app_popup( + |_| Default::default(), |app: &mut Self| { let new_id = Id::unique(); app.popup = Some(new_id); diff --git a/cosmic-applet-time/src/window.rs b/cosmic-applet-time/src/window.rs index 6a529b20..042dfc3d 100644 --- a/cosmic-applet-time/src/window.rs +++ b/cosmic-applet-time/src/window.rs @@ -521,6 +521,7 @@ impl cosmic::Application for Window { destroy_popup(p) } else { return cosmic::surface::surface_task(cosmic::surface::action::app_popup( + |_| Default::default(), |app: &mut Self| { app.date_today = app.now.date(); app.date_selected = app.date_today; From 74b6202686139d517c30c7240068dac175b30561 Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Fri, 22 May 2026 18:03:09 -0400 Subject: [PATCH 04/29] fix: right click popup corners --- cosmic-app-list/src/app.rs | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/cosmic-app-list/src/app.rs b/cosmic-app-list/src/app.rs index 36149e81..89e7b1c1 100755 --- a/cosmic-app-list/src/app.rs +++ b/cosmic-app-list/src/app.rs @@ -27,25 +27,28 @@ use cosmic::{ }, cosmic_config::{Config, CosmicConfigEntry}, desktop::IconSourceExt, - iced::runtime::{core::event, dnd::peek_dnd}, iced::{ self, Alignment, Background, Border, Length, Limits, Padding, Subscription, advanced::text::{Ellipsize, EllipsizeHeightLimit}, clipboard::mime::{AllowedMimeTypes, AsMimeTypes}, event::listen_with, platform_specific::shell::commands::popup::{destroy_popup, get_popup}, + runtime::{core::event, dnd::peek_dnd, platform_specific::wayland::CornerRadius}, widget::{ - Column, Row, column, mouse_area, row, rule::vertical as vertical_rule, - space::horizontal as horizontal_space, space::vertical as vertical_space, stack, + Column, Row, column, mouse_area, row, + rule::vertical as vertical_rule, + space::{horizontal as horizontal_space, vertical as vertical_space}, + stack, }, window, }, - surface, + surface::{self, action::LiveSettings}, theme::{self, Button, Container}, widget::{ DndDestination, Image, button, container, divider, dnd_source, icon::{self, from_name}, image::Handle, + menu, rectangle_tracker::{RectangleTracker, RectangleUpdate, rectangle_tracker_subscription}, svg, text, }, @@ -913,9 +916,18 @@ impl cosmic::Application for CosmicAppList { tracing::error!("No rectangle found for toplevel group"); return Task::none(); }; + let corners = self.core.system_theme().cosmic().corner_radii.radius_s; let popup_task = cosmic::surface::surface_task(cosmic::surface::action::app_popup( - |_| Default::default(), + move |_| LiveSettings { + corners: Some(CornerRadius { + top_left: corners[0] as u32 + 1, + top_right: corners[1] as u32 + 1, + bottom_left: corners[3] as u32 + 1, + bottom_right: corners[2] as u32 + 1, + }), + ..Default::default() + }, move |app: &mut Self| { let new_id = window::Id::unique(); app.popup = Some(Popup { @@ -2125,7 +2137,8 @@ impl cosmic::Application for CosmicAppList { .width(Length::Fill) } - let mut content = column![].align_x(Alignment::Center); + let mut content = + menu::menu_column::MenuColumn::with_capacity(4).align_x(Alignment::Center); if let Some(exec) = desktop_info.exec() { if !toplevels.is_empty() { From 065551ed1bb9a81326228981147b0bd7195e5101 Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Thu, 28 May 2026 19:36:11 -0400 Subject: [PATCH 05/29] chore: update libcosmic --- Cargo.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index ac2fb66f..963c1302 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1567,7 +1567,7 @@ dependencies = [ [[package]] name = "cosmic-settings-upower-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#f19da761296a28ea97d6dadc2971de0bf2c0ad85" +source = "git+https://github.com/pop-os/cosmic-settings#81912bed6cdebe2719e29e6bd1453e7b977acb0e" dependencies = [ "futures", "iced_futures", From 7f4b1ab7be3b49ac7f4fec66d338c4f70074457d Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Tue, 2 Jun 2026 16:18:26 -0400 Subject: [PATCH 06/29] chore: update deps --- Cargo.lock | 218 +++++++++++++++++++++++++++-------------------------- 1 file changed, 112 insertions(+), 106 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 963c1302..21815eda 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -165,7 +165,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f2a1bb052857d5dd49572219344a7332b31b76405648eabac5bc68978251bcd" dependencies = [ "android-properties", - "bitflags 2.11.1", + "bitflags 2.12.1", "cc", "jni", "libc", @@ -538,9 +538,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.1" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" +checksum = "84d7ced0ae9557296835c32bf1b1e02b44c746701f898460fb000d7eaa84f00a" dependencies = [ "serde_core", ] @@ -728,7 +728,7 @@ version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dbf9978365bac10f54d1d4b04f7ce4427e51f71d61f2fe15e3fed5166474df7" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "polling", "rustix 1.1.4", "slab", @@ -758,14 +758,14 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.62" +version = "1.2.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98" +checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f" dependencies = [ "find-msvc-tools", "jobserver", "libc", - "shlex", + "shlex 2.0.1", ] [[package]] @@ -968,7 +968,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "core-foundation 0.10.1", "libc", ] @@ -1310,7 +1310,7 @@ name = "cosmic-client-toolkit" version = "0.2.0" source = "git+https://github.com/pop-os/cosmic-protocols//?rev=a7d2d7a#a7d2d7a6188425f699eaddf7a025617ce56068ae" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "cosmic-protocols", "libc", "smithay-client-toolkit", @@ -1371,7 +1371,7 @@ name = "cosmic-dbus-networkmanager" version = "0.1.0" source = "git+https://github.com/pop-os/dbus-settings-bindings#eed01dd3609e90e3c8cd043656734c500956c793" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "derive_builder", "jiff", "procfs", @@ -1448,7 +1448,7 @@ name = "cosmic-protocols" version = "0.2.0" source = "git+https://github.com/pop-os/cosmic-protocols//?rev=a7d2d7a#a7d2d7a6188425f699eaddf7a025617ce56068ae" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -1550,7 +1550,7 @@ name = "cosmic-settings-network-manager-subscription" version = "1.0.7" source = "git+https://github.com/pop-os/cosmic-settings#1f225d19ce582423fe8713fc6669c51d162f256f" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "cosmic-dbus-networkmanager", "futures", "iced_futures", @@ -1567,7 +1567,7 @@ dependencies = [ [[package]] name = "cosmic-settings-upower-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#81912bed6cdebe2719e29e6bd1453e7b977acb0e" +source = "git+https://github.com/pop-os/cosmic-settings#de5e16d360da9a634dcdd291112b76230d86d2ad" dependencies = [ "futures", "iced_futures", @@ -1584,7 +1584,7 @@ version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be17b688510d934ce13f48a2beba700e11583e281e0fda99c22bb256a14eda73" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "fontdb", "harfrust", "linebender_resource_handle", @@ -1972,7 +1972,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "block2 0.6.2", "libc", "objc2 0.6.4", @@ -2003,7 +2003,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.1", + "bitflags 2.12.1", "mime 0.1.0", "raw-window-handle", "smithay-client-toolkit", @@ -2036,7 +2036,7 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0f8a69e60d75ae7dab4ef26a59ca99f2a89d4c142089b537775ae0c198bdcde" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "bytemuck", "drm-ffi 0.7.1", "drm-fourcc", @@ -2049,7 +2049,7 @@ version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80bc8c5c6c2941f70a55c15f8d9f00f9710ebda3ffda98075f996a0e6c92756f" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "bytemuck", "drm-ffi 0.9.1", "drm-fourcc", @@ -2716,7 +2716,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "gpu-descriptor-types", "hashbrown 0.15.5", ] @@ -2727,7 +2727,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", ] [[package]] @@ -2764,7 +2764,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9da2e5ae821f6e96664977bf974d6d6a2d6682f9ccee23e62ec1d134246845f9" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "bytemuck", "core_maths", "read-fonts", @@ -2994,7 +2994,7 @@ name = "iced_core" version = "0.14.0" source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "bytes", "cosmic-client-toolkit", "dnd", @@ -3043,7 +3043,7 @@ name = "iced_graphics" version = "0.14.0" source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "bytemuck", "cosmic-text", "half", @@ -3118,7 +3118,7 @@ version = "0.14.0" source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" dependencies = [ "as-raw-xcb-connection", - "bitflags 2.11.1", + "bitflags 2.12.1", "bytemuck", "cosmic-client-toolkit", "cryoglyph", @@ -3690,11 +3690,11 @@ dependencies = [ [[package]] name = "inotify" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd5b3eaf1a28b758ac0faa5a4254e8ab2705605496f1b1f3fbbc3988ad73d199" +checksum = "533e68a5842e734946fe159fb03fc9bbbb254f590dd0d8ad321ae5ff7beca2c1" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "inotify-sys", "libc", ] @@ -3724,7 +3724,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbdc09524a91f9cacd26f16734ff63d7dc650daffadd2b6f84d17a285bd875a9" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "input-sys", "libc", "log", @@ -3930,7 +3930,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fbe853b403ae61a04233030ae8a79d94975281ed9770a1f9e246732b534b28d" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "serde", ] @@ -3962,9 +3962,9 @@ dependencies = [ [[package]] name = "kqueue" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" +checksum = "273c0752728918e0ac4976f2b275b6fefb9ecd400585dec929419f3844cd87b5" dependencies = [ "kqueue-sys", "libc", @@ -3976,7 +3976,7 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07293a4e297ac234359b510362495713f75ea345d5307140414f20c69ffeb087" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "libc", ] @@ -4064,7 +4064,7 @@ dependencies = [ "rust-embed", "rustix 1.1.4", "serde", - "shlex", + "shlex 1.3.0", "slotmap", "taffy", "thiserror 2.0.18", @@ -4106,7 +4106,7 @@ version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "libc", "plain", "redox_syscall 0.8.1", @@ -4332,7 +4332,7 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7047791b5bc903b8cd963014b355f71dc9864a9a0b727057676c1dcae5cbc15" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "block", "core-graphics-types 0.2.0", "foreign-types", @@ -4414,7 +4414,7 @@ checksum = "618f667225063219ddfc61251087db8a9aec3c3f0950c916b614e403486f1135" dependencies = [ "arrayvec", "bit-set", - "bitflags 2.11.1", + "bitflags 2.12.1", "cfg-if", "cfg_aliases", "codespan-reporting", @@ -4438,7 +4438,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "jni-sys 0.3.1", "log", "ndk-sys", @@ -4468,7 +4468,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "cfg-if", "cfg_aliases", "libc", @@ -4490,7 +4490,7 @@ checksum = "f9493a0dfbe50783b53ef52ec8ddb8d1f85fd45098be8210205236ff0f43bb7b" dependencies = [ "async-trait", "base64", - "bitflags 2.11.1", + "bitflags 2.12.1", "futures", "futures-timer", "log", @@ -4517,7 +4517,7 @@ version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "fsevent-sys", "inotify", "kqueue", @@ -4535,7 +4535,7 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42b8cfee0e339a0337359f3c88165702ac6e600dc01c0cc9579a92d62b08477a" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", ] [[package]] @@ -4711,7 +4711,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "block2 0.5.1", "libc", "objc2 0.5.2", @@ -4727,7 +4727,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "block2 0.6.2", "objc2 0.6.4", "objc2-core-foundation", @@ -4740,7 +4740,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -4752,7 +4752,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "block2 0.6.2", "dispatch2", "objc2 0.6.4", @@ -4764,7 +4764,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "libc", "objc2-core-foundation", ] @@ -4787,7 +4787,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "objc2-core-foundation", "objc2-core-graphics", ] @@ -4804,7 +4804,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "block2 0.5.1", "libc", "objc2 0.5.2", @@ -4816,7 +4816,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "block2 0.6.2", "objc2 0.6.4", "objc2-core-foundation", @@ -4828,7 +4828,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -4840,7 +4840,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -4853,7 +4853,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "objc2 0.6.4", "objc2-core-foundation", "objc2-foundation 0.3.2", @@ -5175,7 +5175,7 @@ version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "crc32fast", "fdeflate", "flate2", @@ -5318,7 +5318,7 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25485360a54d6861439d60facef26de713b1e126bf015ec8f98239467a2b82f7" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "procfs-core", "rustix 1.1.4", ] @@ -5329,7 +5329,7 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6401bf7b6af22f78b563665d15a22e9aef27775b79b149a66ca022468a4e405" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "hex", ] @@ -5476,7 +5476,7 @@ version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c07d0d6d291e3a951bd847b1cd4af32fc6243d64116cf7702838c02797688b7" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "libredox", ] @@ -5486,7 +5486,7 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", ] [[package]] @@ -5495,7 +5495,7 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b44b894f2a6e36457d665d1e08c3866add6ed5e70050c1b4ba8a8ddedb02ce7" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", ] [[package]] @@ -5621,7 +5621,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db09040cc89e461f1a265139777a2bde7f8d8c67c4936f700c63ce3e2904d468" dependencies = [ "base64", - "bitflags 2.11.1", + "bitflags 2.12.1", "serde", "serde_derive", "unicode-ident", @@ -5633,7 +5633,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4147b952f3f819eca0e99527022f7d6a8d05f111aeb0a62960c74eb283bec8fc" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "once_cell", "serde", "serde_derive", @@ -5708,7 +5708,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "errno", "libc", "linux-raw-sys 0.4.15", @@ -5721,7 +5721,7 @@ version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "errno", "libc", "linux-raw-sys 0.12.1", @@ -5740,7 +5740,7 @@ version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd3c7c96f8a08ee34eff8857b11b49b07d71d1c3f4e88f8a88d4c9e9f90b1702" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "bytemuck", "core_maths", "log", @@ -5988,6 +5988,12 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + [[package]] name = "signal-hook-registry" version = "1.4.8" @@ -6072,7 +6078,7 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "bytemuck", "calloop", "calloop-wayland-source", @@ -6163,7 +6169,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.1", + "bitflags 2.12.1", ] [[package]] @@ -6667,9 +6673,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.20.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "udev" @@ -6772,9 +6778,9 @@ checksum = "383ad40bb927465ec0ce7720e033cb4ca06912855fc35db31b5755d0de75b1ee" [[package]] name = "unicode-segmentation" -version = "1.13.2" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "unicode-vo" @@ -6864,9 +6870,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] name = "uuid" -version = "1.23.1" +version = "1.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76" +checksum = "d258b83ceec21034727ecee8c382cfa6c3e133699b0742c64571814fb420c9f7" dependencies = [ "getrandom 0.4.2", "js-sys", @@ -7004,7 +7010,7 @@ version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "hashbrown 0.15.5", "indexmap 2.14.0", "semver", @@ -7044,7 +7050,7 @@ version = "0.31.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "645c7c96bb74690c3189b5c9cb4ca1627062bb23693a4fad9d8c3de958260144" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "rustix 1.1.4", "wayland-backend", "wayland-scanner", @@ -7056,7 +7062,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "cursor-icon", "wayland-backend", ] @@ -7078,7 +7084,7 @@ version = "0.32.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "563a85523cade2429938e790815fd7319062103b9f4a2dc806e9b53b95982d8f" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "wayland-backend", "wayland-client", "wayland-scanner", @@ -7091,7 +7097,7 @@ version = "20250721.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -7104,7 +7110,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e9567599ef23e09b8dad6e429e5738d4509dfc46b3b21f32841a304d16b29c8" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -7117,7 +7123,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b6d8cf1eb2c1c31ed1f5643c88a6e53538129d4af80030c8cabd1f9fa884d91" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -7130,7 +7136,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -7155,7 +7161,7 @@ version = "0.31.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc1846eb04c49182e04f4a099e2a830a2b745610bbc1d61246e206f29c7000a0" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "downcast-rs", "rustix 1.1.4", "wayland-backend", @@ -7207,7 +7213,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9cb534d5ffd109c7d1135f34cdae29e60eab94855a625dcfe1705f8bc7ad79f" dependencies = [ "arrayvec", - "bitflags 2.11.1", + "bitflags 2.12.1", "bytemuck", "cfg-if", "cfg_aliases", @@ -7239,7 +7245,7 @@ dependencies = [ "arrayvec", "bit-set", "bit-vec", - "bitflags 2.11.1", + "bitflags 2.12.1", "bytemuck", "cfg_aliases", "document-features", @@ -7299,7 +7305,7 @@ dependencies = [ "arrayvec", "ash", "bit-set", - "bitflags 2.11.1", + "bitflags 2.12.1", "block", "bytemuck", "cfg-if", @@ -7343,7 +7349,7 @@ version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e18308757e594ed2cd27dddbb16a139c42a683819d32a2e0b1b0167552f5840c" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "bytemuck", "js-sys", "log", @@ -7831,7 +7837,7 @@ name = "winit" version = "0.31.0-beta.2" source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "cfg_aliases", "cursor-icon", "dpi", @@ -7858,7 +7864,7 @@ version = "0.31.0-beta.2" source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" dependencies = [ "android-activity", - "bitflags 2.11.1", + "bitflags 2.12.1", "dpi", "ndk", "raw-window-handle", @@ -7872,7 +7878,7 @@ name = "winit-appkit" version = "0.31.0-beta.2" source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "block2 0.6.2", "dispatch2", "dpi", @@ -7909,7 +7915,7 @@ name = "winit-core" version = "0.31.0-beta.2" source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "cursor-icon", "dpi", "keyboard-types", @@ -7923,7 +7929,7 @@ name = "winit-orbital" version = "0.31.0-beta.2" source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "dpi", "libredox", "orbclient", @@ -7939,7 +7945,7 @@ name = "winit-uikit" version = "0.31.0-beta.2" source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "block2 0.6.2", "dispatch2", "dpi", @@ -7960,7 +7966,7 @@ version = "0.31.0-beta.2" source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" dependencies = [ "ahash", - "bitflags 2.11.1", + "bitflags 2.12.1", "calloop", "cursor-icon", "dpi", @@ -7986,7 +7992,7 @@ version = "0.31.0-beta.2" source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" dependencies = [ "atomic-waker", - "bitflags 2.11.1", + "bitflags 2.12.1", "concurrent-queue", "cursor-icon", "dpi", @@ -8007,7 +8013,7 @@ name = "winit-win32" version = "0.31.0-beta.2" source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "cursor-icon", "dpi", "raw-window-handle", @@ -8023,7 +8029,7 @@ name = "winit-x11" version = "0.31.0-beta.2" source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "bytemuck", "calloop", "cursor-icon", @@ -8114,7 +8120,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" dependencies = [ "anyhow", - "bitflags 2.11.1", + "bitflags 2.12.1", "indexmap 2.14.0", "log", "serde", @@ -8274,7 +8280,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.12.1", "dlib", "log", "once_cell", @@ -8354,9 +8360,9 @@ dependencies = [ [[package]] name = "zbus" -version = "5.15.0" +version = "5.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3bcbf15c8708d7fc1be0c993622e0a5cbd5e8b52bfa40afa4c3e0cd8d724ac1" +checksum = "eee682d202a77e4a9f3b2c2bdf48a7b28af5c08c34ddf66f98c93e5e39464285" dependencies = [ "async-broadcast", "async-executor", @@ -8414,9 +8420,9 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "5.15.0" +version = "5.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51fa5406ad9175a8c825a931f8cf347116b531b3634fcb0b627c290f1f2516ff" +checksum = "adf1bd45a81a103745b1757754762a26e8cd01e4532e4d6c8ec431624b80d1d6" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -8643,9 +8649,9 @@ dependencies = [ [[package]] name = "zvariant" -version = "5.11.0" +version = "5.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c1567a6ec68df868cbbfde844cfc6d81649fe5109a62b116b19fabd53e618ee" +checksum = "a192a0bde63360d77a7523c833d4b4ce6070a927e2c53246e4c540b1a3e27be0" dependencies = [ "endi", "enumflags2", @@ -8658,9 +8664,9 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "5.11.0" +version = "5.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d5b780599bbde114e39d9a0799577fad1ced5105d38515745f7b3099d8ceda" +checksum = "90bc6cde9c01c511074be97f7ccb6c19d0da89e3f8662e812e999dcfd4638737" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -8671,9 +8677,9 @@ dependencies = [ [[package]] name = "zvariant_utils" -version = "3.3.1" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d464f5733ffa07a3164d656f18533caace9d0638596721355d73256a410d691" +checksum = "1e8535915cfa75547e559d8c68e8139909a4aeee076831e4ef7fc59d8172c4d6" dependencies = [ "proc-macro2", "quote", From 1472f82061337207aea5abf1b477fef00884f2e0 Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Thu, 4 Jun 2026 13:10:40 -0400 Subject: [PATCH 07/29] chore: fix popup corners and doubled opacity --- cosmic-app-list/src/app.rs | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/cosmic-app-list/src/app.rs b/cosmic-app-list/src/app.rs index 89e7b1c1..8db96ee3 100755 --- a/cosmic-app-list/src/app.rs +++ b/cosmic-app-list/src/app.rs @@ -919,15 +919,7 @@ impl cosmic::Application for CosmicAppList { let corners = self.core.system_theme().cosmic().corner_radii.radius_s; let popup_task = cosmic::surface::surface_task(cosmic::surface::action::app_popup( - move |_| LiveSettings { - corners: Some(CornerRadius { - top_left: corners[0] as u32 + 1, - top_right: corners[1] as u32 + 1, - bottom_left: corners[3] as u32 + 1, - bottom_right: corners[2] as u32 + 1, - }), - ..Default::default() - }, + move |_| LiveSettings::default(), move |app: &mut Self| { let new_id = window::Id::unique(); app.popup = Some(Popup { @@ -2249,22 +2241,6 @@ impl cosmic::Application for CosmicAppList { .popup_container( container(content) .padding(1) - //TODO: move style to libcosmic - .class(theme::Container::custom(|theme| { - let cosmic = theme.cosmic(); - let component = &cosmic.background(theme.transparent).component; - container::Style { - icon_color: Some(component.on.into()), - text_color: Some(component.on.into()), - background: Some(Background::Color(component.base.into())), - border: Border { - radius: cosmic.radius_s().into(), - width: 1.0, - color: component.divider.into(), - }, - ..Default::default() - } - })) .height(Length::Shrink) .width(Length::Fill), ) From 69d358ec349e7e9839f6df70c6ff988448939166 Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Wed, 1 Jul 2026 23:26:15 -0400 Subject: [PATCH 08/29] chore: cleanup and update deps --- Cargo.lock | 735 +++++++++++++------------------ Cargo.toml | 12 +- cosmic-applet-audio/src/lib.rs | 2 +- cosmic-applet-network/src/app.rs | 16 +- 4 files changed, 328 insertions(+), 437 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 21815eda..ba501e3e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -165,7 +165,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f2a1bb052857d5dd49572219344a7332b31b76405648eabac5bc68978251bcd" dependencies = [ "android-properties", - "bitflags 2.12.1", + "bitflags 2.13.0", "cc", "jni", "libc", @@ -194,9 +194,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.102" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" [[package]] name = "apply" @@ -215,9 +215,9 @@ dependencies = [ [[package]] name = "arc-swap" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a3a1fd6f75306b68087b831f025c712524bcb19aad54e557b1129cfa0a2b207" +checksum = "c049c0be4daef0b145cb3555416b3b8ef5b7888a38aea1a3a155801fe7b0810b" dependencies = [ "rustversion", ] @@ -230,9 +230,9 @@ checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "f02882884d3e1bc524fb12c79f107f6ad0e1cfd498c536ffb494301740995dfe" [[package]] name = "as-raw-xcb-connection" @@ -484,9 +484,9 @@ dependencies = [ [[package]] name = "auto_enums" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65398a2893f41bce5c9259f6e1a4f03fbae40637c1bdc755b4f387f48c613b03" +checksum = "2e4487600931c9a89f8db7ffbdf3fbdd45bb7bd85e26861f659a463cd0dff966" dependencies = [ "derive_utils", "proc-macro2", @@ -496,9 +496,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base64" @@ -538,9 +538,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.12.1" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84d7ced0ae9557296835c32bf1b1e02b44c746701f898460fb000d7eaa84f00a" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -631,9 +631,9 @@ dependencies = [ [[package]] name = "borsh" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a" +checksum = "2f3f6da4992df95bbcd9af42a6c7dcb994498fc9048230405f3b36ff7cd3f145" dependencies = [ "bytes", "cfg_aliases", @@ -650,13 +650,13 @@ dependencies = [ [[package]] name = "bstr" -version = "1.12.1" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" +checksum = "5cee35f73844aa3014bb606320a6c1f010249dbdf43342fe54b5a4f6a8ed4b79" dependencies = [ "memchr", "regex-automata", - "serde", + "serde_core", ] [[package]] @@ -670,9 +670,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "by_address" @@ -708,9 +708,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "bytes" -version = "1.11.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593" [[package]] name = "calendrical_calculations" @@ -728,7 +728,7 @@ version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dbf9978365bac10f54d1d4b04f7ce4427e51f71d61f2fe15e3fed5166474df7" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "polling", "rustix 1.1.4", "slab", @@ -758,9 +758,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.63" +version = "1.2.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f" +checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96" dependencies = [ "find-msvc-tools", "jobserver", @@ -782,9 +782,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ "iana-time-zone", "num-traits", @@ -908,9 +908,9 @@ dependencies = [ [[package]] name = "configparser" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57e3272f0190c3f1584272d613719ba5fc7df7f4942fe542e63d949cf3a649b" +checksum = "b46dec724fd22199ebde05033a0cbae453bc3b1ecff11eb6a6bb3eec4b90c6a4" [[package]] name = "core-foundation" @@ -968,7 +968,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "core-foundation 0.10.1", "libc", ] @@ -996,7 +996,7 @@ dependencies = [ "i18n-embed-fl", "image", "libcosmic", - "memmap2 0.9.10", + "memmap2 0.9.11", "rust-embed", "rustc-hash 2.1.2", "rustix 1.1.4", @@ -1128,7 +1128,7 @@ dependencies = [ "i18n-embed-fl", "image", "libcosmic", - "memmap2 0.9.10", + "memmap2 0.9.11", "rust-embed", "rustix 1.1.4", "tokio", @@ -1308,9 +1308,9 @@ dependencies = [ [[package]] name = "cosmic-client-toolkit" version = "0.2.0" -source = "git+https://github.com/pop-os/cosmic-protocols//?rev=a7d2d7a#a7d2d7a6188425f699eaddf7a025617ce56068ae" +source = "git+https://github.com/pop-os/cosmic-protocols//?rev=32283d7#32283d76a8d0342da74c4cc022a533c52dcf378f" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "cosmic-protocols", "libc", "smithay-client-toolkit", @@ -1331,7 +1331,7 @@ dependencies = [ [[package]] name = "cosmic-config" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" +source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" dependencies = [ "atomicwrites", "cosmic-config-derive", @@ -1341,7 +1341,7 @@ dependencies = [ "iced_futures", "known-folders", "notify", - "ron 0.12.1", + "ron 0.12.2", "serde", "tokio", "tracing", @@ -1352,7 +1352,7 @@ dependencies = [ [[package]] name = "cosmic-config-derive" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" +source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" dependencies = [ "quote", "syn", @@ -1371,7 +1371,7 @@ name = "cosmic-dbus-networkmanager" version = "0.1.0" source = "git+https://github.com/pop-os/dbus-settings-bindings#eed01dd3609e90e3c8cd043656734c500956c793" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "derive_builder", "jiff", "procfs", @@ -1382,12 +1382,12 @@ dependencies = [ [[package]] name = "cosmic-freedesktop-icons" version = "0.4.0" -source = "git+https://github.com/pop-os/freedesktop-icons#cb0a2f299dbc443697ce1674065e0d4f82915c02" +source = "git+https://github.com/pop-os/freedesktop-icons#ab4c57b8e416c6af9297cb04d101889896fd9a92" dependencies = [ "bstr", "btoi", "memchr", - "memmap2 0.9.10", + "memmap2 0.9.11", "thiserror 2.0.18", "tracing", "xdg", @@ -1432,7 +1432,7 @@ dependencies = [ [[package]] name = "cosmic-panel-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-panel#546a6c45210574caed9a3e51446aa8ad622d3627" +source = "git+https://github.com/pop-os/cosmic-panel#45f03a3864a9385349be3ca13202553280e667d4" dependencies = [ "anyhow", "cosmic-config", @@ -1446,9 +1446,9 @@ dependencies = [ [[package]] name = "cosmic-protocols" version = "0.2.0" -source = "git+https://github.com/pop-os/cosmic-protocols//?rev=a7d2d7a#a7d2d7a6188425f699eaddf7a025617ce56068ae" +source = "git+https://github.com/pop-os/cosmic-protocols//?rev=32283d7#32283d76a8d0342da74c4cc022a533c52dcf378f" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -1460,7 +1460,7 @@ dependencies = [ [[package]] name = "cosmic-settings-a11y-manager-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#1f225d19ce582423fe8713fc6669c51d162f256f" +source = "git+https://github.com/pop-os/cosmic-settings#9f9311235ec7fcbf27e28ae62326ff2f4bb9441d" dependencies = [ "cosmic-protocols", "iced_futures", @@ -1474,7 +1474,7 @@ dependencies = [ [[package]] name = "cosmic-settings-accessibility-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#1f225d19ce582423fe8713fc6669c51d162f256f" +source = "git+https://github.com/pop-os/cosmic-settings#9f9311235ec7fcbf27e28ae62326ff2f4bb9441d" dependencies = [ "cosmic-dbus-a11y", "futures", @@ -1487,12 +1487,12 @@ dependencies = [ [[package]] name = "cosmic-settings-audio-client" version = "1.0.0" -source = "git+https://github.com/pop-os/cosmic-settings-daemon#e7936f0d4f01c8c5a436908c7ee9f6ad43e6a7d8" +source = "git+https://github.com/pop-os/cosmic-settings-daemon#276fef9834b05c57b67e8ba36b74bea1ba690cee" dependencies = [ "cosmic-settings-audio-core", "dirs", "futures-util", - "ron 0.12.1", + "ron 0.12.2", "serde", "tokio", "tokio-util", @@ -1503,10 +1503,10 @@ dependencies = [ [[package]] name = "cosmic-settings-audio-core" version = "1.0.0" -source = "git+https://github.com/pop-os/cosmic-settings-daemon#e7936f0d4f01c8c5a436908c7ee9f6ad43e6a7d8" +source = "git+https://github.com/pop-os/cosmic-settings-daemon#276fef9834b05c57b67e8ba36b74bea1ba690cee" dependencies = [ "dirs", - "ron 0.12.1", + "ron 0.12.2", "serde", "zlink", ] @@ -1514,7 +1514,7 @@ dependencies = [ [[package]] name = "cosmic-settings-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-settings-daemon#fa82bdf9fe7b5f5bd6008f32f393efd5e7a71c47" +source = "git+https://github.com/pop-os/cosmic-settings-daemon#276fef9834b05c57b67e8ba36b74bea1ba690cee" dependencies = [ "cosmic-config", "ron 0.11.0", @@ -1535,7 +1535,7 @@ dependencies = [ [[package]] name = "cosmic-settings-daemon-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#1f225d19ce582423fe8713fc6669c51d162f256f" +source = "git+https://github.com/pop-os/cosmic-settings#9f9311235ec7fcbf27e28ae62326ff2f4bb9441d" dependencies = [ "futures", "iced_futures", @@ -1548,9 +1548,9 @@ dependencies = [ [[package]] name = "cosmic-settings-network-manager-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#1f225d19ce582423fe8713fc6669c51d162f256f" +source = "git+https://github.com/pop-os/cosmic-settings#9f9311235ec7fcbf27e28ae62326ff2f4bb9441d" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "cosmic-dbus-networkmanager", "futures", "iced_futures", @@ -1567,7 +1567,7 @@ dependencies = [ [[package]] name = "cosmic-settings-upower-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#de5e16d360da9a634dcdd291112b76230d86d2ad" +source = "git+https://github.com/pop-os/cosmic-settings#9f9311235ec7fcbf27e28ae62326ff2f4bb9441d" dependencies = [ "futures", "iced_futures", @@ -1584,7 +1584,7 @@ version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be17b688510d934ce13f48a2beba700e11583e281e0fda99c22bb256a14eda73" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "fontdb", "harfrust", "linebender_resource_handle", @@ -1592,7 +1592,7 @@ dependencies = [ "rangemap", "rustc-hash 2.1.2", "self_cell", - "skrifa", + "skrifa 0.40.0", "smol_str", "swash", "sys-locale", @@ -1605,7 +1605,7 @@ dependencies = [ [[package]] name = "cosmic-theme" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" +source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" dependencies = [ "almost", "configparser", @@ -1614,7 +1614,7 @@ dependencies = [ "dirs", "hex_color", "palette", - "ron 0.12.1", + "ron 0.12.2", "serde", "serde_json", "thiserror 2.0.18", @@ -1870,13 +1870,44 @@ dependencies = [ "tokio", ] +[[package]] +name = "defmt" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6e524506490a1953d237cb87b1cfc1e46f88c18f10a22dfe0f507dc6bfc7f7f" +dependencies = [ + "bitflags 1.3.2", + "defmt-macros", +] + +[[package]] +name = "defmt-macros" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0a27770e9c8f719a79d8b638281f4d828f77d8fd61e0bd94451b9b85e576a0b" +dependencies = [ + "defmt-parser", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "defmt-parser" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" +dependencies = [ + "thiserror 2.0.18", +] + [[package]] name = "deranged" version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" dependencies = [ - "powerfmt", "serde_core", ] @@ -1963,7 +1994,7 @@ dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -1972,7 +2003,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "block2 0.6.2", "libc", "objc2 0.6.4", @@ -1980,9 +2011,9 @@ dependencies = [ [[package]] name = "displaydoc" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" dependencies = [ "proc-macro2", "quote", @@ -2003,7 +2034,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.12.1", + "bitflags 2.13.0", "mime 0.1.0", "raw-window-handle", "smithay-client-toolkit", @@ -2036,7 +2067,7 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0f8a69e60d75ae7dab4ef26a59ca99f2a89d4c142089b537775ae0c198bdcde" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "bytemuck", "drm-ffi 0.7.1", "drm-fourcc", @@ -2049,7 +2080,7 @@ version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80bc8c5c6c2941f70a55c15f8d9f00f9710ebda3ffda98075f996a0e6c92756f" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "bytemuck", "drm-ffi 0.9.1", "drm-fourcc", @@ -2117,9 +2148,9 @@ checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "endi" @@ -2161,7 +2192,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -2389,7 +2420,7 @@ checksum = "457e789b3d1202543297a350643cf459f836cade38934e7a4cf6a39e7cde2905" dependencies = [ "fontconfig-parser", "log", - "memmap2 0.9.10", + "memmap2 0.9.11", "slotmap", "tinyvec", "ttf-parser", @@ -2551,9 +2582,9 @@ checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" [[package]] name = "futures-timer" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" +checksum = "af43fadb8a98512d547e37b4e92e0ced13e205c061b87b4623eff01d918d6968" [[package]] name = "futures-util" @@ -2617,15 +2648,13 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", "libc", "r-efi 6.0.0", - "wasip2", - "wasip3", ] [[package]] @@ -2716,7 +2745,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "gpu-descriptor-types", "hashbrown 0.15.5", ] @@ -2727,7 +2756,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", ] [[package]] @@ -2764,10 +2793,10 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9da2e5ae821f6e96664977bf974d6d6a2d6682f9ccee23e62ec1d134246845f9" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "bytemuck", "core_maths", - "read-fonts", + "read-fonts 0.37.0", "smallvec", ] @@ -2962,7 +2991,7 @@ dependencies = [ [[package]] name = "iced" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" +source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" dependencies = [ "dnd", "iced_accessibility", @@ -2983,7 +3012,7 @@ dependencies = [ [[package]] name = "iced_accessibility" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" +source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" dependencies = [ "accesskit", "accesskit_winit", @@ -2992,9 +3021,9 @@ dependencies = [ [[package]] name = "iced_core" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" +source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "bytes", "cosmic-client-toolkit", "dnd", @@ -3017,7 +3046,7 @@ dependencies = [ [[package]] name = "iced_debug" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" +source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" dependencies = [ "iced_core", "iced_futures", @@ -3027,7 +3056,7 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" +source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" dependencies = [ "futures", "iced_core", @@ -3041,9 +3070,9 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" +source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "bytemuck", "cosmic-text", "half", @@ -3062,7 +3091,7 @@ dependencies = [ [[package]] name = "iced_program" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" +source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" dependencies = [ "iced_graphics", "iced_runtime", @@ -3071,7 +3100,7 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" +source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" dependencies = [ "iced_graphics", "iced_tiny_skia", @@ -3083,7 +3112,7 @@ dependencies = [ [[package]] name = "iced_runtime" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" +source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" dependencies = [ "bytes", "cosmic-client-toolkit", @@ -3098,7 +3127,7 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" +source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" dependencies = [ "bytemuck", "cosmic-text", @@ -3115,10 +3144,10 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" +source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" dependencies = [ "as-raw-xcb-connection", - "bitflags 2.12.1", + "bitflags 2.13.0", "bytemuck", "cosmic-client-toolkit", "cryoglyph", @@ -3146,7 +3175,7 @@ dependencies = [ [[package]] name = "iced_widget" version = "0.14.2" -source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" +source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" dependencies = [ "cosmic-client-toolkit", "dnd", @@ -3164,7 +3193,7 @@ dependencies = [ [[package]] name = "iced_winit" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" +source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" dependencies = [ "cosmic-client-toolkit", "cursor-icon", @@ -3265,9 +3294,9 @@ checksum = "846b0857ca091204be3c874bc93daaf89d4777e8d2d20b0d3ffe8f671d98014b" [[package]] name = "icu_collator" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b521b92a2666061ddda902769d8a4cf730b5c9529a845cc1b69770b12a6c9a71" +checksum = "8bbdf98e5e0aa827770acee171ebb568aaab975a36b56afdb5fd0e2f525750bb" dependencies = [ "icu_collator_data", "icu_collections", @@ -3592,12 +3621,6 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f2f8aeca682d874a5247084aa4fb7d1cef9ba45d889c21209a8818dcaaa0ec9" -[[package]] -name = "id-arena" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" - [[package]] name = "ident_case" version = "1.0.1" @@ -3694,16 +3717,16 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "533e68a5842e734946fe159fb03fc9bbbb254f590dd0d8ad321ae5ff7beca2c1" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "inotify-sys", "libc", ] [[package]] name = "inotify-sys" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +checksum = "6fda9741ca16536952da2ecaa6105c2f4653fa6f0724681df6d2414c4106d0b0" dependencies = [ "libc", ] @@ -3724,7 +3747,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbdc09524a91f9cacd26f16734ff63d7dc650daffadd2b6f84d17a285bd875a9" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "input-sys", "libc", "log", @@ -3796,24 +3819,25 @@ checksum = "2ceaf4c6c48465bead8cb6a0b7c4ee0c86ecbb31239032b9c66ab9a08d2f3ee1" [[package]] name = "jiff" -version = "0.2.24" +version = "0.2.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f00b5dbd620d61dfdcb6007c9c1f6054ebd75319f163d886a9055cec1155073d" +checksum = "ccfe6121cbe750cf81efa362d85c0bde7ea298ec43092d3a193baca59cdbd634" dependencies = [ + "defmt", "jiff-static", "jiff-tzdb-platform", "log", "portable-atomic", "portable-atomic-util", "serde_core", - "windows-sys 0.59.0", + "windows-link 0.2.1", ] [[package]] name = "jiff-static" -version = "0.2.24" +version = "0.2.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e000de030ff8022ea1da3f466fbb0f3a809f5e51ed31f6dd931c35181ad8e6d7" +checksum = "e165e897f662d428f3cd3828a919dbe067c2d42bb1031eede74ef9d27ecdedd2" dependencies = [ "proc-macro2", "quote", @@ -3905,13 +3929,12 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.98" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67df7112613f8bfd9150013a0314e196f4800d3201ae742489d999db2f979f08" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", "futures-util", - "once_cell", "wasm-bindgen", ] @@ -3930,7 +3953,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fbe853b403ae61a04233030ae8a79d94975281ed9770a1f9e246732b534b28d" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "serde", ] @@ -3957,7 +3980,7 @@ version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a1886916523694cd6ea3d175f03a1e5010699a2a4cc13696d83d7bea1d80638" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -3976,7 +3999,7 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07293a4e297ac234359b510362495713f75ea345d5307140414f20c69ffeb087" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "libc", ] @@ -4007,12 +4030,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -[[package]] -name = "leb128fmt" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" - [[package]] name = "libc" version = "0.2.186" @@ -4022,7 +4039,7 @@ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libcosmic" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic//?branch=theme-v2#ed83072293695382790cec8d697490a61217a631" +source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" dependencies = [ "apply", "ashpd 0.12.3", @@ -4060,7 +4077,7 @@ dependencies = [ "palette", "phf 0.13.1", "rfd", - "ron 0.12.1", + "ron 0.12.2", "rust-embed", "rustix 1.1.4", "serde", @@ -4102,14 +4119,14 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3" +checksum = "c943259e342f1e06ff2da7a83eabdfe7f92ce10262688dbf1895ff0b3e6e4652" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "libc", "plain", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0", ] [[package]] @@ -4197,9 +4214,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "logind-zbus" @@ -4295,9 +4312,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" [[package]] name = "memmap2" @@ -4310,9 +4327,9 @@ dependencies = [ [[package]] name = "memmap2" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" +checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" dependencies = [ "libc", ] @@ -4332,7 +4349,7 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7047791b5bc903b8cd963014b355f71dc9864a9a0b727057676c1dcae5cbc15" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "block", "core-graphics-types 0.2.0", "foreign-types", @@ -4367,9 +4384,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" +checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" dependencies = [ "libc", "log", @@ -4414,7 +4431,7 @@ checksum = "618f667225063219ddfc61251087db8a9aec3c3f0950c916b614e403486f1135" dependencies = [ "arrayvec", "bit-set", - "bitflags 2.12.1", + "bitflags 2.13.0", "cfg-if", "cfg_aliases", "codespan-reporting", @@ -4438,7 +4455,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "jni-sys 0.3.1", "log", "ndk-sys", @@ -4468,7 +4485,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "cfg-if", "cfg_aliases", "libc", @@ -4484,13 +4501,13 @@ dependencies = [ [[package]] name = "nmrs" -version = "3.1.4" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9493a0dfbe50783b53ef52ec8ddb8d1f85fd45098be8210205236ff0f43bb7b" +checksum = "133ab12d9167f6b8d7cdadd4f8fde378bcaff4ad1c893d887498a98de50e10e9" dependencies = [ "async-trait", "base64", - "bitflags 2.12.1", + "bitflags 2.13.0", "futures", "futures-timer", "log", @@ -4517,7 +4534,7 @@ version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "fsevent-sys", "inotify", "kqueue", @@ -4535,7 +4552,7 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42b8cfee0e339a0337359f3c88165702ac6e600dc01c0cc9579a92d62b08477a" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", ] [[package]] @@ -4544,7 +4561,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -4711,7 +4728,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "block2 0.5.1", "libc", "objc2 0.5.2", @@ -4727,7 +4744,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "block2 0.6.2", "objc2 0.6.4", "objc2-core-foundation", @@ -4740,7 +4757,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -4752,7 +4769,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "block2 0.6.2", "dispatch2", "objc2 0.6.4", @@ -4764,7 +4781,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "libc", "objc2-core-foundation", ] @@ -4787,7 +4804,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "objc2-core-foundation", "objc2-core-graphics", ] @@ -4804,7 +4821,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "block2 0.5.1", "libc", "objc2 0.5.2", @@ -4816,7 +4833,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "block2 0.6.2", "objc2 0.6.4", "objc2-core-foundation", @@ -4828,7 +4845,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -4840,7 +4857,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -4853,7 +4870,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "objc2 0.6.4", "objc2-core-foundation", "objc2-foundation 0.3.2", @@ -4882,9 +4899,9 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "orbclient" -version = "0.3.54" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a570f6bca41d29acb2139229a7c873ec99bc9a313bd10804081d89bfac8ff329" +checksum = "5df339f526ea9a60e371768d50efc2f2508c7203290731565d1f7a6f71d21747" dependencies = [ "libc", "libredox", @@ -5175,7 +5192,7 @@ version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "crc32fast", "fdeflate", "flate2", @@ -5249,16 +5266,6 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" -[[package]] -name = "prettyplease" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" -dependencies = [ - "proc-macro2", - "syn", -] - [[package]] name = "proc-macro-crate" version = "3.5.0" @@ -5318,7 +5325,7 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25485360a54d6861439d60facef26de713b1e126bf015ec8f98239467a2b82f7" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "procfs-core", "rustix 1.1.4", ] @@ -5329,7 +5336,7 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6401bf7b6af22f78b563665d15a22e9aef27775b79b149a66ca022468a4e405" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "hex", ] @@ -5363,9 +5370,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.45" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] @@ -5471,12 +5478,22 @@ dependencies = [ ] [[package]] -name = "redox_event" -version = "0.4.7" +name = "read-fonts" +version = "0.39.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c07d0d6d291e3a951bd847b1cd4af32fc6243d64116cf7702838c02797688b7" +checksum = "c4ed38b89c2c77ff968c524145ad65fb010f38af5c7a224b53b81d47ac2daa81" dependencies = [ - "bitflags 2.12.1", + "bytemuck", + "font-types", +] + +[[package]] +name = "redox_event" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5018d583d6d2f5499352aea8d177e9067d1eb03ab17c78169d5ba7a30001b15" +dependencies = [ + "bitflags 2.13.0", "libredox", ] @@ -5486,16 +5503,16 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", ] [[package]] name = "redox_syscall" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b44b894f2a6e36457d665d1e08c3866add6ed5e70050c1b4ba8a8ddedb02ce7" +checksum = "c5102a6aaa05aa011a238e178e6bca86d2cb56fc9f586d37cb80f5bca6e07759" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", ] [[package]] @@ -5531,9 +5548,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.12.3" +version = "1.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba" dependencies = [ "aho-corasick", "memchr", @@ -5554,9 +5571,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "renderdoc-sys" @@ -5621,7 +5638,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db09040cc89e461f1a265139777a2bde7f8d8c67c4936f700c63ce3e2904d468" dependencies = [ "base64", - "bitflags 2.12.1", + "bitflags 2.13.0", "serde", "serde_derive", "unicode-ident", @@ -5629,11 +5646,11 @@ dependencies = [ [[package]] name = "ron" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4147b952f3f819eca0e99527022f7d6a8d05f111aeb0a62960c74eb283bec8fc" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -5708,7 +5725,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "errno", "libc", "linux-raw-sys 0.4.15", @@ -5721,11 +5738,11 @@ version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "errno", "libc", "linux-raw-sys 0.12.1", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -5740,7 +5757,7 @@ version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd3c7c96f8a08ee34eff8857b11b49b07d71d1c3f4e88f8a88d4c9e9f90b1702" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "bytemuck", "core_maths", "log", @@ -5811,7 +5828,7 @@ checksum = "1dd3accc0f3f4bbaf2c9e1957a030dc582028130c67660d44c0a0345a22ca69b" dependencies = [ "ab_glyph", "log", - "memmap2 0.9.10", + "memmap2 0.9.11", "smithay-client-toolkit", "tiny-skia", ] @@ -5901,9 +5918,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "indexmap 2.14.0", "itoa", @@ -5926,9 +5943,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.20.0" +version = "3.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e72c1c2cb7b223fafb600a619537a871c2818583d619401b785e7c0b746ccde2" +checksum = "76a5c54c7310e7b8b9577c286d7e399ddd876c3e12b3ed917a8aabc4b96e9e8c" dependencies = [ "base64", "bs58", @@ -5946,9 +5963,9 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.20.0" +version = "3.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b90c488738ecb4fb0262f41f43bc40efc5868d9fb744319ddf5f5317f417bfac" +checksum = "84d57bc0c8b9a17920c178daa6bb924850d54a9c97ab45194bb8c17ad66bb660" dependencies = [ "darling 0.23.0", "proc-macro2", @@ -6048,7 +6065,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fbdfe3d2475fbd7ddd1f3e5cf8288a30eb3e5f95832829570cd88115a7434ac" dependencies = [ "bytemuck", - "read-fonts", + "read-fonts 0.37.0", +] + +[[package]] +name = "skrifa" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c34617370ae968efb7161bb2beb517d9084659aae19e24b89e3db25b46e4564" +dependencies = [ + "bytemuck", + "read-fonts 0.39.2", ] [[package]] @@ -6068,9 +6095,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "smithay-client-toolkit" @@ -6078,14 +6105,14 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "bytemuck", "calloop", "calloop-wayland-source", "cursor-icon", "libc", "log", - "memmap2 0.9.10", + "memmap2 0.9.11", "pkg-config", "rustix 1.1.4", "thiserror 2.0.18", @@ -6125,9 +6152,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" +checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" dependencies = [ "libc", "windows-sys 0.61.2", @@ -6148,7 +6175,7 @@ dependencies = [ "foreign-types", "js-sys", "log", - "memmap2 0.9.10", + "memmap2 0.9.11", "objc", "raw-window-handle", "redox_syscall 0.5.18", @@ -6169,7 +6196,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.12.1", + "bitflags 2.13.0", ] [[package]] @@ -6245,11 +6272,11 @@ dependencies = [ [[package]] name = "swash" -version = "0.2.7" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "842f3cd369c2ba38966204f983eaa5e54a8e84a7d7159ed36ade2b6c335aae64" +checksum = "0811b01ca2c4e8718760713911feaf4675c24f94e50530a015ec646cfb622f7c" dependencies = [ - "skrifa", + "skrifa 0.42.1", "yazi", "zeno", ] @@ -6264,9 +6291,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -6318,10 +6345,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.3.4", + "getrandom 0.4.3", "once_cell", "rustix 1.1.4", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -6384,12 +6411,11 @@ dependencies = [ [[package]] name = "time" -version = "0.3.47" +version = "0.3.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" +checksum = "18dfaaeddcb932337b5e7866ee7d0ce9b76d2fd092997146f187ec09b4558a50" dependencies = [ "deranged", - "itoa", "num-conv", "powerfmt", "serde_core", @@ -6399,15 +6425,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" [[package]] name = "time-macros" -version = "0.2.27" +version = "0.2.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" +checksum = "c431b87111666e491a90baa837f914fb45cd5dc3c268591b0220ff5057f2085f" dependencies = [ "num-conv", "time-core", @@ -6566,9 +6592,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.25.11+spec-1.1.0" +version = "0.25.12+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" +checksum = "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7" dependencies = [ "indexmap 2.14.0", "toml_datetime", @@ -6794,12 +6820,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - [[package]] name = "upower_dbus" version = "0.3.2" @@ -6870,11 +6890,11 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] name = "uuid" -version = "1.23.2" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d258b83ceec21034727ecee8c382cfa6c3e133699b0742c64571814fb420c9f7" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ - "getrandom 0.4.2", + "getrandom 0.4.3", "js-sys", "serde_core", "sha1_smol", @@ -6911,27 +6931,18 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.3+wasi-0.2.9" +version = "1.0.4+wasi-0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" dependencies = [ - "wit-bindgen 0.57.1", -] - -[[package]] -name = "wasip3" -version = "0.4.0+wasi-0.3.0-rc-2026-01-06" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" -dependencies = [ - "wit-bindgen 0.51.0", + "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.121" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -6942,9 +6953,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.71" +version = "0.4.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96492d0d3ffba25305a7dc88720d250b1401d7edca02cc3bcd50633b424673b8" +checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d" dependencies = [ "js-sys", "wasm-bindgen", @@ -6952,9 +6963,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.121" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6962,9 +6973,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.121" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", @@ -6975,47 +6986,13 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.121" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] -[[package]] -name = "wasm-encoder" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" -dependencies = [ - "leb128fmt", - "wasmparser", -] - -[[package]] -name = "wasm-metadata" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" -dependencies = [ - "anyhow", - "indexmap 2.14.0", - "wasm-encoder", - "wasmparser", -] - -[[package]] -name = "wasmparser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" -dependencies = [ - "bitflags 2.12.1", - "hashbrown 0.15.5", - "indexmap 2.14.0", - "semver", -] - [[package]] name = "wasmtimer" version = "0.4.3" @@ -7050,7 +7027,7 @@ version = "0.31.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "645c7c96bb74690c3189b5c9cb4ca1627062bb23693a4fad9d8c3de958260144" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "rustix 1.1.4", "wayland-backend", "wayland-scanner", @@ -7062,7 +7039,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "cursor-icon", "wayland-backend", ] @@ -7080,11 +7057,11 @@ dependencies = [ [[package]] name = "wayland-protocols" -version = "0.32.12" +version = "0.32.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "563a85523cade2429938e790815fd7319062103b9f4a2dc806e9b53b95982d8f" +checksum = "23d0c813de3daa2ed6520af85a3bd49b0e722a3078506899aa9686fea58dc4b6" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "wayland-backend", "wayland-client", "wayland-scanner", @@ -7097,7 +7074,7 @@ version = "20250721.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -7110,7 +7087,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e9567599ef23e09b8dad6e429e5738d4509dfc46b3b21f32841a304d16b29c8" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -7123,7 +7100,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b6d8cf1eb2c1c31ed1f5643c88a6e53538129d4af80030c8cabd1f9fa884d91" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -7136,7 +7113,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -7161,7 +7138,7 @@ version = "0.31.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc1846eb04c49182e04f4a099e2a830a2b745610bbc1d61246e206f29c7000a0" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "downcast-rs", "rustix 1.1.4", "wayland-backend", @@ -7182,9 +7159,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.98" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b572dff8bcf38bad0fa19729c89bb5748b2b9b1d8be70cf90df697e3a8f32aa" +checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141" dependencies = [ "js-sys", "wasm-bindgen", @@ -7213,7 +7190,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9cb534d5ffd109c7d1135f34cdae29e60eab94855a625dcfe1705f8bc7ad79f" dependencies = [ "arrayvec", - "bitflags 2.12.1", + "bitflags 2.13.0", "bytemuck", "cfg-if", "cfg_aliases", @@ -7245,7 +7222,7 @@ dependencies = [ "arrayvec", "bit-set", "bit-vec", - "bitflags 2.12.1", + "bitflags 2.13.0", "bytemuck", "cfg_aliases", "document-features", @@ -7305,7 +7282,7 @@ dependencies = [ "arrayvec", "ash", "bit-set", - "bitflags 2.12.1", + "bitflags 2.13.0", "block", "bytemuck", "cfg-if", @@ -7349,7 +7326,7 @@ version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e18308757e594ed2cd27dddbb16a139c42a683819d32a2e0b1b0167552f5840c" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "bytemuck", "js-sys", "log", @@ -7378,7 +7355,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.61.2", ] [[package]] @@ -7837,7 +7814,7 @@ name = "winit" version = "0.31.0-beta.2" source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "cfg_aliases", "cursor-icon", "dpi", @@ -7864,7 +7841,7 @@ version = "0.31.0-beta.2" source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" dependencies = [ "android-activity", - "bitflags 2.12.1", + "bitflags 2.13.0", "dpi", "ndk", "raw-window-handle", @@ -7878,7 +7855,7 @@ name = "winit-appkit" version = "0.31.0-beta.2" source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "block2 0.6.2", "dispatch2", "dpi", @@ -7900,7 +7877,7 @@ name = "winit-common" version = "0.31.0-beta.2" source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" dependencies = [ - "memmap2 0.9.10", + "memmap2 0.9.11", "objc2 0.6.4", "objc2-core-foundation", "smol_str", @@ -7915,7 +7892,7 @@ name = "winit-core" version = "0.31.0-beta.2" source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "cursor-icon", "dpi", "keyboard-types", @@ -7929,7 +7906,7 @@ name = "winit-orbital" version = "0.31.0-beta.2" source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "dpi", "libredox", "orbclient", @@ -7945,7 +7922,7 @@ name = "winit-uikit" version = "0.31.0-beta.2" source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "block2 0.6.2", "dispatch2", "dpi", @@ -7966,12 +7943,12 @@ version = "0.31.0-beta.2" source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" dependencies = [ "ahash", - "bitflags 2.12.1", + "bitflags 2.13.0", "calloop", "cursor-icon", "dpi", "libc", - "memmap2 0.9.10", + "memmap2 0.9.11", "raw-window-handle", "rustix 1.1.4", "sctk-adwaita", @@ -7992,7 +7969,7 @@ version = "0.31.0-beta.2" source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" dependencies = [ "atomic-waker", - "bitflags 2.12.1", + "bitflags 2.13.0", "concurrent-queue", "cursor-icon", "dpi", @@ -8013,7 +7990,7 @@ name = "winit-win32" version = "0.31.0-beta.2" source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "cursor-icon", "dpi", "raw-window-handle", @@ -8029,7 +8006,7 @@ name = "winit-x11" version = "0.31.0-beta.2" source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "bytemuck", "calloop", "cursor-icon", @@ -8056,100 +8033,12 @@ dependencies = [ "memchr", ] -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" -dependencies = [ - "wit-bindgen-rust-macro", -] - [[package]] name = "wit-bindgen" version = "0.57.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" -[[package]] -name = "wit-bindgen-core" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" -dependencies = [ - "anyhow", - "heck 0.5.0", - "wit-parser", -] - -[[package]] -name = "wit-bindgen-rust" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" -dependencies = [ - "anyhow", - "heck 0.5.0", - "indexmap 2.14.0", - "prettyplease", - "syn", - "wasm-metadata", - "wit-bindgen-core", - "wit-component", -] - -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" -dependencies = [ - "anyhow", - "prettyplease", - "proc-macro2", - "quote", - "syn", - "wit-bindgen-core", - "wit-bindgen-rust", -] - -[[package]] -name = "wit-component" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" -dependencies = [ - "anyhow", - "bitflags 2.12.1", - "indexmap 2.14.0", - "log", - "serde", - "serde_derive", - "serde_json", - "wasm-encoder", - "wasm-metadata", - "wasmparser", - "wit-parser", -] - -[[package]] -name = "wit-parser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" -dependencies = [ - "anyhow", - "id-arena", - "indexmap 2.14.0", - "log", - "semver", - "serde", - "serde_derive", - "serde_json", - "unicode-xid", - "wasmparser", -] - [[package]] name = "write16" version = "1.0.0" @@ -8213,7 +8102,7 @@ checksum = "2fb433233f2df9344722454bc7e96465c9d03bff9d77c248f9e7523fe79585b5" [[package]] name = "xdg-shell-wrapper-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-panel#546a6c45210574caed9a3e51446aa8ad622d3627" +source = "git+https://github.com/pop-os/cosmic-panel#45f03a3864a9385349be3ca13202553280e667d4" dependencies = [ "serde", "wayland-protocols-wlr", @@ -8259,7 +8148,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d66ca9352cbd4eecbbc40871d8a11b4ac8107cfc528a6e14d7c19c69d0e1ac9" dependencies = [ "libc", - "memmap2 0.9.10", + "memmap2 0.9.11", "xkeysym", ] @@ -8270,7 +8159,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7a974f48060a14e95705c01f24ad9c3345022f4d97441b8a36beb7ed5c4a02d" dependencies = [ "libc", - "memmap2 0.9.10", + "memmap2 0.9.11", "xkeysym", ] @@ -8280,7 +8169,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "dlib", "log", "once_cell", @@ -8337,9 +8226,9 @@ checksum = "e01738255b5a16e78bbb83e7fbba0a1e7dd506905cfc53f4622d89015a03fbb5" [[package]] name = "yoke" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" dependencies = [ "stable_deref_trait", "yoke-derive", @@ -8464,18 +8353,18 @@ checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524" [[package]] name = "zerocopy" -version = "0.8.48" +version = "0.8.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" +checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.48" +version = "0.8.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" +checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" dependencies = [ "proc-macro2", "quote", @@ -8505,9 +8394,9 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zerotrie" diff --git a/Cargo.toml b/Cargo.toml index 8c94e4b8..ec720c7c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -70,20 +70,20 @@ lto = "thin" [workspace.metadata.cargo-machete] ignored = ["libcosmic"] -[patch."https://github.com/pop-os/libcosmic"] +# [patch."https://github.com/pop-os/libcosmic"] # cosmic-config = { path = "../libcosmic/cosmic-config" } # libcosmic = { path = "../libcosmic" } # iced_futures = { path = "../libcosmic/iced/futures" } -cosmic-config = { git = "https://github.com/pop-os/libcosmic//", branch = "theme-v2" } -libcosmic = { git = "https://github.com/pop-os/libcosmic//", branch = "theme-v2" } -iced_futures = { git = "https://github.com/pop-os/libcosmic//", branch = "theme-v2" } +# cosmic-config = { git = "https://github.com/pop-os/libcosmic//", branch = "theme-v2" } +# libcosmic = { git = "https://github.com/pop-os/libcosmic//", branch = "theme-v2" } +# iced_futures = { git = "https://github.com/pop-os/libcosmic//", branch = "theme-v2" } [patch."https://github.com/smithay/client-toolkit.git"] sctk = { package = "smithay-client-toolkit", version = "0.20.0" } [patch."https://github.com/pop-os/cosmic-protocols"] -cosmic-protocols = { git = "https://github.com/pop-os/cosmic-protocols//", rev = "a7d2d7a" } -cosmic-client-toolkit = { git = "https://github.com/pop-os/cosmic-protocols//", rev = "a7d2d7a" } +cosmic-protocols = { git = "https://github.com/pop-os/cosmic-protocols//", rev = "32283d7" } +cosmic-client-toolkit = { git = "https://github.com/pop-os/cosmic-protocols//", rev = "32283d7" } # [patch.'https://github.com/pop-os/dbus-settings-bindings'] # cosmic-dbus-networkmanager = { path = "../dbus-settings-bindings/networkmanager" } diff --git a/cosmic-applet-audio/src/lib.rs b/cosmic-applet-audio/src/lib.rs index 83c4bd69..508bd6e8 100644 --- a/cosmic-applet-audio/src/lib.rs +++ b/cosmic-applet-audio/src/lib.rs @@ -313,7 +313,7 @@ impl cosmic::Application for Audio { (100, &[][..]) }; - let popup_settings = app.core.applet.get_popup_settings( + let mut popup_settings = app.core.applet.get_popup_settings( app.core.main_window_id().unwrap(), new_id, None, diff --git a/cosmic-applet-network/src/app.rs b/cosmic-applet-network/src/app.rs index efa1f18e..d66632ab 100644 --- a/cosmic-applet-network/src/app.rs +++ b/cosmic-applet-network/src/app.rs @@ -1761,7 +1761,7 @@ impl cosmic::Application for CosmicNetworkApplet { .icon_size(16) .on_press(Message::ResetFailedKnownSsid( known.ssid.to_string(), - known.hw_address, + known.hw_address.clone(), )) .into(), ); @@ -1777,12 +1777,14 @@ impl cosmic::Application for CosmicNetworkApplet { | DeviceState::Unknown | DeviceState::Unmanaged | DeviceState::Disconnected - | DeviceState::NeedAuth => { - btn.on_press(Message::Connect(known.ssid.clone(), known.hw_address)) - } - DeviceState::Activated => { - btn.on_press(Message::Disconnect(known.ssid.clone(), known.hw_address)) - } + | DeviceState::NeedAuth => btn.on_press(Message::Connect( + known.ssid.clone(), + known.hw_address.clone(), + )), + DeviceState::Activated => btn.on_press(Message::Disconnect( + known.ssid.clone(), + known.hw_address.clone(), + )), _ => btn, }; known_wifi.push(Element::from( From 3f4d0f43a0a7e75c983c83ca09454e65afc3bc71 Mon Sep 17 00:00:00 2001 From: Ashley Wulber <48420062+wash2@users.noreply.github.com> Date: Thu, 9 Jul 2026 11:42:22 -0400 Subject: [PATCH 09/29] fix: update iced (#1468) popup blur & corner cleanup --- Cargo.lock | 143 ++++++++++++++++++++++++++--------------------------- 1 file changed, 71 insertions(+), 72 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ba501e3e..9596a9de 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -230,9 +230,9 @@ checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f02882884d3e1bc524fb12c79f107f6ad0e1cfd498c536ffb494301740995dfe" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "as-raw-xcb-connection" @@ -758,9 +758,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.65" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "jobserver", @@ -998,7 +998,7 @@ dependencies = [ "libcosmic", "memmap2 0.9.11", "rust-embed", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "rustix 1.1.4", "switcheroo-control", "tokio", @@ -1074,7 +1074,7 @@ dependencies = [ "i18n-embed-fl", "libcosmic", "rust-embed", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "serde", "tokio", "tracing", @@ -1096,7 +1096,7 @@ dependencies = [ "i18n-embed-fl", "libcosmic", "rust-embed", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "tokio", "tracing", "tracing-log", @@ -1153,7 +1153,7 @@ dependencies = [ "libcosmic", "nmrs", "rust-embed", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "secure-string", "tokio", "tracing", @@ -1206,7 +1206,7 @@ version = "1.0.15" dependencies = [ "futures", "libcosmic", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "serde", "tokio", "tracing", @@ -1227,7 +1227,7 @@ dependencies = [ "i18n-embed-fl", "libcosmic", "rust-embed", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "tokio", "tracing", "tracing-log", @@ -1331,7 +1331,7 @@ dependencies = [ [[package]] name = "cosmic-config" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" +source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" dependencies = [ "atomicwrites", "cosmic-config-derive", @@ -1352,7 +1352,7 @@ dependencies = [ [[package]] name = "cosmic-config-derive" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" +source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" dependencies = [ "quote", "syn", @@ -1396,7 +1396,7 @@ dependencies = [ [[package]] name = "cosmic-notifications-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-notifications#a899bfbc6715c36b1f02d7a0f4d3601a3ea0295f" +source = "git+https://github.com/pop-os/cosmic-notifications#2c7fbbd0d289189fb4a7384307c5fb06842ebb6b" dependencies = [ "cosmic-config", "serde", @@ -1405,7 +1405,7 @@ dependencies = [ [[package]] name = "cosmic-notifications-util" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-notifications#a899bfbc6715c36b1f02d7a0f4d3601a3ea0295f" +source = "git+https://github.com/pop-os/cosmic-notifications#2c7fbbd0d289189fb4a7384307c5fb06842ebb6b" dependencies = [ "fast_image_resize", "libcosmic", @@ -1422,7 +1422,7 @@ version = "1.0.15" dependencies = [ "cosmic-config", "libcosmic", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "serde", "tracing", "tracing-log", @@ -1487,7 +1487,7 @@ dependencies = [ [[package]] name = "cosmic-settings-audio-client" version = "1.0.0" -source = "git+https://github.com/pop-os/cosmic-settings-daemon#276fef9834b05c57b67e8ba36b74bea1ba690cee" +source = "git+https://github.com/pop-os/cosmic-settings-daemon#24ab5c28eb5876665752cd5e9405b7de17e2b99a" dependencies = [ "cosmic-settings-audio-core", "dirs", @@ -1503,7 +1503,7 @@ dependencies = [ [[package]] name = "cosmic-settings-audio-core" version = "1.0.0" -source = "git+https://github.com/pop-os/cosmic-settings-daemon#276fef9834b05c57b67e8ba36b74bea1ba690cee" +source = "git+https://github.com/pop-os/cosmic-settings-daemon#24ab5c28eb5876665752cd5e9405b7de17e2b99a" dependencies = [ "dirs", "ron 0.12.2", @@ -1514,7 +1514,7 @@ dependencies = [ [[package]] name = "cosmic-settings-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-settings-daemon#276fef9834b05c57b67e8ba36b74bea1ba690cee" +source = "git+https://github.com/pop-os/cosmic-settings-daemon#24ab5c28eb5876665752cd5e9405b7de17e2b99a" dependencies = [ "cosmic-config", "ron 0.11.0", @@ -1590,7 +1590,7 @@ dependencies = [ "linebender_resource_handle", "log", "rangemap", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "self_cell", "skrifa 0.40.0", "smol_str", @@ -1605,7 +1605,7 @@ dependencies = [ [[package]] name = "cosmic-theme" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" +source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" dependencies = [ "almost", "configparser", @@ -1640,9 +1640,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" [[package]] name = "crunchy" @@ -1658,7 +1658,7 @@ dependencies = [ "cosmic-text", "etagere", "lru", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "wgpu", ] @@ -1839,9 +1839,9 @@ checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376" [[package]] name = "dbus" -version = "0.9.11" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b942602992bb7acfd1f51c49811c58a610ef9181b6e66f3e519d79b540a3bf73" +checksum = "3ab69f03cc8c4340c9c8e315114e1658e6775a9b16a04357973aa21cec22b32e" dependencies = [ "futures-channel", "futures-util", @@ -1872,9 +1872,9 @@ dependencies = [ [[package]] name = "defmt" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e524506490a1953d237cb87b1cfc1e46f88c18f10a22dfe0f507dc6bfc7f7f" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -1882,12 +1882,11 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0a27770e9c8f719a79d8b638281f4d828f77d8fd61e0bd94451b9b85e576a0b" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", "syn", @@ -2351,7 +2350,7 @@ dependencies = [ "fluent-syntax", "intl-memoizer", "intl_pluralrules", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "self_cell", "smallvec", "unic-langid", @@ -2991,7 +2990,7 @@ dependencies = [ [[package]] name = "iced" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" +source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" dependencies = [ "dnd", "iced_accessibility", @@ -3012,7 +3011,7 @@ dependencies = [ [[package]] name = "iced_accessibility" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" +source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" dependencies = [ "accesskit", "accesskit_winit", @@ -3021,7 +3020,7 @@ dependencies = [ [[package]] name = "iced_core" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" +source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" dependencies = [ "bitflags 2.13.0", "bytes", @@ -3034,7 +3033,7 @@ dependencies = [ "num-traits", "palette", "raw-window-handle", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "serde", "smol_str", "thiserror 2.0.18", @@ -3046,7 +3045,7 @@ dependencies = [ [[package]] name = "iced_debug" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" +source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" dependencies = [ "iced_core", "iced_futures", @@ -3056,12 +3055,12 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" +source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" dependencies = [ "futures", "iced_core", "log", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "tokio", "wasm-bindgen-futures", "wasmtimer", @@ -3070,7 +3069,7 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" +source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" dependencies = [ "bitflags 2.13.0", "bytemuck", @@ -3083,7 +3082,7 @@ dependencies = [ "log", "lyon_path", "raw-window-handle", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "thiserror 2.0.18", "unicode-segmentation", ] @@ -3091,7 +3090,7 @@ dependencies = [ [[package]] name = "iced_program" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" +source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" dependencies = [ "iced_graphics", "iced_runtime", @@ -3100,7 +3099,7 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" +source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" dependencies = [ "iced_graphics", "iced_tiny_skia", @@ -3112,7 +3111,7 @@ dependencies = [ [[package]] name = "iced_runtime" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" +source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" dependencies = [ "bytes", "cosmic-client-toolkit", @@ -3127,7 +3126,7 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" +source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" dependencies = [ "bytemuck", "cosmic-text", @@ -3136,7 +3135,7 @@ dependencies = [ "kurbo 0.10.4", "log", "resvg", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "softbuffer", "tiny-skia", ] @@ -3144,7 +3143,7 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" +source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" dependencies = [ "as-raw-xcb-connection", "bitflags 2.13.0", @@ -3160,7 +3159,7 @@ dependencies = [ "lyon", "raw-window-handle", "resvg", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "rustix 0.38.44", "thiserror 2.0.18", "tiny-xlib", @@ -3175,7 +3174,7 @@ dependencies = [ [[package]] name = "iced_widget" version = "0.14.2" -source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" +source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" dependencies = [ "cosmic-client-toolkit", "dnd", @@ -3184,7 +3183,7 @@ dependencies = [ "log", "num-traits", "ouroboros", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "thiserror 2.0.18", "unicode-segmentation", "window_clipboard", @@ -3193,7 +3192,7 @@ dependencies = [ [[package]] name = "iced_winit" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" +source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" dependencies = [ "cosmic-client-toolkit", "cursor-icon", @@ -3205,7 +3204,7 @@ dependencies = [ "iced_runtime", "log", "raw-window-handle", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "rustix 0.38.44", "thiserror 2.0.18", "wasm-bindgen-futures", @@ -3713,9 +3712,9 @@ dependencies = [ [[package]] name = "inotify" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "533e68a5842e734946fe159fb03fc9bbbb254f590dd0d8ad321ae5ff7beca2c1" +checksum = "dd854a95a4ac672fed8c054136039fd32c22cf039ff09ead7280afe920486483" dependencies = [ "bitflags 2.13.0", "inotify-sys", @@ -3724,9 +3723,9 @@ dependencies = [ [[package]] name = "inotify-sys" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fda9741ca16536952da2ecaa6105c2f4653fa6f0724681df6d2414c4106d0b0" +checksum = "9ea94e891b3606826e9c998be69ddca42247dad8ad50b1649a5cb7e1c9ae06fd" dependencies = [ "libc", ] @@ -3846,9 +3845,9 @@ dependencies = [ [[package]] name = "jiff-tzdb" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c900ef84826f1338a557697dc8fc601df9ca9af4ac137c7fb61d4c6f2dfd3076" +checksum = "6142247df1a93c2b3587402a19710be3e6e942f1581a1702e76408f2c21d6590" [[package]] name = "jiff-tzdb-platform" @@ -3919,11 +3918,11 @@ dependencies = [ [[package]] name = "jobserver" -version = "0.1.34" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3" dependencies = [ - "getrandom 0.3.4", + "getrandom 0.4.3", "libc", ] @@ -4039,7 +4038,7 @@ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libcosmic" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#20dfd7c236208930634881ec52d22e7a353206dd" +source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" dependencies = [ "apply", "ashpd 0.12.3", @@ -4580,9 +4579,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367" dependencies = [ "num-integer", "num-traits", @@ -5348,9 +5347,9 @@ checksum = "3d595e54a326bc53c1c197b32d295e14b169e3cfeaa8dc82b529f947fba6bcf5" [[package]] name = "pxfm" -version = "0.1.29" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0c5ccf5294c6ccd63a74f1565028353830a9c2f5eb0c682c355c471726a6e3f" +checksum = "d55d956fa96f5ec02be2e13af0e20391a5aa83d6a074e3ad368959d0fab299ea" [[package]] name = "quick-error" @@ -5706,9 +5705,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" [[package]] name = "rustc_version" @@ -6688,7 +6687,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90" dependencies = [ - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", ] [[package]] @@ -8353,18 +8352,18 @@ checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524" [[package]] name = "zerocopy" -version = "0.8.52" +version = "0.8.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" +checksum = "75726053136156d419e285b9b7eddaaea9e3fea6ce32eed44a89901f0bd98de1" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.52" +version = "0.8.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" +checksum = "4714fd92cf900833d49538023a9b3915155210801d1c1169eba513b2addefd71" dependencies = [ "proc-macro2", "quote", From 9621be48b3730691201c208bcd88e9e1879dcb53 Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Thu, 9 Jul 2026 18:25:37 -0400 Subject: [PATCH 10/29] chore: update libcosmic --- Cargo.lock | 251 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 162 insertions(+), 89 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9596a9de..e440e946 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -115,7 +115,7 @@ checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", "cipher", - "cpufeatures", + "cpufeatures 0.2.17", ] [[package]] @@ -560,6 +560,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block-buffer" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" +dependencies = [ + "hybrid-array", +] + [[package]] name = "block-padding" version = "0.3.3" @@ -708,9 +717,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "bytes" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" [[package]] name = "calendrical_calculations" @@ -798,7 +807,7 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "crypto-common", + "crypto-common 0.1.7", "inout", ] @@ -912,6 +921,12 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b46dec724fd22199ebde05033a0cbae453bc3b1ecff11eb6a6bb3eec4b90c6a4" +[[package]] +name = "const-oid" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" + [[package]] name = "core-foundation" version = "0.9.4" @@ -1331,7 +1346,7 @@ dependencies = [ [[package]] name = "cosmic-config" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" +source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" dependencies = [ "atomicwrites", "cosmic-config-derive", @@ -1352,7 +1367,7 @@ dependencies = [ [[package]] name = "cosmic-config-derive" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" +source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" dependencies = [ "quote", "syn", @@ -1396,7 +1411,7 @@ dependencies = [ [[package]] name = "cosmic-notifications-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-notifications#2c7fbbd0d289189fb4a7384307c5fb06842ebb6b" +source = "git+https://github.com/pop-os/cosmic-notifications#2e40965d058dee4e9a7c4d5274e09411521e6471" dependencies = [ "cosmic-config", "serde", @@ -1405,7 +1420,7 @@ dependencies = [ [[package]] name = "cosmic-notifications-util" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-notifications#2c7fbbd0d289189fb4a7384307c5fb06842ebb6b" +source = "git+https://github.com/pop-os/cosmic-notifications#2e40965d058dee4e9a7c4d5274e09411521e6471" dependencies = [ "fast_image_resize", "libcosmic", @@ -1432,7 +1447,7 @@ dependencies = [ [[package]] name = "cosmic-panel-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-panel#45f03a3864a9385349be3ca13202553280e667d4" +source = "git+https://github.com/pop-os/cosmic-panel#029400b2b447d9d31f1a772d7f6f0d5eed2ea21e" dependencies = [ "anyhow", "cosmic-config", @@ -1460,7 +1475,7 @@ dependencies = [ [[package]] name = "cosmic-settings-a11y-manager-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#9f9311235ec7fcbf27e28ae62326ff2f4bb9441d" +source = "git+https://github.com/pop-os/cosmic-settings#ae5c7506627373f62e78372ce9e932fb591de35b" dependencies = [ "cosmic-protocols", "iced_futures", @@ -1474,7 +1489,7 @@ dependencies = [ [[package]] name = "cosmic-settings-accessibility-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#9f9311235ec7fcbf27e28ae62326ff2f4bb9441d" +source = "git+https://github.com/pop-os/cosmic-settings#ae5c7506627373f62e78372ce9e932fb591de35b" dependencies = [ "cosmic-dbus-a11y", "futures", @@ -1487,7 +1502,7 @@ dependencies = [ [[package]] name = "cosmic-settings-audio-client" version = "1.0.0" -source = "git+https://github.com/pop-os/cosmic-settings-daemon#24ab5c28eb5876665752cd5e9405b7de17e2b99a" +source = "git+https://github.com/pop-os/cosmic-settings-daemon#8c54bbbc10485c31e8717c21e119e19b87eeb3ea" dependencies = [ "cosmic-settings-audio-core", "dirs", @@ -1503,7 +1518,7 @@ dependencies = [ [[package]] name = "cosmic-settings-audio-core" version = "1.0.0" -source = "git+https://github.com/pop-os/cosmic-settings-daemon#24ab5c28eb5876665752cd5e9405b7de17e2b99a" +source = "git+https://github.com/pop-os/cosmic-settings-daemon#8c54bbbc10485c31e8717c21e119e19b87eeb3ea" dependencies = [ "dirs", "ron 0.12.2", @@ -1514,7 +1529,7 @@ dependencies = [ [[package]] name = "cosmic-settings-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-settings-daemon#24ab5c28eb5876665752cd5e9405b7de17e2b99a" +source = "git+https://github.com/pop-os/cosmic-settings-daemon#8c54bbbc10485c31e8717c21e119e19b87eeb3ea" dependencies = [ "cosmic-config", "ron 0.11.0", @@ -1535,7 +1550,7 @@ dependencies = [ [[package]] name = "cosmic-settings-daemon-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#9f9311235ec7fcbf27e28ae62326ff2f4bb9441d" +source = "git+https://github.com/pop-os/cosmic-settings#ae5c7506627373f62e78372ce9e932fb591de35b" dependencies = [ "futures", "iced_futures", @@ -1548,7 +1563,7 @@ dependencies = [ [[package]] name = "cosmic-settings-network-manager-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#9f9311235ec7fcbf27e28ae62326ff2f4bb9441d" +source = "git+https://github.com/pop-os/cosmic-settings#ae5c7506627373f62e78372ce9e932fb591de35b" dependencies = [ "bitflags 2.13.0", "cosmic-dbus-networkmanager", @@ -1567,7 +1582,7 @@ dependencies = [ [[package]] name = "cosmic-settings-upower-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#9f9311235ec7fcbf27e28ae62326ff2f4bb9441d" +source = "git+https://github.com/pop-os/cosmic-settings#ae5c7506627373f62e78372ce9e932fb591de35b" dependencies = [ "futures", "iced_futures", @@ -1605,7 +1620,7 @@ dependencies = [ [[package]] name = "cosmic-theme" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" +source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" dependencies = [ "almost", "configparser", @@ -1629,6 +1644,15 @@ dependencies = [ "libc", ] +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +dependencies = [ + "libc", +] + [[package]] name = "crc32fast" version = "1.5.0" @@ -1672,6 +1696,15 @@ dependencies = [ "typenum", ] +[[package]] +name = "crypto-common" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" +dependencies = [ + "hybrid-array", +] + [[package]] name = "css-color" version = "0.2.8" @@ -1970,11 +2003,22 @@ version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer", - "crypto-common", + "block-buffer 0.10.4", + "crypto-common 0.1.7", "subtle", ] +[[package]] +name = "digest" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" +dependencies = [ + "block-buffer 0.12.1", + "const-oid", + "crypto-common 0.2.2", +] + [[package]] name = "dirs" version = "6.0.0" @@ -2893,7 +2937,16 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest", + "digest 0.10.7", +] + +[[package]] +name = "hybrid-array" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" +dependencies = [ + "typenum", ] [[package]] @@ -2990,7 +3043,7 @@ dependencies = [ [[package]] name = "iced" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" +source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" dependencies = [ "dnd", "iced_accessibility", @@ -3011,7 +3064,7 @@ dependencies = [ [[package]] name = "iced_accessibility" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" +source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" dependencies = [ "accesskit", "accesskit_winit", @@ -3020,7 +3073,7 @@ dependencies = [ [[package]] name = "iced_core" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" +source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" dependencies = [ "bitflags 2.13.0", "bytes", @@ -3045,7 +3098,7 @@ dependencies = [ [[package]] name = "iced_debug" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" +source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" dependencies = [ "iced_core", "iced_futures", @@ -3055,7 +3108,7 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" +source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" dependencies = [ "futures", "iced_core", @@ -3069,7 +3122,7 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" +source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" dependencies = [ "bitflags 2.13.0", "bytemuck", @@ -3090,7 +3143,7 @@ dependencies = [ [[package]] name = "iced_program" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" +source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" dependencies = [ "iced_graphics", "iced_runtime", @@ -3099,7 +3152,7 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" +source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" dependencies = [ "iced_graphics", "iced_tiny_skia", @@ -3111,7 +3164,7 @@ dependencies = [ [[package]] name = "iced_runtime" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" +source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" dependencies = [ "bytes", "cosmic-client-toolkit", @@ -3126,7 +3179,7 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" +source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" dependencies = [ "bytemuck", "cosmic-text", @@ -3143,7 +3196,7 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" +source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" dependencies = [ "as-raw-xcb-connection", "bitflags 2.13.0", @@ -3174,7 +3227,7 @@ dependencies = [ [[package]] name = "iced_widget" version = "0.14.2" -source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" +source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" dependencies = [ "cosmic-client-toolkit", "dnd", @@ -3192,7 +3245,7 @@ dependencies = [ [[package]] name = "iced_winit" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" +source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" dependencies = [ "cosmic-client-toolkit", "cursor-icon", @@ -3712,9 +3765,9 @@ dependencies = [ [[package]] name = "inotify" -version = "0.11.3" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd854a95a4ac672fed8c054136039fd32c22cf039ff09ead7280afe920486483" +checksum = "153be1941a183ec9ccd095ddbe17a8b8d435ef6c76e9e02451b933c3999af2c8" dependencies = [ "bitflags 2.13.0", "inotify-sys", @@ -3723,9 +3776,9 @@ dependencies = [ [[package]] name = "inotify-sys" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea94e891b3606826e9c998be69ddca42247dad8ad50b1649a5cb7e1c9ae06fd" +checksum = "c033f80b2c113cdf91ab7a33faa9cbc014726dcad99880c8609af2a370edf37d" dependencies = [ "libc", ] @@ -3818,9 +3871,9 @@ checksum = "2ceaf4c6c48465bead8cb6a0b7c4ee0c86ecbb31239032b9c66ab9a08d2f3ee1" [[package]] name = "jiff" -version = "0.2.31" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccfe6121cbe750cf81efa362d85c0bde7ea298ec43092d3a193baca59cdbd634" +checksum = "961d16382652bfdd8c6f68b223b26a8c93e0d475c672f414411db31c6c5c900e" dependencies = [ "defmt", "jiff-static", @@ -3834,9 +3887,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.31" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e165e897f662d428f3cd3828a919dbe067c2d42bb1031eede74ef9d27ecdedd2" +checksum = "d0879bd39df99c4c5e2c6615ccc026391a423dde10532c573e6086eb94a802cc" dependencies = [ "proc-macro2", "quote", @@ -3845,9 +3898,9 @@ dependencies = [ [[package]] name = "jiff-tzdb" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6142247df1a93c2b3587402a19710be3e6e942f1581a1702e76408f2c21d6590" +checksum = "142bd39932ad231f10513df9ab62661fead8719872150b7ad02a2df79f4e141e" [[package]] name = "jiff-tzdb-platform" @@ -4038,7 +4091,7 @@ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libcosmic" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#3b85b6e8359308d31162c9a3d732ad1e2848bcfc" +source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" dependencies = [ "apply", "ashpd 0.12.3", @@ -4311,9 +4364,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.2" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "memmap2" @@ -4371,6 +4424,16 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime 0.3.17", + "unicase", +] + [[package]] name = "miniz_oxide" version = "0.8.9" @@ -4500,9 +4563,9 @@ dependencies = [ [[package]] name = "nmrs" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "133ab12d9167f6b8d7cdadd4f8fde378bcaff4ad1c893d887498a98de50e10e9" +checksum = "62c427203beda58ac05815b356d64a34eeb2fba180b3077d543ebb1472fc1269" dependencies = [ "async-trait", "base64", @@ -4624,11 +4687,10 @@ dependencies = [ [[package]] name = "num-iter" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +checksum = "c92800bd69a1eac91786bcfe9da64a897eb72911b8dc3095decbd07429e8048b" dependencies = [ - "autocfg", "num-integer", "num-traits", ] @@ -5364,7 +5426,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdcc8dd4e2f670d309a5f0e83fe36dfdc05af317008fea29144da1a2ac858e5e" dependencies = [ "memchr", - "serde", ] [[package]] @@ -5547,9 +5608,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.12.4" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -5559,9 +5620,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -5665,9 +5726,9 @@ checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" [[package]] name = "rust-embed" -version = "8.11.0" +version = "8.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04113cb9355a377d83f06ef1f0a45b8ab8cd7d8b1288160717d66df5c7988d27" +checksum = "e9e7760e252aaba7b09f4be00e36476cf585bdb68a53552ac954cdf504ab4bc9" dependencies = [ "rust-embed-impl", "rust-embed-utils", @@ -5676,10 +5737,11 @@ dependencies = [ [[package]] name = "rust-embed-impl" -version = "8.11.0" +version = "8.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0902e4c7c8e997159ab384e6d0fc91c221375f6894346ae107f47dd0f3ccaa" +checksum = "3bcfc4d6f53af43755f7a723e4b6b8794fcce052a178dd8c6c1dadc5f5343097" dependencies = [ + "mime_guess", "proc-macro2", "quote", "rust-embed-utils", @@ -5689,11 +5751,11 @@ dependencies = [ [[package]] name = "rust-embed-utils" -version = "8.11.0" +version = "8.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bcdef0be6fe7f6fa333b1073c949729274b05f123a0ad7efcb8efd878e5c3b1" +checksum = "42ffa149f6aa81b58a5b3011d01a857c4ed12c7a732d2c51947a4c7c692185f0" dependencies = [ - "sha2", + "sha2 0.11.0", "walkdir", ] @@ -5746,9 +5808,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "rustybuzz" @@ -5847,7 +5909,7 @@ dependencies = [ "num", "once_cell", "serde", - "sha2", + "sha2 0.10.9", "zbus", ] @@ -5985,8 +6047,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", - "cpufeatures", - "digest", + "cpufeatures 0.2.17", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "digest 0.11.3", ] [[package]] @@ -8101,7 +8174,7 @@ checksum = "2fb433233f2df9344722454bc7e96465c9d03bff9d77c248f9e7523fe79585b5" [[package]] name = "xdg-shell-wrapper-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-panel#45f03a3864a9385349be3ca13202553280e667d4" +source = "git+https://github.com/pop-os/cosmic-panel#029400b2b447d9d31f1a772d7f6f0d5eed2ea21e" dependencies = [ "serde", "wayland-protocols-wlr", @@ -8248,9 +8321,9 @@ dependencies = [ [[package]] name = "zbus" -version = "5.16.0" +version = "5.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eee682d202a77e4a9f3b2c2bdf48a7b28af5c08c34ddf66f98c93e5e39464285" +checksum = "a28b97f866896a4be7aefd2b5a8e01bb6773d19a775d54ab28b4d094b9a4480e" dependencies = [ "async-broadcast", "async-executor", @@ -8308,9 +8381,9 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "5.16.0" +version = "5.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adf1bd45a81a103745b1757754762a26e8cd01e4532e4d6c8ec431624b80d1d6" +checksum = "5e05ad887425eecf5e8384dc2406a4a9313eb73468712fc1cdea362eb4fe0469" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -8323,9 +8396,9 @@ dependencies = [ [[package]] name = "zbus_names" -version = "4.3.2" +version = "4.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7074f3e50b894eac91750142016d30d0a89be8e67dbfd9704fb875825760e52d" +checksum = "1039ca249fee9559680f3a9f05b55e0761fee51af4f6c1e7d8c1f31e549721d2" dependencies = [ "serde", "winnow", @@ -8334,12 +8407,12 @@ dependencies = [ [[package]] name = "zbus_xml" -version = "5.1.1" +version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8067892e940ed1727dea64690378601603b31d62dfde019a5335fbb7c0e0ed9" +checksum = "59ab0513c0a66a60a8718d5ad712a5094845a20d95b5c1c81e2bd8e904a52b4f" dependencies = [ - "quick-xml", "serde", + "winnow", "zbus_names", "zvariant", ] @@ -8352,18 +8425,18 @@ checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524" [[package]] name = "zerocopy" -version = "0.8.53" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75726053136156d419e285b9b7eddaaea9e3fea6ce32eed44a89901f0bd98de1" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.53" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4714fd92cf900833d49538023a9b3915155210801d1c1169eba513b2addefd71" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", @@ -8537,9 +8610,9 @@ dependencies = [ [[package]] name = "zvariant" -version = "5.12.0" +version = "5.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a192a0bde63360d77a7523c833d4b4ce6070a927e2c53246e4c540b1a3e27be0" +checksum = "7cf057bb00bf5c9ad77abb6147b0ca4818236a1858416e9d988e40d6322fefa7" dependencies = [ "endi", "enumflags2", @@ -8552,9 +8625,9 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "5.12.0" +version = "5.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bc6cde9c01c511074be97f7ccb6c19d0da89e3f8662e812e999dcfd4638737" +checksum = "8118ca6bda77bfc0ab51d660db0c955f2505eef854c9a449435bccb616933b31" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -8565,9 +8638,9 @@ dependencies = [ [[package]] name = "zvariant_utils" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e8535915cfa75547e559d8c68e8139909a4aeee076831e4ef7fc59d8172c4d6" +checksum = "90cb9383f9b45290407a1258b202d3f8f01db719eb60b4e4055c6375af4fc7c7" dependencies = [ "proc-macro2", "quote", From b282484463b291107793b95f70b41f94b280e89b Mon Sep 17 00:00:00 2001 From: Hojjat Date: Thu, 9 Jul 2026 18:30:52 -0600 Subject: [PATCH 11/29] chore: update libcosmic to fix minimize applet crash --- Cargo.lock | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e440e946..9fc6c772 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1346,7 +1346,7 @@ dependencies = [ [[package]] name = "cosmic-config" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" +source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" dependencies = [ "atomicwrites", "cosmic-config-derive", @@ -1367,7 +1367,7 @@ dependencies = [ [[package]] name = "cosmic-config-derive" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" +source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" dependencies = [ "quote", "syn", @@ -1620,7 +1620,7 @@ dependencies = [ [[package]] name = "cosmic-theme" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" +source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" dependencies = [ "almost", "configparser", @@ -3043,7 +3043,7 @@ dependencies = [ [[package]] name = "iced" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" +source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" dependencies = [ "dnd", "iced_accessibility", @@ -3064,7 +3064,7 @@ dependencies = [ [[package]] name = "iced_accessibility" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" +source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" dependencies = [ "accesskit", "accesskit_winit", @@ -3073,7 +3073,7 @@ dependencies = [ [[package]] name = "iced_core" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" +source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" dependencies = [ "bitflags 2.13.0", "bytes", @@ -3098,7 +3098,7 @@ dependencies = [ [[package]] name = "iced_debug" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" +source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" dependencies = [ "iced_core", "iced_futures", @@ -3108,7 +3108,7 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" +source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" dependencies = [ "futures", "iced_core", @@ -3122,7 +3122,7 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" +source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" dependencies = [ "bitflags 2.13.0", "bytemuck", @@ -3143,7 +3143,7 @@ dependencies = [ [[package]] name = "iced_program" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" +source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" dependencies = [ "iced_graphics", "iced_runtime", @@ -3152,7 +3152,7 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" +source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" dependencies = [ "iced_graphics", "iced_tiny_skia", @@ -3164,7 +3164,7 @@ dependencies = [ [[package]] name = "iced_runtime" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" +source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" dependencies = [ "bytes", "cosmic-client-toolkit", @@ -3179,7 +3179,7 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" +source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" dependencies = [ "bytemuck", "cosmic-text", @@ -3196,7 +3196,7 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" +source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" dependencies = [ "as-raw-xcb-connection", "bitflags 2.13.0", @@ -3214,6 +3214,7 @@ dependencies = [ "resvg", "rustc-hash 2.1.3", "rustix 0.38.44", + "smithay-client-toolkit", "thiserror 2.0.18", "tiny-xlib", "wayland-backend", @@ -3227,7 +3228,7 @@ dependencies = [ [[package]] name = "iced_widget" version = "0.14.2" -source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" +source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" dependencies = [ "cosmic-client-toolkit", "dnd", @@ -3245,7 +3246,7 @@ dependencies = [ [[package]] name = "iced_winit" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" +source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" dependencies = [ "cosmic-client-toolkit", "cursor-icon", @@ -4091,7 +4092,7 @@ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libcosmic" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#8cb10bf6e24b86a7d2a9cf8c662d3e0154db1b21" +source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" dependencies = [ "apply", "ashpd 0.12.3", From e318f0d4120dc97a4a70408cc3a485d0d475fb3b Mon Sep 17 00:00:00 2001 From: Akrm Al-Hakimi Date: Tue, 30 Jun 2026 11:13:16 -0400 Subject: [PATCH 12/29] cosmic-applet-network: migrate NetworkManager flow to nmrs 3.4 --- Cargo.lock | 324 +-------- cosmic-applet-network/Cargo.toml | 11 +- cosmic-applet-network/src/app.rs | 1055 ++++++++++++++++-------------- cosmic-applet-network/src/lib.rs | 1 - 4 files changed, 580 insertions(+), 811 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9fc6c772..ef0a8ba1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -107,17 +107,6 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" -[[package]] -name = "aes" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures 0.2.17", -] - [[package]] name = "ahash" version = "0.8.12" @@ -551,15 +540,6 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - [[package]] name = "block-buffer" version = "0.12.1" @@ -569,15 +549,6 @@ dependencies = [ "hybrid-array", ] -[[package]] -name = "block-padding" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" -dependencies = [ - "generic-array", -] - [[package]] name = "block2" version = "0.5.1" @@ -756,15 +727,6 @@ dependencies = [ "wayland-client", ] -[[package]] -name = "cbc" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" -dependencies = [ - "cipher", -] - [[package]] name = "cc" version = "1.2.66" @@ -801,16 +763,6 @@ dependencies = [ "windows-link 0.2.1", ] -[[package]] -name = "cipher" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" -dependencies = [ - "crypto-common 0.1.7", - "inout", -] - [[package]] name = "clipboard-win" version = "5.4.1" @@ -1156,10 +1108,7 @@ dependencies = [ name = "cosmic-applet-network" version = "1.0.15" dependencies = [ - "anyhow", "async-fn-stream", - "cosmic-dbus-networkmanager", - "cosmic-settings-network-manager-subscription", "futures", "futures-util", "i18n-embed", @@ -1175,7 +1124,6 @@ dependencies = [ "tracing-log", "tracing-subscriber", "uuid", - "zbus", ] [[package]] @@ -1381,19 +1329,6 @@ dependencies = [ "zbus", ] -[[package]] -name = "cosmic-dbus-networkmanager" -version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#eed01dd3609e90e3c8cd043656734c500956c793" -dependencies = [ - "bitflags 2.13.0", - "derive_builder", - "jiff", - "procfs", - "zbus", - "zvariant", -] - [[package]] name = "cosmic-freedesktop-icons" version = "0.4.0" @@ -1411,7 +1346,7 @@ dependencies = [ [[package]] name = "cosmic-notifications-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-notifications#2e40965d058dee4e9a7c4d5274e09411521e6471" +source = "git+https://github.com/pop-os/cosmic-notifications#7c723b7705ec77b1ad5396a1baa9ae1c0cb5a0da" dependencies = [ "cosmic-config", "serde", @@ -1420,7 +1355,7 @@ dependencies = [ [[package]] name = "cosmic-notifications-util" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-notifications#2e40965d058dee4e9a7c4d5274e09411521e6471" +source = "git+https://github.com/pop-os/cosmic-notifications#7c723b7705ec77b1ad5396a1baa9ae1c0cb5a0da" dependencies = [ "fast_image_resize", "libcosmic", @@ -1560,25 +1495,6 @@ dependencies = [ "zbus", ] -[[package]] -name = "cosmic-settings-network-manager-subscription" -version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#ae5c7506627373f62e78372ce9e932fb591de35b" -dependencies = [ - "bitflags 2.13.0", - "cosmic-dbus-networkmanager", - "futures", - "iced_futures", - "itertools", - "nm-secret-agent-manager", - "secret-service", - "secure-string", - "thiserror 2.0.18", - "tokio", - "tracing", - "zbus", -] - [[package]] name = "cosmic-settings-upower-subscription" version = "1.0.7" @@ -1635,15 +1551,6 @@ dependencies = [ "thiserror 2.0.18", ] -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - [[package]] name = "cpufeatures" version = "0.3.0" @@ -1686,16 +1593,6 @@ dependencies = [ "wgpu", ] -[[package]] -name = "crypto-common" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" -dependencies = [ - "generic-array", - "typenum", -] - [[package]] name = "crypto-common" version = "0.2.2" @@ -1943,37 +1840,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "derive_builder" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" -dependencies = [ - "derive_builder_macro", -] - -[[package]] -name = "derive_builder_core" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" -dependencies = [ - "darling 0.20.11", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "derive_builder_macro" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" -dependencies = [ - "derive_builder_core", - "syn", -] - [[package]] name = "derive_setters" version = "0.1.9" @@ -1997,26 +1863,15 @@ dependencies = [ "syn", ] -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer 0.10.4", - "crypto-common 0.1.7", - "subtle", -] - [[package]] name = "digest" version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ - "block-buffer 0.12.1", + "block-buffer", "const-oid", - "crypto-common 0.2.2", + "crypto-common", ] [[package]] @@ -2037,7 +1892,7 @@ dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -2235,7 +2090,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -2646,16 +2501,6 @@ dependencies = [ "slab", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - [[package]] name = "gethostname" version = "1.1.0" @@ -2922,24 +2767,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" -[[package]] -name = "hkdf" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" -dependencies = [ - "hmac", -] - -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest 0.10.7", -] - [[package]] name = "hybrid-array" version = "0.4.13" @@ -3784,16 +3611,6 @@ dependencies = [ "libc", ] -[[package]] -name = "inout" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" -dependencies = [ - "block-padding", - "generic-array", -] - [[package]] name = "input" version = "0.9.1" @@ -3849,15 +3666,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "itertools" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" -dependencies = [ - "either", -] - [[package]] name = "itoa" version = "1.0.18" @@ -4033,7 +3841,7 @@ version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a1886916523694cd6ea3d175f03a1e5010699a2a4cc13696d83d7bea1d80638" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -4554,14 +4362,6 @@ dependencies = [ "libc", ] -[[package]] -name = "nm-secret-agent-manager" -version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#eed01dd3609e90e3c8cd043656734c500956c793" -dependencies = [ - "zbus", -] - [[package]] name = "nmrs" version = "3.4.0" @@ -4624,21 +4424,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "num" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" -dependencies = [ - "num-bigint", - "num-complex", - "num-integer", - "num-iter", - "num-rational", - "num-traits", + "windows-sys 0.59.0", ] [[package]] @@ -4651,15 +4437,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-complex" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" -dependencies = [ - "num-traits", -] - [[package]] name = "num-conv" version = "0.2.2" @@ -4686,16 +4463,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-iter" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c92800bd69a1eac91786bcfe9da64a897eb72911b8dc3095decbd07429e8048b" -dependencies = [ - "num-integer", - "num-traits", -] - [[package]] name = "num-rational" version = "0.4.2" @@ -5381,27 +5148,6 @@ dependencies = [ "yansi", ] -[[package]] -name = "procfs" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25485360a54d6861439d60facef26de713b1e126bf015ec8f98239467a2b82f7" -dependencies = [ - "bitflags 2.13.0", - "procfs-core", - "rustix 1.1.4", -] - -[[package]] -name = "procfs-core" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6401bf7b6af22f78b563665d15a22e9aef27775b79b149a66ca022468a4e405" -dependencies = [ - "bitflags 2.13.0", - "hex", -] - [[package]] name = "profiling" version = "1.0.18" @@ -5756,7 +5502,7 @@ version = "8.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ffa149f6aa81b58a5b3011d01a857c4ed12c7a732d2c51947a4c7c692185f0" dependencies = [ - "sha2 0.11.0", + "sha2", "walkdir", ] @@ -5804,7 +5550,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.12.1", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -5895,25 +5641,6 @@ dependencies = [ "tiny-skia", ] -[[package]] -name = "secret-service" -version = "5.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a62d7f86047af0077255a29494136b9aaaf697c76ff70b8e49cded4e2623c14" -dependencies = [ - "aes", - "cbc", - "futures-util", - "generic-array", - "getrandom 0.2.17", - "hkdf", - "num", - "once_cell", - "serde", - "sha2 0.10.9", - "zbus", -] - [[package]] name = "secure-string" version = "0.3.0" @@ -6041,17 +5768,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures 0.2.17", - "digest 0.10.7", -] - [[package]] name = "sha2" version = "0.11.0" @@ -6059,8 +5775,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", - "cpufeatures 0.3.0", - "digest 0.11.3", + "cpufeatures", + "digest", ] [[package]] @@ -6230,7 +5946,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" dependencies = [ "libc", - "windows-sys 0.61.2", + "windows-sys 0.60.2", ] [[package]] @@ -6321,12 +6037,6 @@ dependencies = [ "syn", ] -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - [[package]] name = "svg_fmt" version = "0.4.5" @@ -6418,10 +6128,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.4.3", + "getrandom 0.3.4", "once_cell", "rustix 1.1.4", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -6796,7 +6506,7 @@ checksum = "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e" dependencies = [ "memoffset", "tempfile", - "windows-sys 0.61.2", + "windows-sys 0.60.2", ] [[package]] @@ -7428,7 +7138,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.48.0", ] [[package]] diff --git a/cosmic-applet-network/Cargo.toml b/cosmic-applet-network/Cargo.toml index 3ba86f2b..edbf03b6 100644 --- a/cosmic-applet-network/Cargo.toml +++ b/cosmic-applet-network/Cargo.toml @@ -5,9 +5,7 @@ edition = "2024" license = "GPL-3.0-or-later" [dependencies] -anyhow.workspace = true async-fn-stream = "0.3" -cosmic-dbus-networkmanager = { git = "https://github.com/pop-os/dbus-settings-bindings" } futures.workspace = true futures-util.workspace = true i18n-embed-fl.workspace = true @@ -25,14 +23,7 @@ tokio.workspace = true tracing-log.workspace = true tracing-subscriber.workspace = true tracing.workspace = true -zbus.workspace = true indexmap = "2.13.0" secure-string = "0.3.0" uuid = { version = "1.21.0", features = ["v4"] } -nmrs = "3.1.3" - - - -[dependencies.cosmic-settings-network-manager-subscription] -git = "https://github.com/pop-os/cosmic-settings/" -# path = "../../cosmic-settings/subscriptions/network-manager" +nmrs = "3.4.0" diff --git a/cosmic-applet-network/src/app.rs b/cosmic-applet-network/src/app.rs index d66632ab..3cfee15a 100644 --- a/cosmic-applet-network/src/app.rs +++ b/cosmic-applet-network/src/app.rs @@ -1,13 +1,7 @@ -use anyhow::Context; -use cosmic_settings_network_manager_subscription::{ - self as network_manager, NetworkManagerState, UUID, - available_wifi::{AccessPoint, NetworkType}, - current_networks::ActiveConnectionInfo, - hw_address::HwAddress, -}; use indexmap::IndexMap; use nmrs::{ - NetworkManager as NmrsManager, SettingsSummary, + ActiveConnection, ActiveConnectionState, ConnectType, ConnectivityState, EapOptions, + NetworkEvent, NetworkManager as NmrsManager, NetworkSnapshot, WifiSecurity, agent::{SecretAgent, SecretAgentCapabilities, SecretRequest, SecretResponder, SecretSetting}, }; use rustc_hash::FxHashSet; @@ -15,11 +9,13 @@ use secure_string::SecureString; use std::{ borrow::Cow, collections::{BTreeMap, HashMap}, + fmt, + str::FromStr, sync::{Arc, LazyLock}, }; use cosmic::{ - Apply, Element, Task, app, + Element, Task, app, applet::{ menu_button, menu_control_padding, padded_control, token::subscription::{TokenRequest, TokenUpdate, activation_token_subscription}, @@ -29,7 +25,7 @@ use cosmic::{ iced::core::window, iced::{ Alignment, Length, Subscription, - platform_specific::shell::wayland::commands::popup::{destroy_popup, get_popup}, + platform_specific::shell::wayland::commands::popup::destroy_popup, }, surface, theme, widget::{ @@ -38,12 +34,8 @@ use cosmic::{ indeterminate_circular, row, scrollable, secure_input, text, text_input, toggler, }, }; -use cosmic_dbus_networkmanager::interface::enums::{ - ActiveConnectionState, DeviceState, NmConnectivityState, -}; use futures::{StreamExt, lock::Mutex as AsyncMutex}; -use zbus::Connection; use crate::{config, fl}; @@ -64,17 +56,6 @@ enum NewConnectionState { Failure(AccessPoint), } -impl NewConnectionState { - pub fn ssid(&self) -> &str { - &match self { - Self::EnterPassword { access_point, .. } => access_point, - Self::Waiting(ap) => ap, - Self::Failure(ap) => ap, - } - .ssid - } -} - impl From for AccessPoint { fn from(connection_state: NewConnectionState) -> Self { match connection_state { @@ -87,11 +68,183 @@ impl From for AccessPoint { pub static SECURE_INPUT_WIFI: LazyLock = LazyLock::new(Id::unique); +type Uuid = Arc; +type Ssid = Arc; + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum NetworkType { + Open, + Password, + Eap, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum DeviceState { + Unknown, + Unmanaged, + Unavailable, + Disconnected, + NeedAuth, + Activated, + Failed, + Other, +} + +impl From<&nmrs::DeviceState> for DeviceState { + fn from(state: &nmrs::DeviceState) -> Self { + match state { + nmrs::DeviceState::Unmanaged => Self::Unmanaged, + nmrs::DeviceState::Unavailable => Self::Unavailable, + nmrs::DeviceState::Disconnected => Self::Disconnected, + nmrs::DeviceState::NeedAuth => Self::NeedAuth, + nmrs::DeviceState::Activated => Self::Activated, + nmrs::DeviceState::Failed => Self::Failed, + nmrs::DeviceState::Other(_) => Self::Unknown, + _ => Self::Other, + } + } +} + +#[derive(Default, Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub struct HwAddress([u8; 6]); + +impl HwAddress { + fn as_string(self) -> String { + self.0 + .iter() + .map(|byte| format!("{byte:02X}")) + .collect::>() + .join(":") + } +} + +impl FromStr for HwAddress { + type Err = (); + + fn from_str(value: &str) -> Result { + let mut bytes = [0; 6]; + let mut parts = value.split(':'); + for byte in &mut bytes { + let Some(part) = parts.next() else { + return Err(()); + }; + *byte = u8::from_str_radix(part, 16).map_err(|_| ())?; + } + if parts.next().is_some() { + return Err(()); + } + Ok(Self(bytes)) + } +} + +impl fmt::Display for HwAddress { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str(&self.as_string()) + } +} + +fn same_access_point(left: &AccessPoint, right: &AccessPoint) -> bool { + left.ssid == right.ssid + && left.hw_address == right.hw_address + && left.interface == right.interface +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct AccessPoint { + pub ssid: Ssid, + pub network_type: NetworkType, + pub hw_address: HwAddress, + pub strength: u8, + pub state: DeviceState, + pub working: bool, + pub wps_push: bool, + pub interface: Option, +} + +#[derive(Debug, Clone)] +pub enum ActiveConnectionInfo { + Wired { + name: String, + hw_address: String, + speed: u32, + ip_addresses: Vec, + }, + WiFi { + name: String, + ip_addresses: Vec, + state: ActiveConnectionState, + strength: u8, + hw_address: String, + }, + Vpn { + name: String, + ip_addresses: Vec, + }, +} + +impl ActiveConnectionInfo { + fn name(&self) -> &str { + match self { + Self::Wired { name, .. } | Self::WiFi { name, .. } | Self::Vpn { name, .. } => name, + } + } +} + +#[derive(Debug, Clone)] +pub struct NetworkManagerState { + pub wifi_enabled: bool, + pub airplane_mode: bool, + pub connectivity: ConnectivityState, + pub active_conns: Vec, + pub known_access_points: Vec, + pub wireless_access_points: Vec, +} + +impl Default for NetworkManagerState { + fn default() -> Self { + Self { + wifi_enabled: true, + airplane_mode: false, + connectivity: ConnectivityState::Unknown, + active_conns: Vec::new(), + known_access_points: Vec::new(), + wireless_access_points: Vec::new(), + } + } +} + +#[derive(Clone, Debug, PartialEq, Eq)] +pub enum DeviceType { + Wifi, +} + +#[derive(Clone, Debug)] +pub struct DeviceConnection { + pub id: String, +} + +#[derive(Clone, Debug)] +pub struct DeviceInfo { + pub interface: String, + pub device_type: DeviceType, + pub active_connection: Option<(DeviceConnection,)>, + pub known_connections: Vec, +} + +#[derive(Debug, Clone)] +pub struct AppletSnapshot { + pub state: NetworkManagerState, + pub devices: Vec, + pub known_vpns: IndexMap, + pub ssid_to_uuid: BTreeMap, Box>, + pub captive_portal_url: Option, +} + #[derive(Default, Debug, Clone)] pub struct MyNetworkState { - pub known_vpns: IndexMap, + pub known_vpns: IndexMap, pub ssid_to_uuid: BTreeMap, Box>, - pub devices: Vec>, + pub devices: Vec>, pub nm_state: NetworkManagerState, pub requested_vpn: Option, } @@ -148,21 +301,18 @@ struct CosmicNetworkApplet { popup: Option, // NM state - nm_sender: Option>, - nm_task: Option>, nm_state: MyNetworkState, // UI state show_visible_networks: bool, show_available_vpns: bool, new_connection: Option, - conn: Option, toggle_wifi_ctr: u128, token_tx: Option>, failed_known_ssids: FxHashSet>, /// When defined, displays connections for the specific device. - active_device: Option>, + active_device: Option>, } fn wifi_icon(strength: u8) -> &'static str { @@ -297,7 +447,279 @@ fn vpn_section<'a>( vpn_col } +fn ip_addresses(ip4_address: Option, ip6_address: Option) -> Vec { + ip4_address.into_iter().chain(ip6_address).collect() +} + +fn network_type(security: nmrs::SecurityFeatures) -> NetworkType { + match security.preferred_connect_type() { + ConnectType::Open | ConnectType::Owe => NetworkType::Open, + ConnectType::Eap => NetworkType::Eap, + ConnectType::Psk | ConnectType::Sae => NetworkType::Password, + _ => NetworkType::Password, + } +} + +fn wifi_security( + access_point: &AccessPoint, + identity: Option, + password: Option, +) -> WifiSecurity { + match access_point.network_type { + NetworkType::Open => WifiSecurity::Open, + NetworkType::Eap => WifiSecurity::WpaEap { + opts: EapOptions::new( + identity.unwrap_or_default(), + password + .as_ref() + .map(|password| password.unsecure().to_owned()) + .unwrap_or_default(), + ), + }, + NetworkType::Password => WifiSecurity::WpaPsk { + psk: password + .as_ref() + .map(|password| password.unsecure().to_owned()) + .unwrap_or_default(), + }, + } +} + +fn connect_access_point_task( + access_point: AccessPoint, + identity: Option, + password: Option, +) -> Task> { + cosmic::task::future(async move { + let ssid = access_point.ssid.to_string(); + let interface = access_point.interface.clone(); + let bssid = access_point.hw_address.as_string(); + let security = wifi_security(&access_point, identity, password); + match NmrsManager::new().await { + Ok(nm) => { + match nm + .connect_to_bssid(&ssid, Some(&bssid), interface.as_deref(), security) + .await + { + Ok(()) => Message::ConnectionAttemptFinished { + access_point, + success: true, + error: None, + }, + Err(e) => Message::ConnectionAttemptFinished { + access_point, + success: false, + error: Some(e.to_string()), + }, + } + } + Err(e) => Message::Error(format!("nmrs init: {e}")), + } + }) + .map(cosmic::Action::App) +} + +fn snapshot_task() -> Task { + cosmic::task::future(async move { + let nm = match NmrsManager::new().await { + Ok(nm) => nm, + Err(e) => return Message::Error(format!("nmrs init: {e}")), + }; + + match nm.snapshot().await { + Ok(snapshot) => Message::Snapshot(snapshot_to_applet(snapshot)), + Err(e) => Message::Error(format!("snapshot: {e}")), + } + }) +} + +fn network_events_task() -> Task { + cosmic::Task::stream(async_fn_stream::fn_stream(|emitter| async move { + let nm = match NmrsManager::new().await { + Ok(nm) => nm, + Err(e) => { + let _ = emitter + .emit(Message::Error(format!("nmrs init: {e}"))) + .await; + return; + } + }; + let mut events = match nm.network_events().await { + Ok(events) => events, + Err(e) => { + let _ = emitter + .emit(Message::Error(format!("network events: {e}"))) + .await; + return; + } + }; + + while let Some(event) = events.next().await { + match event { + Ok(event) => { + let _ = emitter.emit(Message::NetworkEvent(event)).await; + } + Err(e) => { + let _ = emitter + .emit(Message::Error(format!("network event: {e}"))) + .await; + } + } + } + })) +} + +fn snapshot_to_applet(snapshot: NetworkSnapshot) -> AppletSnapshot { + let summary = snapshot.applet_summary(); + let mut known_vpns = IndexMap::new(); + for vpn in summary.saved_vpns.values() { + let uuid: Uuid = Arc::from(vpn.uuid.as_str()); + let entry = match vpn.kind { + Some(nmrs::VpnKind::WireGuard) => ConnectionSettings::Wireguard { id: vpn.id.clone() }, + _ => ConnectionSettings::Vpn { id: vpn.id.clone() }, + }; + known_vpns.insert(uuid, entry); + } + + let mut ssid_to_uuid = BTreeMap::new(); + for (ssid, profiles) in &summary.known_wifi { + if let Some(profile) = profiles.first() { + ssid_to_uuid.insert( + ssid.clone().into_boxed_str(), + profile.uuid.clone().into_boxed_str(), + ); + } + } + + let active_conns = snapshot + .active_connections + .iter() + .filter_map(|conn| match conn { + ActiveConnection::Wired(wired) => Some(ActiveConnectionInfo::Wired { + name: wired.id.clone(), + hw_address: wired.hw_address.clone().unwrap_or_default(), + speed: wired.speed_mbps.unwrap_or_default(), + ip_addresses: ip_addresses(wired.ip4_address.clone(), wired.ip6_address.clone()), + }), + ActiveConnection::Wifi(wifi) => Some(ActiveConnectionInfo::WiFi { + name: wifi.ssid.clone(), + ip_addresses: ip_addresses(wifi.ip4_address.clone(), wifi.ip6_address.clone()), + state: wifi.state, + strength: wifi.strength.unwrap_or_default(), + hw_address: wifi.bssid.clone().unwrap_or_default(), + }), + ActiveConnection::Vpn(vpn) => Some(ActiveConnectionInfo::Vpn { + name: vpn.id.clone(), + ip_addresses: ip_addresses(vpn.ip4_address.clone(), vpn.ip6_address.clone()), + }), + ActiveConnection::Other(_) | _ => None, + }) + .collect(); + + let wireless_access_points = summary + .wifi_groups + .iter() + .map(|group| { + let strongest = &group.strongest; + AccessPoint { + ssid: Arc::from(group.ssid.as_str()), + network_type: network_type(strongest.security), + hw_address: HwAddress::from_str(&strongest.bssid).unwrap_or_default(), + strength: strongest.strength, + state: DeviceState::from(&strongest.device_state), + working: false, + wps_push: strongest.security.wps, + interface: Some(group.interface.clone()), + } + }) + .collect::>(); + + let known_access_points = summary + .wifi_groups + .iter() + .filter(|group| group.known || group.active) + .map(|group| { + let strongest = &group.strongest; + AccessPoint { + ssid: Arc::from(group.ssid.as_str()), + network_type: network_type(strongest.security), + hw_address: HwAddress::from_str(&strongest.bssid).unwrap_or_default(), + strength: strongest.strength, + state: if group.active { + DeviceState::Activated + } else { + DeviceState::from(&strongest.device_state) + }, + working: false, + wps_push: strongest.security.wps, + interface: Some(group.interface.clone()), + } + }) + .collect::>(); + + let devices = snapshot + .wifi_devices + .iter() + .map(|device| { + let known_connections = summary + .known_wifi + .iter() + .filter(|(ssid, _)| { + summary + .wifi_groups + .iter() + .any(|group| group.interface == device.interface && group.ssid == **ssid) + }) + .map(|(ssid, _)| DeviceConnection { id: ssid.clone() }) + .collect(); + DeviceInfo { + interface: device.interface.clone(), + device_type: DeviceType::Wifi, + active_connection: device + .active_ssid + .as_ref() + .map(|ssid| (DeviceConnection { id: ssid.clone() },)), + known_connections, + } + }) + .collect(); + + AppletSnapshot { + state: NetworkManagerState { + wifi_enabled: snapshot.wifi.enabled, + airplane_mode: summary.airplane_mode.is_airplane_mode(), + connectivity: summary.connectivity.state, + active_conns, + known_access_points, + wireless_access_points, + }, + devices, + known_vpns, + ssid_to_uuid, + captive_portal_url: summary.connectivity.captive_portal_url.clone(), + } +} + impl CosmicNetworkApplet { + fn apply_snapshot(&mut self, snapshot: AppletSnapshot) { + let previous_connectivity = self.nm_state.nm_state.connectivity; + self.update_nm_state(snapshot.state); + self.nm_state.devices = snapshot.devices.into_iter().map(Arc::new).collect(); + self.nm_state.known_vpns = snapshot.known_vpns; + self.nm_state.ssid_to_uuid = snapshot.ssid_to_uuid; + + if !previous_connectivity.is_captive() && self.nm_state.nm_state.connectivity.is_captive() { + let mut browser = std::process::Command::new("xdg-open"); + browser.arg( + snapshot + .captive_portal_url + .as_deref() + .unwrap_or("http://204.pop-os.org/"), + ); + tokio::spawn(cosmic::process::spawn(browser)); + } + } + fn update_nm_state(&mut self, mut new_state: NetworkManagerState) { self.update_togglers(&new_state); // check for failed conns that can be reset @@ -307,7 +729,7 @@ impl CosmicNetworkApplet { }; if matches!(state, ActiveConnectionState::Activated) { - self.failed_known_ssids.remove(new_s.name().as_str()); + self.failed_known_ssids.remove(new_s.name()); continue; } if matches!( @@ -396,6 +818,7 @@ impl CosmicNetworkApplet { Err(e) => Message::Error(format!("nmrs init: {e}")), } }) + .map(cosmic::Action::App) } } @@ -494,28 +917,26 @@ pub(crate) enum Message { /// An update from the secret agent SecretAgent(NmAgentEvent), /// Connect to a WiFi network access point. - Connect(network_manager::SSID, HwAddress), + Connect(Ssid, HwAddress), /// Connect with a password ConnectWithPassword, - KnownConnections(IndexMap), - /// Settings for known connections. - ConnectionSettings(BTreeMap, Box>), /// Disconnect from an access point. - Disconnect(network_manager::SSID, HwAddress), + Disconnect(Ssid, HwAddress), + ConnectionAttemptFinished { + access_point: AccessPoint, + success: bool, + error: Option, + }, /// An error occurred. Error(String), /// Identity update from the dialog IdentityUpdate(String), - /// An update from the network manager daemon - NetworkManager(network_manager::Event), - /// Successfully connected to the system dbus. - NetworkManagerConnect(zbus::Connection), + /// An update from NetworkManager. + NetworkEvent(NetworkEvent), /// Update the password from the dialog PasswordUpdate(SecureString), - /// Update NetworkManagerState - UpdateState(NetworkManagerState), - /// Update the devices lists - UpdateDevices(Vec), + /// Update applet state from NetworkManager. + Snapshot(AppletSnapshot), /// Toggle WiFi access WiFiEnable(bool), /// Refresh state @@ -525,176 +946,7 @@ pub(crate) enum Message { VPNPasswordUpdate(SecureString), CancelVPNConnection, /// Selects a device to display connections from - SelectDevice(Option>), -} - -fn connection_settings(conn: zbus::Connection) -> Task { - let settings = async move { - let settings = network_manager::dbus::settings::NetworkManagerSettings::new(&conn).await?; - - _ = settings.load_connections(&[]).await; - - let settings = settings - // Get a list of known connections. - .list_connections() - .await? - // Prepare for wrapping in a concurrent stream. - .into_iter() - .map(|conn| async move { conn }) - // Create a concurrent stream for each connection. - .apply(futures::stream::FuturesOrdered::from_iter) - // Concurrently fetch settings for each connection. - .filter_map(|conn| async move { - conn.get_settings() - .await - .map(network_manager::Settings::new) - .ok() - }) - // Reduce the settings list into a SSID->UUID map. - .fold(BTreeMap::new(), |mut set, settings| async move { - if let Some(ref wifi) = settings.wifi - && let Some(ssid) = wifi - .ssid - .clone() - .and_then(|ssid| String::from_utf8(ssid).ok()) - && let Some(ref connection) = settings.connection - && let Some(uuid) = connection.uuid.clone() - { - set.insert(ssid.into(), uuid.into()); - return set; - } - - set - }) - .await; - - Ok::<_, zbus::Error>(settings) - }; - - cosmic::task::future(async move { - settings - .await - .context("failed to get connection settings") - .map_or_else( - |why| Message::Error(why.to_string()), - Message::ConnectionSettings, - ) - }) -} - -pub fn update_state(conn: zbus::Connection) -> Task { - cosmic::task::future(async move { - match NetworkManagerState::new(&conn).await { - Ok(state) => Message::UpdateState(state), - Err(why) => Message::Error(why.to_string()), - } - }) -} - -pub fn update_devices(conn: zbus::Connection) -> Task { - cosmic::task::future(async move { - let filter = - |device_type| matches!(device_type, network_manager::devices::DeviceType::Wifi); - match network_manager::devices::list(&conn, filter).await { - Ok(devices) => Message::UpdateDevices(devices), - Err(why) => Message::Error(why.to_string()), - } - }) -} - -impl CosmicNetworkApplet { - fn connect(&mut self, conn: zbus::Connection) -> Task { - if self.nm_task.is_none() { - let popup = self.popup; - let (canceller, task) = crate::utils::forward_event_loop(move |emitter| async move { - let (tx, mut rx) = futures::channel::mpsc::channel(1); - - if popup.is_some() { - let watchers = std::pin::pin!(async move { - futures::join!( - network_manager::watch(conn.clone(), tx.clone()), - network_manager::active_conns::watch(conn.clone(), tx.clone(),), - network_manager::wireless_enabled::watch(conn.clone(), tx.clone()), - network_manager::watch_connections_changed(conn, tx,) - ); - }); - let forwarder = std::pin::pin!(async move { - while let Some(message) = rx.next().await { - _ = emitter.emit(Message::NetworkManager(message)).await; - } - }); - - futures::future::select(watchers, forwarder).await; - } else { - let watchers = std::pin::pin!(async move { - futures::join!( - network_manager::watch(conn.clone(), tx.clone()), - network_manager::active_conns::watch(conn.clone(), tx.clone(),), - network_manager::wireless_enabled::watch(conn.clone(), tx.clone()), - ); - }); - let forwarder = std::pin::pin!(async move { - while let Some(message) = rx.next().await { - _ = emitter.emit(Message::NetworkManager(message)).await; - } - }); - - futures::future::select(watchers, forwarder).await; - }; - }); - - self.nm_task = Some(canceller); - return task.map(Message::from); - } - - Task::none() - } -} - -fn load_vpns(_conn: zbus::Connection) -> Task { - cosmic::task::future(async move { - let nm = match NmrsManager::new().await { - Ok(nm) => nm, - Err(e) => return Message::Error(format!("nmrs init: {e}")), - }; - - let saved = match nm.list_saved_connections().await { - Ok(saved) => saved, - Err(e) => return Message::Error(format!("list saved connections: {e}")), - }; - - let mut map: IndexMap = IndexMap::new(); - for c in saved { - // Skip in-memory-only NM connections — assumed connections that NM - // auto-generated from externally-managed interfaces (e.g. one - // brought up by wg-quick@wg0.service) report unsaved=true and - // evaporate on deactivate, leaving the applet's toggle dead. - if c.unsaved { - continue; - } - let uuid: UUID = Arc::from(c.uuid.as_str()); - let entry = match c.summary { - SettingsSummary::WireGuard { .. } => ConnectionSettings::Wireguard { id: c.id }, - SettingsSummary::Vpn { .. } => ConnectionSettings::Vpn { id: c.id }, - _ => continue, - }; - map.insert(uuid, entry); - } - - Message::KnownConnections(map) - }) -} - -fn system_conn() -> Task { - cosmic::Task::future(async move { - zbus::Connection::system() - .await - .context("failed to create system dbus connection") - .map_or_else( - |why| Message::Error(why.to_string()), - Message::NetworkManagerConnect, - ) - }) + SelectDevice(Option>), } impl cosmic::Application for CosmicNetworkApplet { @@ -711,7 +963,19 @@ impl cosmic::Application for CosmicNetworkApplet { ..Default::default() }; - (applet, system_conn().map(cosmic::Action::App)) + let uuid = uuid::Uuid::new_v4().to_string().replace("-", "_"); + let my_id = + format!("com.system76.CosmicSettings.Applet._{uuid}.NetworkManager.SecretAgent",); + + ( + applet, + Task::batch(vec![ + snapshot_task(), + network_events_task(), + secret_agent_task(my_id).map(Message::SecretAgent), + ]) + .map(cosmic::Action::App), + ) } fn core(&self) -> &cosmic::app::Core { @@ -730,24 +994,7 @@ impl cosmic::Application for CosmicNetworkApplet { return destroy_popup(p); } else { let mut tasks = Vec::with_capacity(2); - if let Some(conn) = self.conn.clone() { - tasks.push(update_state(conn.clone()).map(cosmic::Action::App)); - tasks.push(update_devices(conn.clone()).map(cosmic::Action::App)); - tasks.push(load_vpns(conn).map(cosmic::Action::App)); - let uuid = uuid::Uuid::new_v4().to_string().replace("-", "_"); - - let my_id = format!( - "com.system76.CosmicSettings.Applet._{uuid}.NetworkManager.SecretAgent", - ); - tasks.push( - secret_agent_task(my_id) - .map(Message::SecretAgent) - .map(cosmic::Action::App), - ); - } - - tasks.push(system_conn().map(cosmic::Action::App)); - + tasks.push(snapshot_task().map(cosmic::Action::App)); tasks.push(cosmic::surface::surface_task( cosmic::surface::action::app_popup( |_| Default::default(), @@ -789,45 +1036,20 @@ impl cosmic::Application for CosmicNetworkApplet { .map(cosmic::Action::App); } Message::SelectWirelessAccessPoint(access_point) => { - let Some(tx) = self.nm_sender.as_ref() else { - return Task::none(); - }; - if matches!(access_point.network_type, NetworkType::Open) { - if let Err(err) = - tx.unbounded_send(network_manager::Request::SelectAccessPoint( - access_point.ssid.clone(), - access_point.network_type, - None, - self.active_device.as_ref().map(|d| d.interface.clone()), - )) - { - if err.is_disconnected() { - return system_conn().map(cosmic::Action::App); - } - - tracing::error!("{err:?}"); - } - self.new_connection = Some(NewConnectionState::Waiting(access_point)); + self.new_connection = Some(NewConnectionState::Waiting(access_point.clone())); + return connect_access_point_task(access_point, None, None); } else { - if self + let known = self .nm_state .nm_state .known_access_points - .contains(&access_point) - && let Err(err) = - tx.unbounded_send(network_manager::Request::SelectAccessPoint( - access_point.ssid.clone(), - access_point.network_type, - None, - self.active_device.as_ref().map(|d| d.interface.clone()), - )) - { - if err.is_disconnected() { - return system_conn().map(cosmic::Action::App); - } - - tracing::error!("{err:?}"); + .iter() + .any(|known| same_access_point(known, &access_point)); + if known { + self.new_connection = + Some(NewConnectionState::Waiting(access_point.clone())); + return connect_access_point_task(access_point, None, None); } self.new_connection = Some(NewConnectionState::EnterPassword { access_point, @@ -862,11 +1084,6 @@ impl cosmic::Application for CosmicNetworkApplet { Message::CloseRequested(id) => { if Some(id) == self.popup { self.popup = None; - if let Some(cancel) = self.nm_task.take() { - _ = cancel.send(()); - } - - return system_conn().map(cosmic::Action::App); } } Message::OpenSettings => { @@ -946,7 +1163,7 @@ impl cosmic::Application for CosmicNetworkApplet { } }) .map(cosmic::Action::App); - let reconnect_task = self.update(Message::SelectWirelessAccessPoint(ap)); + let reconnect_task = connect_access_point_task(ap, None, None); return Task::batch(vec![forget_task, reconnect_task]); } Message::Surface(a) => { @@ -973,41 +1190,18 @@ impl cosmic::Application for CosmicNetworkApplet { self.show_available_vpns = !self.show_available_vpns; } Message::Connect(ssid, hw_address) => { - let mut network_type = NetworkType::Open; - let tx = if let Some(tx) = self.nm_sender.as_ref() { - if let Some(ap) = self - .nm_state - .nm_state - .known_access_points - .iter_mut() - .find(|c| c.ssid == ssid && c.hw_address == hw_address) - { - network_type = ap.network_type; - ap.working = true; - } - tx - } else { - return Task::none(); - }; - if let Err(err) = tx.unbounded_send(network_manager::Request::SelectAccessPoint( - ssid, - network_type, - None, - self.active_device.as_ref().map(|d| d.interface.clone()), - )) { - if err.is_disconnected() { - return system_conn().map(cosmic::Action::App); - } - - tracing::error!("{err:?}"); + if let Some(ap) = self + .nm_state + .nm_state + .known_access_points + .iter_mut() + .find(|c| c.ssid == ssid && c.hw_address == hw_address) + { + ap.working = true; + return connect_access_point_task(ap.clone(), None, None); } } Message::ConnectWithPassword => { - // save password - let Some(tx) = self.nm_sender.as_ref() else { - return Task::none(); - }; - if let Some(NewConnectionState::EnterPassword { password, access_point, @@ -1015,55 +1209,44 @@ impl cosmic::Application for CosmicNetworkApplet { .. }) = self.new_connection.take() { - let is_enterprise: bool = matches!(access_point.network_type, NetworkType::EAP); - - if let Err(err) = tx.unbounded_send(network_manager::Request::Authenticate { - ssid: access_point.ssid.to_string(), - identity: is_enterprise.then(|| identity.clone()), - password, - secret_tx: None, - interface: self.active_device.as_ref().map(|d| d.interface.clone()), - }) { - if err.is_disconnected() { - return system_conn().map(cosmic::Action::App); - } - tracing::error!("Failed to authenticate with network manager"); - } self.new_connection - .replace(NewConnectionState::Waiting(access_point)); + .replace(NewConnectionState::Waiting(access_point.clone())); + return connect_access_point_task(access_point, Some(identity), Some(password)); } } - Message::ConnectionSettings(btree_map) => { - self.nm_state.ssid_to_uuid = btree_map; - } Message::Disconnect(ssid, hw_address) => { self.new_connection = None; - let tx = if let Some(tx) = self.nm_sender.as_ref() { - if let Some(ActiveConnectionInfo::WiFi { state, .. }) = - self.nm_state.nm_state.active_conns.iter_mut().find(|c| { - let c_hw_address = match c { - ActiveConnectionInfo::Wired { hw_address, .. } - | ActiveConnectionInfo::WiFi { hw_address, .. } => { - HwAddress::from_str(hw_address).unwrap() - } - ActiveConnectionInfo::Vpn { .. } => HwAddress::default(), - }; - c.name().as_str() == ssid.as_ref() && c_hw_address == hw_address - }) - { - *state = ActiveConnectionState::Deactivating; - } - tx - } else { - return Task::none(); - }; - if let Err(err) = tx.unbounded_send(network_manager::Request::Disconnect(ssid)) { - if err.is_disconnected() { - return system_conn().map(cosmic::Action::App); - } - - tracing::error!("{err:?}"); + let interface = self + .nm_state + .nm_state + .known_access_points + .iter() + .find(|ap| ap.ssid == ssid && ap.hw_address == hw_address) + .and_then(|ap| ap.interface.clone()); + if let Some(ActiveConnectionInfo::WiFi { state, .. }) = + self.nm_state.nm_state.active_conns.iter_mut().find(|c| { + let c_hw_address = match c { + ActiveConnectionInfo::Wired { hw_address, .. } + | ActiveConnectionInfo::WiFi { hw_address, .. } => { + HwAddress::from_str(hw_address).unwrap_or_default() + } + ActiveConnectionInfo::Vpn { .. } => HwAddress::default(), + }; + c.name() == ssid.as_ref() && c_hw_address == hw_address + }) + { + *state = ActiveConnectionState::Deactivating; } + return cosmic::task::future(async move { + match NmrsManager::new().await { + Ok(nm) => match nm.disconnect(interface.as_deref()).await { + Ok(()) => Message::Refresh, + Err(e) => Message::Error(format!("disconnect {ssid}: {e}")), + }, + Err(e) => Message::Error(format!("nmrs init: {e}")), + } + }) + .map(cosmic::Action::App); } Message::Error(error) => { tracing::error!("error: {error:?}") @@ -1075,132 +1258,29 @@ impl cosmic::Application for CosmicNetworkApplet { *identity = new_identity; } } - Message::NetworkManager(event) => match event { - network_manager::Event::Init { - conn, - sender, - state, - } => { - self.nm_sender = Some(sender); - self.update_nm_state(state); - self.conn = Some(conn); - } - network_manager::Event::WiFiEnabled(_) - | network_manager::Event::WirelessAccessPoints - | network_manager::Event::ActiveConns => { - if let Some(conn) = self.conn.clone() { - return Task::future(async move { - let conn = conn.clone(); - NetworkManagerState::new(&conn).await - }) - .map(|res| match res { - Ok(s) => Message::UpdateState(s), - Err(err) => Message::Error(err.to_string()), - }) - .map(cosmic::Action::App); + Message::ConnectionAttemptFinished { + access_point, + success, + error, + } => { + if success { + self.failed_known_ssids.remove(access_point.ssid.as_ref()); + self.new_connection = None; + self.show_visible_networks = false; + } else { + if let Some(error) = error { + tracing::warn!("connect {} failed: {error}", access_point.ssid); } + self.failed_known_ssids.insert(access_point.ssid.clone()); + self.new_connection = Some(NewConnectionState::Failure(access_point)); } - network_manager::Event::RequestResponse { - mut state, - success, - req, - } => { - if let network_manager::Request::SelectAccessPoint( - ssid, - _hw_address, - _network_type, - _secret_tx, - ) = &req - { - let conn_match = self - .new_connection - .as_ref() - .is_some_and(|c| c.ssid() == ssid.as_ref() ); - - if conn_match && success { - if let Some(ActiveConnectionInfo::WiFi { state, .. }) = state - .active_conns - .iter_mut() - .find(|ap| ap.name().as_str() == ssid.as_ref()) - { - *state = ActiveConnectionState::Activated; - } - self.failed_known_ssids.remove(ssid); - self.new_connection = None; - self.show_visible_networks = false; - } else if !matches!( - &self.new_connection, - Some(NewConnectionState::EnterPassword { .. }) - ) && !success { - self.failed_known_ssids.insert(ssid.clone()); - } - } else if let network_manager::Request::Authenticate { - ssid, - identity: _, - password: _, - secret_tx: _, - interface: _, - } = &req - { - if let Some(NewConnectionState::Waiting(access_point)) = - self.new_connection.as_ref() - { - if !success - && ssid.as_str() == access_point.ssid.as_ref() - { - self.new_connection = - Some(NewConnectionState::Failure(access_point.clone())); - } else { - self.show_visible_networks = false; - } - } else if let Some(NewConnectionState::EnterPassword { access_point, .. }) = - self.new_connection.as_ref() - && success - && ssid.as_str() == access_point.ssid.as_ref() - { - self.new_connection = None; - self.show_visible_networks = false; - } - } else if self - .new_connection - .as_ref() - .map(NewConnectionState::ssid).is_some_and(|ssid| { - state.active_conns.iter().any(|c| - matches!(c, ActiveConnectionInfo::WiFi { name, state: ActiveConnectionState::Activated, .. } if ssid == name) - ) - }) { - self.new_connection = None; - self.show_visible_networks = false; - } - - if !matches!(req, network_manager::Request::Reload) - && matches!(state.connectivity, NmConnectivityState::Portal) - { - let mut browser = std::process::Command::new("xdg-open"); - browser.arg("http://204.pop-os.org/"); - - tokio::spawn(cosmic::process::spawn(browser)); - } - - self.update_nm_state(state); + return snapshot_task().map(cosmic::Action::App); + } + Message::NetworkEvent(event) => { + if matches!(event, NetworkEvent::NetworkManagerRestarted) { + tracing::debug!("NetworkManager restarted; refreshing network snapshot"); } - - cosmic_settings_network_manager_subscription::Event::Devices => { - if let Some(conn) = self.conn.clone() { - return update_devices(conn).map(cosmic::Action::App); - } - } - cosmic_settings_network_manager_subscription::Event::WiFiCredentials { - ssid: _, - password: _, - security_type: _, - } => {} - }, - Message::NetworkManagerConnect(connection) => { - return cosmic::task::batch(vec![ - self.connect(connection.clone()), - connection_settings(connection), - ]); + return snapshot_task().map(cosmic::Action::App); } Message::PasswordUpdate(entered_pw) => { if let Some(NewConnectionState::EnterPassword { password, .. }) = @@ -1209,11 +1289,8 @@ impl cosmic::Application for CosmicNetworkApplet { *password = entered_pw; } } - Message::UpdateState(network_manager_state) => { - self.update_nm_state(network_manager_state); - } - Message::UpdateDevices(device_infos) => { - self.nm_state.devices = device_infos.into_iter().map(Arc::new).collect(); + Message::Snapshot(snapshot) => { + self.apply_snapshot(snapshot); } Message::WiFiEnable(enable) => { self.nm_state.nm_state.wifi_enabled = enable; @@ -1303,18 +1380,8 @@ impl cosmic::Application for CosmicNetworkApplet { tracing::error!("Error from secret agent: {error}"); } }, - Message::KnownConnections(index_map) => { - self.nm_state.known_vpns = index_map; - } Message::Refresh => { - if let Some(conn) = self.conn.clone() { - return Task::batch(vec![ - update_state(conn.clone()), - update_devices(conn.clone()), - load_vpns(conn), - ]) - .map(cosmic::Action::App); - } + return snapshot_task().map(cosmic::Action::App); } Message::ToggleVPNPasswordVisibility => { if let Some(requested_vpn) = self.nm_state.requested_vpn.as_mut() { @@ -1546,7 +1613,7 @@ impl cosmic::Application for CosmicNetworkApplet { .icon_size(16) .on_press(Message::ResetFailedKnownSsid( name.clone(), - HwAddress::from_str(hw_address).unwrap(), + HwAddress::from_str(hw_address).unwrap_or_default(), )) .into(), ); @@ -1561,7 +1628,7 @@ impl cosmic::Application for CosmicNetworkApplet { ) .on_press(Message::Disconnect( Arc::from(name.as_str()), - HwAddress::from_str(hw_address).unwrap(), + HwAddress::from_str(hw_address).unwrap_or_default(), )), )]) .align_x(Alignment::Center), @@ -1674,7 +1741,7 @@ impl cosmic::Application for CosmicNetworkApplet { .nm_state .devices .iter() - .filter(|d| matches!(d.device_type, network_manager::devices::DeviceType::Wifi)) + .filter(|d| matches!(d.device_type, DeviceType::Wifi)) .collect::>(); if wireless_hw_devices.len() > 1 && self.active_device.is_none() { @@ -1852,7 +1919,7 @@ impl cosmic::Application for CosmicNetworkApplet { ); content = content.push(id); - let is_enterprise = matches!(access_point.network_type, NetworkType::EAP); + let is_enterprise = matches!(access_point.network_type, NetworkType::Eap); let enter_password_col = cosmic::widget::column::with_capacity(4) .push_maybe(is_enterprise.then(|| text::body(fl!("identity")))) .push_maybe(is_enterprise.then(|| { @@ -2032,7 +2099,9 @@ impl cosmic::Application for CosmicNetworkApplet { fn active_conn_hw_address(conn: &ActiveConnectionInfo) -> HwAddress { match conn { ActiveConnectionInfo::Wired { hw_address, .. } - | ActiveConnectionInfo::WiFi { hw_address, .. } => HwAddress::from_str(hw_address).unwrap(), + | ActiveConnectionInfo::WiFi { hw_address, .. } => { + HwAddress::from_str(hw_address).unwrap_or_default() + } ActiveConnectionInfo::Vpn { .. } => HwAddress::default(), } } diff --git a/cosmic-applet-network/src/lib.rs b/cosmic-applet-network/src/lib.rs index 7d5414a5..f1ce1c6e 100644 --- a/cosmic-applet-network/src/lib.rs +++ b/cosmic-applet-network/src/lib.rs @@ -3,7 +3,6 @@ mod app; mod config; mod localize; -mod utils; use crate::localize::localize; From a3be51560f8a68db86238f5e31b203118d102a0f Mon Sep 17 00:00:00 2001 From: Akrm Al-Hakimi Date: Wed, 1 Jul 2026 19:32:48 -0400 Subject: [PATCH 13/29] fix: dupe connection names; incorrect ipv6 labeling Fixes a bug where we showed `Activated` networks after the current active one. Also ipv4/6 addresses were merged so this seperates them and only shows ipv4 for now until we decide the best way to show both, UI/UX wise. --- cosmic-applet-network/src/app.rs | 71 ++++++++++++++++++++------------ 1 file changed, 44 insertions(+), 27 deletions(-) diff --git a/cosmic-applet-network/src/app.rs b/cosmic-applet-network/src/app.rs index 3cfee15a..2fb1e3f6 100644 --- a/cosmic-applet-network/src/app.rs +++ b/cosmic-applet-network/src/app.rs @@ -167,18 +167,21 @@ pub enum ActiveConnectionInfo { name: String, hw_address: String, speed: u32, - ip_addresses: Vec, + ip4_address: Option, + ip6_address: Option, }, WiFi { name: String, - ip_addresses: Vec, + ip4_address: Option, + ip6_address: Option, state: ActiveConnectionState, strength: u8, hw_address: String, }, Vpn { name: String, - ip_addresses: Vec, + ip4_address: Option, + ip6_address: Option, }, } @@ -447,8 +450,15 @@ fn vpn_section<'a>( vpn_col } -fn ip_addresses(ip4_address: Option, ip6_address: Option) -> Vec { - ip4_address.into_iter().chain(ip6_address).collect() +fn ip_address_elements<'a>( + ip4_address: &Option, + _ip6_address: &Option, +) -> Vec> { + let mut elements = Vec::with_capacity(1); + if let Some(addr) = ip4_address { + elements.push(text(format!("{}: {}", fl!("ipv4"), addr)).size(12).into()); + } + elements } fn network_type(security: nmrs::SecurityFeatures) -> NetworkType { @@ -599,18 +609,21 @@ fn snapshot_to_applet(snapshot: NetworkSnapshot) -> AppletSnapshot { name: wired.id.clone(), hw_address: wired.hw_address.clone().unwrap_or_default(), speed: wired.speed_mbps.unwrap_or_default(), - ip_addresses: ip_addresses(wired.ip4_address.clone(), wired.ip6_address.clone()), + ip4_address: wired.ip4_address.clone(), + ip6_address: wired.ip6_address.clone(), }), ActiveConnection::Wifi(wifi) => Some(ActiveConnectionInfo::WiFi { name: wifi.ssid.clone(), - ip_addresses: ip_addresses(wifi.ip4_address.clone(), wifi.ip6_address.clone()), + ip4_address: wifi.ip4_address.clone(), + ip6_address: wifi.ip6_address.clone(), state: wifi.state, strength: wifi.strength.unwrap_or_default(), hw_address: wifi.bssid.clone().unwrap_or_default(), }), ActiveConnection::Vpn(vpn) => Some(ActiveConnectionInfo::Vpn { name: vpn.id.clone(), - ip_addresses: ip_addresses(vpn.ip4_address.clone(), vpn.ip6_address.clone()), + ip4_address: vpn.ip4_address.clone(), + ip6_address: vpn.ip6_address.clone(), }), ActiveConnection::Other(_) | _ => None, }) @@ -1457,16 +1470,20 @@ impl cosmic::Application for CosmicNetworkApplet { let mut known_wifi = Vec::new(); for conn in &self.nm_state.nm_state.active_conns { match conn { - ActiveConnectionInfo::Vpn { name, ip_addresses } => { + ActiveConnectionInfo::Vpn { + name, + ip4_address, + ip6_address, + } => { if self.active_device.as_ref().is_some_and(|d| { d.active_connection.as_ref().is_none_or(|a| a.0.id != *name) }) { continue; } - let mut ipv4 = Vec::with_capacity(ip_addresses.len() + 1); - ipv4.push(text::body(name).into()); - for addr in ip_addresses { - ipv4.push(text::caption(format!("{}: {}", fl!("ipv4"), addr)).into()); + let mut info_col = Vec::with_capacity(3); + info_col.push(text::body(name).into()); + for elem in ip_address_elements(ip4_address, ip6_address) { + info_col.push(elem); } vpn_ethernet_col = vpn_ethernet_col.push( column::with_capacity::(2) @@ -1480,7 +1497,7 @@ impl cosmic::Application for CosmicNetworkApplet { ) .size(40), ), - column::with_children(ipv4).into(), + column::with_children(info_col).into(), text::body(fl!("connected")) .width(Length::Fill) .align_x(Alignment::End) @@ -1500,18 +1517,17 @@ impl cosmic::Application for CosmicNetworkApplet { name, hw_address: _, speed, - ip_addresses, + ip4_address, + ip6_address, } => { if self.active_device.as_ref().is_some_and(|d| { d.active_connection.as_ref().is_none_or(|a| a.0.id != *name) }) { continue; } - let mut ipv4 = Vec::with_capacity(ip_addresses.len() + 1); - ipv4.push(text::body(name).into()); - for addr in ip_addresses { - ipv4.push(text(format!("{}: {}", fl!("ipv4"), addr)).size(12).into()); - } + let mut info_col = Vec::with_capacity(3); + info_col.push(text::body(name).into()); + info_col.extend(ip_address_elements(ip4_address, ip6_address)); let mut right_column = vec![text::body(fl!("connected")).into()]; @@ -1549,7 +1565,7 @@ impl cosmic::Application for CosmicNetworkApplet { ) .size(40), ), - column::with_children(ipv4).into(), + column::with_children(info_col).into(), column::with_children(right_column) .width(Length::Fill) .align_x(Alignment::End) @@ -1567,7 +1583,8 @@ impl cosmic::Application for CosmicNetworkApplet { } ActiveConnectionInfo::WiFi { name, - ip_addresses, + ip4_address, + ip6_address, state, strength, hw_address, @@ -1577,10 +1594,7 @@ impl cosmic::Application for CosmicNetworkApplet { }) { continue; } - let mut ipv4 = Vec::with_capacity(ip_addresses.len()); - for addr in ip_addresses { - ipv4.push(text(format!("{}: {}", fl!("ipv4"), addr)).size(12).into()); - } + let ip_elements = ip_address_elements(ip4_address, ip6_address); let mut btn_content = vec![ icon::from_name(wifi_icon(*strength)) .size(24) @@ -1588,7 +1602,7 @@ impl cosmic::Application for CosmicNetworkApplet { .into(), column::with_children([ text::body(name).into(), - column::with_children(ipv4).into(), + column::with_children(ip_elements).into(), ]) .width(Length::Fill) .into(), @@ -1785,6 +1799,9 @@ impl cosmic::Application for CosmicNetworkApplet { } for known in &self.nm_state.nm_state.known_access_points { + if matches!(known.state, DeviceState::Activated) { + continue; + } if let Some(active_device) = self.active_device.as_ref() && active_device .known_connections From f69e943d91c3158e3d4f22efcf796c7d0d166578 Mon Sep 17 00:00:00 2001 From: akrm al-hakimi Date: Thu, 2 Jul 2026 20:59:17 -0400 Subject: [PATCH 14/29] fix(network): restore IPv4 display and wifi list ordering - Strip the CIDR suffix (/24) from the shown IPv4 address - Sort visible wireless networks by signal strength again - Filter out empty-SSID "hidden network" entries from the list --- cosmic-applet-network/src/app.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cosmic-applet-network/src/app.rs b/cosmic-applet-network/src/app.rs index 2fb1e3f6..cbf46fab 100644 --- a/cosmic-applet-network/src/app.rs +++ b/cosmic-applet-network/src/app.rs @@ -456,6 +456,9 @@ fn ip_address_elements<'a>( ) -> Vec> { let mut elements = Vec::with_capacity(1); if let Some(addr) = ip4_address { + // Strip the subnet mask (e.g. "10.0.0.2/24" -> "10.0.0.2"); the drop-down + // only needs the address itself for glancing at the host on a local network. + let addr = addr.split('/').next().unwrap_or(addr.as_str()); elements.push(text(format!("{}: {}", fl!("ipv4"), addr)).size(12).into()); } elements @@ -629,9 +632,10 @@ fn snapshot_to_applet(snapshot: NetworkSnapshot) -> AppletSnapshot { }) .collect(); - let wireless_access_points = summary + let mut wireless_access_points = summary .wifi_groups .iter() + .filter(|group| !group.ssid.is_empty()) .map(|group| { let strongest = &group.strongest; AccessPoint { @@ -646,6 +650,7 @@ fn snapshot_to_applet(snapshot: NetworkSnapshot) -> AppletSnapshot { } }) .collect::>(); + wireless_access_points.sort_by(|a, b| b.strength.cmp(&a.strength)); let known_access_points = summary .wifi_groups From 6fd8309cf7776b629a425469336b47aa603f1cb9 Mon Sep 17 00:00:00 2001 From: akrm al-hakimi Date: Thu, 2 Jul 2026 21:08:46 -0400 Subject: [PATCH 15/29] chore: remove dead utils file --- cosmic-applet-network/src/utils.rs | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 cosmic-applet-network/src/utils.rs diff --git a/cosmic-applet-network/src/utils.rs b/cosmic-applet-network/src/utils.rs deleted file mode 100644 index f802010f..00000000 --- a/cosmic-applet-network/src/utils.rs +++ /dev/null @@ -1,18 +0,0 @@ -use futures_util::future::select; - -/// Spawn a background tasks and forward its messages -pub fn forward_event_loop + Send + 'static>( - event_loop: impl FnOnce(async_fn_stream::StreamEmitter) -> T + Send + 'static, -) -> (tokio::sync::oneshot::Sender<()>, cosmic::Task) { - let (cancel_tx, cancel_rx) = tokio::sync::oneshot::channel::<()>(); - - let task = cosmic::Task::stream(async_fn_stream::fn_stream(|emitter| async move { - select( - std::pin::pin!(cancel_rx), - std::pin::pin!(event_loop(emitter)), - ) - .await; - })); - - (cancel_tx, task) -} From 74e29089870ecdede5fb7529dc247b49a8fa3a19 Mon Sep 17 00:00:00 2001 From: akrm al-hakimi Date: Thu, 2 Jul 2026 21:09:42 -0400 Subject: [PATCH 16/29] chore: remove dead arm in `DeviceState` match --- cosmic-applet-network/src/app.rs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/cosmic-applet-network/src/app.rs b/cosmic-applet-network/src/app.rs index cbf46fab..c920429d 100644 --- a/cosmic-applet-network/src/app.rs +++ b/cosmic-applet-network/src/app.rs @@ -1862,18 +1862,15 @@ impl cosmic::Application for CosmicNetworkApplet { .spacing(8), ); btn = match known.state { + // Activated entries are skipped above (shown in the active + // connections section instead), so no Disconnect arm is needed here. DeviceState::Failed | DeviceState::Unknown | DeviceState::Unmanaged | DeviceState::Disconnected - | DeviceState::NeedAuth => btn.on_press(Message::Connect( - known.ssid.clone(), - known.hw_address.clone(), - )), - DeviceState::Activated => btn.on_press(Message::Disconnect( - known.ssid.clone(), - known.hw_address.clone(), - )), + | DeviceState::NeedAuth => { + btn.on_press(Message::Connect(known.ssid.clone(), known.hw_address)) + } _ => btn, }; known_wifi.push(Element::from( From 829d66c44a652720d9e99ca0c68a57c33d4f98b1 Mon Sep 17 00:00:00 2001 From: Akrm Al-Hakimi Date: Tue, 7 Jul 2026 17:58:14 -0400 Subject: [PATCH 17/29] fix: filter ssids by raw bytes to remove hidden network entries --- cosmic-applet-network/src/app.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cosmic-applet-network/src/app.rs b/cosmic-applet-network/src/app.rs index c920429d..f7867fb8 100644 --- a/cosmic-applet-network/src/app.rs +++ b/cosmic-applet-network/src/app.rs @@ -635,7 +635,7 @@ fn snapshot_to_applet(snapshot: NetworkSnapshot) -> AppletSnapshot { let mut wireless_access_points = summary .wifi_groups .iter() - .filter(|group| !group.ssid.is_empty()) + .filter(|group| !group.ssid.is_empty() && !group.strongest.ssid_bytes.is_empty()) .map(|group| { let strongest = &group.strongest; AccessPoint { From 9025430cf2a9fda94f7502464ebe10ed921e7f6f Mon Sep 17 00:00:00 2001 From: Akrm Al-Hakimi Date: Tue, 7 Jul 2026 20:36:22 -0400 Subject: [PATCH 18/29] fix: keep inactive known Wi-Fi rows visible Only mark an nmrs Wi-Fi group as activated when the group itself is active. Access points inherit device state, so inactive known networks on a connected Wi-Fi device can otherwise appear activated and get skipped from the known networks section while also being filtered out of visible networks. --- cosmic-applet-network/src/app.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cosmic-applet-network/src/app.rs b/cosmic-applet-network/src/app.rs index f7867fb8..13d49d2b 100644 --- a/cosmic-applet-network/src/app.rs +++ b/cosmic-applet-network/src/app.rs @@ -658,6 +658,7 @@ fn snapshot_to_applet(snapshot: NetworkSnapshot) -> AppletSnapshot { .filter(|group| group.known || group.active) .map(|group| { let strongest = &group.strongest; + let device_state = DeviceState::from(&strongest.device_state); AccessPoint { ssid: Arc::from(group.ssid.as_str()), network_type: network_type(strongest.security), @@ -665,8 +666,10 @@ fn snapshot_to_applet(snapshot: NetworkSnapshot) -> AppletSnapshot { strength: strongest.strength, state: if group.active { DeviceState::Activated + } else if matches!(device_state, DeviceState::Activated) { + DeviceState::Disconnected } else { - DeviceState::from(&strongest.device_state) + device_state }, working: false, wps_push: strongest.security.wps, From 67415262d56dde211c247656a198d3339bcbf108 Mon Sep 17 00:00:00 2001 From: Akrm Al-Hakimi Date: Wed, 8 Jul 2026 17:42:51 -0400 Subject: [PATCH 19/29] fix: show pending VPN state in applet Track VPN activation and deactivation locally while nmrs operations are running. This lets the applet show a spinner immediately, refresh state while NetworkManager settles, and clear pending state on completion or error. Also use VPN-specific icons for VPN rows and prefer active or pending VPN state for the panel icon. --- cosmic-applet-network/src/app.rs | 163 ++++++++++++++++++++++++++----- 1 file changed, 138 insertions(+), 25 deletions(-) diff --git a/cosmic-applet-network/src/app.rs b/cosmic-applet-network/src/app.rs index 13d49d2b..8162fea3 100644 --- a/cosmic-applet-network/src/app.rs +++ b/cosmic-applet-network/src/app.rs @@ -250,6 +250,7 @@ pub struct MyNetworkState { pub devices: Vec>, pub nm_state: NetworkManagerState, pub requested_vpn: Option, + pub pending_vpn: Option, } /// Shared, take-once handle to an `nmrs` [`SecretResponder`]. Cloned freely @@ -269,6 +270,18 @@ pub struct RequestedVpn { secret_keys: Vec, } +#[derive(Debug, Clone)] +pub struct PendingVpn { + uuid: Arc, + action: PendingVpnAction, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum PendingVpnAction { + Activate, + Deactivate, +} + #[derive(Clone, Debug)] pub enum ConnectionSettings { Vpn { id: String }, @@ -417,6 +430,11 @@ fn vpn_section<'a>( let is_active = nm_state.nm_state.active_conns.iter().any( |conn| matches!(conn, ActiveConnectionInfo::Vpn { name, .. } if name == id), ); + let pending_action = nm_state + .pending_vpn + .as_ref() + .filter(|pending| pending.uuid.as_ref() == uuid.as_ref()) + .map(|pending| pending.action); let mut btn_content = vec![ icon::from_name("network-vpn-symbolic") @@ -429,6 +447,9 @@ fn vpn_section<'a>( if is_active { btn_content.push(text::body(fl!("connected")).align_x(Alignment::End).into()); } + if pending_action.is_some() { + btn_content.push(indeterminate_circular().size(24.0).into()); + } let mut btn = menu_button( row::with_children(btn_content) @@ -436,7 +457,9 @@ fn vpn_section<'a>( .spacing(8), ); - btn = if is_active { + btn = if pending_action.is_some() { + btn + } else if is_active { btn.on_press(Message::DeactivateVpn(uuid.clone())) } else { btn.on_press(Message::ActivateVpn(uuid.clone())) @@ -724,10 +747,11 @@ fn snapshot_to_applet(snapshot: NetworkSnapshot) -> AppletSnapshot { impl CosmicNetworkApplet { fn apply_snapshot(&mut self, snapshot: AppletSnapshot) { let previous_connectivity = self.nm_state.nm_state.connectivity; - self.update_nm_state(snapshot.state); self.nm_state.devices = snapshot.devices.into_iter().map(Arc::new).collect(); self.nm_state.known_vpns = snapshot.known_vpns; self.nm_state.ssid_to_uuid = snapshot.ssid_to_uuid; + self.update_nm_state(snapshot.state); + self.clear_completed_pending_vpn(); if !previous_connectivity.is_captive() && self.nm_state.nm_state.connectivity.is_captive() { let mut browser = std::process::Command::new("xdg-open"); @@ -741,6 +765,34 @@ impl CosmicNetworkApplet { } } + fn clear_completed_pending_vpn(&mut self) { + let Some(pending) = self.nm_state.pending_vpn.as_ref() else { + return; + }; + let Some(connection) = self.nm_state.known_vpns.get(&pending.uuid) else { + self.nm_state.pending_vpn = None; + self.update_icon_name(); + return; + }; + let id = match connection { + ConnectionSettings::Vpn { id } | ConnectionSettings::Wireguard { id } => id, + }; + let is_active = self + .nm_state + .nm_state + .active_conns + .iter() + .any(|conn| matches!(conn, ActiveConnectionInfo::Vpn { name, .. } if name == id)); + let completed = match pending.action { + PendingVpnAction::Activate => is_active, + PendingVpnAction::Deactivate => !is_active, + }; + if completed { + self.nm_state.pending_vpn = None; + self.update_icon_name(); + } + } + fn update_nm_state(&mut self, mut new_state: NetworkManagerState) { self.update_togglers(&new_state); // check for failed conns that can be reset @@ -777,6 +829,22 @@ impl CosmicNetworkApplet { } fn update_icon_name(&mut self) { + if self + .nm_state + .pending_vpn + .as_ref() + .is_some_and(|pending| pending.action == PendingVpnAction::Activate) + || self + .nm_state + .nm_state + .active_conns + .iter() + .any(|conn| matches!(conn, ActiveConnectionInfo::Vpn { .. })) + { + self.icon_name = "network-vpn-symbolic".to_string(); + return; + } + self.icon_name = self .nm_state .nm_state @@ -789,12 +857,7 @@ impl CosmicNetworkApplet { "network-wired-disconnected-symbolic", ActiveConnectionInfo::WiFi { strength, .. }, ) => wifi_icon(*strength), - (_, ActiveConnectionInfo::Wired { .. }) - if icon_name != "network-vpn-symbolic" => - { - "network-wired-symbolic" - } - (_, ActiveConnectionInfo::Vpn { .. }) => "network-vpn-symbolic", + (_, ActiveConnectionInfo::Wired { .. }) => "network-wired-symbolic", _ => icon_name, }, ) @@ -831,12 +894,18 @@ impl CosmicNetworkApplet { fn connect_vpn(&mut self, uuid: Arc) -> Task> { cosmic::task::future(async move { - match NmrsManager::new().await { - Ok(nm) => match nm.connect_vpn_by_uuid(&uuid).await { - Ok(()) => Message::Refresh, - Err(e) => Message::Error(format!("activate VPN {uuid}: {e}")), - }, - Err(e) => Message::Error(format!("nmrs init: {e}")), + let error = match NmrsManager::new().await { + Ok(nm) => nm + .connect_vpn_by_uuid(&uuid) + .await + .err() + .map(|e| format!("activate VPN {uuid}: {e}")), + Err(e) => Some(format!("nmrs init: {e}")), + }; + Message::VpnOperationFinished { + uuid, + action: PendingVpnAction::Activate, + error, } }) .map(cosmic::Action::App) @@ -934,7 +1003,12 @@ pub(crate) enum Message { Surface(surface::Action), ActivateVpn(Arc), // UUID of VPN to activate DeactivateVpn(Arc), // UUID of VPN to deactivate - ToggleVpnList, // Show/hide available VPNs + VpnOperationFinished { + uuid: Arc, + action: PendingVpnAction, + error: Option, + }, + ToggleVpnList, // Show/hide available VPNs /// An update from the secret agent SecretAgent(NmAgentEvent), /// Connect to a WiFi network access point. @@ -1193,19 +1267,58 @@ impl cosmic::Application for CosmicNetworkApplet { )); } Message::ActivateVpn(uuid) => { - return self.connect_vpn(uuid.clone()); + self.nm_state.pending_vpn = Some(PendingVpn { + uuid: uuid.clone(), + action: PendingVpnAction::Activate, + }); + self.update_icon_name(); + return Task::batch(vec![ + snapshot_task().map(cosmic::Action::App), + self.connect_vpn(uuid.clone()), + ]); } Message::DeactivateVpn(uuid) => { - return cosmic::task::future(async move { - match NmrsManager::new().await { - Ok(nm) => match nm.disconnect_vpn_by_uuid(&uuid).await { - Ok(()) => Message::Refresh, - Err(e) => Message::Error(format!("disconnect VPN {uuid}: {e}")), - }, - Err(e) => Message::Error(format!("nmrs init: {e}")), + self.nm_state.pending_vpn = Some(PendingVpn { + uuid: uuid.clone(), + action: PendingVpnAction::Deactivate, + }); + self.update_icon_name(); + let disconnect_task = cosmic::task::future(async move { + let error = match NmrsManager::new().await { + Ok(nm) => nm + .disconnect_vpn_by_uuid(&uuid) + .await + .err() + .map(|e| format!("disconnect VPN {uuid}: {e}")), + Err(e) => Some(format!("nmrs init: {e}")), + }; + Message::VpnOperationFinished { + uuid, + action: PendingVpnAction::Deactivate, + error, } }) .map(cosmic::Action::App); + return Task::batch(vec![ + snapshot_task().map(cosmic::Action::App), + disconnect_task, + ]); + } + Message::VpnOperationFinished { + uuid, + action, + error, + } => { + if self.nm_state.pending_vpn.as_ref().is_some_and(|pending| { + pending.uuid.as_ref() == uuid.as_ref() && pending.action == action + }) { + self.nm_state.pending_vpn = None; + self.update_icon_name(); + } + if let Some(error) = error { + tracing::error!("{error}"); + } + return snapshot_task().map(cosmic::Action::App); } Message::ToggleVpnList => { self.show_available_vpns = !self.show_available_vpns; @@ -1499,7 +1612,7 @@ impl cosmic::Application for CosmicNetworkApplet { row::with_children([ Element::from( icon::icon( - icon::from_name(self.icon_name.clone()) + icon::from_name("network-vpn-symbolic") .symbolic(true) .into(), ) @@ -1567,7 +1680,7 @@ impl cosmic::Application for CosmicNetworkApplet { row::with_children([ Element::from( icon::icon( - icon::from_name(self.icon_name.clone()) + icon::from_name("network-wired-symbolic") .symbolic(true) .into(), ) From ba490e76af3f3602d932033ba80e7805c8892340 Mon Sep 17 00:00:00 2001 From: Akrm Al-Hakimi Date: Fri, 10 Jul 2026 08:26:28 -0400 Subject: [PATCH 20/29] fix: normalize connections that match saved VPN profiles --- cosmic-applet-network/src/app.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/cosmic-applet-network/src/app.rs b/cosmic-applet-network/src/app.rs index 8162fea3..53b767a7 100644 --- a/cosmic-applet-network/src/app.rs +++ b/cosmic-applet-network/src/app.rs @@ -638,6 +638,21 @@ fn snapshot_to_applet(snapshot: NetworkSnapshot) -> AppletSnapshot { ip4_address: wired.ip4_address.clone(), ip6_address: wired.ip6_address.clone(), }), + ActiveConnection::Wifi(wifi) + if known_vpns.values().any(|connection| { + matches!( + connection, + ConnectionSettings::Vpn { id } | ConnectionSettings::Wireguard { id } + if id == &wifi.ssid + ) + }) => + { + Some(ActiveConnectionInfo::Vpn { + name: wifi.ssid.clone(), + ip4_address: wifi.ip4_address.clone(), + ip6_address: wifi.ip6_address.clone(), + }) + } ActiveConnection::Wifi(wifi) => Some(ActiveConnectionInfo::WiFi { name: wifi.ssid.clone(), ip4_address: wifi.ip4_address.clone(), From 9acfd8d8c18a5f0e9e32c5136c305edf2e440058 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Fri, 19 Jun 2026 20:21:57 -0700 Subject: [PATCH 21/29] input-sources: Use `cosmic-keyboard-layout-unstable-v1` https://github.com/pop-os/cosmic-protocols/pull/28 Continues to use `xkg_config` to get list of layouts, but the group is now changed by modifying the group while leaving the config unchanged. And changes to the group are now reflected in the applet. --- Cargo.lock | 2 + cosmic-applet-input-sources/Cargo.toml | 2 + ....system76.CosmicAppletInputSources.desktop | 1 + cosmic-applet-input-sources/src/lib.rs | 128 +++++++++----- cosmic-applet-input-sources/src/wayland.rs | 157 ++++++++++++++++++ 5 files changed, 247 insertions(+), 43 deletions(-) create mode 100644 cosmic-applet-input-sources/src/wayland.rs diff --git a/Cargo.lock b/Cargo.lock index ef0a8ba1..b3e84558 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1074,7 +1074,9 @@ dependencies = [ name = "cosmic-applet-input-sources" version = "1.0.15" dependencies = [ + "cosmic-client-toolkit", "cosmic-comp-config", + "futures", "i18n-embed", "i18n-embed-fl", "libcosmic", diff --git a/cosmic-applet-input-sources/Cargo.toml b/cosmic-applet-input-sources/Cargo.toml index 8fdb1dd9..94af4bb6 100644 --- a/cosmic-applet-input-sources/Cargo.toml +++ b/cosmic-applet-input-sources/Cargo.toml @@ -5,7 +5,9 @@ edition = "2024" license = "GPL-3.0-only" [dependencies] +cctk.workspace = true cosmic-comp-config = { git = "https://github.com/pop-os/cosmic-comp.git", rev = "5eb5af4" } +futures.workspace = true i18n-embed-fl.workspace = true i18n-embed.workspace = true libcosmic.workspace = true diff --git a/cosmic-applet-input-sources/data/com.system76.CosmicAppletInputSources.desktop b/cosmic-applet-input-sources/data/com.system76.CosmicAppletInputSources.desktop index ea0f667b..73aeccf0 100644 --- a/cosmic-applet-input-sources/data/com.system76.CosmicAppletInputSources.desktop +++ b/cosmic-applet-input-sources/data/com.system76.CosmicAppletInputSources.desktop @@ -12,4 +12,5 @@ NoDisplay=true X-CosmicApplet=true X-CosmicShrinkable=true X-CosmicHoverPopup=Auto +X-HostWaylandDisplay=true X-OverflowPriority=10 diff --git a/cosmic-applet-input-sources/src/lib.rs b/cosmic-applet-input-sources/src/lib.rs index fc7dcc32..4f7f1265 100644 --- a/cosmic-applet-input-sources/src/lib.rs +++ b/cosmic-applet-input-sources/src/lib.rs @@ -3,37 +3,60 @@ mod localize; -use cosmic::iced::{Alignment, Length}; +use cctk::{ + cosmic_protocols::keyboard_layout::v1::client::zcosmic_keyboard_layout_v1::ZcosmicKeyboardLayoutV1, + wayland_client::{Connection, Proxy, backend::Backend}, +}; use cosmic::{ app, app::Core, applet::{self}, - cosmic_config::{self, ConfigSet, CosmicConfigEntry}, + cosmic_config::{self, CosmicConfigEntry}, cosmic_theme::Spacing, iced::Subscription, + iced::core::window, iced::{ - Rectangle, Task, + self, Rectangle, Task, + event::wayland::{Event as WaylandEvent, OutputEvent}, platform_specific::shell::commands::popup::{destroy_popup, get_popup}, - widget::{column, row}, window::Id, }, - iced::{core::window, runtime::Appearance}, prelude::*, surface, theme, widget::{ self, autosize, rectangle_tracker::{RectangleTracker, RectangleUpdate, rectangle_tracker_subscription}, - space, }, }; use cosmic_comp_config::CosmicCompConfig; -use std::sync::LazyLock; +use std::{ + os::unix::{ + io::{FromRawFd, RawFd}, + net::UnixStream, + }, + sync::LazyLock, +}; use xkb_data::KeyboardLayout; +mod wayland; + static AUTOSIZE_MAIN_ID: LazyLock = LazyLock::new(|| widget::Id::new("autosize-main")); pub const ID: &str = "com.system76.CosmicAppletInputSources"; pub fn run() -> cosmic::iced::Result { + let socket = std::env::var("X_PRIVILEGED_WAYLAND_SOCKET") + .ok() + .and_then(|fd| { + fd.parse::() + .ok() + .map(|fd| unsafe { UnixStream::from_raw_fd(fd) }) + }); + let wayland_connection = if let Some(socket) = socket { + Some(Connection::from_socket(socket).unwrap()) + } else { + None + }; + localize::localize(); let layouts = match xkb_data::all_keyboard_layouts() { @@ -44,7 +67,7 @@ pub fn run() -> cosmic::iced::Result { } }; - let (comp_config_handler, comp_config) = + let comp_config = match cosmic_config::Config::new("com.system76.CosmicComp", CosmicCompConfig::VERSION) { Ok(config_handler) => { let config = match CosmicCompConfig::get_entry(&config_handler) { @@ -54,17 +77,17 @@ pub fn run() -> cosmic::iced::Result { config } }; - (Some(config_handler), config) + config } Err(err) => { tracing::error!("failed to create config handler: {}", err); - (None, CosmicCompConfig::default()) + CosmicCompConfig::default() } }; cosmic::applet::run::(Flags { + wayland_connection, comp_config, - comp_config_handler, layouts: layouts.layout_list.layout, }) } @@ -80,11 +103,13 @@ pub struct Window { core: Core, popup: Option, comp_config: CosmicCompConfig, - comp_config_handler: Option, layouts: Vec, active_layouts: Vec, rectangle_tracker: Option>, rectangle: Rectangle, + wayland_connection: Option, + keyboard_layout: Option, + current_layout: usize, } #[derive(Clone, Debug)] @@ -96,12 +121,14 @@ pub enum Message { KeyboardSettings, Surface(surface::Action), Rectangle(RectangleUpdate), + WaylandConnection(Backend), + Wayland(wayland::Event), } #[derive(Debug)] pub struct Flags { + wayland_connection: Option, pub comp_config: CosmicCompConfig, - pub comp_config_handler: Option, pub layouts: Vec, } @@ -122,7 +149,6 @@ impl cosmic::Application for Window { fn init(core: Core, flags: Self::Flags) -> (Self, app::Task) { let window = Window { - comp_config_handler: flags.comp_config_handler, layouts: flags.layouts, core, popup: None, @@ -130,6 +156,9 @@ impl cosmic::Application for Window { active_layouts: Vec::new(), rectangle_tracker: None, rectangle: Rectangle::default(), + wayland_connection: flags.wayland_connection, + keyboard_layout: None, + current_layout: 0, }; (window, Task::none()) } @@ -177,31 +206,10 @@ impl cosmic::Application for Window { tokio::spawn(cosmic::process::spawn(cmd)); } Message::SetActiveLayout(pos) => { - if pos == 0 { - return Task::none(); - } - - self.active_layouts.swap(0, pos); - let mut new_layout = String::new(); - let mut new_variant = String::new(); - - for layout in &self.active_layouts { - new_layout.push_str(&layout.layout); - new_layout.push(','); - new_variant.push_str(&layout.variant); - new_variant.push(','); - } - - let _excess_comma = new_layout.pop(); - let _excess_comma = new_variant.pop(); - - self.comp_config.xkb_config.layout = new_layout; - self.comp_config.xkb_config.variant = new_variant; - if let Some(comp_config_handler) = &self.comp_config_handler { - if let Err(err) = - comp_config_handler.set("xkb_config", &self.comp_config.xkb_config) - { - tracing::error!("Failed to set config 'xkb_config' {err}"); + if let Some(keyboard_layout) = &self.keyboard_layout { + keyboard_layout.set_group(pos as u32); + if let Some(backend) = keyboard_layout.backend().upgrade() { + let _ = backend.flush(); } } } @@ -218,13 +226,26 @@ impl cosmic::Application for Window { self.rectangle_tracker = Some(tracker); } }, + Message::WaylandConnection(backend) => { + if self.wayland_connection.is_none() { + self.wayland_connection = Some(Connection::from_backend(backend)); + } + } + Message::Wayland(w) => match w { + wayland::Event::KeyboardLayout(keyboard_layout) => { + self.keyboard_layout = Some(keyboard_layout); + } + wayland::Event::Group(group) => { + self.current_layout = group as usize; + } + }, } Task::none() } fn view(&self) -> Element<'_, Self::Message> { - let applet_text = if let Some(l) = self.active_layouts.first() { + let applet_text = if let Some(l) = self.active_layouts.get(self.current_layout) { if !l.variant.is_empty() { format!("{} ({})", l.layout, l.variant) } else { @@ -257,8 +278,13 @@ impl cosmic::Application for Window { let mut content_list = widget::column::with_capacity(4 + self.active_layouts.len()).padding([8, 0]); for (id, layout) in self.active_layouts.iter().enumerate() { + let font = if id == self.current_layout { + cosmic::font::bold() + } else { + cosmic::font::default() + }; let group = widget::column::with_capacity(2) - .push(widget::text::body(layout.description.as_str())) + .push(widget::text::body(layout.description.as_str()).font(font)) .push(widget::text::caption(layout.layout.as_str())); content_list = content_list .push(applet::menu_button(group).on_press(Message::SetActiveLayout(id))); @@ -279,7 +305,7 @@ impl cosmic::Application for Window { } fn subscription(&self) -> Subscription { - Subscription::batch(vec![ + let mut subscriptions = vec![ rectangle_tracker_subscription(0).map(|e| Message::Rectangle(e.1)), self.core .watch_config("com.system76.CosmicComp") @@ -293,7 +319,23 @@ impl cosmic::Application for Window { } Message::CompConfig(Box::new(update.config)) }), - ]) + ]; + subscriptions.push(if let Some(connection) = &self.wayland_connection { + wayland::subscription(connection.clone()).map(Message::Wayland) + } else { + iced::event::listen_with(|evt, _, _| match evt { + iced::Event::PlatformSpecific(iced::event::PlatformSpecific::Wayland(evt)) => { + if let WaylandEvent::Output(OutputEvent::Created(_), output) = evt { + if let Some(backend) = output.backend().upgrade() { + return Some(Message::WaylandConnection(backend)); + } + } + None + } + _ => None, + }) + }); + Subscription::batch(subscriptions) } fn style(&self) -> Option { diff --git a/cosmic-applet-input-sources/src/wayland.rs b/cosmic-applet-input-sources/src/wayland.rs new file mode 100644 index 00000000..7bee2245 --- /dev/null +++ b/cosmic-applet-input-sources/src/wayland.rs @@ -0,0 +1,157 @@ +use cctk::{ + cosmic_protocols::keyboard_layout::v1::client::zcosmic_keyboard_layout_v1::ZcosmicKeyboardLayoutV1, + keyboard_layout::{KeyboardLayoutHandler, KeyboardLayoutState}, + sctk::{ + self, + registry::{ProvidesRegistryState, RegistryState}, + seat::{Capability, SeatHandler, SeatState}, + }, + wayland_client::{ + Connection, QueueHandle, delegate_noop, + globals::registry_queue_init, + protocol::{wl_keyboard, wl_seat}, + }, +}; +use cosmic::iced; +use futures::{SinkExt, channel::mpsc, executor::block_on}; +use std::{hash::Hash, thread}; + +#[derive(Clone, Debug)] +pub enum Event { + KeyboardLayout(ZcosmicKeyboardLayoutV1), + Group(usize), +} + +pub fn subscription(connection: Connection) -> iced::Subscription { + #[derive(Clone)] + struct WaylandSubscription(Connection); + impl Hash for WaylandSubscription { + fn hash(&self, state: &mut H) { + self.0.backend().display_id().hash(state); + } + } + iced::Subscription::run_with( + WaylandSubscription(connection), + |WaylandSubscription(connection)| { + let connection = connection.clone(); + iced::stream::channel(8, move |sender| async move { + thread::spawn(move || thread(connection, sender)); + }) + }, + ) +} + +struct Keyboard { + seat: wl_seat::WlSeat, + keyboard_layout: ZcosmicKeyboardLayoutV1, +} + +impl Drop for Keyboard { + fn drop(&mut self) { + self.keyboard_layout.destroy(); + } +} + +struct AppData { + seat_state: SeatState, + registry_state: RegistryState, + keyboard_layout_state: KeyboardLayoutState, + keyboard: Option, + sender: mpsc::Sender, +} + +impl KeyboardLayoutHandler for AppData { + fn group( + &mut self, + _conn: &Connection, + _qh: &QueueHandle, + _keyboard: &wl_keyboard::WlKeyboard, + _keyboard_layout: &ZcosmicKeyboardLayoutV1, + group: u32, + ) { + let _ = block_on(self.sender.send(Event::Group(group as usize))); + } +} + +impl ProvidesRegistryState for AppData { + fn registry(&mut self) -> &mut RegistryState { + &mut self.registry_state + } + + sctk::registry_handlers![SeatState,]; +} + +impl SeatHandler for AppData { + fn seat_state(&mut self) -> &mut SeatState { + &mut self.seat_state + } + + fn new_seat(&mut self, _: &Connection, _: &QueueHandle, _: wl_seat::WlSeat) {} + + fn new_capability( + &mut self, + _conn: &Connection, + qh: &QueueHandle, + seat: wl_seat::WlSeat, + capability: Capability, + ) { + if capability == Capability::Keyboard && self.keyboard.is_none() { + let keyboard = seat.get_keyboard(qh, ()); + let keyboard_layout = self + .keyboard_layout_state + .get_keyboard_layout(&keyboard, qh); + keyboard.release(); + + if let Some(keyboard_layout) = keyboard_layout { + let _ = block_on( + self.sender + .send(Event::KeyboardLayout(keyboard_layout.clone())), + ); + self.keyboard = Some(Keyboard { + seat, + keyboard_layout, + }); + } else { + keyboard.release(); + } + } + } + + fn remove_capability( + &mut self, + _conn: &Connection, + _: &QueueHandle, + seat: wl_seat::WlSeat, + _capability: Capability, + ) { + self.keyboard.take_if(|x| x.seat == seat); + } + + fn remove_seat(&mut self, _: &Connection, _: &QueueHandle, seat: wl_seat::WlSeat) { + self.keyboard.take_if(|x| x.seat == seat); + } +} + +fn thread(conn: Connection, sender: mpsc::Sender) { + let (globals, mut event_queue) = registry_queue_init(&conn).unwrap(); + let qh = event_queue.handle(); + let registry_state = RegistryState::new(&globals); + let seat_state = SeatState::new(&globals, &qh); + let keyboard_layout_state = KeyboardLayoutState::new(®istry_state, &qh); + + let mut app_data = AppData { + seat_state, + registry_state, + keyboard_layout_state, + keyboard: None, + sender, + }; + loop { + event_queue.blocking_dispatch(&mut app_data).unwrap(); + } +} + +sctk::delegate_registry!(AppData); +sctk::delegate_seat!(AppData); +cctk::delegate_keyboard_layout!(AppData); +delegate_noop!(AppData: ignore wl_keyboard::WlKeyboard); From d86c5631ed0d2ee2adecd68d1a6b8f881f80ffd0 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Wed, 1 Jul 2026 14:15:14 -0700 Subject: [PATCH 22/29] input-sources: Do not store full `CosmicCompConfig` `update_xkb()` was previously never called before the subscription first returns a config value, so not getting an initial value of `comp_config` at start before the subscription does not change behavior. --- cosmic-applet-input-sources/src/lib.rs | 31 +++----------------------- 1 file changed, 3 insertions(+), 28 deletions(-) diff --git a/cosmic-applet-input-sources/src/lib.rs b/cosmic-applet-input-sources/src/lib.rs index 4f7f1265..3109c888 100644 --- a/cosmic-applet-input-sources/src/lib.rs +++ b/cosmic-applet-input-sources/src/lib.rs @@ -11,7 +11,6 @@ use cosmic::{ app, app::Core, applet::{self}, - cosmic_config::{self, CosmicConfigEntry}, cosmic_theme::Spacing, iced::Subscription, iced::core::window, @@ -28,7 +27,7 @@ use cosmic::{ rectangle_tracker::{RectangleTracker, RectangleUpdate, rectangle_tracker_subscription}, }, }; -use cosmic_comp_config::CosmicCompConfig; +use cosmic_comp_config::{CosmicCompConfig, XkbConfig}; use std::{ os::unix::{ io::{FromRawFd, RawFd}, @@ -67,27 +66,8 @@ pub fn run() -> cosmic::iced::Result { } }; - let comp_config = - match cosmic_config::Config::new("com.system76.CosmicComp", CosmicCompConfig::VERSION) { - Ok(config_handler) => { - let config = match CosmicCompConfig::get_entry(&config_handler) { - Ok(ok) => ok, - Err((errs, config)) => { - tracing::error!("errors loading config: {:?}", errs); - config - } - }; - config - } - Err(err) => { - tracing::error!("failed to create config handler: {}", err); - CosmicCompConfig::default() - } - }; - cosmic::applet::run::(Flags { wayland_connection, - comp_config, layouts: layouts.layout_list.layout, }) } @@ -102,7 +82,6 @@ pub struct ActiveLayout { pub struct Window { core: Core, popup: Option, - comp_config: CosmicCompConfig, layouts: Vec, active_layouts: Vec, rectangle_tracker: Option>, @@ -128,7 +107,6 @@ pub enum Message { #[derive(Debug)] pub struct Flags { wayland_connection: Option, - pub comp_config: CosmicCompConfig, pub layouts: Vec, } @@ -152,7 +130,6 @@ impl cosmic::Application for Window { layouts: flags.layouts, core, popup: None, - comp_config: flags.comp_config, active_layouts: Vec::new(), rectangle_tracker: None, rectangle: Rectangle::default(), @@ -197,8 +174,7 @@ impl cosmic::Application for Window { } } Message::CompConfig(config) => { - self.comp_config = *config; - self.active_layouts = self.update_xkb(); + self.active_layouts = self.update_xkb(&config.xkb_config); } Message::KeyboardSettings => { let mut cmd = std::process::Command::new("cosmic-settings"); @@ -343,9 +319,8 @@ impl cosmic::Application for Window { } } impl Window { - fn update_xkb(&self) -> Vec { + fn update_xkb(&self, xkb: &XkbConfig) -> Vec { let mut active_layouts = Vec::new(); - let xkb = &self.comp_config.xkb_config; let layouts = xkb.layout.split_terminator(','); From e544cb54c242fecbe9399fcb3dd61d9ac19e1214 Mon Sep 17 00:00:00 2001 From: Hojjat Date: Mon, 13 Jul 2026 16:25:35 -0600 Subject: [PATCH 23/29] chore: update libcosmic to fix minimize applet crash --- Cargo.lock | 84 +++++++++++++++++++++++++++--------------------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b3e84558..356ec0c8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1296,7 +1296,7 @@ dependencies = [ [[package]] name = "cosmic-config" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" +source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "atomicwrites", "cosmic-config-derive", @@ -1317,7 +1317,7 @@ dependencies = [ [[package]] name = "cosmic-config-derive" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" +source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "quote", "syn", @@ -1384,7 +1384,7 @@ dependencies = [ [[package]] name = "cosmic-panel-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-panel#029400b2b447d9d31f1a772d7f6f0d5eed2ea21e" +source = "git+https://github.com/pop-os/cosmic-panel#d520b1e9ef2c990cbb57a8c5838ce94b7d75530a" dependencies = [ "anyhow", "cosmic-config", @@ -1466,7 +1466,7 @@ dependencies = [ [[package]] name = "cosmic-settings-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-settings-daemon#8c54bbbc10485c31e8717c21e119e19b87eeb3ea" +source = "git+https://github.com/pop-os/cosmic-settings-daemon#1af414fc6cb9080349847382a66db9fd69dbe964" dependencies = [ "cosmic-config", "ron 0.11.0", @@ -1538,7 +1538,7 @@ dependencies = [ [[package]] name = "cosmic-theme" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" +source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "almost", "configparser", @@ -1894,7 +1894,7 @@ dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -1959,7 +1959,7 @@ checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "dpi" version = "0.1.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" [[package]] name = "drm" @@ -2092,7 +2092,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -2872,7 +2872,7 @@ dependencies = [ [[package]] name = "iced" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" +source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "dnd", "iced_accessibility", @@ -2893,7 +2893,7 @@ dependencies = [ [[package]] name = "iced_accessibility" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" +source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "accesskit", "accesskit_winit", @@ -2902,7 +2902,7 @@ dependencies = [ [[package]] name = "iced_core" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" +source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "bitflags 2.13.0", "bytes", @@ -2927,7 +2927,7 @@ dependencies = [ [[package]] name = "iced_debug" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" +source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "iced_core", "iced_futures", @@ -2937,7 +2937,7 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" +source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "futures", "iced_core", @@ -2951,7 +2951,7 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" +source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "bitflags 2.13.0", "bytemuck", @@ -2972,7 +2972,7 @@ dependencies = [ [[package]] name = "iced_program" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" +source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "iced_graphics", "iced_runtime", @@ -2981,7 +2981,7 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" +source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "iced_graphics", "iced_tiny_skia", @@ -2993,7 +2993,7 @@ dependencies = [ [[package]] name = "iced_runtime" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" +source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "bytes", "cosmic-client-toolkit", @@ -3008,7 +3008,7 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" +source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "bytemuck", "cosmic-text", @@ -3025,7 +3025,7 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" +source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "as-raw-xcb-connection", "bitflags 2.13.0", @@ -3057,7 +3057,7 @@ dependencies = [ [[package]] name = "iced_widget" version = "0.14.2" -source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" +source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "cosmic-client-toolkit", "dnd", @@ -3075,7 +3075,7 @@ dependencies = [ [[package]] name = "iced_winit" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" +source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "cosmic-client-toolkit", "cursor-icon", @@ -3843,7 +3843,7 @@ version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a1886916523694cd6ea3d175f03a1e5010699a2a4cc13696d83d7bea1d80638" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -3902,7 +3902,7 @@ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libcosmic" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#c44dbe793b64caa8604dc38816c9b791e7ecb8ac" +source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "apply", "ashpd 0.12.3", @@ -4426,7 +4426,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -5552,7 +5552,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.12.1", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -5948,7 +5948,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -6130,10 +6130,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.3.4", + "getrandom 0.4.3", "once_cell", "rustix 1.1.4", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -6508,7 +6508,7 @@ checksum = "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e" dependencies = [ "memoffset", "tempfile", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -7140,7 +7140,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.61.2", ] [[package]] @@ -7597,7 +7597,7 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winit" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" dependencies = [ "bitflags 2.13.0", "cfg_aliases", @@ -7623,7 +7623,7 @@ dependencies = [ [[package]] name = "winit-android" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" dependencies = [ "android-activity", "bitflags 2.13.0", @@ -7638,7 +7638,7 @@ dependencies = [ [[package]] name = "winit-appkit" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" dependencies = [ "bitflags 2.13.0", "block2 0.6.2", @@ -7660,7 +7660,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#f737f1f5900b3399b56951305b0f155afc9c9ee5" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" dependencies = [ "memmap2 0.9.11", "objc2 0.6.4", @@ -7675,7 +7675,7 @@ dependencies = [ [[package]] name = "winit-core" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" dependencies = [ "bitflags 2.13.0", "cursor-icon", @@ -7689,7 +7689,7 @@ dependencies = [ [[package]] name = "winit-orbital" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" dependencies = [ "bitflags 2.13.0", "dpi", @@ -7705,7 +7705,7 @@ dependencies = [ [[package]] name = "winit-uikit" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" dependencies = [ "bitflags 2.13.0", "block2 0.6.2", @@ -7725,7 +7725,7 @@ dependencies = [ [[package]] name = "winit-wayland" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" dependencies = [ "ahash", "bitflags 2.13.0", @@ -7751,7 +7751,7 @@ dependencies = [ [[package]] name = "winit-web" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" dependencies = [ "atomic-waker", "bitflags 2.13.0", @@ -7773,7 +7773,7 @@ dependencies = [ [[package]] name = "winit-win32" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" dependencies = [ "bitflags 2.13.0", "cursor-icon", @@ -7789,7 +7789,7 @@ dependencies = [ [[package]] name = "winit-x11" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#f737f1f5900b3399b56951305b0f155afc9c9ee5" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" dependencies = [ "bitflags 2.13.0", "bytemuck", @@ -7887,7 +7887,7 @@ checksum = "2fb433233f2df9344722454bc7e96465c9d03bff9d77c248f9e7523fe79585b5" [[package]] name = "xdg-shell-wrapper-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-panel#029400b2b447d9d31f1a772d7f6f0d5eed2ea21e" +source = "git+https://github.com/pop-os/cosmic-panel#d520b1e9ef2c990cbb57a8c5838ce94b7d75530a" dependencies = [ "serde", "wayland-protocols-wlr", From 48c363315194b8901ada03b9e965893b6e13d477 Mon Sep 17 00:00:00 2001 From: Akrm Al-Hakimi Date: Wed, 15 Jul 2026 08:08:02 -0400 Subject: [PATCH 24/29] fix(network): re-register secret agent after NetworkManager restart --- cosmic-applet-network/src/app.rs | 35 +++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/cosmic-applet-network/src/app.rs b/cosmic-applet-network/src/app.rs index 53b767a7..b5f12bfa 100644 --- a/cosmic-applet-network/src/app.rs +++ b/cosmic-applet-network/src/app.rs @@ -35,7 +35,11 @@ use cosmic::{ }, }; -use futures::{StreamExt, lock::Mutex as AsyncMutex}; +use futures::{ + StreamExt, + channel::mpsc::{UnboundedReceiver, UnboundedSender, unbounded}, + lock::Mutex as AsyncMutex, +}; use crate::{config, fl}; @@ -325,6 +329,7 @@ struct CosmicNetworkApplet { new_connection: Option, toggle_wifi_ctr: u128, token_tx: Option>, + secret_agent_reregister_tx: Option>, failed_known_ssids: FxHashSet>, /// When defined, displays connections for the specific device. @@ -929,7 +934,10 @@ impl CosmicNetworkApplet { /// Registers an `nmrs` secret agent on the system bus and yields its /// requests + cancellations as [`NmAgentEvent`] for the applet to handle. -fn secret_agent_task(identifier: String) -> Task { +fn secret_agent_task( + identifier: String, + mut reregister_requests: UnboundedReceiver<()>, +) -> Task { cosmic::Task::stream(async_fn_stream::fn_stream(move |emitter| async move { let registration = SecretAgent::builder() .with_identifier(identifier) @@ -961,6 +969,11 @@ fn secret_agent_task(identifier: String) -> Task { } None => break, }, + Some(()) = reregister_requests.next() => { + if let Err(e) = handle.reregister().await { + tracing::warn!("failed to re-register secret agent: {e}"); + } + }, } } @@ -1076,13 +1089,17 @@ impl cosmic::Application for CosmicNetworkApplet { let uuid = uuid::Uuid::new_v4().to_string().replace("-", "_"); let my_id = format!("com.system76.CosmicSettings.Applet._{uuid}.NetworkManager.SecretAgent",); + let (secret_agent_reregister_tx, secret_agent_reregister_rx) = unbounded(); ( - applet, + Self { + secret_agent_reregister_tx: Some(secret_agent_reregister_tx), + ..applet + }, Task::batch(vec![ snapshot_task(), network_events_task(), - secret_agent_task(my_id).map(Message::SecretAgent), + secret_agent_task(my_id, secret_agent_reregister_rx).map(Message::SecretAgent), ]) .map(cosmic::Action::App), ) @@ -1427,7 +1444,15 @@ impl cosmic::Application for CosmicNetworkApplet { } Message::NetworkEvent(event) => { if matches!(event, NetworkEvent::NetworkManagerRestarted) { - tracing::debug!("NetworkManager restarted; refreshing network snapshot"); + tracing::debug!( + "NetworkManager restarted; refreshing network snapshot and secret agent" + ); + if let Some(mut tx) = self.secret_agent_reregister_tx.clone() { + if let Err(e) = tx.unbounded_send(()) { + tracing::warn!("secret agent re-registration task stopped: {e}"); + self.secret_agent_reregister_tx = None; + } + } } return snapshot_task().map(cosmic::Action::App); } From 7ef0084a24ae738f1d87d85d4e6b3b6359e5919c Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Tue, 28 Jul 2026 10:03:19 +0200 Subject: [PATCH 25/29] i18n: translation updates from weblate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Adolfo Jayme Barrientos Co-authored-by: Ahrakiel Co-authored-by: Aman Alam Co-authored-by: Aman Shaw Co-authored-by: Andi Chandler Co-authored-by: Anonymous Co-authored-by: AriyA66Y Co-authored-by: CYAXXX <85353920+CYAXXX@users.noreply.github.com> Co-authored-by: Ettore Atalan Co-authored-by: Fedorov Alexei Co-authored-by: Hosted Weblate Co-authored-by: Isaac Subirana Co-authored-by: Jim Spentzos Co-authored-by: Kartik Nayak <65574961+kodebarista@users.noreply.github.com> Co-authored-by: Nara Díaz Viñolas Co-authored-by: Prasanta-Hembram Co-authored-by: Saeed Co-authored-by: Sproston Co-authored-by: Tadas Misiūnas Co-authored-by: VandaL Co-authored-by: Vilius Paliokas Co-authored-by: Wilbur Lindqvist Co-authored-by: jonnysemon Co-authored-by: lorduskordus Co-authored-by: sicKat Co-authored-by: taijuin Lee Co-authored-by: therealmate Co-authored-by: Димко Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-app-list/ar/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-app-list/cs/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-app-list/el/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-app-list/en_GB/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-app-list/fa/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-app-list/hi/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-app-list/hu/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-app-list/it/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-app-list/lt/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-app-list/pa/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-app-list/pl/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-app-list/ru/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-app-list/uk/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-app-list/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-a11y/ca/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-a11y/de/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-a11y/en_GB/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-a11y/fa/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-a11y/hi/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-a11y/it/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-a11y/sat/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-audio/ca/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-audio/de/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-audio/it/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-audio/lt/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-audio/sat/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-battery/de/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-battery/kmr/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-bluetooth/de/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-bluetooth/en_GB/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-bluetooth/fa/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-bluetooth/hi/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-bluetooth/it/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-bluetooth/sat/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-bluetooth/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-network/de/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-network/en_GB/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-network/fr/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-network/sat/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-network/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-notifications/de/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-power/ca/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-power/de/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-tiling/ca/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-tiling/de/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-time/ca/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-time/de/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applets-desktop-entries/ca/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applets-desktop-entries/cs/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applets-desktop-entries/en_GB/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applets-desktop-entries/fa/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applets-desktop-entries/hi/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applets-desktop-entries/hu/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applets-desktop-entries/it/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applets-desktop-entries/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-input-sources-applet/ca/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-input-sources-applet/de/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-workspaces-applet/ca/ Translation: Pop OS/COSMIC Accessibility Applet Translation: Pop OS/COSMIC App List Applet Translation: Pop OS/COSMIC Applets Desktop Entries Translation: Pop OS/COSMIC Audio Applet Translation: Pop OS/COSMIC Battery Applet Translation: Pop OS/COSMIC Bluetooth Applet Translation: Pop OS/COSMIC Input Sources Applet Translation: Pop OS/COSMIC Network Applet Translation: Pop OS/COSMIC Notifications Applet Translation: Pop OS/COSMIC Power Applet Translation: Pop OS/COSMIC Tiling Applet Translation: Pop OS/COSMIC Time Applet Translation: Pop OS/COSMIC Workspaces Applet --- cosmic-app-list/i18n/ar/cosmic_app_list.ftl | 2 +- cosmic-app-list/i18n/cs/cosmic_app_list.ftl | 4 +- cosmic-app-list/i18n/el/cosmic_app_list.ftl | 2 +- .../i18n/en-GB/cosmic_app_list.ftl | 1 + cosmic-app-list/i18n/fa/cosmic_app_list.ftl | 12 ++--- cosmic-app-list/i18n/hi/cosmic_app_list.ftl | 4 +- cosmic-app-list/i18n/it/cosmic_app_list.ftl | 6 +-- cosmic-app-list/i18n/lt/cosmic_app_list.ftl | 2 +- cosmic-app-list/i18n/pa/cosmic_app_list.ftl | 2 +- cosmic-app-list/i18n/pl/cosmic_app_list.ftl | 2 +- cosmic-app-list/i18n/ru/cosmic_app_list.ftl | 2 +- cosmic-app-list/i18n/sat/cosmic_app_list.ftl | 0 cosmic-app-list/i18n/uk/cosmic_app_list.ftl | 2 +- .../i18n/zh-TW/cosmic_app_list.ftl | 8 +-- .../i18n/ca/cosmic_applet_a11y.ftl | 6 +++ .../i18n/de/cosmic_applet_a11y.ftl | 2 +- .../i18n/en-GB/cosmic_applet_a11y.ftl | 6 +++ .../i18n/fa/cosmic_applet_a11y.ftl | 2 +- .../i18n/hi/cosmic_applet_a11y.ftl | 8 +-- .../i18n/it/cosmic_applet_a11y.ftl | 2 +- .../i18n/sat/cosmic_applet_a11y.ftl | 2 + .../i18n/ca/cosmic_applet_audio.ftl | 7 +++ .../i18n/de/cosmic_applet_audio.ftl | 2 +- .../i18n/it/cosmic_applet_audio.ftl | 2 +- .../i18n/lt/cosmic_applet_audio.ftl | 2 +- .../i18n/sat/cosmic_applet_audio.ftl | 1 + .../i18n/de/cosmic_applet_battery.ftl | 2 +- .../i18n/kmr/cosmic_applet_battery.ftl | 2 +- .../i18n/sat/cosmic_applet_battery.ftl | 0 .../i18n/de/cosmic_applet_bluetooth.ftl | 2 +- .../i18n/en-GB/cosmic_applet_bluetooth.ftl | 1 + .../i18n/fa/cosmic_applet_bluetooth.ftl | 4 +- .../i18n/hi/cosmic_applet_bluetooth.ftl | 4 +- .../i18n/it/cosmic_applet_bluetooth.ftl | 6 +-- .../i18n/sat/cosmic_applet_bluetooth.ftl | 1 + .../i18n/zh-TW/cosmic_applet_bluetooth.ftl | 2 +- .../i18n/ca/cosmic_applet_input_sources.ftl | 2 + .../i18n/de/cosmic_applet_input_sources.ftl | 4 +- .../i18n/sat/cosmic_applet_input_sources.ftl | 0 .../i18n/de/cosmic_applet_network.ftl | 2 +- .../i18n/en-GB/cosmic_applet_network.ftl | 1 + .../i18n/fr/cosmic_applet_network.ftl | 2 +- .../i18n/sat/cosmic_applet_network.ftl | 1 + .../i18n/zh-TW/cosmic_applet_network.ftl | 2 +- .../i18n/de/cosmic_applet_notifications.ftl | 2 +- .../i18n/sat/cosmic_applet_notifications.ftl | 0 .../i18n/ca/cosmic_applet_power.ftl | 32 ++++++++++++ .../i18n/de/cosmic_applet_power.ftl | 2 +- .../i18n/sat/cosmic_applet_power.ftl | 0 .../i18n/ca/cosmic_applet_tiling.ftl | 2 + .../i18n/de/cosmic_applet_tiling.ftl | 6 +-- .../i18n/sat/cosmic_applet_tiling.ftl | 0 .../i18n/ca/cosmic_applet_time.ftl | 1 + .../i18n/de/cosmic_applet_time.ftl | 2 +- .../i18n/sat/cosmic_applet_time.ftl | 0 .../i18n/ca/cosmic_applet_workspaces.ftl | 1 + .../i18n/sat/cosmic_applet_workspaces.ftl | 0 i18n/ca/desktop_entries.ftl | 1 + i18n/cs/desktop_entries.ftl | 12 ++--- i18n/en-GB/desktop_entries.ftl | 51 +++++++++++++++++++ i18n/fa/desktop_entries.ftl | 5 ++ i18n/hi/desktop_entries.ftl | 34 +++++++++++++ i18n/hu/desktop_entries.ftl | 10 ++-- i18n/it/desktop_entries.ftl | 46 ++++++++++++++--- i18n/sat/desktop_entries.ftl | 0 i18n/zh-Hant/desktop_entries.ftl | 38 +++++++------- 66 files changed, 282 insertions(+), 92 deletions(-) create mode 100644 cosmic-app-list/i18n/sat/cosmic_app_list.ftl create mode 100644 cosmic-applet-a11y/i18n/sat/cosmic_applet_a11y.ftl create mode 100644 cosmic-applet-audio/i18n/sat/cosmic_applet_audio.ftl create mode 100644 cosmic-applet-battery/i18n/sat/cosmic_applet_battery.ftl create mode 100644 cosmic-applet-bluetooth/i18n/sat/cosmic_applet_bluetooth.ftl create mode 100644 cosmic-applet-input-sources/i18n/sat/cosmic_applet_input_sources.ftl create mode 100644 cosmic-applet-network/i18n/sat/cosmic_applet_network.ftl create mode 100644 cosmic-applet-notifications/i18n/sat/cosmic_applet_notifications.ftl create mode 100644 cosmic-applet-power/i18n/sat/cosmic_applet_power.ftl create mode 100644 cosmic-applet-tiling/i18n/sat/cosmic_applet_tiling.ftl create mode 100644 cosmic-applet-time/i18n/sat/cosmic_applet_time.ftl create mode 100644 cosmic-applet-workspaces/i18n/sat/cosmic_applet_workspaces.ftl create mode 100644 i18n/sat/desktop_entries.ftl diff --git a/cosmic-app-list/i18n/ar/cosmic_app_list.ftl b/cosmic-app-list/i18n/ar/cosmic_app_list.ftl index 1e4d25cc..f7aae84b 100644 --- a/cosmic-app-list/i18n/ar/cosmic_app_list.ftl +++ b/cosmic-app-list/i18n/ar/cosmic_app_list.ftl @@ -1,6 +1,6 @@ cosmic-app-list = دُرج التطبيقات pin = ثبِّت في درج التطبيقات -quit = أنهِ +quit = إنهِ quit-all = أنهِ الكل new-window = نافذة جديدة run = شغِّل diff --git a/cosmic-app-list/i18n/cs/cosmic_app_list.ftl b/cosmic-app-list/i18n/cs/cosmic_app_list.ftl index ad5b9257..5534149f 100644 --- a/cosmic-app-list/i18n/cs/cosmic_app_list.ftl +++ b/cosmic-app-list/i18n/cs/cosmic_app_list.ftl @@ -1,5 +1,5 @@ -cosmic-app-list = Panel aplikací -pin = Připnout do panelu aplikací +cosmic-app-list = Oblast aplikací +pin = Připnout do oblasti aplikací quit = Ukončit quit-all = Ukončit vše new-window = Nové okno diff --git a/cosmic-app-list/i18n/el/cosmic_app_list.ftl b/cosmic-app-list/i18n/el/cosmic_app_list.ftl index e77f522a..0b8a7fb6 100644 --- a/cosmic-app-list/i18n/el/cosmic_app_list.ftl +++ b/cosmic-app-list/i18n/el/cosmic_app_list.ftl @@ -1,5 +1,5 @@ new-window = Νέο παράθυρο -quit = Έξοδος +quit = Τερματισμός cosmic-app-list = Περιοχή εφαρμογών run = Εκτέλεση run-on = Εκτέλεση με { $gpu } diff --git a/cosmic-app-list/i18n/en-GB/cosmic_app_list.ftl b/cosmic-app-list/i18n/en-GB/cosmic_app_list.ftl index e69de29b..5e538121 100644 --- a/cosmic-app-list/i18n/en-GB/cosmic_app_list.ftl +++ b/cosmic-app-list/i18n/en-GB/cosmic_app_list.ftl @@ -0,0 +1 @@ +cosmic-app-list = App Tray diff --git a/cosmic-app-list/i18n/fa/cosmic_app_list.ftl b/cosmic-app-list/i18n/fa/cosmic_app_list.ftl index be2d279a..8d098db3 100644 --- a/cosmic-app-list/i18n/fa/cosmic_app_list.ftl +++ b/cosmic-app-list/i18n/fa/cosmic_app_list.ftl @@ -1,8 +1,8 @@ -cosmic-app-list = سینی برنامه‌ها -pin = سنجاق کردن به سینی برنامه‌ها -quit = بستن -quit-all = بستن همه +cosmic-app-list = نوار برنامه‌ها +pin = افزودن به نوار برنامه‌ها +quit = خروج +quit-all = خروج از همه new-window = پنجره جدید run = اجرا -run-on = اجرا روی {$gpu} -run-on-default = (پیش‌فرض) \ No newline at end of file +run-on = اجرا با { $gpu } +run-on-default = (پیش‌فرض) diff --git a/cosmic-app-list/i18n/hi/cosmic_app_list.ftl b/cosmic-app-list/i18n/hi/cosmic_app_list.ftl index 88138ea6..2c6b12a3 100644 --- a/cosmic-app-list/i18n/hi/cosmic_app_list.ftl +++ b/cosmic-app-list/i18n/hi/cosmic_app_list.ftl @@ -1,8 +1,8 @@ cosmic-app-list = ऐप ट्रे pin = ऐप ट्रे में पिन करें -quit = बंद करें +quit = बाहर जाएँ quit-all = सभी बंद करें new-window = नई विंडो run = चलाएँ -run-on = {$gpu} पर चलाएँ +run-on = { $gpu } पर चलाएँ run-on-default = (डिफ़ॉल्ट) diff --git a/cosmic-app-list/i18n/it/cosmic_app_list.ftl b/cosmic-app-list/i18n/it/cosmic_app_list.ftl index 96a5b575..b65b4e23 100644 --- a/cosmic-app-list/i18n/it/cosmic_app_list.ftl +++ b/cosmic-app-list/i18n/it/cosmic_app_list.ftl @@ -1,8 +1,8 @@ -cosmic-app-list = Barra applicazioni +cosmic-app-list = Area applicazioni pin = Fissa nella barra delle applicazioni quit = Esci quit-all = Chiudi tutto new-window = Nuova finestra run = Esegui -run-on = Esegui usando la GPU: { $gpu } -run-on-default = (default) +run-on = Esegui su { $gpu } +run-on-default = (Predefinito) diff --git a/cosmic-app-list/i18n/lt/cosmic_app_list.ftl b/cosmic-app-list/i18n/lt/cosmic_app_list.ftl index c86f45a1..25dd5990 100644 --- a/cosmic-app-list/i18n/lt/cosmic_app_list.ftl +++ b/cosmic-app-list/i18n/lt/cosmic_app_list.ftl @@ -1,5 +1,5 @@ new-window = Naujas Langas -quit = Išeiti +quit = Išjungti run = Paleisti run-on = Paleisti naudojantis { $gpu } run-on-default = (Numatytas) diff --git a/cosmic-app-list/i18n/pa/cosmic_app_list.ftl b/cosmic-app-list/i18n/pa/cosmic_app_list.ftl index ab835da6..cb202e4b 100644 --- a/cosmic-app-list/i18n/pa/cosmic_app_list.ftl +++ b/cosmic-app-list/i18n/pa/cosmic_app_list.ftl @@ -1,4 +1,4 @@ -quit = ਬਾਹਰ +quit = ਸਮਾਪਤ cosmic-app-list = ਐਪ ਟਰੇ pin = ਐਪ ਟਰੇ ਵਿੱਚ ਟੰਗੋ quit-all = ਸਭ ਵਿੱਚੋਂ ਬਾਹਰ diff --git a/cosmic-app-list/i18n/pl/cosmic_app_list.ftl b/cosmic-app-list/i18n/pl/cosmic_app_list.ftl index aaedc5f0..d619a422 100644 --- a/cosmic-app-list/i18n/pl/cosmic_app_list.ftl +++ b/cosmic-app-list/i18n/pl/cosmic_app_list.ftl @@ -1,6 +1,6 @@ cosmic-app-list = Zasobnik aplikacji pin = Przypnij do zasobnika aplikacji -quit = Zamknij +quit = Zakończ quit-all = Zamknij wszystkie new-window = Nowe okno run = Uruchom diff --git a/cosmic-app-list/i18n/ru/cosmic_app_list.ftl b/cosmic-app-list/i18n/ru/cosmic_app_list.ftl index c1195520..2b3631e9 100644 --- a/cosmic-app-list/i18n/ru/cosmic_app_list.ftl +++ b/cosmic-app-list/i18n/ru/cosmic_app_list.ftl @@ -1,6 +1,6 @@ cosmic-app-list = Область приложений pin = Закрепить на панели приложений -quit = Выйти +quit = Завершить quit-all = Завершить все new-window = Новое окно run = Выполнить diff --git a/cosmic-app-list/i18n/sat/cosmic_app_list.ftl b/cosmic-app-list/i18n/sat/cosmic_app_list.ftl new file mode 100644 index 00000000..e69de29b diff --git a/cosmic-app-list/i18n/uk/cosmic_app_list.ftl b/cosmic-app-list/i18n/uk/cosmic_app_list.ftl index ec1833cd..b6aea1f1 100644 --- a/cosmic-app-list/i18n/uk/cosmic_app_list.ftl +++ b/cosmic-app-list/i18n/uk/cosmic_app_list.ftl @@ -1,6 +1,6 @@ cosmic-app-list = Панель застосунків pin = Закріпити -quit = Вийти +quit = Завершити quit-all = Закрити всі new-window = Нове вікно run = Виконати diff --git a/cosmic-app-list/i18n/zh-TW/cosmic_app_list.ftl b/cosmic-app-list/i18n/zh-TW/cosmic_app_list.ftl index 9595d3b0..c29bd8a5 100644 --- a/cosmic-app-list/i18n/zh-TW/cosmic_app_list.ftl +++ b/cosmic-app-list/i18n/zh-TW/cosmic_app_list.ftl @@ -1,8 +1,8 @@ -cosmic-app-list = 應用程式匣盤 -pin = 釘選至應用程式匣盤 -quit = 退出 +cosmic-app-list = 應用程式托盤 +pin = 釘選至應用程式托盤 +quit = 結束 quit-all = 全部退出 -new-window = 新建視窗 +new-window = 新增視窗 run = 執行 run-on = 在 { $gpu } 上執行 run-on-default = (預設) diff --git a/cosmic-applet-a11y/i18n/ca/cosmic_applet_a11y.ftl b/cosmic-applet-a11y/i18n/ca/cosmic_applet_a11y.ftl index e69de29b..25383cbe 100644 --- a/cosmic-applet-a11y/i18n/ca/cosmic_applet_a11y.ftl +++ b/cosmic-applet-a11y/i18n/ca/cosmic_applet_a11y.ftl @@ -0,0 +1,6 @@ +magnifier = Lupa +screen-reader = Narrador +invert-colors = Colors invertits +settings = Configuració d'accessibilitat... +filter-colors = Filtres de colors +high-contrast = Mode d'alt contrast diff --git a/cosmic-applet-a11y/i18n/de/cosmic_applet_a11y.ftl b/cosmic-applet-a11y/i18n/de/cosmic_applet_a11y.ftl index 84e24922..0a5413a5 100644 --- a/cosmic-applet-a11y/i18n/de/cosmic_applet_a11y.ftl +++ b/cosmic-applet-a11y/i18n/de/cosmic_applet_a11y.ftl @@ -1,6 +1,6 @@ screen-reader = Bildschirmleser magnifier = Vergrößerungsglas invert-colors = Farben invertieren -settings = Barrierefreiheitseinstellungen… +settings = Barrierefreiheitseinstellungen ... filter-colors = Farben filtern high-contrast = Hoher Kontrast diff --git a/cosmic-applet-a11y/i18n/en-GB/cosmic_applet_a11y.ftl b/cosmic-applet-a11y/i18n/en-GB/cosmic_applet_a11y.ftl index e69de29b..b504adf2 100644 --- a/cosmic-applet-a11y/i18n/en-GB/cosmic_applet_a11y.ftl +++ b/cosmic-applet-a11y/i18n/en-GB/cosmic_applet_a11y.ftl @@ -0,0 +1,6 @@ +screen-reader = Screen reader +invert-colors = Invert colours +high-contrast = High contrast +filter-colors = Filter colours +settings = Accessibility settings... +magnifier = Magnifier diff --git a/cosmic-applet-a11y/i18n/fa/cosmic_applet_a11y.ftl b/cosmic-applet-a11y/i18n/fa/cosmic_applet_a11y.ftl index e43e3a1d..66820364 100644 --- a/cosmic-applet-a11y/i18n/fa/cosmic_applet_a11y.ftl +++ b/cosmic-applet-a11y/i18n/fa/cosmic_applet_a11y.ftl @@ -1,6 +1,6 @@ screen-reader = صفحه‌خوان magnifier = ذره‌بین -invert-colors = وارونه‌سازی رنگ‌ها +invert-colors = وارونه کردن رنگ‌ها settings = تنظیمات دسترسی‌پذیری... filter-colors = فیلتر رنگ‌ها high-contrast = کنتراست بالا diff --git a/cosmic-applet-a11y/i18n/hi/cosmic_applet_a11y.ftl b/cosmic-applet-a11y/i18n/hi/cosmic_applet_a11y.ftl index a43e2110..97aace4d 100644 --- a/cosmic-applet-a11y/i18n/hi/cosmic_applet_a11y.ftl +++ b/cosmic-applet-a11y/i18n/hi/cosmic_applet_a11y.ftl @@ -1,4 +1,6 @@ screen-reader = स्क्रीन रीडर -filter-colors = रंग फ़िल्टर -settings = सुलभता सेटिंग..। -magnifier = आवर्धक +filter-colors = रंग फ़िल्टर करें +settings = एक्सेसिबिलिटी सेटिंग्स..। +magnifier = मैग्नीफायर +high-contrast = उच्च कंट्रास्ट +invert-colors = रंग उल्टे करें diff --git a/cosmic-applet-a11y/i18n/it/cosmic_applet_a11y.ftl b/cosmic-applet-a11y/i18n/it/cosmic_applet_a11y.ftl index 2902795c..11e6a115 100644 --- a/cosmic-applet-a11y/i18n/it/cosmic_applet_a11y.ftl +++ b/cosmic-applet-a11y/i18n/it/cosmic_applet_a11y.ftl @@ -2,5 +2,5 @@ screen-reader = Lettore dello schermo magnifier = Lente di ingrandimento invert-colors = Inverti colori settings = Impostazioni accessibilità... -filter-colors = Filtra colori +filter-colors = Filtri colore high-contrast = Contrasto elevato diff --git a/cosmic-applet-a11y/i18n/sat/cosmic_applet_a11y.ftl b/cosmic-applet-a11y/i18n/sat/cosmic_applet_a11y.ftl new file mode 100644 index 00000000..8c46d41c --- /dev/null +++ b/cosmic-applet-a11y/i18n/sat/cosmic_applet_a11y.ftl @@ -0,0 +1,2 @@ +screen-reader = ᱥᱠᱨᱤᱱ ᱨᱤᱰᱟᱨ +invert-colors = ᱨᱚᱝ ᱩᱞᱴᱟᱹ ᱪᱷᱚ diff --git a/cosmic-applet-audio/i18n/ca/cosmic_applet_audio.ftl b/cosmic-applet-audio/i18n/ca/cosmic_applet_audio.ftl index e69de29b..0bbe1d5f 100644 --- a/cosmic-applet-audio/i18n/ca/cosmic_applet_audio.ftl +++ b/cosmic-applet-audio/i18n/ca/cosmic_applet_audio.ftl @@ -0,0 +1,7 @@ +output = Sortida +show-media-controls = Mostra els controls multimèdia a la barra +disconnected = PulseAudio desconnectat +no-device = No s'ha seleccionat cap dispositiu +input = Entrada +unknown-artist = Desconegut +sound-settings = Configuració de so... diff --git a/cosmic-applet-audio/i18n/de/cosmic_applet_audio.ftl b/cosmic-applet-audio/i18n/de/cosmic_applet_audio.ftl index a0128f53..1b535907 100644 --- a/cosmic-applet-audio/i18n/de/cosmic_applet_audio.ftl +++ b/cosmic-applet-audio/i18n/de/cosmic_applet_audio.ftl @@ -1,7 +1,7 @@ output = Ausgabe input = Eingabe show-media-controls = Mediensteuerung im Panel anzeigen -sound-settings = Klang-Einstellungen... +sound-settings = Klang-Einstellungen ... disconnected = PulseAudio getrennt no-device = Kein Gerät ausgewählt unknown-artist = Unbekannt diff --git a/cosmic-applet-audio/i18n/it/cosmic_applet_audio.ftl b/cosmic-applet-audio/i18n/it/cosmic_applet_audio.ftl index f48e0ac2..46f61b33 100644 --- a/cosmic-applet-audio/i18n/it/cosmic_applet_audio.ftl +++ b/cosmic-applet-audio/i18n/it/cosmic_applet_audio.ftl @@ -4,4 +4,4 @@ show-media-controls = Mostra controlli multimediali nel pannello in alto sound-settings = Impostazioni audio... disconnected = PulseAudio Disconnesso no-device = Nessun dispositivo selezionato -unknown-artist = Sconosciuto \ No newline at end of file +unknown-artist = Sconosciuto diff --git a/cosmic-applet-audio/i18n/lt/cosmic_applet_audio.ftl b/cosmic-applet-audio/i18n/lt/cosmic_applet_audio.ftl index 4e96ec80..3152f388 100644 --- a/cosmic-applet-audio/i18n/lt/cosmic_applet_audio.ftl +++ b/cosmic-applet-audio/i18n/lt/cosmic_applet_audio.ftl @@ -4,4 +4,4 @@ no-device = Nepasirinktas įrenginys input = Įvestis output = Išvestis unknown-artist = Nežinomas atlikėjas -sound-settings = Garso Nustatymai... +sound-settings = Garso Nuostatos... diff --git a/cosmic-applet-audio/i18n/sat/cosmic_applet_audio.ftl b/cosmic-applet-audio/i18n/sat/cosmic_applet_audio.ftl new file mode 100644 index 00000000..b248256d --- /dev/null +++ b/cosmic-applet-audio/i18n/sat/cosmic_applet_audio.ftl @@ -0,0 +1 @@ +output = ᱟᱨᱡᱟᱣ diff --git a/cosmic-applet-battery/i18n/de/cosmic_applet_battery.ftl b/cosmic-applet-battery/i18n/de/cosmic_applet_battery.ftl index ec518e5f..283930e2 100644 --- a/cosmic-applet-battery/i18n/de/cosmic_applet_battery.ftl +++ b/cosmic-applet-battery/i18n/de/cosmic_applet_battery.ftl @@ -9,6 +9,6 @@ seconds = s minutes = m hours = h until-empty = bis leer -power-settings = Energie- und Akkueinstellungen... +power-settings = Energie- und Akkueinstellungen ... dgpu-running = Dedizierte GPU ist aktiv und kann die Akkulaufzeit reduzieren dgpu-applications = Anwendungen, welche die dedizierte GPU { $gpu_name } nutzen diff --git a/cosmic-applet-battery/i18n/kmr/cosmic_applet_battery.ftl b/cosmic-applet-battery/i18n/kmr/cosmic_applet_battery.ftl index 8c0d92d1..4f531fec 100644 --- a/cosmic-applet-battery/i18n/kmr/cosmic_applet_battery.ftl +++ b/cosmic-applet-battery/i18n/kmr/cosmic_applet_battery.ftl @@ -2,7 +2,7 @@ battery = Betarî seconds = ç minutes = x hours = d -until-empty = Heya vala dibe +until-empty = heya vala dibe power-settings = Sazkariyên hêz û betariyê... battery-desc = Bikaranîna hêzê kêmkirî û performans. balanced = Hevseng diff --git a/cosmic-applet-battery/i18n/sat/cosmic_applet_battery.ftl b/cosmic-applet-battery/i18n/sat/cosmic_applet_battery.ftl new file mode 100644 index 00000000..e69de29b diff --git a/cosmic-applet-bluetooth/i18n/de/cosmic_applet_bluetooth.ftl b/cosmic-applet-bluetooth/i18n/de/cosmic_applet_bluetooth.ftl index 1fa64ced..79e52b06 100644 --- a/cosmic-applet-bluetooth/i18n/de/cosmic_applet_bluetooth.ftl +++ b/cosmic-applet-bluetooth/i18n/de/cosmic_applet_bluetooth.ftl @@ -1,6 +1,6 @@ bluetooth = Bluetooth other-devices = Andere Bluetooth-Geräte -settings = Bluetooth-Einstellungen... +settings = Bluetooth-Einstellungen ... connected = Verbunden confirm-pin = Bitte bestätige, dass die folgende PIN mit der auf { $deviceName } angezeigten PIN übereinstimmt confirm = Bestätigen diff --git a/cosmic-applet-bluetooth/i18n/en-GB/cosmic_applet_bluetooth.ftl b/cosmic-applet-bluetooth/i18n/en-GB/cosmic_applet_bluetooth.ftl index e69de29b..269cddff 100644 --- a/cosmic-applet-bluetooth/i18n/en-GB/cosmic_applet_bluetooth.ftl +++ b/cosmic-applet-bluetooth/i18n/en-GB/cosmic_applet_bluetooth.ftl @@ -0,0 +1 @@ +cancel = Cancel diff --git a/cosmic-applet-bluetooth/i18n/fa/cosmic_applet_bluetooth.ftl b/cosmic-applet-bluetooth/i18n/fa/cosmic_applet_bluetooth.ftl index 01262e21..76ff0338 100644 --- a/cosmic-applet-bluetooth/i18n/fa/cosmic_applet_bluetooth.ftl +++ b/cosmic-applet-bluetooth/i18n/fa/cosmic_applet_bluetooth.ftl @@ -2,11 +2,11 @@ bluetooth = بلوتوث other-devices = سایر دستگاه‌های بلوتوث settings = تنظیمات بلوتوث... connected = متصل -confirm-pin = لطفاً تأیید کنید که پین زیر با پین نمایش داده شده در {$deviceName} یکسان است. +confirm-pin = لطفاً تأیید کنید که پین زیر با پین نمایش داده شده در { $deviceName } یکسان است. confirm = تأیید cancel = لغو unsuccessful = جفت‌سازی ناموفق بود -check-device = مطمئن شوید که {$deviceName} روشن، در محدوده و آماده جفت‌سازی است. +check-device = مطمئن شوید که { $deviceName } روشن، در محدوده و آماده جفت‌سازی است. try-again = تلاش دوباره discoverable = قابل شناسایی pairable = قابل جفت‌سازی diff --git a/cosmic-applet-bluetooth/i18n/hi/cosmic_applet_bluetooth.ftl b/cosmic-applet-bluetooth/i18n/hi/cosmic_applet_bluetooth.ftl index ca46bd08..f568bb11 100644 --- a/cosmic-applet-bluetooth/i18n/hi/cosmic_applet_bluetooth.ftl +++ b/cosmic-applet-bluetooth/i18n/hi/cosmic_applet_bluetooth.ftl @@ -2,11 +2,11 @@ bluetooth = ब्लूटूथ other-devices = अन्य ब्लूटूथ उपकरण settings = ब्लूटूथ सेटिंग्स... connected = जुड़े हुए -confirm-pin = कृपया सुनिश्चित करें कि निम्नलिखित PIN {$deviceName} पर प्रदर्शित PIN से मेल खाता है +confirm-pin = कृपया सुनिश्चित करें कि निम्नलिखित PIN { $deviceName } पर प्रदर्शित PIN से मेल खाता है confirm = पुष्टि करें cancel = रद्द करें unsuccessful = पेयरिंग असफल -check-device = सुनिश्चित करें कि {$deviceName} चालू है, रेंज में है, और पेयर करने के लिए तैयार है। +check-device = सुनिश्चित करें कि { $deviceName } चालू है, रेंज में है, और पेयर करने के लिए तैयार है। try-again = फिर से प्रयास करें discoverable = खोजने योग्य pairable = पेयर करने योग्य diff --git a/cosmic-applet-bluetooth/i18n/it/cosmic_applet_bluetooth.ftl b/cosmic-applet-bluetooth/i18n/it/cosmic_applet_bluetooth.ftl index f1ac3a22..4e3d7233 100644 --- a/cosmic-applet-bluetooth/i18n/it/cosmic_applet_bluetooth.ftl +++ b/cosmic-applet-bluetooth/i18n/it/cosmic_applet_bluetooth.ftl @@ -2,11 +2,11 @@ bluetooth = Bluetooth other-devices = Altri dispositivi Bluetooth settings = Impostazioni Bluetooth... connected = Connesso -confirm-pin = Per favore conferma che il seguente PIN corrisponda a quello visualizzato nel dispositivo {$deviceName} +confirm-pin = Per favore conferma che il seguente PIN corrisponda a quello visualizzato nel dispositivo { $deviceName } confirm = Conferma cancel = Annulla unsuccessful = Accoppiamento fallito -check-device = Assicurati che il dispositivo {$deviceName} sia acceso, a portata e pronto per l'accoppiamento. +check-device = Assicurati che il dispositivo { $deviceName } sia acceso, a portata e pronto per l'accoppiamento. try-again = Riprova discoverable = Visibile -pairable = Accoppiabile \ No newline at end of file +pairable = Accoppiabile diff --git a/cosmic-applet-bluetooth/i18n/sat/cosmic_applet_bluetooth.ftl b/cosmic-applet-bluetooth/i18n/sat/cosmic_applet_bluetooth.ftl new file mode 100644 index 00000000..67f522ad --- /dev/null +++ b/cosmic-applet-bluetooth/i18n/sat/cosmic_applet_bluetooth.ftl @@ -0,0 +1 @@ +cancel = ᱵᱟᱹᱛᱤᱞ diff --git a/cosmic-applet-bluetooth/i18n/zh-TW/cosmic_applet_bluetooth.ftl b/cosmic-applet-bluetooth/i18n/zh-TW/cosmic_applet_bluetooth.ftl index fa1426a5..781a39ec 100644 --- a/cosmic-applet-bluetooth/i18n/zh-TW/cosmic_applet_bluetooth.ftl +++ b/cosmic-applet-bluetooth/i18n/zh-TW/cosmic_applet_bluetooth.ftl @@ -1,7 +1,7 @@ bluetooth = 藍牙 other-devices = 其他藍牙裝置 settings = 藍牙設定… -connected = 已經連線 +connected = 已連線 confirm-pin = 請確認此 PIN 碼與 { $deviceName } 上顯示的是否相符 confirm = 確認 cancel = 取消 diff --git a/cosmic-applet-input-sources/i18n/ca/cosmic_applet_input_sources.ftl b/cosmic-applet-input-sources/i18n/ca/cosmic_applet_input_sources.ftl index e69de29b..12a2de28 100644 --- a/cosmic-applet-input-sources/i18n/ca/cosmic_applet_input_sources.ftl +++ b/cosmic-applet-input-sources/i18n/ca/cosmic_applet_input_sources.ftl @@ -0,0 +1,2 @@ +show-keyboard-layout = Mostra la disposició de teclat... +keyboard-settings = Configuració de teclat... diff --git a/cosmic-applet-input-sources/i18n/de/cosmic_applet_input_sources.ftl b/cosmic-applet-input-sources/i18n/de/cosmic_applet_input_sources.ftl index 6be93fc6..ddc457d7 100644 --- a/cosmic-applet-input-sources/i18n/de/cosmic_applet_input_sources.ftl +++ b/cosmic-applet-input-sources/i18n/de/cosmic_applet_input_sources.ftl @@ -1,2 +1,2 @@ -show-keyboard-layout = Tastaturbelegung anzeigen... -keyboard-settings = Tastatureinstellungen... +show-keyboard-layout = Tastaturbelegung anzeigen ... +keyboard-settings = Tastatureinstellungen ... diff --git a/cosmic-applet-input-sources/i18n/sat/cosmic_applet_input_sources.ftl b/cosmic-applet-input-sources/i18n/sat/cosmic_applet_input_sources.ftl new file mode 100644 index 00000000..e69de29b diff --git a/cosmic-applet-network/i18n/de/cosmic_applet_network.ftl b/cosmic-applet-network/i18n/de/cosmic_applet_network.ftl index 0a913c0b..fe267462 100644 --- a/cosmic-applet-network/i18n/de/cosmic_applet_network.ftl +++ b/cosmic-applet-network/i18n/de/cosmic_applet_network.ftl @@ -12,7 +12,7 @@ connected = Verbunden connecting = Wird verbunden connect = Verbinden cancel = Abbrechen -settings = Netzwerkeinstellungen... +settings = Netzwerkeinstellungen ... visible-wireless-networks = Sichtbare Drahtlosnetzwerke enter-password = Gib das Passwort oder den Verschlüsselungsschlüssel ein router-wps-button = Du kannst dich auch verbinden, indem du die Taste „WPS” am Router drückst diff --git a/cosmic-applet-network/i18n/en-GB/cosmic_applet_network.ftl b/cosmic-applet-network/i18n/en-GB/cosmic_applet_network.ftl index e69de29b..269cddff 100644 --- a/cosmic-applet-network/i18n/en-GB/cosmic_applet_network.ftl +++ b/cosmic-applet-network/i18n/en-GB/cosmic_applet_network.ftl @@ -0,0 +1 @@ +cancel = Cancel diff --git a/cosmic-applet-network/i18n/fr/cosmic_applet_network.ftl b/cosmic-applet-network/i18n/fr/cosmic_applet_network.ftl index f2c0025d..427f8e96 100644 --- a/cosmic-applet-network/i18n/fr/cosmic_applet_network.ftl +++ b/cosmic-applet-network/i18n/fr/cosmic_applet_network.ftl @@ -9,7 +9,7 @@ mac = MAC megabits-per-second = Mbps connected = Connecté connecting = Connexion -connect = Connecter +connect = Se connecter cancel = Annuler settings = Paramètres réseaux... visible-wireless-networks = Réseaux Wi-Fi disponibles diff --git a/cosmic-applet-network/i18n/sat/cosmic_applet_network.ftl b/cosmic-applet-network/i18n/sat/cosmic_applet_network.ftl new file mode 100644 index 00000000..67f522ad --- /dev/null +++ b/cosmic-applet-network/i18n/sat/cosmic_applet_network.ftl @@ -0,0 +1 @@ +cancel = ᱵᱟᱹᱛᱤᱞ diff --git a/cosmic-applet-network/i18n/zh-TW/cosmic_applet_network.ftl b/cosmic-applet-network/i18n/zh-TW/cosmic_applet_network.ftl index 23234d4d..fb7946e6 100644 --- a/cosmic-applet-network/i18n/zh-TW/cosmic_applet_network.ftl +++ b/cosmic-applet-network/i18n/zh-TW/cosmic_applet_network.ftl @@ -8,7 +8,7 @@ ipv4 = IPv4 位址 ipv6 = IPv6 位址 mac = MAC megabits-per-second = Mbps -connected = 已經連線 +connected = 已連線 connecting = 連線中 connect = 連線 cancel = 取消 diff --git a/cosmic-applet-notifications/i18n/de/cosmic_applet_notifications.ftl b/cosmic-applet-notifications/i18n/de/cosmic_applet_notifications.ftl index 6f103ed6..e40af6aa 100644 --- a/cosmic-applet-notifications/i18n/de/cosmic_applet_notifications.ftl +++ b/cosmic-applet-notifications/i18n/de/cosmic_applet_notifications.ftl @@ -15,5 +15,5 @@ show-more = { $more } weitere anzeigen clear-group = Gruppe leeren clear-all = Alle Benachrichtigungen leeren do-not-disturb = Nicht stören -notification-settings = Benachrichtigungseinstellungen... +notification-settings = Benachrichtigungseinstellungen ... no-notifications = Keine Benachrichtigungen diff --git a/cosmic-applet-notifications/i18n/sat/cosmic_applet_notifications.ftl b/cosmic-applet-notifications/i18n/sat/cosmic_applet_notifications.ftl new file mode 100644 index 00000000..e69de29b diff --git a/cosmic-applet-power/i18n/ca/cosmic_applet_power.ftl b/cosmic-applet-power/i18n/ca/cosmic_applet_power.ftl index c1084630..8fcd19ec 100644 --- a/cosmic-applet-power/i18n/ca/cosmic_applet_power.ftl +++ b/cosmic-applet-power/i18n/ca/cosmic_applet_power.ftl @@ -2,3 +2,35 @@ cancel = Cancel·lar confirm = Confirmar restart = Reinicia suspend = Suspèn +confirm-button = + { $action -> + [restart] { restart } + [suspend] { suspend } + [shutdown] Apaga + [log-out] { log-out } + *[other] { confirm } + } +power = Energia +confirm-body = + { $action -> + [restart] L'ordinador es reiniciarà + [suspend] L'ordinador se suspendrà + [shutdown] L'ordinador s'apagarà + [lock-screen] La pantalla es bloquejarà + [log-out] La sessió es tancarà + *[other] L'acció seleccionada es durà a terme + } automàticament d'aquí a { $countdown } segons. +lock-screen = Bloqueja la pantalla +shutdown = Apaga +log-out = Tanca la sessió +log-out-shortcut = Súper + Majús + Esc +settings = Configuració... +lock-screen-shortcut = Súper + Esc +confirm-title = + ¿{ $action -> + [restart] { restart } + [suspend] { suspend } + [shutdown] { shutdown } + [log-out] Voleu tancar totes les aplicacions i tancar la sessió + *[other] Voleu dur a terme l'acció seleccionada + }? diff --git a/cosmic-applet-power/i18n/de/cosmic_applet_power.ftl b/cosmic-applet-power/i18n/de/cosmic_applet_power.ftl index 652e2f9b..f630d8e4 100644 --- a/cosmic-applet-power/i18n/de/cosmic_applet_power.ftl +++ b/cosmic-applet-power/i18n/de/cosmic_applet_power.ftl @@ -1,5 +1,5 @@ power = Energie -settings = Einstellungen... +settings = Einstellungen ... lock-screen = Sperrbildschirm lock-screen-shortcut = Super + Esc log-out = Abmelden diff --git a/cosmic-applet-power/i18n/sat/cosmic_applet_power.ftl b/cosmic-applet-power/i18n/sat/cosmic_applet_power.ftl new file mode 100644 index 00000000..e69de29b diff --git a/cosmic-applet-tiling/i18n/ca/cosmic_applet_tiling.ftl b/cosmic-applet-tiling/i18n/ca/cosmic_applet_tiling.ftl index e69de29b..4160088d 100644 --- a/cosmic-applet-tiling/i18n/ca/cosmic_applet_tiling.ftl +++ b/cosmic-applet-tiling/i18n/ca/cosmic_applet_tiling.ftl @@ -0,0 +1,2 @@ +tile-windows = Organitza les finestres en mosaic automàticament +shortcuts = Dreceres diff --git a/cosmic-applet-tiling/i18n/de/cosmic_applet_tiling.ftl b/cosmic-applet-tiling/i18n/de/cosmic_applet_tiling.ftl index 2f41f75e..4e367370 100644 --- a/cosmic-applet-tiling/i18n/de/cosmic_applet_tiling.ftl +++ b/cosmic-applet-tiling/i18n/de/cosmic_applet_tiling.ftl @@ -4,11 +4,11 @@ shortcuts = Tastenkombinationen navigate-windows = Fenster navigieren move-window = Fenster verschieben toggle-floating-window = Schwebendes Fenster umschalten -view-all-shortcuts = Alle Tastenkombinationen ansehen... +view-all-shortcuts = Alle Tastenkombinationen ansehen ... active-hint = Aktiv-Hinweis gaps = Lücken -floating-window-exceptions = Ausnahmen für schwebende Fenster... -window-management-settings = Einstellungen für die Fensterverwaltung... +floating-window-exceptions = Ausnahmen für schwebende Fenster ... +window-management-settings = Einstellungen für die Fensterverwaltung ... all-workspaces = Alle Arbeitsflächen per-workspace = Pro Arbeitsfläche super = Super diff --git a/cosmic-applet-tiling/i18n/sat/cosmic_applet_tiling.ftl b/cosmic-applet-tiling/i18n/sat/cosmic_applet_tiling.ftl new file mode 100644 index 00000000..e69de29b diff --git a/cosmic-applet-time/i18n/ca/cosmic_applet_time.ftl b/cosmic-applet-time/i18n/ca/cosmic_applet_time.ftl index e69de29b..daed32e1 100644 --- a/cosmic-applet-time/i18n/ca/cosmic_applet_time.ftl +++ b/cosmic-applet-time/i18n/ca/cosmic_applet_time.ftl @@ -0,0 +1 @@ +datetime-settings = Configuració de data, hora i calendari... diff --git a/cosmic-applet-time/i18n/de/cosmic_applet_time.ftl b/cosmic-applet-time/i18n/de/cosmic_applet_time.ftl index e08a855a..e4e6c44a 100644 --- a/cosmic-applet-time/i18n/de/cosmic_applet_time.ftl +++ b/cosmic-applet-time/i18n/de/cosmic_applet_time.ftl @@ -1 +1 @@ -datetime-settings = Datum, Uhrzeit und Kalendereinstellungen... +datetime-settings = Datum, Uhrzeit und Kalendereinstellungen ... diff --git a/cosmic-applet-time/i18n/sat/cosmic_applet_time.ftl b/cosmic-applet-time/i18n/sat/cosmic_applet_time.ftl new file mode 100644 index 00000000..e69de29b diff --git a/cosmic-applet-workspaces/i18n/ca/cosmic_applet_workspaces.ftl b/cosmic-applet-workspaces/i18n/ca/cosmic_applet_workspaces.ftl index e69de29b..3844b7a8 100644 --- a/cosmic-applet-workspaces/i18n/ca/cosmic_applet_workspaces.ftl +++ b/cosmic-applet-workspaces/i18n/ca/cosmic_applet_workspaces.ftl @@ -0,0 +1 @@ +cosmic-applet-workspaces = Espais de treball del COSMIC diff --git a/cosmic-applet-workspaces/i18n/sat/cosmic_applet_workspaces.ftl b/cosmic-applet-workspaces/i18n/sat/cosmic_applet_workspaces.ftl new file mode 100644 index 00000000..e69de29b diff --git a/i18n/ca/desktop_entries.ftl b/i18n/ca/desktop_entries.ftl index 8e680471..167c3614 100644 --- a/i18n/ca/desktop_entries.ftl +++ b/i18n/ca/desktop_entries.ftl @@ -1 +1,2 @@ cosmic-app-list = Safata d'Aplicacions +cosmic-app-list-comment = Inicieu aplicacions ancorades i gestioneu les finestres obertes diff --git a/i18n/cs/desktop_entries.ftl b/i18n/cs/desktop_entries.ftl index 44354f34..fc451530 100644 --- a/i18n/cs/desktop_entries.ftl +++ b/i18n/cs/desktop_entries.ftl @@ -1,4 +1,4 @@ -cosmic-app-list = Panel aplikací +cosmic-app-list = Oblast aplikací cosmic-applet-a11y = Přístupnost cosmic-applet-audio = Zvuk cosmic-applet-battery = Napájení a baterie @@ -8,7 +8,7 @@ cosmic-applet-minimize = Minimalizovaná okna cosmic-applet-network = Síť cosmic-applet-notifications = Centrum oznámení cosmic-applet-power = Uživatelská relace -cosmic-applet-status-area = Panel oznámení +cosmic-applet-status-area = Oznamovací oblast cosmic-applet-tiling = Dlaždicový režim oken cosmic-applet-time = Datum, čas a kalendář cosmic-applet-workspaces = Číslované pracovní plochy @@ -26,9 +26,9 @@ cosmic-applet-network-comment = Správa síťových připojení cosmic-applet-network-keywords = COSMIC;Applet;Síť; cosmic-applet-notifications-comment = Správa oznámení a režimu Nerušit cosmic-applet-notifications-keywords = COSMIC;Applet;Oznámení; -cosmic-applet-status-area-keywords = COSMIC;Applet;Aplikace;Indikátory;Oznámení;Notifikace;Panel;Status;Stav; +cosmic-applet-status-area-keywords = COSMIC;Applet;Aplikace;Indikátory;Oznámení;Notifikace;Oblast;Status;Stav; cosmic-app-list-comment = Správa otevřených oken a spouštění připnutých aplikací -cosmic-app-list-keywords = COSMIC;Applet;Aplikace;Panel;Seznam;Úloha;Úlohy;Lišta; +cosmic-app-list-keywords = COSMIC;Applet;Aplikace;Oblast;Seznam;Úloha;Úlohy;Lišta; cosmic-applet-a11y-comment = Konfigurace nastavení přístupnosti z panelu cosmic-applet-a11y-keywords = COSMIC;Applet;Přístupnost;A11y;Obrazovka;Obrazovky;Čtečka;Lupa;Kontrast;Barva;Barvy; cosmic-applet-audio-comment = Výběr zvukového zařízení, ovládání hlasitosti a ovládání médií MPRIS @@ -43,9 +43,9 @@ cosmic-applet-time-keywords = COSMIC;Applet;Datumy;Časy;Kalendář;Hodiny; cosmic-applet-workspaces-comment = Přepínání mezi číslovanými pracovními plochami v panelu cosmic-applet-workspaces-keywords = COSMIC;Applet;Pracovní;Plocha;Plochy; cosmic-panel-app-button-comment = Přístup ke knihovně pro spouštění nainstalovaných aplikací -cosmic-panel-app-button-keywords = COSMIC;Applet;Aplikace;Knihovna;Panel;Spuštění;Spouštění; +cosmic-panel-app-button-keywords = COSMIC;Applet;Aplikace;Knihovna;Oblast;Spuštění;Spouštění; cosmic-panel-launcher-button-comment = Přístup ke spouštěči pro vyhledávání aplikací a spouštění příkazů cosmic-panel-launcher-button-keywords = COSMIC;Applet;Spouštěč;Vyhledávání;Příkazy; cosmic-panel-workspaces-button-comment = Přístup k přehledu pracovních ploch pro jejich správu a přepínání cosmic-panel-workspaces-button-keywords = COSMIC;Applet;Pracovní;Plocha;Plochy;Přehled; -cosmic-applet-status-area-comment = Indikátory aplikací, které mohou exportovat menu do panelu +cosmic-applet-status-area-comment = Ikony aplikací, které mohou zobrazovat nabídky na panelu diff --git a/i18n/en-GB/desktop_entries.ftl b/i18n/en-GB/desktop_entries.ftl index e69de29b..87f50a21 100644 --- a/i18n/en-GB/desktop_entries.ftl +++ b/i18n/en-GB/desktop_entries.ftl @@ -0,0 +1,51 @@ +cosmic-app-list = App Tray +cosmic-app-list-comment = Launch pinned apps and manage open windows +cosmic-app-list-keywords = COSMIC;Applet;App;Tray;List;Task;Bar; +cosmic-applet-a11y = Accessibility +cosmic-applet-a11y-comment = Configure accessibility settings from the panel +cosmic-applet-a11y-keywords = COSMIC;Applet;Accessibility;A11y;Screen;Reader;Magnifier;Contrast;Colour; +cosmic-applet-audio = Sound +cosmic-applet-audio-comment = Audio device selection, volume control, and MPRIS media controls +cosmic-applet-audio-keywords = COSMIC;Applet;Sound;Audio;MPRIS; +cosmic-applet-battery = Power & Battery +cosmic-applet-battery-comment = Power modes and power saving options +cosmic-applet-battery-keywords = COSMIC;Applet;Power;Battery; +cosmic-applet-bluetooth = Bluetooth +cosmic-applet-bluetooth-comment = Manage Bluetooth devices +cosmic-applet-bluetooth-keywords = COSMIC;Applet;Bluetooth; +cosmic-applet-input-sources = Input Sources +cosmic-applet-input-sources-comment = Switch between input sources +cosmic-applet-input-sources-keywords = COSMIC;Applet;Input;Source; +cosmic-applet-minimize = Minimised Windows +cosmic-applet-minimize-comment = Manage minimised windows +cosmic-applet-minimize-keywords = COSMIC;Applet;Minimise; +cosmic-applet-network = Network +cosmic-applet-network-comment = Manage network connections +cosmic-applet-network-keywords = COSMIC;Applet;Network; +cosmic-applet-notifications = Notifications Centre +cosmic-applet-notifications-comment = Manage notifications and Do Not Disturb +cosmic-applet-notifications-keywords = COSMIC;Applet;Notification; +cosmic-applet-power = User Session +cosmic-applet-power-comment = Lock screen, log out, suspend, reboot, and shutdown +cosmic-applet-power-keywords = COSMIC;Applet;User;Session;Lock;Log out;Reboot;Shutdown;Suspend; +cosmic-applet-status-area = Notifications Tray +cosmic-applet-status-area-comment = Application indicators which may export menus to the panel +cosmic-applet-status-area-keywords = COSMIC;Applet;App;Indicator;Notification;Tray;Status; +cosmic-applet-tiling = Tiling +cosmic-applet-tiling-comment = Manage the active hint, current & per-workspace auto-tiling +cosmic-applet-tiling-keywords = COSMIC;Applet;Tiling;Hint;Workspace; +cosmic-applet-time = Date, Time & Calendar +cosmic-applet-time-comment = Display the current time in the panel with a calendar popup +cosmic-applet-time-keywords = COSMIC;Applet;Date;Time;Calendar; +cosmic-applet-workspaces = Numbered Workspaces +cosmic-applet-workspaces-comment = Switch between numbered workspaces in the panel +cosmic-applet-workspaces-keywords = COSMIC;Applet;Workspace; +cosmic-panel-app-button = App Library Button +cosmic-panel-app-button-comment = Open the application library for launching installed applications +cosmic-panel-app-button-keywords = COSMIC;Applet;App;Library;Tray; +cosmic-panel-launcher-button = Launcher Button +cosmic-panel-launcher-button-comment = Open the launcher to search applications and run commands +cosmic-panel-launcher-button-keywords = COSMIC;Applet;Launcher;Runner; +cosmic-panel-workspaces-button = Workspaces Button +cosmic-panel-workspaces-button-comment = Open the workspaces overview to manage and switch workspaces +cosmic-panel-workspaces-button-keywords = COSMIC;Applet;Workspace;Overview; diff --git a/i18n/fa/desktop_entries.ftl b/i18n/fa/desktop_entries.ftl index e69de29b..91683d53 100644 --- a/i18n/fa/desktop_entries.ftl +++ b/i18n/fa/desktop_entries.ftl @@ -0,0 +1,5 @@ +cosmic-app-list = نوار برنامه‌ها +cosmic-applet-a11y = دسترسی‌پذیری +cosmic-applet-audio = صدا +cosmic-applet-bluetooth = بلوتوث +cosmic-applet-bluetooth-comment = مدیریت دستگاه‌های بلوتوث diff --git a/i18n/hi/desktop_entries.ftl b/i18n/hi/desktop_entries.ftl index e69de29b..3ece3b53 100644 --- a/i18n/hi/desktop_entries.ftl +++ b/i18n/hi/desktop_entries.ftl @@ -0,0 +1,34 @@ +cosmic-applet-a11y = अभिगम्यता +cosmic-applet-a11y-comment = पैनल से अभिगम्यता सेटिंग्स विन्यस्त करें +cosmic-applet-audio = ध्वनि +cosmic-applet-audio-comment = ऑडियो उपकरण चयन, ध्वनि स्तर नियंत्रण और MPRIS मीडिया नियंत्रण +cosmic-applet-battery = पावर और बैटरी +cosmic-applet-battery-comment = पावर मोड और ऊर्जा बचत विकल्प +cosmic-applet-battery-keywords = COSMIC;ऐपलेट;पावर;बैटरी +cosmic-applet-bluetooth = ब्लूटूथ +cosmic-applet-bluetooth-comment = ब्लूटूथ डिवाइस प्रबंधित करें +cosmic-applet-input-sources = इनपुट स्रोत +cosmic-applet-input-sources-comment = इनपुट स्रोतों के बीच स्विच करें +cosmic-applet-input-sources-keywords = COSMIC; Applet; इनपुट; स्रोत; +cosmic-applet-minimize = न्यूनतम की गई विंडोज़ +cosmic-applet-minimize-comment = न्यूनतम की गई विंडोज़ प्रबंधित करें +cosmic-applet-network = नेटवर्क +cosmic-applet-network-comment = नेटवर्क कनेक्शन प्रबंधित करें +cosmic-applet-notifications = नोटिफ़िकेशन सेंटर +cosmic-applet-notifications-comment = नोटिफ़िकेशन और डु नॉट डिस्टर्ब प्रबंधित करें +cosmic-applet-power = यूज़र सेशन +cosmic-applet-power-comment = स्क्रीन लॉक करें, लॉग आउट करें, सस्पेंड करें, रीबूट करें और शटडाउन करें +cosmic-applet-status-area = नोटिफ़िकेशन ट्रे +cosmic-applet-status-area-comment = एप्लिकेशन इंडिकेटर जो पैनल में मेनू एक्सपोर्ट कर सकते हैं +cosmic-applet-tiling = टाइलिंग +cosmic-applet-tiling-comment = सक्रिय हिंट, वर्तमान और प्रति-वर्कस्पेस ऑटो-टाइलिंग प्रबंधित करें +cosmic-applet-time = दिनांक, समय और कैलेंडर +cosmic-applet-time-comment = पैनल में कैलेंडर पॉपअप के साथ वर्तमान समय प्रदर्शित करें +cosmic-applet-workspaces = क्रमांकित वर्कस्पेस +cosmic-applet-workspaces-comment = पैनल में क्रमांकित वर्कस्पेस के बीच स्विच करें +cosmic-panel-app-button = ऐप लाइब्रेरी बटन +cosmic-panel-app-button-comment = इंस्टॉल किए गए एप्लिकेशन लॉन्च करने के लिए ऐप लाइब्रेरी खोलें +cosmic-panel-launcher-button = लॉन्चर बटन +cosmic-panel-launcher-button-comment = एप्लिकेशन खोजने और कमांड चलाने के लिए लॉन्चर खोलें +cosmic-panel-workspaces-button = वर्कस्पेस बटन +cosmic-panel-workspaces-button-comment = वर्कस्पेस प्रबंधित करने और उनके बीच स्विच करने के लिए वर्कस्पेस ओवरव्यू खोलें diff --git a/i18n/hu/desktop_entries.ftl b/i18n/hu/desktop_entries.ftl index 82b4bfdb..1799fcb4 100644 --- a/i18n/hu/desktop_entries.ftl +++ b/i18n/hu/desktop_entries.ftl @@ -1,16 +1,16 @@ cosmic-app-list = Alkalmazástálca cosmic-applet-a11y = Akadálymentesség cosmic-applet-audio = Hang -cosmic-applet-battery = Energia és Akkumulátor +cosmic-applet-battery = Energia és akkumulátor cosmic-applet-bluetooth = Bluetooth -cosmic-applet-input-sources = Beviteli Források +cosmic-applet-input-sources = Beviteli források cosmic-applet-minimize = Minimalizált ablakok cosmic-applet-network = Hálózat cosmic-applet-notifications = Értesítési központ -cosmic-applet-power = Felhasználói Munkamenet +cosmic-applet-power = Felhasználói munkamenet cosmic-applet-status-area = Értesítési terület cosmic-applet-tiling = Csempézés -cosmic-applet-time = Dátum, Idő és Naptár +cosmic-applet-time = Dátum, idő és naptár cosmic-applet-workspaces = Számozott Munkaterületek cosmic-panel-app-button = Alkalmazáskönyvtár gomb cosmic-panel-launcher-button = Indító gomb @@ -21,7 +21,7 @@ cosmic-applet-audio-keywords = COSMIC;kisalkalmazás;hang;MPRIS; cosmic-applet-battery-keywords = COSMIC;kisalkalmazás;energia;akkumulátor; cosmic-applet-bluetooth-comment = Bluetooth-eszközök kezelése cosmic-applet-bluetooth-keywords = COSMIC;kisalkalmazás;bluetooth; -cosmic-applet-input-sources-keywords = COSMIC;kisalkalmazás;beviteli forrás; +cosmic-applet-input-sources-keywords = COSMIC;kisalkalmazás;beviteli;forrás; cosmic-applet-minimize-keywords = COSMIC;kisalkalmazás;minimizálás; cosmic-applet-network-keywords = COSMIC;kisalkalmazás;hálózat;internet; cosmic-applet-notifications-keywords = COSMIC;kisalkalmazás;értesítések; diff --git a/i18n/it/desktop_entries.ftl b/i18n/it/desktop_entries.ftl index d7ca6b16..083337f3 100644 --- a/i18n/it/desktop_entries.ftl +++ b/i18n/it/desktop_entries.ftl @@ -1,16 +1,48 @@ cosmic-app-list = Area applicazioni cosmic-applet-a11y = Accessibilità -cosmic-applet-audio = Audio -cosmic-applet-battery = Alimentazione e batteria +cosmic-applet-audio = Suono +cosmic-applet-battery = Potenza e batteria cosmic-applet-bluetooth = Bluetooth -cosmic-applet-input-sources = Sorgenti di immissione +cosmic-applet-input-sources = Sorgenti di input cosmic-applet-minimize = Finestre minimizzate cosmic-applet-network = Rete cosmic-applet-notifications = Centro notifiche cosmic-applet-power = Sessione utente cosmic-applet-status-area = Area notifiche -cosmic-applet-tiling = Tiling +cosmic-applet-tiling = Affiancamento finestre cosmic-applet-time = Data, ora e calendario -cosmic-applet-workspaces = Spazi di lavoro numerati -cosmic-panel-launcher-button = Tasto Launcher -cosmic-panel-workspaces-button = Tasto Spazi di lavoro +cosmic-applet-workspaces = Aree di lavoro numerate +cosmic-panel-launcher-button = Pulsante del launcher +cosmic-panel-workspaces-button = Pulsante aree di lavoro +cosmic-app-list-comment = Avvia le app fissate e gestisci le finestre aperte +cosmic-applet-a11y-comment = Configura le impostazioni di accessibilità dal pannello +cosmic-applet-audio-comment = Selezione dispositivi audio, controllo del volume e controlli multimediali MPRIS +cosmic-applet-battery-comment = Modalità di alimentazione e opzioni di risparmio energetico +cosmic-applet-bluetooth-comment = Gestione di dispositivi Bluetooth +cosmic-applet-input-sources-comment = Passa da una sorgente di input all’altra +cosmic-applet-minimize-comment = Gestisci le finestre minimizzate +cosmic-applet-network-comment = Gestisci le connessioni di rete +cosmic-applet-notifications-comment = Gestisci le notifiche e “Non disturbare” +cosmic-applet-power-comment = Blocca lo schermo, termina la sessione, sospendi, riavvia e spegni +cosmic-applet-status-area-comment = Indicatori di applicazioni che possono esportare menu nel pannello +cosmic-applet-tiling-comment = Gestisci il suggerimento attivo e l’affiancamento automatico corrente e per aree di lavoro +cosmic-applet-time-comment = Mostra l’ora corrente nel pannello con popup del calendario +cosmic-applet-workspaces-comment = Passa tra aree di lavoro numerate nel pannello +cosmic-panel-app-button = Pulsante della libreria delle applicazioni +cosmic-panel-app-button-comment = Apri la libreria delle applicazioni per avviare le applicazioni installate +cosmic-panel-launcher-button-comment = Apri il launcher per cercare applicazioni ed eseguire comandi +cosmic-panel-workspaces-button-comment = Apri la panoramica delle aree di lavoro per gestirle e passare da una all’altra +cosmic-app-list-keywords = COSMIC;Applet;Applicazione;Area di notifica;Elenco;Attività;Barra; +cosmic-applet-a11y-keywords = COSMIC;Applet;Accessibilità;A11y;Lettore di schermo;Lente d'ingrandimento;Contrasto;Colore; +cosmic-applet-audio-keywords = COSMIC;Applet;Suono;Audio;MPRIS; +cosmic-applet-battery-keywords = COSMIC;Applet;Potenza;Batteria; +cosmic-applet-bluetooth-keywords = COSMIC;Applet; Bluetooth; +cosmic-applet-input-sources-keywords = COSMIC;Applet;Input;Sorgente; +cosmic-applet-minimize-keywords = COSMIC;Applet;Minimizzare; +cosmic-applet-network-keywords = COSMIC;Applet;Rete; +cosmic-applet-notifications-keywords = COSMIC;Applet;Notifiche; +cosmic-applet-power-keywords = COSMIC;Applet;Utente;Sessione;Blocca;Termina sessione;Riavvia;Spegni;Sospendi; +cosmic-applet-status-area-keywords = COSMIC;Applet;Applicazione;Indicatore;Notifiche;Area;Stato; +cosmic-applet-tiling-keywords = COSMIC;Applet;Affiancamento;Suggerimento;Area di lavoro; +cosmic-applet-time-keywords = COSMIC;Applet;Data;Ora;Calendario; +cosmic-applet-workspaces-keywords = COSMIC;Applet;Area di lavoro; diff --git a/i18n/sat/desktop_entries.ftl b/i18n/sat/desktop_entries.ftl new file mode 100644 index 00000000..e69de29b diff --git a/i18n/zh-Hant/desktop_entries.ftl b/i18n/zh-Hant/desktop_entries.ftl index 7bac138d..ef886f04 100644 --- a/i18n/zh-Hant/desktop_entries.ftl +++ b/i18n/zh-Hant/desktop_entries.ftl @@ -1,31 +1,31 @@ -cosmic-applet-a11y-keywords = COSMIC;工具程式;無障礙;螢幕;閱讀器;放大鏡;對比;顏色; -cosmic-applet-audio-keywords = COSMIC;工具程式;音響;音頻;MPRIS; -cosmic-applet-battery-keywords = COSMIC;工具程式;電源;電池; -cosmic-applet-bluetooth-keywords = COSMIC;工具程式;藍牙; -cosmic-applet-input-sources-keywords = COSMIC;工具程式;輸入;輸入源; -cosmic-applet-minimize-keywords = COSMIC;工具程式;最小化; +cosmic-applet-a11y-keywords = COSMIC;小程式;無障礙;螢幕;閱讀器;放大鏡;對比;顏色; +cosmic-applet-audio-keywords = COSMIC;小程式;音效;音訊;MPRIS; +cosmic-applet-battery-keywords = COSMIC;小程式;電源;電池; +cosmic-applet-bluetooth-keywords = COSMIC;小程式;藍牙; +cosmic-applet-input-sources-keywords = COSMIC;小程式;輸入;輸入源; +cosmic-applet-minimize-keywords = COSMIC;小程式;最小化; cosmic-applet-network-keywords = COSMIC;工具程式;網路; cosmic-applet-notifications-keywords = COSMIC;工具程式;通知; cosmic-applet-power-keywords = COSMIC;工具程式;使用者;工作階段;鎖定;登入;登出;重新啟動;關閉電源;休眠; -cosmic-app-list = 應用程式匣盤 -cosmic-applet-status-area = 通知匣盤 -cosmic-applet-status-area-keywords = COSMIC;工具程式;应用;應用程式;指示器;通知;匣盤;狀態; +cosmic-app-list = 應用程式托盤 +cosmic-applet-status-area = 通知托盤 +cosmic-applet-status-area-keywords = COSMIC;小程式;應用程式;指示器;通知;托盤;狀態; cosmic-applet-status-area-comment = 可能在面板上顯示的應用指示器 -cosmic-panel-app-button-keywords = COSMIC;工具程式;應用;應用程式;庫;匣盤; +cosmic-panel-app-button-keywords = COSMIC;小程式;應用;應用程式;庫;托盤; cosmic-panel-workspaces-button = 工作區按鈕 cosmic-applet-tiling-comment = 管理啟用提示、當前和每個工作區自動視窗平鋪 -cosmic-applet-tiling-keywords = COSMIC;工具程式;平鋪;提示;工作區; +cosmic-applet-tiling-keywords = COSMIC;小程式;平鋪;提示;工作區; cosmic-applet-time = 日期、時間與行事曆 -cosmic-applet-time-comment = 在面板上顯示時間以及彈出日曆 -cosmic-applet-time-keywords = COSMIC;工具程式;日期;時間;日曆;行事曆; +cosmic-applet-time-comment = 在面板上顯示目前時間,並附帶彈出式日曆視窗 +cosmic-applet-time-keywords = COSMIC;小程式;日期;時間;日曆;行事曆; cosmic-applet-workspaces = 工作區編號 cosmic-applet-workspaces-comment = 在面板上切換帶有編號的工作區 -cosmic-applet-workspaces-keywords = COSMIC;工具程式;工作區; +cosmic-applet-workspaces-keywords = COSMIC;小程式;工作區; cosmic-panel-app-button = 應用程式庫按鈕 cosmic-panel-app-button-comment = 啟動應用程式庫來啟動已安裝的應用程式 cosmic-panel-launcher-button = 啟動器按鈕 cosmic-panel-launcher-button-comment = 開啟啟動器以搜尋應用程式以及執行命令 -cosmic-panel-launcher-button-keywords = COSMIC;工具程式;啟動器; +cosmic-panel-launcher-button-keywords = COSMIC;小程式;啟動器; cosmic-applet-notifications-comment = 管理通知和勿擾模式 cosmic-applet-a11y = 無障礙 cosmic-applet-bluetooth-comment = 管理藍牙裝置 @@ -35,11 +35,11 @@ cosmic-applet-notifications = 通知中心 cosmic-applet-network-comment = 管理網路連接 cosmic-applet-minimize-comment = 管理最小化的視窗 cosmic-applet-bluetooth = 藍牙 -cosmic-applet-audio = 音響 +cosmic-applet-audio = 音效 cosmic-applet-minimize = 最小化視窗 cosmic-app-list-comment = 啟動釘板的應用程式並管理開啟視窗 -cosmic-app-list-keywords = COSMIC;工具程式;應用程式;匣盤;列表;任務;列; -cosmic-applet-a11y-comment = 從面板調設無障礙設定 +cosmic-app-list-keywords = COSMIC;小程式;應用程式;匣盤;列表;任務;列; +cosmic-applet-a11y-comment = 從面板設定無障礙功能 cosmic-applet-audio-comment = 音訊裝置選擇、音量控制及 MPRIS 媒體控制 cosmic-applet-input-sources = 輸入來源 cosmic-applet-input-sources-comment = 切換各輸入來源 @@ -48,4 +48,4 @@ cosmic-applet-power = 使用者工作階段 cosmic-applet-power-comment = 鎖定畫面、登出、休眠、重新啟動及關機 cosmic-applet-tiling = 平鋪 cosmic-panel-workspaces-button-comment = 啟動工作區總覽以管理和切換工作區 -cosmic-panel-workspaces-button-keywords = COSMIC;工具程式;工作區;總覽; +cosmic-panel-workspaces-button-keywords = COSMIC;小程式;工作區;總覽; From 63292ab74dc8ef9c8d4e04055047c7671554e937 Mon Sep 17 00:00:00 2001 From: Rafael Kraut <14234815+RafaelKr@users.noreply.github.com> Date: Mon, 6 Jul 2026 15:41:53 +0200 Subject: [PATCH 26/29] fix(status-area): constrain menu icon-data to icon size Menu items expose their icon as a themed `icon-name` or raw PNG `icon-data`. The named-icon branch renders at a fixed `.size(14)`, but the icon-data branch wrapped the pixmap in a bare `Image` with no size constraint, so it rendered at the PNG's native dimensions. Apps may send full-resolution pixmaps, which then render oversized in the menu. Constrain icon-data to the same 14px box with ContentFit::Contain, matching how KDE (Qt small-icon size) and GNOME (St.Icon popup-menu-icon) render menu item icons. Co-Authored-By: Claude Opus 4.8 (1M context) --- cosmic-applet-status-area/src/components/status_menu.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cosmic-applet-status-area/src/components/status_menu.rs b/cosmic-applet-status-area/src/components/status_menu.rs index e706f37b..a228d745 100644 --- a/cosmic-applet-status-area/src/components/status_menu.rs +++ b/cosmic-applet-status-area/src/components/status_menu.rs @@ -232,7 +232,11 @@ fn layout_view(layout: &Layout, expanded: Option) -> cosmic::Element<'_, Ms } if let Some(icon_data) = i.icon_data() { let handle = iced::widget::image::Handle::from_bytes(icon_data.to_vec()); - children.insert(0, iced::widget::Image::new(handle).into()); + let icon = iced::widget::Image::new(handle) + .width(iced::Length::Fixed(14.0)) + .height(iced::Length::Fixed(14.0)) + .content_fit(iced::core::ContentFit::Contain); + children.insert(0, icon.into()); } else if let Some(icon_name) = i.icon_name() { let icon = cosmic::widget::icon::from_name(icon_name) .size(14) From 4285090a443ba34badffecdf77dc6fafa05289ac Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Tue, 18 Aug 2026 07:51:47 +0200 Subject: [PATCH 27/29] i18n: translation updates from weblate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Andi Chandler Co-authored-by: CodeBeats Co-authored-by: David Carvalho Co-authored-by: Ettore Atalan Co-authored-by: Feike Donia Co-authored-by: Hosted Weblate Co-authored-by: Hugo Carvalho Co-authored-by: Jens Peter Nielsen Co-authored-by: Martin Meizoso Co-authored-by: Michael Millet Co-authored-by: Prasanta-Hembram Co-authored-by: Quentin PAGÈS Co-authored-by: Steen Rabol Co-authored-by: Walter William Beckerleg Bruckman Co-authored-by: Wilbur Lindqvist Co-authored-by: lucamosca1 Co-authored-by: sicKat Co-authored-by: the-forest-watches Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-app-list/da/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-app-list/en_GB/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-app-list/gl/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-app-list/oc/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-app-list/pt_BR/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-app-list/sat/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-a11y/da/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-a11y/gl/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-audio/da/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-audio/en_GB/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-audio/gl/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-battery/da/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-battery/en_GB/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-battery/gl/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-battery/it/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-battery/pt_BR/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-battery/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-bluetooth/da/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-bluetooth/en_GB/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-bluetooth/gl/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-network/da/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-network/en_GB/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-network/gl/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-notifications/gl/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-power/gl/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-tiling/gl/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-tiling/nl/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applet-time/gl/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applets-desktop-entries/da/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applets-desktop-entries/de/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applets-desktop-entries/gl/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applets-desktop-entries/it/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applets-desktop-entries/nl/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applets-desktop-entries/oc/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applets-desktop-entries/pt/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-applets-desktop-entries/sat/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-input-sources-applet/da/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-input-sources-applet/gl/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-workspaces-applet/gl/ Translation: Pop OS/COSMIC Accessibility Applet Translation: Pop OS/COSMIC App List Applet Translation: Pop OS/COSMIC Applets Desktop Entries Translation: Pop OS/COSMIC Audio Applet Translation: Pop OS/COSMIC Battery Applet Translation: Pop OS/COSMIC Bluetooth Applet Translation: Pop OS/COSMIC Input Sources Applet Translation: Pop OS/COSMIC Network Applet Translation: Pop OS/COSMIC Notifications Applet Translation: Pop OS/COSMIC Power Applet Translation: Pop OS/COSMIC Tiling Applet Translation: Pop OS/COSMIC Time Applet Translation: Pop OS/COSMIC Workspaces Applet --- cosmic-app-list/i18n/da/cosmic_app_list.ftl | 8 +++ .../i18n/en-GB/cosmic_app_list.ftl | 7 +++ cosmic-app-list/i18n/gl/cosmic_app_list.ftl | 8 +++ cosmic-app-list/i18n/oc/cosmic_app_list.ftl | 1 + .../i18n/pt-BR/cosmic_app_list.ftl | 2 +- cosmic-app-list/i18n/sat/cosmic_app_list.ftl | 2 + .../i18n/da/cosmic_applet_a11y.ftl | 6 +++ .../i18n/gl/cosmic_applet_a11y.ftl | 6 +++ .../i18n/da/cosmic_applet_audio.ftl | 7 +++ .../i18n/en-GB/cosmic_applet_audio.ftl | 7 +++ .../i18n/gl/cosmic_applet_audio.ftl | 7 +++ .../i18n/da/cosmic_applet_battery.ftl | 14 +++++ .../i18n/en-GB/cosmic_applet_battery.ftl | 14 +++++ .../i18n/gl/cosmic_applet_battery.ftl | 14 +++++ .../i18n/it/cosmic_applet_battery.ftl | 16 +++--- .../i18n/pt-BR/cosmic_applet_battery.ftl | 10 ++-- .../i18n/zh-TW/cosmic_applet_battery.ftl | 6 +-- .../i18n/da/cosmic_applet_bluetooth.ftl | 12 +++++ .../i18n/en-GB/cosmic_applet_bluetooth.ftl | 11 ++++ .../i18n/gl/cosmic_applet_bluetooth.ftl | 12 +++++ .../i18n/da/cosmic_applet_input_sources.ftl | 2 + .../i18n/gl/cosmic_applet_input_sources.ftl | 2 + .../i18n/da/cosmic_applet_network.ftl | 6 +++ .../i18n/en-GB/cosmic_applet_network.ftl | 1 + .../i18n/gl/cosmic_applet_network.ftl | 24 +++++++++ .../i18n/gl/cosmic_applet_notifications.ftl | 19 +++++++ .../i18n/gl/cosmic_applet_power.ftl | 36 +++++++++++++ .../i18n/gl/cosmic_applet_tiling.ftl | 20 ++++++++ .../i18n/nl/cosmic_applet_tiling.ftl | 4 +- .../i18n/gl/cosmic_applet_time.ftl | 1 + .../i18n/gl/cosmic_applet_workspaces.ftl | 1 + i18n/da/desktop_entries.ftl | 51 +++++++++++++++++++ i18n/de/desktop_entries.ftl | 2 +- i18n/gl/desktop_entries.ftl | 51 +++++++++++++++++++ i18n/it/desktop_entries.ftl | 2 + i18n/nl/desktop_entries.ftl | 44 ++++++++++++++-- i18n/oc/desktop_entries.ftl | 19 +++++++ i18n/pt/desktop_entries.ftl | 2 +- i18n/sat/desktop_entries.ftl | 10 ++++ 39 files changed, 441 insertions(+), 26 deletions(-) create mode 100644 cosmic-app-list/i18n/gl/cosmic_app_list.ftl create mode 100644 cosmic-applet-a11y/i18n/gl/cosmic_applet_a11y.ftl create mode 100644 cosmic-applet-audio/i18n/gl/cosmic_applet_audio.ftl create mode 100644 cosmic-applet-battery/i18n/gl/cosmic_applet_battery.ftl create mode 100644 cosmic-applet-bluetooth/i18n/gl/cosmic_applet_bluetooth.ftl create mode 100644 cosmic-applet-input-sources/i18n/gl/cosmic_applet_input_sources.ftl create mode 100644 cosmic-applet-network/i18n/gl/cosmic_applet_network.ftl create mode 100644 cosmic-applet-notifications/i18n/gl/cosmic_applet_notifications.ftl create mode 100644 cosmic-applet-power/i18n/gl/cosmic_applet_power.ftl create mode 100644 cosmic-applet-tiling/i18n/gl/cosmic_applet_tiling.ftl create mode 100644 cosmic-applet-time/i18n/gl/cosmic_applet_time.ftl create mode 100644 cosmic-applet-workspaces/i18n/gl/cosmic_applet_workspaces.ftl create mode 100644 i18n/gl/desktop_entries.ftl diff --git a/cosmic-app-list/i18n/da/cosmic_app_list.ftl b/cosmic-app-list/i18n/da/cosmic_app_list.ftl index e69de29b..3396ed61 100644 --- a/cosmic-app-list/i18n/da/cosmic_app_list.ftl +++ b/cosmic-app-list/i18n/da/cosmic_app_list.ftl @@ -0,0 +1,8 @@ +run = Kør +run-on = Kør på { $gpu } +run-on-default = (Standard) +cosmic-app-list = Programbakke +new-window = Nyt Vindue +quit = Afslut +quit-all = Forlad Alle +pin = Fastgør til app-skuffe diff --git a/cosmic-app-list/i18n/en-GB/cosmic_app_list.ftl b/cosmic-app-list/i18n/en-GB/cosmic_app_list.ftl index 5e538121..f3afe950 100644 --- a/cosmic-app-list/i18n/en-GB/cosmic_app_list.ftl +++ b/cosmic-app-list/i18n/en-GB/cosmic_app_list.ftl @@ -1 +1,8 @@ cosmic-app-list = App Tray +new-window = New Window +quit = Quit +run = Run +run-on = Run on { $gpu } +quit-all = Quit All +run-on-default = (Default) +pin = Pin to app tray diff --git a/cosmic-app-list/i18n/gl/cosmic_app_list.ftl b/cosmic-app-list/i18n/gl/cosmic_app_list.ftl new file mode 100644 index 00000000..4fa947a7 --- /dev/null +++ b/cosmic-app-list/i18n/gl/cosmic_app_list.ftl @@ -0,0 +1,8 @@ +quit = Pechar +run = Executar +cosmic-app-list = Bandexa de aplicacións +pin = Fixar na bandexa de aplicacións +quit-all = Quitar todo +new-window = Nova Xanela +run-on = Executar en { $gpu } +run-on-default = (Por defecto) diff --git a/cosmic-app-list/i18n/oc/cosmic_app_list.ftl b/cosmic-app-list/i18n/oc/cosmic_app_list.ftl index e69de29b..9129b9b4 100644 --- a/cosmic-app-list/i18n/oc/cosmic_app_list.ftl +++ b/cosmic-app-list/i18n/oc/cosmic_app_list.ftl @@ -0,0 +1 @@ +cosmic-app-list = Cinta d’aplicacions diff --git a/cosmic-app-list/i18n/pt-BR/cosmic_app_list.ftl b/cosmic-app-list/i18n/pt-BR/cosmic_app_list.ftl index 2b94e0e9..0a28b697 100644 --- a/cosmic-app-list/i18n/pt-BR/cosmic_app_list.ftl +++ b/cosmic-app-list/i18n/pt-BR/cosmic_app_list.ftl @@ -1,6 +1,6 @@ cosmic-app-list = Bandeja de aplicativos pin = Fixar na bandeja de aplicativos -quit = Sair +quit = Encerrar quit-all = Sair de Todos new-window = Nova Janela run = Executar diff --git a/cosmic-app-list/i18n/sat/cosmic_app_list.ftl b/cosmic-app-list/i18n/sat/cosmic_app_list.ftl index e69de29b..32be0db1 100644 --- a/cosmic-app-list/i18n/sat/cosmic_app_list.ftl +++ b/cosmic-app-list/i18n/sat/cosmic_app_list.ftl @@ -0,0 +1,2 @@ +run-on = { $gpu } ᱨᱮ ᱫᱟᱹᱲ ᱟᱭ +run-on-default = (ᱢᱩᱞ) diff --git a/cosmic-applet-a11y/i18n/da/cosmic_applet_a11y.ftl b/cosmic-applet-a11y/i18n/da/cosmic_applet_a11y.ftl index e69de29b..85729331 100644 --- a/cosmic-applet-a11y/i18n/da/cosmic_applet_a11y.ftl +++ b/cosmic-applet-a11y/i18n/da/cosmic_applet_a11y.ftl @@ -0,0 +1,6 @@ +screen-reader = Skærmlæser +invert-colors = Invertér farver +high-contrast = Høj kontrast +filter-colors = Filtrér farver +settings = Tilgængelighedsindstillinger... +magnifier = Forstørrelsesglas diff --git a/cosmic-applet-a11y/i18n/gl/cosmic_applet_a11y.ftl b/cosmic-applet-a11y/i18n/gl/cosmic_applet_a11y.ftl new file mode 100644 index 00000000..d0da1ab5 --- /dev/null +++ b/cosmic-applet-a11y/i18n/gl/cosmic_applet_a11y.ftl @@ -0,0 +1,6 @@ +screen-reader = Lector de pantalla +magnifier = Lupa +invert-colors = Invertir cores +settings = Configuración de accesibilidade... +filter-colors = Filtro de cores +high-contrast = Alto contraste diff --git a/cosmic-applet-audio/i18n/da/cosmic_applet_audio.ftl b/cosmic-applet-audio/i18n/da/cosmic_applet_audio.ftl index e69de29b..7cdb3d06 100644 --- a/cosmic-applet-audio/i18n/da/cosmic_applet_audio.ftl +++ b/cosmic-applet-audio/i18n/da/cosmic_applet_audio.ftl @@ -0,0 +1,7 @@ +show-media-controls = Vis mediekontrol på panel +disconnected = PulseAudio Afbrudt +no-device = Ingen enhed valgt +input = Indgang +output = Udgang +unknown-artist = Ukendt +sound-settings = Lydindstillinger... diff --git a/cosmic-applet-audio/i18n/en-GB/cosmic_applet_audio.ftl b/cosmic-applet-audio/i18n/en-GB/cosmic_applet_audio.ftl index e69de29b..cb19412d 100644 --- a/cosmic-applet-audio/i18n/en-GB/cosmic_applet_audio.ftl +++ b/cosmic-applet-audio/i18n/en-GB/cosmic_applet_audio.ftl @@ -0,0 +1,7 @@ +show-media-controls = Show media controls on panel +disconnected = PulseAudio Disconnected +no-device = No device selected +input = Input +output = Output +unknown-artist = Unknown +sound-settings = Sound Settings... diff --git a/cosmic-applet-audio/i18n/gl/cosmic_applet_audio.ftl b/cosmic-applet-audio/i18n/gl/cosmic_applet_audio.ftl new file mode 100644 index 00000000..c0a90f1e --- /dev/null +++ b/cosmic-applet-audio/i18n/gl/cosmic_applet_audio.ftl @@ -0,0 +1,7 @@ +output = Saída +input = Entrada +show-media-controls = Mostrar os controis multimedia no panel +sound-settings = Axustes do son... +disconnected = PulseAudio Desconectado +no-device = Ningún dipositivo seleccionado +unknown-artist = Descoñecido diff --git a/cosmic-applet-battery/i18n/da/cosmic_applet_battery.ftl b/cosmic-applet-battery/i18n/da/cosmic_applet_battery.ftl index e69de29b..28cf327a 100644 --- a/cosmic-applet-battery/i18n/da/cosmic_applet_battery.ftl +++ b/cosmic-applet-battery/i18n/da/cosmic_applet_battery.ftl @@ -0,0 +1,14 @@ +power-settings = Strøm- og Batteriindstillinger... +hours = t +until-empty = indtil tom +battery-desc = Reduceret strømforbrug og ydeevne. +max-charge = Forøg dit batteris levetid, ved at angive en maksimal opladningsværdi på 80% +balanced = Balanceret +battery = Batteri +seconds = s +dgpu-running = Diskret GPU er aktiv og kan reducere batterilevetiden +performance = Høj Ydeevne +performance-desc = Høj ydeevne og strømforbrug. +minutes = m +balanced-desc = Standard ydeevne og batteriforbrug. +dgpu-applications = Applikationer som bruger { $gpu_name } diskret GPU diff --git a/cosmic-applet-battery/i18n/en-GB/cosmic_applet_battery.ftl b/cosmic-applet-battery/i18n/en-GB/cosmic_applet_battery.ftl index e69de29b..11833e03 100644 --- a/cosmic-applet-battery/i18n/en-GB/cosmic_applet_battery.ftl +++ b/cosmic-applet-battery/i18n/en-GB/cosmic_applet_battery.ftl @@ -0,0 +1,14 @@ +power-settings = Power & Battery settings... +hours = h +until-empty = until empty +battery-desc = Reduced power usage and performance. +max-charge = Increase the lifespan of your battery by setting a maximum charge value of 80% +balanced = Balanced +battery = Battery +seconds = s +dgpu-running = Discrete GPU is active and can reduce battery life +performance = High Performance +performance-desc = High performance and power usage. +minutes = m +balanced-desc = Standard performance and battery usage. +dgpu-applications = Applications using { $gpu_name } discrete GPU diff --git a/cosmic-applet-battery/i18n/gl/cosmic_applet_battery.ftl b/cosmic-applet-battery/i18n/gl/cosmic_applet_battery.ftl new file mode 100644 index 00000000..0146556a --- /dev/null +++ b/cosmic-applet-battery/i18n/gl/cosmic_applet_battery.ftl @@ -0,0 +1,14 @@ +battery = Batería +battery-desc = Reduce o consumo de enerxía e o rendemento. +balanced = Balanceado +balanced-desc = Rendemento e consumo de batería estándar. +performance = Alto rendemento +performance-desc = Alto rendemento e maior consumo de enerxía. +max-charge = Aumenta a vida útil da batería limitando a carga máxima ao 80 % +seconds = s +minutes = m +hours = h +until-empty = ata baleirar +power-settings = Axustes de enexía e batería... +dgpu-running = A GPU dedicada está activa e pode reducir a duración da batería +dgpu-applications = Aplicacións que están a usar a GPU dedicada { $gpu_name } diff --git a/cosmic-applet-battery/i18n/it/cosmic_applet_battery.ftl b/cosmic-applet-battery/i18n/it/cosmic_applet_battery.ftl index 6f3bbd9c..375e29e0 100644 --- a/cosmic-applet-battery/i18n/it/cosmic_applet_battery.ftl +++ b/cosmic-applet-battery/i18n/it/cosmic_applet_battery.ftl @@ -1,14 +1,14 @@ -battery = Risparmio energetico -battery-desc = Consumi minimi, performance ridotta. -balanced = Bilanciato -balanced-desc = Consumi bilanciati, performance dinamica. -performance = Performance -performance-desc = Consumi alti, performance massima. -max-charge = Migliora la durata di vita della batteria caricandola fino all'80% +battery = Batteria +battery-desc = Prestazioni e consumo energetico ridotti. +balanced = Equilibrato +balanced-desc = Prestazioni e consumo energetico normali. +performance = Prestazioni elevate +performance-desc = Prestazioni elevate e consumo energetico. +max-charge = Aumenta la durata della batteria impostando un valore massimo di carica dell’80% seconds = s minutes = m hours = h -until-empty = fino alla scarica +until-empty = finché non è vuoto power-settings = Impostazioni energetiche... dgpu-running = La GPU discreta è attiva e può ridurre la durata della batteria dgpu-applications = Applicazioni che stanno usando la GPU discreta { $gpu_name } diff --git a/cosmic-applet-battery/i18n/pt-BR/cosmic_applet_battery.ftl b/cosmic-applet-battery/i18n/pt-BR/cosmic_applet_battery.ftl index e5a72d03..49565b54 100644 --- a/cosmic-applet-battery/i18n/pt-BR/cosmic_applet_battery.ftl +++ b/cosmic-applet-battery/i18n/pt-BR/cosmic_applet_battery.ftl @@ -1,14 +1,14 @@ -battery = Bateria +battery = Economia de energia battery-desc = Uso reduzido de energia e desempenho limitado. balanced = Balanceado balanced-desc = Desempenho padrão e uso de bateria moderado. -performance = Alto Desempenho +performance = Alto desempenho performance-desc = Máximo desempenho e alto uso de energia. max-charge = Aumente a vida útil da sua bateria definindo um valor máximo de carga de 80% seconds = s minutes = m hours = h -until-empty = até esvaziar +until-empty = até ficar descarregada power-settings = Configurações de energia e bateria... -dgpu-running = GPU discreta está ativa e pode reduzir a vida útil da bateria -dgpu-applications = Aplicativos usando GPU discreta { $gpu_name } +dgpu-running = A GPU dedicada está ativa e pode reduzir a vida útil da bateria +dgpu-applications = Aplicativos usando a GPU dedicada { $gpu_name } diff --git a/cosmic-applet-battery/i18n/zh-TW/cosmic_applet_battery.ftl b/cosmic-applet-battery/i18n/zh-TW/cosmic_applet_battery.ftl index f5378e27..13f245e7 100644 --- a/cosmic-applet-battery/i18n/zh-TW/cosmic_applet_battery.ftl +++ b/cosmic-applet-battery/i18n/zh-TW/cosmic_applet_battery.ftl @@ -6,9 +6,9 @@ performance = 高效能 performance-desc = 高效能與高耗電量。 max-charge = 將電池充電上限設定為 80%,以延長電池使用壽命 seconds = 秒 -minutes = 分 -hours = 時 +minutes = 分鍾 +hours = 小時 until-empty = 直到電量耗盡 power-settings = 電源與電池設定… dgpu-running = 獨立顯示卡已啟用,可能會縮短電池續航力 -dgpu-applications = 使用 { $gpu_name } 獨立顯示卡的應用程式 +dgpu-applications = 使用獨立顯示卡 { $gpu_name } 的應用程式 diff --git a/cosmic-applet-bluetooth/i18n/da/cosmic_applet_bluetooth.ftl b/cosmic-applet-bluetooth/i18n/da/cosmic_applet_bluetooth.ftl index e69de29b..f95158bb 100644 --- a/cosmic-applet-bluetooth/i18n/da/cosmic_applet_bluetooth.ftl +++ b/cosmic-applet-bluetooth/i18n/da/cosmic_applet_bluetooth.ftl @@ -0,0 +1,12 @@ +cancel = Annuller +confirm-pin = Bekræft venligst, at følgende pinkode matcher den, der vises på { $deviceName } +bluetooth = Bluetooth +unsuccessful = Parring Mislykkedes +pairable = Parbare +try-again = Prøv Igen +check-device = Sørg for, at { $deviceName } er slået til, inden for rækkevidde og klar til parring. +other-devices = Andre Bluetooth-enheder +connected = Forbundet +confirm = Bekræft +settings = Bluetooth-indstillinger... +discoverable = Synlig diff --git a/cosmic-applet-bluetooth/i18n/en-GB/cosmic_applet_bluetooth.ftl b/cosmic-applet-bluetooth/i18n/en-GB/cosmic_applet_bluetooth.ftl index 269cddff..9d6e5223 100644 --- a/cosmic-applet-bluetooth/i18n/en-GB/cosmic_applet_bluetooth.ftl +++ b/cosmic-applet-bluetooth/i18n/en-GB/cosmic_applet_bluetooth.ftl @@ -1 +1,12 @@ cancel = Cancel +confirm-pin = Please confirm that the following PIN matches the one displayed on { $deviceName } +bluetooth = Bluetooth +unsuccessful = Pairing Unsuccessful +pairable = Pairable +try-again = Try Again +check-device = Make sure { $deviceName } is turned on, in range, and is ready to pair. +other-devices = Other Bluetooth devices +connected = Connected +confirm = Confirm +settings = Bluetooth settings... +discoverable = Discoverable diff --git a/cosmic-applet-bluetooth/i18n/gl/cosmic_applet_bluetooth.ftl b/cosmic-applet-bluetooth/i18n/gl/cosmic_applet_bluetooth.ftl new file mode 100644 index 00000000..c2424610 --- /dev/null +++ b/cosmic-applet-bluetooth/i18n/gl/cosmic_applet_bluetooth.ftl @@ -0,0 +1,12 @@ +cancel = Cancelar +bluetooth = Bluetooth +other-devices = Outros dispositivos Bluetooth +settings = Axustes Bluetooth… +connected = Conectado +confirm-pin = Por favor, confirme que o seguinte PIN coincide co que se mostra en{ $deviceName } +confirm = Confirmar +unsuccessful = Enparellamento non exitoso +check-device = Asegurate de que { $deviceName } está acendido, dentro do alcance e listo para emparellar. +try-again = Reintentar +discoverable = Atopable +pairable = Emparellable diff --git a/cosmic-applet-input-sources/i18n/da/cosmic_applet_input_sources.ftl b/cosmic-applet-input-sources/i18n/da/cosmic_applet_input_sources.ftl index e69de29b..9759ea2a 100644 --- a/cosmic-applet-input-sources/i18n/da/cosmic_applet_input_sources.ftl +++ b/cosmic-applet-input-sources/i18n/da/cosmic_applet_input_sources.ftl @@ -0,0 +1,2 @@ +show-keyboard-layout = Vis Tastaturopsætning... +keyboard-settings = Tastaturindstillinger... diff --git a/cosmic-applet-input-sources/i18n/gl/cosmic_applet_input_sources.ftl b/cosmic-applet-input-sources/i18n/gl/cosmic_applet_input_sources.ftl new file mode 100644 index 00000000..85e8072c --- /dev/null +++ b/cosmic-applet-input-sources/i18n/gl/cosmic_applet_input_sources.ftl @@ -0,0 +1,2 @@ +show-keyboard-layout = Mostrar a disposición do teclado... +keyboard-settings = Axustes do teclado... diff --git a/cosmic-applet-network/i18n/da/cosmic_applet_network.ftl b/cosmic-applet-network/i18n/da/cosmic_applet_network.ftl index e69de29b..23aecd3d 100644 --- a/cosmic-applet-network/i18n/da/cosmic_applet_network.ftl +++ b/cosmic-applet-network/i18n/da/cosmic_applet_network.ftl @@ -0,0 +1,6 @@ +cancel = Annuller +connected = Forbundet +connect = Opret forbindelse +wifi = Wi-Fi +identity = Identitet +network = Netværk diff --git a/cosmic-applet-network/i18n/en-GB/cosmic_applet_network.ftl b/cosmic-applet-network/i18n/en-GB/cosmic_applet_network.ftl index 269cddff..72b1d8d4 100644 --- a/cosmic-applet-network/i18n/en-GB/cosmic_applet_network.ftl +++ b/cosmic-applet-network/i18n/en-GB/cosmic_applet_network.ftl @@ -1 +1,2 @@ cancel = Cancel +connected = Connected diff --git a/cosmic-applet-network/i18n/gl/cosmic_applet_network.ftl b/cosmic-applet-network/i18n/gl/cosmic_applet_network.ftl new file mode 100644 index 00000000..33d76626 --- /dev/null +++ b/cosmic-applet-network/i18n/gl/cosmic_applet_network.ftl @@ -0,0 +1,24 @@ +cancel = Cancelar +connected = Conectado +connect = Conectar +identity = Identidade +wifi = Wi-Fi +network = Rede +airplane-mode = Modo avión +airplane-mode-on = O modo avión está activo +turn-off-airplane-mode = Desactívao para activar a wifi, o Bluetooth e a banda larga móbil. +ipv4 = Dirección IPv4 +ipv6 = Dirección IPv6 +mac = MAC +megabits-per-second = Mbps +gigabits-per-second = Gbps +terabits-per-second = Tbps +connecting = Conectando +settings = Axustes da rede... +visible-wireless-networks = Redes sen fíos visibles +vpn-connections = Conexións VPN +enter-password = Introduce o contrasinal ou a chave de cifrado +router-wps-button = Tamén podes conectarte premendo o botón "WPS" do router +unable-to-connect = Non se puido conectar á rede +check-wifi-connection = Asegúrate de que a wifi está conectada a Internet e de que o contrasinal é correcto +reset = Restablecer diff --git a/cosmic-applet-notifications/i18n/gl/cosmic_applet_notifications.ftl b/cosmic-applet-notifications/i18n/gl/cosmic_applet_notifications.ftl new file mode 100644 index 00000000..411d92c1 --- /dev/null +++ b/cosmic-applet-notifications/i18n/gl/cosmic_applet_notifications.ftl @@ -0,0 +1,19 @@ +hours-ago = + { $duration -> + [0] Xusto agora + [one] Hai 1 hora + *[other] Hai { $duration } horas + } +minutes-ago = + { $duration -> + [0] Xusto agora + [one] Hai 1 minuto + *[other] Hai { $duration } minutos + } +show-less = Mostrar menos +show-more = Mostrar { $more } máis +clear-group = Limpar grupo +clear-all = Limpar todas as notificacións +do-not-disturb = Non Molestar +notification-settings = Configuración das notificacións... +no-notifications = Sen notificacións diff --git a/cosmic-applet-power/i18n/gl/cosmic_applet_power.ftl b/cosmic-applet-power/i18n/gl/cosmic_applet_power.ftl new file mode 100644 index 00000000..50aff75b --- /dev/null +++ b/cosmic-applet-power/i18n/gl/cosmic_applet_power.ftl @@ -0,0 +1,36 @@ +power = Enerxía +settings = Axustes... +lock-screen = Pantalla de Bloqueo +lock-screen-shortcut = Super + Esc +log-out = Pechar Sesión +log-out-shortcut = Super + Maiús + Esc +suspend = Suspender +restart = Reiniciar +shutdown = Apagar +confirm = Confirmar +cancel = Cancelar +confirm-button = + { $action -> + [restart] { restart } + [suspend] { suspend } + [shutdown] Apagar + [log-out] { log-out } + *[other] { confirm } + } +confirm-title = + { $action -> + [restart] { restart } agora? + [suspend] { suspend } agora? + [shutdown] { shutdown } agora? + [log-out] Pechar todas as aplicacións e pechar a sesión agora? + *[other] Aplicar a acción seleccionada agora + } +confirm-body = + O sistema { $action -> + [restart] reiniciarase + [suspend] suspenderase + [shutdown] apagarase + [lock-screen] bloqueará a pantalla + [log-out] pechará a sesión + *[other] aplicará a acción seleccionada + } automaticamente en { $countdown } segundos. diff --git a/cosmic-applet-tiling/i18n/gl/cosmic_applet_tiling.ftl b/cosmic-applet-tiling/i18n/gl/cosmic_applet_tiling.ftl new file mode 100644 index 00000000..1bd9f731 --- /dev/null +++ b/cosmic-applet-tiling/i18n/gl/cosmic_applet_tiling.ftl @@ -0,0 +1,20 @@ +tile-windows = Dispoñer as xanelas en mosaico automaticamente +tile-current = Dispoñer en mosaico o espazo de traballo actual +shortcuts = Atallos +navigate-windows = Navergar polas xanelas +move-window = Mover a xanela +toggle-floating-window = Alternar xanela flotante +view-all-shortcuts = Ver todos os atallos... +active-hint = Indicador de foco activo +gaps = Espazos +floating-window-exceptions = Excepcións de xanelas flotantes... +window-management-settings = Axustes da xestión de xanelas... +all-workspaces = Todos os espazos de traballo +per-workspace = Por espazo de traballo +super = Super +shift = Maiús +arrow-keys = frechas +tiled = En mosaico +floating = Flotante +autotile-behavior = Organizar as xanelas en mosaico nos espazos de traballo +new-workspace = Comportamento dos novos espazos de traballo diff --git a/cosmic-applet-tiling/i18n/nl/cosmic_applet_tiling.ftl b/cosmic-applet-tiling/i18n/nl/cosmic_applet_tiling.ftl index fcae7910..9b2c50bf 100644 --- a/cosmic-applet-tiling/i18n/nl/cosmic_applet_tiling.ftl +++ b/cosmic-applet-tiling/i18n/nl/cosmic_applet_tiling.ftl @@ -3,9 +3,9 @@ tile-current = Huidig werkblad tegelen shortcuts = Sneltoetsen navigate-windows = Tussen vensters schakelen move-window = Venster verplaatsen -toggle-floating-window = Zet zwevende vensters aan/uit +toggle-floating-window = Zweven aan- of uitzetten voor venster view-all-shortcuts = Alle sneltoetsen bekijken… -active-hint = Visuele hint actief venster +active-hint = Vensterfocus-aanduiding gaps = Ruimte rond getegelde vensters floating-window-exceptions = Uitzonderingen voor zwevende vensters… window-management-settings = Instellingen voor vensterbeheer… diff --git a/cosmic-applet-time/i18n/gl/cosmic_applet_time.ftl b/cosmic-applet-time/i18n/gl/cosmic_applet_time.ftl new file mode 100644 index 00000000..d00079ad --- /dev/null +++ b/cosmic-applet-time/i18n/gl/cosmic_applet_time.ftl @@ -0,0 +1 @@ +datetime-settings = Axustes de data, hora e calendario... diff --git a/cosmic-applet-workspaces/i18n/gl/cosmic_applet_workspaces.ftl b/cosmic-applet-workspaces/i18n/gl/cosmic_applet_workspaces.ftl new file mode 100644 index 00000000..a56114fd --- /dev/null +++ b/cosmic-applet-workspaces/i18n/gl/cosmic_applet_workspaces.ftl @@ -0,0 +1 @@ +cosmic-applet-workspaces = Espazos de traballo de COSMIC diff --git a/i18n/da/desktop_entries.ftl b/i18n/da/desktop_entries.ftl index e69de29b..6026b028 100644 --- a/i18n/da/desktop_entries.ftl +++ b/i18n/da/desktop_entries.ftl @@ -0,0 +1,51 @@ +cosmic-app-list = Programbakke +cosmic-app-list-comment = Start fastgjorte apps og håndter åbne vinduer +cosmic-app-list-keywords = COSMIC;Applet;App;Statusområde;Liste;Opgave;Bjælke; +cosmic-applet-a11y = Tilgængelighed +cosmic-applet-a11y-comment = Konfigurer tilgængelighedsindstillinger fra panelet +cosmic-applet-a11y-keywords = COSMIC;Applet;Tilgængelighed;A11y;Skærm;Skærmlæser;Forstørrelsesglas;Kontrast;Farve; +cosmic-applet-audio = Lyd +cosmic-applet-audio-comment = Valg af lydenhed, lydstyrkekontrol og MPRIS-mediekontrol +cosmic-applet-audio-keywords = COSMIC;Applet;Lyd;Lyd;MPRIS; +cosmic-applet-battery = Strøm og batteri +cosmic-applet-battery-comment = Strømtilstande og strømspareindstillinger +cosmic-applet-battery-keywords = COSMIC;Applet;Strøm;Batteri; +cosmic-applet-bluetooth = Bluetooth +cosmic-applet-bluetooth-comment = Administrer Bluetooth-enheder +cosmic-applet-bluetooth-keywords = COSMIC;Applet;Bluetooth; +cosmic-applet-input-sources = Inputkilder +cosmic-applet-input-sources-comment = Skift mellem inputkilder +cosmic-applet-input-sources-keywords = COSMIC;Applet;Input;Kilde; +cosmic-applet-minimize = Minimerede vinduer +cosmic-applet-minimize-comment = Administrer minimerede vinduer +cosmic-applet-minimize-keywords = COSMIC;Applet;Minimer; +cosmic-applet-network = Netværk +cosmic-applet-network-comment = Administrer netværksforbindelser +cosmic-applet-network-keywords = COSMIC;Applet;Netværk; +cosmic-applet-notifications = Notifikationscenter +cosmic-applet-notifications-comment = Administrer notifikationer og Forstyr ikke +cosmic-applet-notifications-keywords = COSMIC;Applet;Notifikation; +cosmic-applet-power = Brugersession +cosmic-applet-power-comment = Låseskærm, log ud, dvale, genstart og luk ned +cosmic-applet-power-keywords = COSMIC;Applet;Bruger;Session;Lås;Log;Genstart;Luk ned;Dvale; +cosmic-applet-status-area = Notifikationsområde +cosmic-applet-status-area-comment = Programindikatorer, som kan eksportere menuer til panelet +cosmic-applet-status-area-keywords = COSMIC;Applet;App;Indikator;Notifikation;Statusområde;Status; +cosmic-applet-tiling = Opdeling +cosmic-applet-tiling-comment = Administrer aktiv hint samt automatisk opdeling for aktuelt og pr. arbejdsområde +cosmic-applet-tiling-keywords = COSMIC;Applet;Opdeling;Hint;Arbejdsområde; +cosmic-applet-time = Dato, tid og kalender +cosmic-applet-time-comment = Vis den aktuelle tid i panelet med en kalenderpopup +cosmic-applet-time-keywords = COSMIC;Applet;Dato;Tid;Kalender; +cosmic-applet-workspaces = Nummererede arbejdsområder +cosmic-applet-workspaces-comment = Skift mellem nummererede arbejdsområder i panelet +cosmic-applet-workspaces-keywords = COSMIC;Applet;Arbejdsområde; +cosmic-panel-app-button = Appbibliotek-knap +cosmic-panel-app-button-comment = Åbn applikationsbiblioteket for at starte installerede programmer +cosmic-panel-app-button-keywords = COSMIC;Applet;App;Bibliotek;Statusområde; +cosmic-panel-launcher-button = Starterknap +cosmic-panel-launcher-button-keywords = COSMIC;Applet;Starter;Kører; +cosmic-panel-workspaces-button = Arbejdsområdeknap +cosmic-panel-workspaces-button-comment = Åbn oversigten over arbejdsområder for at administrere og skifte mellem arbejdsområder +cosmic-panel-workspaces-button-keywords = COSMIC;Applet;Arbejdsområde;Oversigt; +cosmic-panel-launcher-button-comment = Åbn starteren for at søge efter programmer og køre kommandoer diff --git a/i18n/de/desktop_entries.ftl b/i18n/de/desktop_entries.ftl index 6cb50a22..fd41e5be 100644 --- a/i18n/de/desktop_entries.ftl +++ b/i18n/de/desktop_entries.ftl @@ -37,7 +37,7 @@ cosmic-app-list-comment = Angeheftete Apps starten und geöffnete Fenster verwal cosmic-applet-a11y-comment = Einstellungen für Barrierefreiheit über das Panel konfigurieren cosmic-applet-power-comment = Bildschirm sperren, abmelden, anhalten, neu starten und herunterfahren cosmic-applet-status-area = Benachrichtigungsübersicht -cosmic-applet-time-comment = Aktuelle Uhrzeit im Fenster mit einem Kalender-Popup anzeigen +cosmic-applet-time-comment = Aktuelle Uhrzeit im Panel mit einem Kalender-Popup anzeigen cosmic-panel-app-button-comment = Öffne die Anwendungsbibliothek, um installierte Anwendungen zu starten cosmic-panel-launcher-button-comment = Öffne den Starter, um nach Anwendungen zu suchen und Befehle auszuführen cosmic-panel-workspaces-button-comment = Öffne die Arbeitsflächenübersicht, um Arbeitsflächen zu verwalten und zwischen ihnen zu wechseln diff --git a/i18n/gl/desktop_entries.ftl b/i18n/gl/desktop_entries.ftl new file mode 100644 index 00000000..01a642f4 --- /dev/null +++ b/i18n/gl/desktop_entries.ftl @@ -0,0 +1,51 @@ +cosmic-app-list = Bandexa de aplicacións +cosmic-app-list-comment = Inicia as aplicacións fixadas e xestiona as xanelas abertas +cosmic-app-list-keywords = COSMIC;Miniaplicación;Aplicación;Bandexa;Lista;Tarefa;Barra; +cosmic-applet-a11y = Accesibilidade +cosmic-applet-a11y-comment = Configurar os axustes de accesibilidade dende o panel +cosmic-applet-a11y-keywords = COSMIC;Miniaplicación;Accesibilidade;A11y;Pantalla;Lector;Lupa;Contraste;Cor; +cosmic-applet-audio = Son +cosmic-applet-audio-comment = Selección do dispositivo de son, control do volume e controis multimedia MPRIS +cosmic-applet-audio-keywords = COSMIC;Miniaplicación;Son;Audio;MPRIS; +cosmic-applet-battery = Enerxía e Batería +cosmic-applet-battery-comment = Modos de enerxía e opcións de aforro enerxético +cosmic-applet-battery-keywords = COSMIC;Miniaplicación;Enerxía;Batería; +cosmic-applet-bluetooth = Bluetooth +cosmic-applet-bluetooth-comment = Xestionar dispositivos Bluetooth +cosmic-applet-bluetooth-keywords = COSMIC;Miniaplicación;Bluetooth; +cosmic-applet-input-sources = Fontes de Entrada +cosmic-applet-input-sources-comment = Cambiar entre fontes de entrada +cosmic-applet-input-sources-keywords = COSMIC;Miniaplicación;Entrada;Fonte; +cosmic-applet-minimize = Xanelas minimizadas +cosmic-applet-minimize-comment = Xestionar xanelas minimizadas +cosmic-applet-minimize-keywords = COSMIC;Miniaplicación;Minimizar; +cosmic-applet-network = Rede +cosmic-applet-network-comment = Xestionar as conexións de rede +cosmic-applet-network-keywords = COSMIC;Miniaplicación;Rede; +cosmic-applet-notifications = Centro de notificacións +cosmic-applet-notifications-comment = Xestionar as notificacións e o modo Non molestar +cosmic-applet-notifications-keywords = COSMIC;Miniaplicación;Notificación; +cosmic-applet-power = Sesión de usuario +cosmic-applet-power-comment = Bloquear a pantalla, pechar a sesión, suspender, reiniciar e apagar +cosmic-applet-power-keywords = COSMIC;Miniaplicación;Usuario;Sesión;Bloquear;Pechar sesión;Reiniciar;Apagar;Suspender; +cosmic-applet-status-area = Bandexa de Notificacións +cosmic-applet-status-area-comment = Indicadores de aplicación que poden exportar menús ao panel +cosmic-applet-status-area-keywords = COSMIC;Miniaplicación;Aplicación;Indicador;Notificación;Bandexa;Estado; +cosmic-applet-tiling = Mosaico +cosmic-applet-tiling-comment = Xestiona a indicación activa e o mosaico automático actual e por espazo de traballo +cosmic-applet-tiling-keywords = COSMIC;Miniaplicación;Mosaico;Indicación;Espazo de traballo; +cosmic-applet-time = Data, hora e calendario +cosmic-applet-time-comment = Mostra a hora actual no panel cun calendario emerxente +cosmic-applet-time-keywords = COSMIC;Miniaplicación;Data;Hora;Calendario; +cosmic-applet-workspaces = Espazos de traballo numerados +cosmic-applet-workspaces-comment = Cambia entre os espazos de traballo numerados desde o panel +cosmic-applet-workspaces-keywords = COSMIC;Miniaplicación;Espazo de traballo; +cosmic-panel-app-button = Botón da biblioteca de aplicacións +cosmic-panel-app-button-comment = Abre a biblioteca de aplicacións para iniciar as aplicacións instaladas +cosmic-panel-app-button-keywords = COSMIC;Miniaplicación;Aplicación;Biblioteca;Bandexa; +cosmic-panel-launcher-button = Botón do lanzador +cosmic-panel-launcher-button-comment = Abre o lanzador para buscar aplicacións e executar ordes +cosmic-panel-launcher-button-keywords = COSMIC;Miniaplicación;Lanzador;Executor de ordes; +cosmic-panel-workspaces-button = Botón dos espazos de traballo +cosmic-panel-workspaces-button-comment = Abre a vista xeral dos espazos de traballo para xestionalos e cambiar entre eles +cosmic-panel-workspaces-button-keywords = COSMIC;Miniaplicación;Espazo de traballo;Vista xeral; diff --git a/i18n/it/desktop_entries.ftl b/i18n/it/desktop_entries.ftl index 083337f3..e15f8291 100644 --- a/i18n/it/desktop_entries.ftl +++ b/i18n/it/desktop_entries.ftl @@ -46,3 +46,5 @@ cosmic-applet-status-area-keywords = COSMIC;Applet;Applicazione;Indicatore;Notif cosmic-applet-tiling-keywords = COSMIC;Applet;Affiancamento;Suggerimento;Area di lavoro; cosmic-applet-time-keywords = COSMIC;Applet;Data;Ora;Calendario; cosmic-applet-workspaces-keywords = COSMIC;Applet;Area di lavoro; +cosmic-panel-app-button-keywords = COSMIC;Applet;App;Libreria;Tray; +cosmic-panel-launcher-button-keywords = COSMIC;Applet;Launcher;Runner; diff --git a/i18n/nl/desktop_entries.ftl b/i18n/nl/desktop_entries.ftl index 6a65d46b..aee16383 100644 --- a/i18n/nl/desktop_entries.ftl +++ b/i18n/nl/desktop_entries.ftl @@ -8,10 +8,44 @@ cosmic-applet-minimize = Geminimaliseerde vensters cosmic-applet-network = Netwerk cosmic-applet-notifications = Meldingscentrum cosmic-applet-power = Gebruikerssessie -cosmic-applet-status-area = Meldingsvlak +cosmic-applet-status-area = Statusvak cosmic-applet-tiling = Vensters tegelen -cosmic-applet-time = Datum, tijd en agenda +cosmic-applet-time = Datum, tijd, en agenda cosmic-applet-workspaces = Genummerde werkbladen -cosmic-panel-app-button = Knop appbibliotheek -cosmic-panel-launcher-button = Knop snelstarter -cosmic-panel-workspaces-button = Knop werkbladenoverzicht +cosmic-panel-app-button = Toepassingskiezersknop +cosmic-panel-launcher-button = Snelstarterknop +cosmic-panel-workspaces-button = Werkbladoverzichtsknop +cosmic-applet-battery-comment = Instellingen voor prestaties en energieverbruik +cosmic-applet-a11y-comment = Pas toegankelijkheidsinstellingen aan via het paneel +cosmic-applet-input-sources-comment = Schakel tussen invoerbronnen +cosmic-applet-workspaces-comment = Schakel tussen genummerde werkbladen via het paneel +cosmic-app-list-comment = Start vastgemaakte toepassingen en beheer openstaande vensters +cosmic-applet-audio-comment = Beheer audioapparaten, volume-instellingen, en mediaspelers +cosmic-applet-audio-keywords = COSMIC;Applet;Geluid;Audio;MPRIS; +cosmic-applet-battery-keywords = COSMIC;Applet;Energie;Verbruik;Energieverbruik;Batterij;Stroom; +cosmic-applet-bluetooth-comment = Beheer Bluetooth-apparaten +cosmic-applet-bluetooth-keywords = COSMIC;Applet;Bluetooth; +cosmic-applet-input-sources-keywords = COSMIC;Applet;Invoer;Bron;Methode;Invoerbron;Invoermethode; +cosmic-applet-minimize-comment = Beheer geminimaliseerde vensters +cosmic-applet-network-comment = Beheer netwerkverbindingen +cosmic-applet-network-keywords = COSMIC;Applet;Netwerk; +cosmic-applet-notifications-comment = Beheer meldingen en niet storen +cosmic-applet-notifications-keywords = COSMIC;Applet;Melding; +cosmic-applet-power-comment = Vergrendel scherm, afmelden, slaapstand, herstarten, en afsluiten +cosmic-app-list-keywords = COSMIC;Applet;Toepassing;Taakbalk;Lijst;Taken;Balk; +cosmic-applet-a11y-keywords = COSMIC;Applets;Toegankelijkheid;A11y;Schermlezer;Vergrootglas;Contrast;Kleur; +cosmic-applet-minimize-keywords = COSMIC;Applet;Minimaliseer;Geminimaliseerd; +cosmic-applet-power-keywords = COSMIC;Applet;Gebruiker;Sessie;Vergrendelen;Afmelden;Opnieuw;Opstarten;Herstarten;Afsluiten;Slaapstand; +cosmic-applet-status-area-comment = Statusindicators met contextmenu's van toepassingen +cosmic-applet-tiling-comment = Beheer de vensterfocus-aanduiding en tegelen voor huidige en nieuwe werkbladen +cosmic-applet-tiling-keywords = COSMIC;Applet;Tegelen;Venster;Focus;Aanduiding;Werkblad; +cosmic-applet-time-comment = Toon de huidige datum en tijd met een pop-upagenda in het paneel +cosmic-applet-time-keywords = COSMIC;Applet;Datum;Tijd;Agenda; +cosmic-applet-workspaces-keywords = COSMIC;Applet;Werkblad; +cosmic-panel-app-button-comment = Open de toepassingskiezer om geïnstalleerde toepassingen te starten +cosmic-panel-app-button-keywords = COSMIC;Applet;Toepassing;Kiezer;Toepassingskiezer; +cosmic-panel-launcher-button-comment = Open de snelstarter om toepassingen te zoeken en commando's uit te voeren +cosmic-panel-launcher-button-keywords = COSMIC;Applet;Snelstarter;Uitvoeren; +cosmic-panel-workspaces-button-comment = Open het werkbladoverzicht om tussen werkbladen te schakelen en ze te beheren +cosmic-panel-workspaces-button-keywords = COSMIC;Applet;Werkblad;Overzicht;Werkbladoverzicht; +cosmic-applet-status-area-keywords = COSMIC;Applet;Toepassing;Indicator;Status;Vak; diff --git a/i18n/oc/desktop_entries.ftl b/i18n/oc/desktop_entries.ftl index e69de29b..894d5e1d 100644 --- a/i18n/oc/desktop_entries.ftl +++ b/i18n/oc/desktop_entries.ftl @@ -0,0 +1,19 @@ +cosmic-app-list = Cinta d’aplicacions +cosmic-app-list-comment = Lançar d’aplicacions penjadas e gerir las fenèstras dobèrtas +cosmic-app-list-keywords = COSMIC;Applet;Ajuston;Microaplicacion;Miniaplicacion;App;Aplicacion;Cinta;Lista;Prètzfach;Prètzfait;Barra; +cosmic-applet-a11y = Accessibilitat +cosmic-applet-a11y-comment = Configurar los paramètres d’accessibilitat del panèl estant +cosmic-applet-audio = Son +cosmic-applet-battery = Energia e batariá +cosmic-applet-battery-comment = Mòdes d’energia e opcions d’estalvi d’energia +cosmic-applet-bluetooth = Bluetooth +cosmic-applet-bluetooth-comment = Gerir los aparelhs Bluetooth +cosmic-applet-input-sources = Fonts d’entrada +cosmic-applet-network = Ret +cosmic-applet-network-comment = Gerir las connexion ret +cosmic-applet-notifications = Centre de notificacions +cosmic-applet-notifications-comment = Gerir las notificacions e lo mòde Destorbar pas +cosmic-applet-power = Session utilizaire +cosmic-applet-status-area = Cinta de notificacions +cosmic-applet-time = Data, ora e calendièr +cosmic-applet-workspaces = Espacis de trabalha numerotats diff --git a/i18n/pt/desktop_entries.ftl b/i18n/pt/desktop_entries.ftl index 1fe912c3..68cc145a 100644 --- a/i18n/pt/desktop_entries.ftl +++ b/i18n/pt/desktop_entries.ftl @@ -21,7 +21,7 @@ cosmic-applet-workspaces-keywords = COSMIC;Miniaplicação;Applet;Área;Trabalho cosmic-panel-workspaces-button-comment = Abrir a visão geral das áreas de trabalho para gerir e alternar entre elas cosmic-panel-workspaces-button-keywords = COSMIC;Miniaplicação;Applet;Área;Trabalho;Visão;Geral; cosmic-applet-a11y-comment = Configurar definições de acessibilidade a partir do painel -cosmic-applet-battery = Energia e Bateria +cosmic-applet-battery = Energia e bateria cosmic-app-list-keywords = COSMIC;Miniaplicação;Applet;Aplicação;Bandeja;Lista;Tarefa;Barra; cosmic-applet-a11y-keywords = COSMIC;Miniaplicação;Applet;Acessibilidade;A11y;Ecrã;Leitor;Lupa;Ampliador;Contraste;Cor; cosmic-applet-audio-keywords = COSMIC;Miniaplicação;Applet;Som;Áudio;MPRIS; diff --git a/i18n/sat/desktop_entries.ftl b/i18n/sat/desktop_entries.ftl index e69de29b..3bef0114 100644 --- a/i18n/sat/desktop_entries.ftl +++ b/i18n/sat/desktop_entries.ftl @@ -0,0 +1,10 @@ +cosmic-applet-a11y-keywords = COSMIC; ᱮᱯᱞᱮᱴ; ᱮᱠᱥᱮᱥᱤᱵᱤᱞᱤᱴᱤ; A11y; ᱥᱠᱨᱤᱱ; ᱨᱤᱰᱟᱨ; ᱢᱮᱜᱽᱱᱤᱯᱷᱟᱭᱟᱨ; ᱠᱚᱱᱴᱨᱟᱥᱴ; ᱨᱚᱝ; +cosmic-applet-bluetooth-comment = ᱵᱞᱩᱴᱩᱛᱷ ᱥᱟᱫᱷᱚᱱ ᱠᱚ ᱥᱚᱢᱵᱷᱲᱟᱣ ᱢᱮ +cosmic-applet-input-sources-comment = ᱤᱱᱯᱩᱴ ᱥᱚᱨᱥ ᱠᱚ ᱛᱟᱞᱟ ᱨᱮ ᱵᱚᱫᱚᱞ ᱢᱮ +cosmic-applet-input-sources-keywords = ᱠᱚᱥᱢᱤᱠ; ᱮᱯᱞᱮᱴ; ᱤᱱᱯᱩᱴ; ᱥᱨᱚᱛ; +cosmic-applet-minimize = ᱦᱩᱰᱤᱧ ᱟᱠᱟᱱ ᱡᱟᱨᱞᱟ +cosmic-applet-status-area = ᱱᱚᱴᱤᱯᱷᱤᱠᱮᱥᱚᱱ ᱴᱨᱮ +cosmic-applet-status-area-comment = ᱮᱯᱞᱤᱠᱮᱥᱚᱱ ᱤᱱᱰᱤᱠᱮᱴᱚᱨ ᱚᱠᱟ ᱫᱚ ᱯᱮᱱᱮᱞ ᱨᱮ ᱢᱮᱱᱭᱩᱥ ᱮ ᱮᱠᱥᱯᱚᱨᱴ ᱫᱟᱲᱮᱭᱟᱜᱼᱟ +cosmic-applet-status-area-keywords = ᱠᱚᱥᱢᱤᱠ; ᱮᱯᱞᱮᱴ; ᱮᱯ; ᱤᱱᱰᱤᱠᱮᱴᱚᱨ; ᱱᱚᱴᱤᱯᱷᱤᱠᱮᱥᱚᱱ; ᱴᱨᱮ; ᱥᱴᱮᱴᱟᱥ; +cosmic-applet-time = ᱢᱟᱦᱟᱸ, ᱚᱠᱛᱚ ᱟᱨ ᱠᱮᱞᱮᱱᱰᱟᱨ +cosmic-panel-launcher-button = ᱞᱚᱱᱪᱟᱨ ᱵᱩᱛᱟᱢ From 73d727814c25864eb24c0b0f573c44ad5f1fc239 Mon Sep 17 00:00:00 2001 From: Michael Aaron Murphy Date: Thu, 16 Jul 2026 07:05:25 +0200 Subject: [PATCH 28/29] fix(audio): debounce volume updates by 128ms --- cosmic-applet-audio/src/lib.rs | 93 ++++++++++++++++++++++------------ 1 file changed, 62 insertions(+), 31 deletions(-) diff --git a/cosmic-applet-audio/src/lib.rs b/cosmic-applet-audio/src/lib.rs index 508bd6e8..515acb04 100644 --- a/cosmic-applet-audio/src/lib.rs +++ b/cosmic-applet-audio/src/lib.rs @@ -33,10 +33,15 @@ use cosmic::{ }; use cosmic_settings_audio_client::{self as audio_client, CosmicAudioProxy}; use futures::SinkExt; -use iced::platform_specific::shell::wayland::commands::popup::{destroy_popup, get_popup}; use mpris_subscription::{MprisRequest, MprisUpdate}; use mpris2_zbus::player::PlaybackStatus; -use std::{cell::RefCell, rc::Rc, sync::Arc}; +use std::{ + sync::{ + Arc, + atomic::{self, AtomicU32}, + }, + time::Duration, +}; mod config; mod mpris_subscription; @@ -58,11 +63,15 @@ pub struct Audio { /// Track the applet's popup window. popup: Option, /// Varlink connection to `com.system76.CosmicSettings.Audio`. - audio_client: Option>>, + audio_client: Option, /// Known audio device state model: model::Model, /// Whether to expand the revealer of a source or sink device. is_open: IsOpen, + /// Used to debounce sink volume updates. + applied_sink_volume: Arc, + /// Used to deboune source volume updates. + applied_source_volume: Arc, /// Max slider volume for the sink device, as determined by the amplification property. max_sink_volume: u32, /// Max slider volume for the source device, as determined by the amplification property. @@ -125,26 +134,27 @@ enum IsOpen { pub enum Message { /// Connection to `com.system76.CosmicSettings`. Client(Arc), - Ignore, - SetSinkVolume(u32), - SetSourceVolume(u32), - ToggleSinkMute, - ToggleSourceMute, - SetDefaultSink(usize), - SetDefaultSource(usize), - OutputToggle, - InputToggle, - TogglePopup, CloseRequested(window::Id), - ToggleMediaControlsInTopPanel(bool), ConfigChanged(AudioAppletConfig), + Ignore, + InputToggle, Mpris(mpris_subscription::MprisUpdate), MprisRequest(MprisRequest), - Token(TokenUpdate), OpenSettings, + OutputToggle, + ReattachClient(Arc), + Rectangle(RectangleUpdate), + SetDefaultSink(usize), + SetDefaultSource(usize), + SetSinkVolume(u32), + SetSourceVolume(u32), Subscription(audio_client::Event), Surface(surface::Action), - Rectangle(RectangleUpdate), + ToggleMediaControlsInTopPanel(bool), + TogglePopup, + ToggleSinkMute, + ToggleSourceMute, + Token(TokenUpdate), } // TODO @@ -287,6 +297,11 @@ impl cosmic::Application for Audio { self.rectangle_tracker.replace(tracker); } }, + Message::ReattachClient(client) => { + if let Some(client) = Arc::into_inner(client) { + self.audio_client = Some(client); + } + } Message::Ignore => {} Message::TogglePopup => { if let Some(p) = self.popup.take() { @@ -359,7 +374,7 @@ impl cosmic::Application for Audio { && let Some(client) = self.audio_client.as_mut() { futures::executor::block_on(async { - _ = client.borrow_mut().conn.set_default(node_id, true).await; + _ = client.conn.set_default(node_id, true).await; }); } } @@ -370,7 +385,7 @@ impl cosmic::Application for Audio { && let Some(client) = self.audio_client.as_mut() { futures::executor::block_on(async { - _ = client.borrow_mut().conn.set_default(node_id, true).await; + _ = client.conn.set_default(node_id, true).await; }); } } @@ -378,7 +393,7 @@ impl cosmic::Application for Audio { Message::ToggleSinkMute => { if let Some(ref mut client) = self.audio_client { futures::executor::block_on(async { - _ = client.borrow_mut().conn.sink_mute_toggle().await; + _ = client.conn.sink_mute_toggle().await; }); } } @@ -386,27 +401,43 @@ impl cosmic::Application for Audio { Message::ToggleSourceMute => { if let Some(ref mut client) = self.audio_client { futures::executor::block_on(async { - _ = client.borrow_mut().conn.source_mute_toggle().await; + _ = client.conn.source_mute_toggle().await; }); } } Message::SetSinkVolume(volume) => { - if let Some(ref mut client) = self.audio_client { - self.model.active_sink.volume = volume; - self.model.active_sink.volume_text = volume.to_string(); - futures::executor::block_on(async { - _ = client.borrow_mut().conn.set_sink_volume(volume).await; + self.applied_sink_volume + .store(volume, atomic::Ordering::Relaxed); + self.model.active_sink.volume = volume; + self.model.active_sink.volume_text = volume.to_string(); + if let Some(mut client) = self.audio_client.take() { + let volume = Arc::clone(&self.applied_sink_volume); + return cosmic::Task::future(async move { + tokio::time::sleep(Duration::from_millis(128)).await; + _ = client + .conn + .set_sink_volume(volume.load(atomic::Ordering::Relaxed)) + .await; + Message::ReattachClient(Arc::new(client)).into() }); } } Message::SetSourceVolume(volume) => { - if let Some(ref mut client) = self.audio_client { - self.model.active_source.volume = volume; - self.model.active_source.volume_text = volume.to_string(); - futures::executor::block_on(async { - _ = client.borrow_mut().conn.set_source_volume(volume).await; + self.applied_source_volume + .store(volume, atomic::Ordering::Relaxed); + self.model.active_source.volume = volume; + self.model.active_source.volume_text = volume.to_string(); + if let Some(mut client) = self.audio_client.take() { + let volume = Arc::clone(&self.applied_source_volume); + return cosmic::Task::future(async move { + tokio::time::sleep(Duration::from_millis(128)).await; + _ = client + .conn + .set_sink_volume(volume.load(atomic::Ordering::Relaxed)) + .await; + Message::ReattachClient(Arc::new(client)).into() }); } } @@ -517,7 +548,7 @@ impl cosmic::Application for Audio { } Message::Client(client) => { if let Some(client) = Arc::into_inner(client) { - self.audio_client = Some(Rc::new(RefCell::new(client))); + self.audio_client = Some(client); self.model = model::Model::default(); } } From b2126a9f2b4316d63ffcb66d2fcb4129b0ba303a Mon Sep 17 00:00:00 2001 From: Lionel DARNIS Date: Wed, 19 Aug 2026 22:18:37 +0200 Subject: [PATCH 29/29] fix: appeler refresh_volume_limits sur app, pas self Le patch yoda 5b838a67 est conserve (il initialise les plafonds sink ET source, contrairement au code inline amont) mais il est desormais dans une closure recevant `app: &mut Self` : l appel sur `self` ne compilait plus. Co-Authored-By: Claude Opus 5 (1M context) --- Cargo.lock | 536 +++++++++++---------------------- cosmic-applet-audio/src/lib.rs | 2 +- 2 files changed, 183 insertions(+), 355 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 356ec0c8..b0754023 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -223,12 +223,6 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" -[[package]] -name = "as-raw-xcb-connection" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" - [[package]] name = "ash" version = "0.38.0+1.3.281" @@ -380,7 +374,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -415,7 +409,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -480,7 +474,7 @@ dependencies = [ "derive_utils", "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -648,6 +642,13 @@ dependencies = [ "num-traits", ] +[[package]] +name = "build_helpers" +version = "0.14.0" +dependencies = [ + "cfg_aliases", +] + [[package]] name = "bumpalo" version = "3.20.3" @@ -677,7 +678,7 @@ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -775,7 +776,6 @@ dependencies = [ [[package]] name = "clipboard_macos" version = "0.1.0" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "objc", "objc-foundation", @@ -785,22 +785,12 @@ dependencies = [ [[package]] name = "clipboard_wayland" version = "0.2.2" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "dnd", "mime 0.1.0", "smithay-clipboard", ] -[[package]] -name = "clipboard_x11" -version = "0.4.2" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" -dependencies = [ - "thiserror 1.0.69", - "x11rb", -] - [[package]] name = "cocoa" version = "0.25.0" @@ -951,7 +941,7 @@ dependencies = [ [[package]] name = "cosmic-app-list" -version = "1.0.15" +version = "1.3.0" dependencies = [ "anyhow", "cosmic-app-list-config", @@ -962,7 +952,7 @@ dependencies = [ "i18n-embed", "i18n-embed-fl", "image", - "libcosmic", + "libcosmic-yoda", "memmap2 0.9.11", "rust-embed", "rustc-hash 2.1.3", @@ -978,15 +968,15 @@ dependencies = [ [[package]] name = "cosmic-app-list-config" -version = "1.0.15" +version = "1.3.0" dependencies = [ - "libcosmic", + "libcosmic-yoda", "serde", ] [[package]] name = "cosmic-applet-a11y" -version = "1.0.15" +version = "1.3.0" dependencies = [ "anyhow", "cosmic-client-toolkit", @@ -995,7 +985,7 @@ dependencies = [ "cosmic-settings-accessibility-subscription", "i18n-embed", "i18n-embed-fl", - "libcosmic", + "libcosmic-yoda", "rust-embed", "tokio", "tracing", @@ -1005,14 +995,14 @@ dependencies = [ [[package]] name = "cosmic-applet-audio" -version = "1.0.15" +version = "1.3.0" dependencies = [ "cosmic-settings-audio-client", "futures", "i18n-embed", "i18n-embed-fl", "intmap", - "libcosmic", + "libcosmic-yoda", "mpris2-zbus", "rust-embed", "serde", @@ -1028,18 +1018,18 @@ dependencies = [ [[package]] name = "cosmic-applet-battery" -version = "1.0.15" +version = "1.3.0" dependencies = [ "anyhow", "cosmic-applets-config", "cosmic-config", "cosmic-settings-daemon-subscription", "cosmic-settings-upower-subscription", - "drm 0.14.1", + "drm", "futures", "i18n-embed", "i18n-embed-fl", - "libcosmic", + "libcosmic-yoda", "rust-embed", "rustc-hash 2.1.3", "serde", @@ -1053,7 +1043,7 @@ dependencies = [ [[package]] name = "cosmic-applet-bluetooth" -version = "1.0.15" +version = "1.3.0" dependencies = [ "anyhow", "bluer", @@ -1061,7 +1051,7 @@ dependencies = [ "futures", "i18n-embed", "i18n-embed-fl", - "libcosmic", + "libcosmic-yoda", "rust-embed", "rustc-hash 2.1.3", "tokio", @@ -1072,14 +1062,14 @@ dependencies = [ [[package]] name = "cosmic-applet-input-sources" -version = "1.0.15" +version = "1.3.0" dependencies = [ "cosmic-client-toolkit", "cosmic-comp-config", "futures", "i18n-embed", "i18n-embed-fl", - "libcosmic", + "libcosmic-yoda", "rust-embed", "tokio", "tracing", @@ -1090,13 +1080,13 @@ dependencies = [ [[package]] name = "cosmic-applet-minimize" -version = "1.0.15" +version = "1.3.0" dependencies = [ "anyhow", "i18n-embed", "i18n-embed-fl", "image", - "libcosmic", + "libcosmic-yoda", "memmap2 0.9.11", "rust-embed", "rustix 1.1.4", @@ -1108,7 +1098,7 @@ dependencies = [ [[package]] name = "cosmic-applet-network" -version = "1.0.15" +version = "1.3.0" dependencies = [ "async-fn-stream", "futures", @@ -1116,7 +1106,7 @@ dependencies = [ "i18n-embed", "i18n-embed-fl", "indexmap 2.14.0", - "libcosmic", + "libcosmic-yoda", "nmrs", "rust-embed", "rustc-hash 2.1.3", @@ -1130,7 +1120,7 @@ dependencies = [ [[package]] name = "cosmic-applet-notifications" -version = "1.0.15" +version = "1.3.0" dependencies = [ "anyhow", "cosmic-notifications-config", @@ -1138,7 +1128,7 @@ dependencies = [ "futures-util", "i18n-embed", "i18n-embed-fl", - "libcosmic", + "libcosmic-yoda", "rust-embed", "tokio", "tracing", @@ -1150,11 +1140,11 @@ dependencies = [ [[package]] name = "cosmic-applet-power" -version = "1.0.15" +version = "1.3.0" dependencies = [ "i18n-embed", "i18n-embed-fl", - "libcosmic", + "libcosmic-yoda", "logind-zbus", "rust-embed", "rustix 1.1.4", @@ -1167,10 +1157,10 @@ dependencies = [ [[package]] name = "cosmic-applet-status-area" -version = "1.0.15" +version = "1.3.0" dependencies = [ "futures", - "libcosmic", + "libcosmic-yoda", "rustc-hash 2.1.3", "serde", "tokio", @@ -1182,7 +1172,7 @@ dependencies = [ [[package]] name = "cosmic-applet-tiling" -version = "1.0.15" +version = "1.3.0" dependencies = [ "anyhow", "cosmic-client-toolkit", @@ -1190,7 +1180,7 @@ dependencies = [ "cosmic-protocols", "i18n-embed", "i18n-embed-fl", - "libcosmic", + "libcosmic-yoda", "rust-embed", "rustc-hash 2.1.3", "tokio", @@ -1201,14 +1191,14 @@ dependencies = [ [[package]] name = "cosmic-applet-time" -version = "1.0.15" +version = "1.3.0" dependencies = [ "cosmic-applets-config", "i18n-embed", "i18n-embed-fl", "icu", "jiff", - "libcosmic", + "libcosmic-yoda", "logind-zbus", "rust-embed", "timedate-zbus", @@ -1221,14 +1211,14 @@ dependencies = [ [[package]] name = "cosmic-applet-workspaces" -version = "1.0.15" +version = "1.3.0" dependencies = [ "anyhow", "cosmic-client-toolkit", "futures", "i18n-embed", "i18n-embed-fl", - "libcosmic", + "libcosmic-yoda", "rust-embed", "tokio", "tracing", @@ -1238,7 +1228,7 @@ dependencies = [ [[package]] name = "cosmic-applets" -version = "1.0.15" +version = "1.3.0" dependencies = [ "cosmic-app-list", "cosmic-applet-a11y", @@ -1255,7 +1245,7 @@ dependencies = [ "cosmic-applet-time", "cosmic-applet-workspaces", "cosmic-panel-button", - "libcosmic", + "libcosmic-yoda", "tracing", "tracing-log", "tracing-subscriber", @@ -1264,7 +1254,7 @@ dependencies = [ [[package]] name = "cosmic-applets-config" -version = "1.0.15" +version = "1.3.0" dependencies = [ "cosmic-config", "serde", @@ -1273,7 +1263,6 @@ dependencies = [ [[package]] name = "cosmic-client-toolkit" version = "0.2.0" -source = "git+https://github.com/pop-os/cosmic-protocols//?rev=32283d7#32283d76a8d0342da74c4cc022a533c52dcf378f" dependencies = [ "bitflags 2.13.0", "cosmic-protocols", @@ -1285,8 +1274,7 @@ dependencies = [ [[package]] name = "cosmic-comp-config" -version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-comp.git?rev=5eb5af4#5eb5af46756f2f2bc5e812cf68fe4c4b79efd924" +version = "1.0.0" dependencies = [ "cosmic-config", "input", @@ -1296,7 +1284,6 @@ dependencies = [ [[package]] name = "cosmic-config" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "atomicwrites", "cosmic-config-derive", @@ -1317,10 +1304,9 @@ dependencies = [ [[package]] name = "cosmic-config-derive" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -1334,7 +1320,6 @@ dependencies = [ [[package]] name = "cosmic-freedesktop-icons" version = "0.4.0" -source = "git+https://github.com/pop-os/freedesktop-icons#ab4c57b8e416c6af9297cb04d101889896fd9a92" dependencies = [ "bstr", "btoi", @@ -1348,7 +1333,6 @@ dependencies = [ [[package]] name = "cosmic-notifications-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-notifications#7c723b7705ec77b1ad5396a1baa9ae1c0cb5a0da" dependencies = [ "cosmic-config", "serde", @@ -1357,10 +1341,9 @@ dependencies = [ [[package]] name = "cosmic-notifications-util" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-notifications#7c723b7705ec77b1ad5396a1baa9ae1c0cb5a0da" dependencies = [ "fast_image_resize", - "libcosmic", + "libcosmic-yoda", "serde", "tl", "tracing", @@ -1370,10 +1353,10 @@ dependencies = [ [[package]] name = "cosmic-panel-button" -version = "1.0.15" +version = "1.3.0" dependencies = [ "cosmic-config", - "libcosmic", + "libcosmic-yoda", "rustc-hash 2.1.3", "serde", "tracing", @@ -1383,8 +1366,7 @@ dependencies = [ [[package]] name = "cosmic-panel-config" -version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-panel#d520b1e9ef2c990cbb57a8c5838ce94b7d75530a" +version = "1.3.0" dependencies = [ "anyhow", "cosmic-config", @@ -1398,7 +1380,6 @@ dependencies = [ [[package]] name = "cosmic-protocols" version = "0.2.0" -source = "git+https://github.com/pop-os/cosmic-protocols//?rev=32283d7#32283d76a8d0342da74c4cc022a533c52dcf378f" dependencies = [ "bitflags 2.13.0", "wayland-backend", @@ -1412,7 +1393,6 @@ dependencies = [ [[package]] name = "cosmic-settings-a11y-manager-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#ae5c7506627373f62e78372ce9e932fb591de35b" dependencies = [ "cosmic-protocols", "iced_futures", @@ -1426,7 +1406,6 @@ dependencies = [ [[package]] name = "cosmic-settings-accessibility-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#ae5c7506627373f62e78372ce9e932fb591de35b" dependencies = [ "cosmic-dbus-a11y", "futures", @@ -1439,7 +1418,6 @@ dependencies = [ [[package]] name = "cosmic-settings-audio-client" version = "1.0.0" -source = "git+https://github.com/pop-os/cosmic-settings-daemon#8c54bbbc10485c31e8717c21e119e19b87eeb3ea" dependencies = [ "cosmic-settings-audio-core", "dirs", @@ -1455,7 +1433,6 @@ dependencies = [ [[package]] name = "cosmic-settings-audio-core" version = "1.0.0" -source = "git+https://github.com/pop-os/cosmic-settings-daemon#8c54bbbc10485c31e8717c21e119e19b87eeb3ea" dependencies = [ "dirs", "ron 0.12.2", @@ -1466,7 +1443,6 @@ dependencies = [ [[package]] name = "cosmic-settings-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-settings-daemon#1af414fc6cb9080349847382a66db9fd69dbe964" dependencies = [ "cosmic-config", "ron 0.11.0", @@ -1478,8 +1454,7 @@ dependencies = [ [[package]] name = "cosmic-settings-daemon" -version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#eed01dd3609e90e3c8cd043656734c500956c793" +version = "0.1.1-yoda.1" dependencies = [ "zbus", ] @@ -1487,7 +1462,6 @@ dependencies = [ [[package]] name = "cosmic-settings-daemon-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#ae5c7506627373f62e78372ce9e932fb591de35b" dependencies = [ "futures", "iced_futures", @@ -1500,7 +1474,6 @@ dependencies = [ [[package]] name = "cosmic-settings-upower-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#ae5c7506627373f62e78372ce9e932fb591de35b" dependencies = [ "futures", "iced_futures", @@ -1514,8 +1487,6 @@ dependencies = [ [[package]] name = "cosmic-text" version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be17b688510d934ce13f48a2beba700e11583e281e0fda99c22bb256a14eda73" dependencies = [ "bitflags 2.13.0", "fontdb", @@ -1533,12 +1504,12 @@ dependencies = [ "unicode-linebreak", "unicode-script", "unicode-segmentation", + "unicode-width", ] [[package]] name = "cosmic-theme" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "almost", "configparser", @@ -1586,7 +1557,6 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "cryoglyph" version = "0.1.0" -source = "git+https://github.com/iced-rs/cryoglyph.git?rev=e429a025df36ab8145708acb309080ae3deec17a#e429a025df36ab8145708acb309080ae3deec17a" dependencies = [ "cosmic-text", "etagere", @@ -1622,15 +1592,6 @@ dependencies = [ "uncased", ] -[[package]] -name = "ctor" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83cf0d42651b16c6dfe68685716d18480d18a9c39c62d76e8cf3eb6ed5d8bcbf" -dependencies = [ - "dtor", -] - [[package]] name = "cursor-icon" version = "1.2.0" @@ -1655,7 +1616,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn", + "syn 2.0.118", "synstructure", ] @@ -1700,7 +1661,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn", + "syn 2.0.118", ] [[package]] @@ -1714,7 +1675,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn", + "syn 2.0.118", ] [[package]] @@ -1727,7 +1688,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn", + "syn 2.0.118", ] [[package]] @@ -1738,7 +1699,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -1749,7 +1710,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -1760,7 +1721,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -1821,7 +1782,7 @@ dependencies = [ "defmt-parser", "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -1851,7 +1812,7 @@ dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -1862,7 +1823,7 @@ checksum = "362f47930db19fe7735f527e6595e4900316b893ebf6d48ad3d31be928d57dd6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -1917,7 +1878,7 @@ checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -1932,7 +1893,6 @@ dependencies = [ [[package]] name = "dnd" version = "0.1.0" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "bitflags 2.13.0", "mime 0.1.0", @@ -1959,20 +1919,6 @@ checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "dpi" version = "0.1.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" - -[[package]] -name = "drm" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0f8a69e60d75ae7dab4ef26a59ca99f2a89d4c142089b537775ae0c198bdcde" -dependencies = [ - "bitflags 2.13.0", - "bytemuck", - "drm-ffi 0.7.1", - "drm-fourcc", - "rustix 0.38.44", -] [[package]] name = "drm" @@ -1982,29 +1928,19 @@ checksum = "80bc8c5c6c2941f70a55c15f8d9f00f9710ebda3ffda98075f996a0e6c92756f" dependencies = [ "bitflags 2.13.0", "bytemuck", - "drm-ffi 0.9.1", + "drm-ffi", "drm-fourcc", "libc", "rustix 0.38.44", ] -[[package]] -name = "drm-ffi" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41334f8405792483e32ad05fbb9c5680ff4e84491883d2947a4757dc54cb2ac6" -dependencies = [ - "drm-sys 0.6.1", - "rustix 0.38.44", -] - [[package]] name = "drm-ffi" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51a91c9b32ac4e8105dec255e849e0d66e27d7c34d184364fb93e469db08f690" dependencies = [ - "drm-sys 0.8.1", + "drm-sys", "rustix 1.1.4", ] @@ -2014,16 +1950,6 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4" -[[package]] -name = "drm-sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d09ff881f92f118b11105ba5e34ff8f4adf27b30dae8f12e28c193af1c83176" -dependencies = [ - "libc", - "linux-raw-sys 0.6.5", -] - [[package]] name = "drm-sys" version = "0.8.1" @@ -2034,12 +1960,6 @@ dependencies = [ "linux-raw-sys 0.9.4", ] -[[package]] -name = "dtor" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edf234dd1594d6dd434a8fb8cada51ddbbc593e40e4a01556a0b31c62da2775b" - [[package]] name = "dyn-clone" version = "1.0.20" @@ -2076,7 +1996,7 @@ checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -2344,7 +2264,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -2398,9 +2318,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" +checksum = "9a31d2a3fbaaeb2af2368bbdd904aa8e812d3c04a1ee10d3171f52d556e5d0a3" dependencies = [ "futures-channel", "futures-core", @@ -2413,9 +2333,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4" dependencies = [ "futures-core", "futures-sink", @@ -2423,15 +2343,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" [[package]] name = "futures-executor" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +checksum = "031b47cf1a3c6cc8bc2fc76cd437f521619387907d469316e7c0bc278f1f5432" dependencies = [ "futures-core", "futures-task", @@ -2440,9 +2360,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" +checksum = "53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed" [[package]] name = "futures-lite" @@ -2459,26 +2379,26 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] name = "futures-sink" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" +checksum = "1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d" [[package]] name = "futures-task" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" [[package]] name = "futures-timer" @@ -2488,9 +2408,9 @@ checksum = "af43fadb8a98512d547e37b4e92e0ced13e205c061b87b4623eff01d918d6968" [[package]] name = "futures-util" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" dependencies = [ "futures-channel", "futures-core", @@ -2503,16 +2423,6 @@ dependencies = [ "slab", ] -[[package]] -name = "gethostname" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" -dependencies = [ - "rustix 1.1.4", - "windows-link 0.2.1", -] - [[package]] name = "getrandom" version = "0.2.17" @@ -2828,7 +2738,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn", + "syn 2.0.118", "unic-langid", ] @@ -2842,7 +2752,7 @@ dependencies = [ "i18n-config", "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -2872,8 +2782,8 @@ dependencies = [ [[package]] name = "iced" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ + "build_helpers", "dnd", "iced_accessibility", "iced_core", @@ -2893,7 +2803,6 @@ dependencies = [ [[package]] name = "iced_accessibility" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "accesskit", "accesskit_winit", @@ -2902,9 +2811,9 @@ dependencies = [ [[package]] name = "iced_core" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "bitflags 2.13.0", + "build_helpers", "bytes", "cosmic-client-toolkit", "dnd", @@ -2927,7 +2836,6 @@ dependencies = [ [[package]] name = "iced_debug" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "iced_core", "iced_futures", @@ -2937,7 +2845,6 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "futures", "iced_core", @@ -2951,7 +2858,6 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "bitflags 2.13.0", "bytemuck", @@ -2972,7 +2878,6 @@ dependencies = [ [[package]] name = "iced_program" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "iced_graphics", "iced_runtime", @@ -2981,7 +2886,6 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "iced_graphics", "iced_tiny_skia", @@ -2993,8 +2897,8 @@ dependencies = [ [[package]] name = "iced_runtime" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ + "build_helpers", "bytes", "cosmic-client-toolkit", "dnd", @@ -3008,7 +2912,6 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ "bytemuck", "cosmic-text", @@ -3025,10 +2928,9 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ - "as-raw-xcb-connection", "bitflags 2.13.0", + "build_helpers", "bytemuck", "cosmic-client-toolkit", "cryoglyph", @@ -3043,22 +2945,19 @@ dependencies = [ "resvg", "rustc-hash 2.1.3", "rustix 0.38.44", - "smithay-client-toolkit", "thiserror 2.0.18", - "tiny-xlib", "wayland-backend", "wayland-client", "wayland-protocols", "wayland-sys", "wgpu", - "x11rb", ] [[package]] name = "iced_widget" version = "0.14.2" -source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ + "build_helpers", "cosmic-client-toolkit", "dnd", "iced_renderer", @@ -3075,8 +2974,8 @@ dependencies = [ [[package]] name = "iced_winit" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" dependencies = [ + "build_helpers", "cosmic-client-toolkit", "cursor-icon", "dnd", @@ -3615,9 +3514,9 @@ dependencies = [ [[package]] name = "input" -version = "0.9.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbdc09524a91f9cacd26f16734ff63d7dc650daffadd2b6f84d17a285bd875a9" +checksum = "f9793345a65d71317763a33066b5d8351f8760dde8d4930fe9e39b5f14a7959d" dependencies = [ "bitflags 2.13.0", "input-sys", @@ -3704,7 +3603,7 @@ checksum = "d0879bd39df99c4c5e2c6615ccc026391a423dde10532c573e6086eb94a802cc" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -3749,7 +3648,7 @@ dependencies = [ "quote", "rustc_version", "simd_cesu8", - "syn", + "syn 2.0.118", ] [[package]] @@ -3777,7 +3676,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" dependencies = [ "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -3900,13 +3799,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] -name = "libcosmic" -version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#511384f6206527cf87369da67a9164831afbabef" +name = "libcosmic-yoda" +version = "0.1.0-yoda.2" dependencies = [ "apply", "ashpd 0.12.3", "auto_enums", + "build_helpers", "cosmic-client-toolkit", "cosmic-config", "cosmic-freedesktop-icons", @@ -4023,12 +3922,6 @@ version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" -[[package]] -name = "linux-raw-sys" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a385b1be4e5c3e362ad2ffa73c392e53f031eaa5b7d648e64cd87f27f6063d7" - [[package]] name = "linux-raw-sys" version = "0.9.4" @@ -4224,7 +4117,6 @@ dependencies = [ [[package]] name = "mime" version = "0.1.0" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "smithay-clipboard", ] @@ -4280,7 +4172,6 @@ dependencies = [ [[package]] name = "mpris2-zbus" version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#eed01dd3609e90e3c8cd043656734c500956c793" dependencies = [ "futures-util", "jiff", @@ -4453,7 +4344,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -4505,7 +4396,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -4778,7 +4669,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -4812,7 +4703,7 @@ dependencies = [ "by_address", "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -4907,7 +4798,7 @@ dependencies = [ "phf_shared 0.11.3", "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -4920,7 +4811,7 @@ dependencies = [ "phf_shared 0.13.1", "proc-macro2", "quote", - "syn", + "syn 2.0.118", "uncased", ] @@ -4966,7 +4857,7 @@ checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -5125,7 +5016,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -5145,7 +5036,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", "version_check", "yansi", ] @@ -5352,7 +5243,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -5494,7 +5385,7 @@ dependencies = [ "proc-macro2", "quote", "rust-embed-utils", - "syn", + "syn 2.0.118", "walkdir", ] @@ -5704,7 +5595,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -5729,7 +5620,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -5761,7 +5652,7 @@ dependencies = [ "darling 0.23.0", "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -5923,7 +5814,6 @@ dependencies = [ [[package]] name = "smithay-clipboard" version = "0.8.0" -source = "git+https://github.com/pop-os/smithay-clipboard?tag=sctk-0.20#859b02c88f45c554049a67c6ddeec1692ce0e20b" dependencies = [ "libc", "raw-window-handle", @@ -5954,31 +5844,26 @@ dependencies = [ [[package]] name = "softbuffer" version = "0.4.1" -source = "git+https://github.com/pop-os/softbuffer?tag=cosmic-4.0#c2b2c19ddb38ff17495643699f97cb1f2064a1be" dependencies = [ - "as-raw-xcb-connection", "bytemuck", "cfg_aliases", "cocoa", "core-graphics", - "drm 0.11.1", "fastrand", "foreign-types", "js-sys", + "libredox", "log", "memmap2 0.9.11", "objc", "raw-window-handle", - "redox_syscall 0.5.18", "rustix 0.38.44", - "tiny-xlib", "wasm-bindgen", "wayland-backend", "wayland-client", "wayland-sys", "web-sys", "windows-sys 0.52.0", - "x11rb", ] [[package]] @@ -6036,7 +5921,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn", + "syn 2.0.118", ] [[package]] @@ -6069,7 +5954,6 @@ dependencies = [ [[package]] name = "switcheroo-control" version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#eed01dd3609e90e3c8cd043656734c500956c793" dependencies = [ "zbus", ] @@ -6085,6 +5969,17 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "synstructure" version = "0.13.2" @@ -6093,7 +5988,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -6171,7 +6066,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -6182,7 +6077,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -6227,7 +6122,6 @@ dependencies = [ [[package]] name = "timedate-zbus" version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#eed01dd3609e90e3c8cd043656734c500956c793" dependencies = [ "zbus", ] @@ -6258,19 +6152,6 @@ dependencies = [ "strict-num", ] -[[package]] -name = "tiny-xlib" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a90a0ca3ee6a69f2ad28fd11621a4c3f03b371f366be500b64df260c4ffbafb4" -dependencies = [ - "as-raw-xcb-connection", - "ctor", - "libloading", - "pkg-config", - "tracing", -] - [[package]] name = "tinystr" version = "0.8.3" @@ -6305,9 +6186,9 @@ checksum = "b130bd8a58c163224b44e217b4239ca7b927d82bf6cc2fea1fc561d15056e3f7" [[package]] name = "tokio" -version = "1.52.3" +version = "1.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" +checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" dependencies = [ "bytes", "libc", @@ -6329,14 +6210,14 @@ checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] name = "tokio-stream" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" +checksum = "a3d06f0b082ba57c26b79407372e57cf2a1e28124f78e9479fe80322cf53420b" dependencies = [ "futures-core", "pin-project-lite", @@ -6416,7 +6297,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -6765,7 +6646,7 @@ dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn", + "syn 2.0.118", "wasm-bindgen-shared", ] @@ -7152,12 +7033,10 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "window_clipboard" version = "0.4.1" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "clipboard-win", "clipboard_macos", "clipboard_wayland", - "clipboard_x11", "dnd", "mime 0.1.0", "raw-window-handle", @@ -7263,7 +7142,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -7274,7 +7153,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -7597,7 +7476,6 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winit" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" dependencies = [ "bitflags 2.13.0", "cfg_aliases", @@ -7617,13 +7495,11 @@ dependencies = [ "winit-wayland", "winit-web", "winit-win32", - "winit-x11", ] [[package]] name = "winit-android" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" dependencies = [ "android-activity", "bitflags 2.13.0", @@ -7638,7 +7514,6 @@ dependencies = [ [[package]] name = "winit-appkit" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" dependencies = [ "bitflags 2.13.0", "block2 0.6.2", @@ -7660,7 +7535,6 @@ dependencies = [ [[package]] name = "winit-common" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" dependencies = [ "memmap2 0.9.11", "objc2 0.6.4", @@ -7668,14 +7542,12 @@ dependencies = [ "smol_str", "tracing", "winit-core", - "x11-dl", "xkbcommon-dl", ] [[package]] name = "winit-core" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" dependencies = [ "bitflags 2.13.0", "cursor-icon", @@ -7689,7 +7561,6 @@ dependencies = [ [[package]] name = "winit-orbital" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" dependencies = [ "bitflags 2.13.0", "dpi", @@ -7705,7 +7576,6 @@ dependencies = [ [[package]] name = "winit-uikit" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" dependencies = [ "bitflags 2.13.0", "block2 0.6.2", @@ -7725,7 +7595,6 @@ dependencies = [ [[package]] name = "winit-wayland" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" dependencies = [ "ahash", "bitflags 2.13.0", @@ -7751,7 +7620,6 @@ dependencies = [ [[package]] name = "winit-web" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" dependencies = [ "atomic-waker", "bitflags 2.13.0", @@ -7773,7 +7641,6 @@ dependencies = [ [[package]] name = "winit-win32" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" dependencies = [ "bitflags 2.13.0", "cursor-icon", @@ -7786,29 +7653,6 @@ dependencies = [ "winit-core", ] -[[package]] -name = "winit-x11" -version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" -dependencies = [ - "bitflags 2.13.0", - "bytemuck", - "calloop", - "cursor-icon", - "dpi", - "libc", - "percent-encoding", - "raw-window-handle", - "rustix 1.1.4", - "smol_str", - "tracing", - "winit-common", - "winit-core", - "x11-dl", - "x11rb", - "xkbcommon-dl", -] - [[package]] name = "winnow" version = "1.0.3" @@ -7839,39 +7683,6 @@ dependencies = [ "either", ] -[[package]] -name = "x11-dl" -version = "2.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" -dependencies = [ - "libc", - "once_cell", - "pkg-config", -] - -[[package]] -name = "x11rb" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" -dependencies = [ - "as-raw-xcb-connection", - "gethostname", - "libc", - "libloading", - "once_cell", - "rustix 1.1.4", - "x11rb-protocol", - "xcursor", -] - -[[package]] -name = "x11rb-protocol" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" - [[package]] name = "xcursor" version = "0.3.10" @@ -7886,8 +7697,7 @@ checksum = "2fb433233f2df9344722454bc7e96465c9d03bff9d77c248f9e7523fe79585b5" [[package]] name = "xdg-shell-wrapper-config" -version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-panel#d520b1e9ef2c990cbb57a8c5838ce94b7d75530a" +version = "1.3.0" dependencies = [ "serde", "wayland-protocols-wlr", @@ -8028,15 +7838,15 @@ checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", "synstructure", ] [[package]] name = "zbus" -version = "5.17.0" +version = "5.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28b97f866896a4be7aefd2b5a8e01bb6773d19a775d54ab28b4d094b9a4480e" +checksum = "5db4be7c075cb421e4b7ee645541604239bd243ba7c357511f4ff3a74b555907" dependencies = [ "async-broadcast", "async-executor", @@ -8086,7 +7896,7 @@ checksum = "10da05367f3a7b7553c8cdf8fa91aee6b64afebe32b51c95177957efc47ca3a0" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", "zbus-lockstep", "zbus_xml", "zvariant", @@ -8094,14 +7904,14 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "5.17.0" +version = "5.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e05ad887425eecf5e8384dc2406a4a9313eb73468712fc1cdea362eb4fe0469" +checksum = "2990635d09ade6df1868f72f8cac69a876a90981e8bd3c40b1be413f8dc88f40" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 3.0.3", "zbus_names", "zvariant", "zvariant_utils", @@ -8109,9 +7919,9 @@ dependencies = [ [[package]] name = "zbus_names" -version = "4.3.3" +version = "4.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1039ca249fee9559680f3a9f05b55e0761fee51af4f6c1e7d8c1f31e549721d2" +checksum = "d8bf88b4a3ff53e883001e0e0115b297a9d53c31b9c1edd2bfdd853e3428624e" dependencies = [ "serde", "winnow", @@ -8130,6 +7940,15 @@ dependencies = [ "zvariant", ] +[[package]] +name = "zcheapstr" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1afec51604565183aeb5c54c20aeab286120d4e4460f7f76e3e8bb8c0d99473" +dependencies = [ + "serde", +] + [[package]] name = "zeno" version = "0.3.3" @@ -8153,7 +7972,7 @@ checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -8173,7 +7992,7 @@ checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", "synstructure", ] @@ -8215,7 +8034,7 @@ checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -8254,7 +8073,7 @@ checksum = "e6f2416a5f504dfd7e04fee49f31abafe3314a3f62b4ddaa8e9a5fd496d4dd50" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -8323,41 +8142,50 @@ dependencies = [ [[package]] name = "zvariant" -version = "5.13.0" +version = "5.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cf057bb00bf5c9ad77abb6147b0ca4818236a1858416e9d988e40d6322fefa7" +checksum = "c1d34c27cc6cdd1f458427519dd6b8612f7b7e3f7b9a0b2355d041dda9869147" dependencies = [ "endi", "enumflags2", "serde", "url", "winnow", + "zcheapstr", "zvariant_derive", "zvariant_utils", ] [[package]] name = "zvariant_derive" -version = "5.13.0" +version = "5.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8118ca6bda77bfc0ab51d660db0c955f2505eef854c9a449435bccb616933b31" +checksum = "864155e69b4352db0c7f374917bf45d1e0c8d17659c8b3dbf9795f3673f8c497" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 3.0.3", "zvariant_utils", ] [[package]] name = "zvariant_utils" -version = "3.5.0" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90cb9383f9b45290407a1258b202d3f8f01db719eb60b4e4055c6375af4fc7c7" +checksum = "bad0294361a320b694a328460dc73add56c306150f5cb6bfafc44446120008a3" dependencies = [ "proc-macro2", "quote", "serde", - "syn", + "syn 3.0.3", "winnow", ] + +[[patch.unused]] +name = "winit-x11" +version = "0.31.0-beta.2" + +[[patch.unused]] +name = "cosmic-settings-airplane-mode-subscription" +version = "1.0.7" diff --git a/cosmic-applet-audio/src/lib.rs b/cosmic-applet-audio/src/lib.rs index 95a0e84c..daa54ef9 100644 --- a/cosmic-applet-audio/src/lib.rs +++ b/cosmic-applet-audio/src/lib.rs @@ -330,7 +330,7 @@ impl cosmic::Application for Audio { let new_id = window::Id::unique(); app.popup.replace(new_id); - self.refresh_volume_limits(); + app.refresh_volume_limits(); let mut popup_settings = app.core.applet.get_popup_settings( app.core.main_window_id().unwrap(),