From 71d9d6d5bbe8a151fba75929ebc39134d70ef6e2 Mon Sep 17 00:00:00 2001 From: Ashley Wulber <48420062+wash2@users.noreply.github.com> Date: Tue, 31 Mar 2026 16:34:59 -0400 Subject: [PATCH] chore: updates after iced-rebase --- Cargo.lock | 2736 +++++++---------- Cargo.toml | 16 +- cosmic-app-list/src/app.rs | 16 +- cosmic-app-list/src/wayland_subscription.rs | 9 +- cosmic-applet-a11y/Cargo.toml | 3 +- cosmic-applet-a11y/src/app.rs | 109 +- cosmic-applet-a11y/src/backend/wayland/mod.rs | 7 +- cosmic-applet-audio/Cargo.toml | 2 +- cosmic-applet-audio/src/lib.rs | 40 +- cosmic-applet-audio/src/mouse_area.rs | 82 +- cosmic-applet-audio/src/mpris_subscription.rs | 7 +- cosmic-applet-battery/Cargo.toml | 3 +- cosmic-applet-battery/src/app.rs | 51 +- cosmic-applet-battery/src/backend/mod.rs | 7 +- cosmic-applet-battery/src/dgpu.rs | 7 +- cosmic-applet-bluetooth/Cargo.toml | 1 - cosmic-applet-bluetooth/src/app.rs | 42 +- cosmic-applet-bluetooth/src/bluetooth.rs | 183 +- cosmic-applet-input-sources/Cargo.toml | 1 - cosmic-applet-input-sources/src/lib.rs | 6 +- cosmic-applet-minimize/src/lib.rs | 2 +- .../src/wayland_subscription.rs | 34 +- cosmic-applet-minimize/src/window_image.rs | 42 +- cosmic-applet-network/Cargo.toml | 4 +- cosmic-applet-network/src/app.rs | 66 +- cosmic-applet-notifications/Cargo.toml | 1 - cosmic-applet-notifications/src/lib.rs | 61 +- .../src/subscriptions/dbus.rs | 124 +- .../src/subscriptions/notifications.rs | 151 +- cosmic-applet-power/src/lib.rs | 8 +- .../src/components/app.rs | 9 +- .../src/components/status_menu.rs | 2 +- .../src/subscriptions/status_notifier_item.rs | 82 +- .../status_notifier_watcher/mod.rs | 10 +- cosmic-applet-tiling/Cargo.toml | 1 - .../src/wayland_subscription.rs | 7 +- cosmic-applet-tiling/src/window.rs | 86 +- cosmic-applet-time/src/window.rs | 142 +- .../src/components/app.rs | 8 +- .../src/wayland_subscription.rs | 7 +- cosmic-panel-button/src/lib.rs | 7 +- 41 files changed, 1786 insertions(+), 2396 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 70f7d8b6..437fd25e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -20,75 +20,78 @@ checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" [[package]] name = "accesskit" -version = "0.16.0" -source = "git+https://github.com/wash2/accesskit?tag=iced-xdg-surface-0.13-rc#c46afc041b1968a5af0186fa6aba3ea9cf24c8c3" +version = "0.22.0" +source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" +dependencies = [ + "uuid", +] [[package]] name = "accesskit_atspi_common" -version = "0.9.0" -source = "git+https://github.com/wash2/accesskit?tag=iced-xdg-surface-0.13-rc#c46afc041b1968a5af0186fa6aba3ea9cf24c8c3" +version = "0.15.0" +source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" dependencies = [ "accesskit", "accesskit_consumer", "atspi-common", "serde", - "thiserror 1.0.69", - "zvariant 3.15.2", + "zvariant", ] [[package]] name = "accesskit_consumer" -version = "0.24.0" -source = "git+https://github.com/wash2/accesskit?tag=iced-xdg-surface-0.13-rc#c46afc041b1968a5af0186fa6aba3ea9cf24c8c3" +version = "0.32.0" +source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" dependencies = [ "accesskit", - "immutable-chunkmap", + "hashbrown 0.16.1", ] [[package]] name = "accesskit_macos" -version = "0.17.0" -source = "git+https://github.com/wash2/accesskit?tag=iced-xdg-surface-0.13-rc#c46afc041b1968a5af0186fa6aba3ea9cf24c8c3" +version = "0.23.0" +source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" dependencies = [ "accesskit", "accesskit_consumer", + "hashbrown 0.16.1", "objc2 0.5.2", "objc2-app-kit 0.2.2", "objc2-foundation 0.2.2", - "once_cell", ] [[package]] name = "accesskit_unix" -version = "0.12.0" -source = "git+https://github.com/wash2/accesskit?tag=iced-xdg-surface-0.13-rc#c46afc041b1968a5af0186fa6aba3ea9cf24c8c3" +version = "0.18.0" +source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" dependencies = [ "accesskit", "accesskit_atspi_common", "atspi", - "futures-lite 1.13.0", + "futures-lite", "serde", "tokio", "tokio-stream", - "zbus 3.15.2", + "zbus", ] [[package]] name = "accesskit_windows" -version = "0.22.0" -source = "git+https://github.com/wash2/accesskit?tag=iced-xdg-surface-0.13-rc#c46afc041b1968a5af0186fa6aba3ea9cf24c8c3" +version = "0.30.0" +source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" dependencies = [ "accesskit", "accesskit_consumer", - "paste", + "hashbrown 0.16.1", "static_assertions", - "windows 0.54.0", + "windows", + "windows-core 0.61.2", ] [[package]] name = "accesskit_winit" -version = "0.22.0" -source = "git+https://github.com/wash2/accesskit?tag=iced-xdg-surface-0.13-rc#c46afc041b1968a5af0186fa6aba3ea9cf24c8c3" +version = "0.30.0" +source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" dependencies = [ "accesskit", "accesskit_macos", @@ -151,23 +154,21 @@ checksum = "3aa2999eb46af81abb65c2d30d446778d7e613b60bbf4e174a027e80f90a3c14" [[package]] name = "android-activity" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" +checksum = "0f2a1bb052857d5dd49572219344a7332b31b76405648eabac5bc68978251bcd" dependencies = [ "android-properties", "bitflags 2.11.0", "cc", - "cesu8", "jni", - "jni-sys", "libc", "log", "ndk", "ndk-context", - "ndk-sys 0.6.0+11769913", + "ndk-sys", "num_enum", - "thiserror 1.0.69", + "thiserror 2.0.18", ] [[package]] @@ -192,14 +193,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "710e8eae58854cdc1790fcb56cca04d712a17be849eeb81da2a724bf4bae2bc4" dependencies = [ "anstyle", - "unicode-width 0.2.2", + "unicode-width", ] [[package]] name = "anstyle" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anyhow" @@ -224,9 +225,9 @@ dependencies = [ [[package]] name = "arc-swap" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9f3647c145568cec02c42054e07bdf9a5a698e15b466fb2341bfc393cd24aa5" +checksum = "a07d1f37ff60921c83bdfc7407723bdefe89b44b98a9b772f225c8f9d67141a6" dependencies = [ "rustversion", ] @@ -249,15 +250,6 @@ 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" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" -dependencies = [ - "libloading", -] - [[package]] name = "ashpd" version = "0.11.1" @@ -273,7 +265,7 @@ dependencies = [ "serde_repr", "tokio", "url", - "zbus 5.14.0", + "zbus", ] [[package]] @@ -293,17 +285,7 @@ dependencies = [ "wayland-backend", "wayland-client", "wayland-protocols", - "zbus 5.14.0", -] - -[[package]] -name = "async-broadcast" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" -dependencies = [ - "event-listener 2.5.3", - "futures-core", + "zbus", ] [[package]] @@ -312,7 +294,7 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" dependencies = [ - "event-listener 5.4.1", + "event-listener", "event-listener-strategy", "futures-core", "pin-project-lite", @@ -338,8 +320,8 @@ checksum = "c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a" dependencies = [ "async-task", "concurrent-queue", - "fastrand 2.3.0", - "futures-lite 2.6.1", + "fastrand", + "futures-lite", "pin-project-lite", "slab", ] @@ -355,26 +337,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "async-io" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" -dependencies = [ - "async-lock 2.8.0", - "autocfg", - "cfg-if", - "concurrent-queue", - "futures-lite 1.13.0", - "log", - "parking", - "polling 2.8.0", - "rustix 0.37.28", - "slab", - "socket2 0.4.10", - "waker-fn", -] - [[package]] name = "async-io" version = "2.6.0" @@ -385,51 +347,25 @@ dependencies = [ "cfg-if", "concurrent-queue", "futures-io", - "futures-lite 2.6.1", + "futures-lite", "parking", - "polling 3.11.0", + "polling", "rustix 1.1.4", "slab", "windows-sys 0.61.2", ] -[[package]] -name = "async-lock" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" -dependencies = [ - "event-listener 2.5.3", -] - [[package]] name = "async-lock" version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" dependencies = [ - "event-listener 5.4.1", + "event-listener", "event-listener-strategy", "pin-project-lite", ] -[[package]] -name = "async-process" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88" -dependencies = [ - "async-io 1.13.0", - "async-lock 2.8.0", - "async-signal", - "blocking", - "cfg-if", - "event-listener 3.1.0", - "futures-lite 1.13.0", - "rustix 0.38.44", - "windows-sys 0.48.0", -] - [[package]] name = "async-process" version = "2.5.0" @@ -437,14 +373,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" dependencies = [ "async-channel", - "async-io 2.6.0", - "async-lock 3.4.2", + "async-io", + "async-lock", "async-signal", "async-task", "blocking", "cfg-if", - "event-listener 5.4.1", - "futures-lite 2.6.1", + "event-listener", + "futures-lite", "rustix 1.1.4", ] @@ -456,7 +392,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -465,8 +401,8 @@ version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" dependencies = [ - "async-io 2.6.0", - "async-lock 3.4.2", + "async-io", + "async-lock", "atomic-waker", "cfg-if", "futures-core", @@ -491,7 +427,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -512,62 +448,51 @@ dependencies = [ [[package]] name = "atspi" -version = "0.19.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6059f350ab6f593ea00727b334265c4dfc7fd442ee32d264794bd9bdc68e87ca" +checksum = "c77886257be21c9cd89a4ae7e64860c6f0eefca799bb79127913052bd0eefb3d" dependencies = [ "atspi-common", - "atspi-connection", "atspi-proxies", ] [[package]] name = "atspi-common" -version = "0.3.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92af95f966d2431f962bc632c2e68eda7777330158bf640c4af4249349b2cdf5" +checksum = "20c5617155740c98003016429ad13fe43ce7a77b007479350a9f8bf95a29f63d" dependencies = [ "enumflags2", "serde", "static_assertions", - "zbus 3.15.2", - "zbus_names 2.6.1", - "zvariant 3.15.2", -] - -[[package]] -name = "atspi-connection" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c65e7d70f86d4c0e3b2d585d9bf3f979f0b19d635a336725a88d279f76b939" -dependencies = [ - "atspi-common", - "atspi-proxies", - "futures-lite 1.13.0", - "zbus 3.15.2", + "zbus", + "zbus-lockstep", + "zbus-lockstep-macros", + "zbus_names", + "zvariant", ] [[package]] name = "atspi-proxies" -version = "0.3.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6495661273703e7a229356dcbe8c8f38223d697aacfaf0e13590a9ac9977bb52" +checksum = "2230e48787ed3eb4088996eab66a32ca20c0b67bbd4fd6cdfe79f04f1f04c9fc" dependencies = [ "atspi-common", "serde", - "zbus 3.15.2", + "zbus", ] [[package]] name = "auto_enums" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c170965892137a3a9aeb000b4524aa3cc022a310e709d848b6e1cdce4ab4781" +checksum = "65398a2893f41bce5c9259f6e1a4f03fbae40637c1bdc755b4f387f48c613b03" dependencies = [ "derive_utils", "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -607,23 +532,23 @@ dependencies = [ "regex", "rustc-hash 2.1.1", "shlex", - "syn 2.0.117", + "syn", ] [[package]] name = "bit-set" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0481a0e032742109b1133a095184ee93d88f3dc9e0d28a5d033dc77a073f44f" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ "bit-vec", ] [[package]] name = "bit-vec" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c54ff287cfc0a34f38a6b832ea1bd8e448a330b3e40a50859e6488bee07f22" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" [[package]] name = "bitflags" @@ -679,7 +604,7 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" dependencies = [ - "objc2 0.6.3", + "objc2 0.6.4", ] [[package]] @@ -691,7 +616,7 @@ dependencies = [ "async-channel", "async-task", "futures-io", - "futures-lite 2.6.1", + "futures-lite", "piper", ] @@ -724,6 +649,16 @@ dependencies = [ "uuid", ] +[[package]] +name = "borsh" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a" +dependencies = [ + "bytes", + "cfg_aliases", +] + [[package]] name = "bstr" version = "1.12.1" @@ -773,15 +708,9 @@ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - [[package]] name = "byteorder-lite" version = "0.1.0" @@ -804,20 +733,6 @@ dependencies = [ "displaydoc", ] -[[package]] -name = "calloop" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" -dependencies = [ - "bitflags 2.11.0", - "log", - "polling 3.11.0", - "rustix 0.38.44", - "slab", - "thiserror 1.0.69", -] - [[package]] name = "calloop" version = "0.14.4" @@ -825,31 +740,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dbf9978365bac10f54d1d4b04f7ce4427e51f71d61f2fe15e3fed5166474df7" dependencies = [ "bitflags 2.11.0", - "polling 3.11.0", + "polling", "rustix 1.1.4", "slab", "tracing", ] -[[package]] -name = "calloop-wayland-source" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" -dependencies = [ - "calloop 0.13.0", - "rustix 0.38.44", - "wayland-backend", - "wayland-client", -] - [[package]] name = "calloop-wayland-source" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "138efcf0940a02ebf0cc8d1eff41a1682a46b431630f4c52450d6265876021fa" dependencies = [ - "calloop 0.14.4", + "calloop", "rustix 1.1.4", "wayland-backend", "wayland-client", @@ -866,9 +769,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.56" +version = "1.2.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423" dependencies = [ "find-msvc-tools", "jobserver", @@ -876,12 +779,6 @@ dependencies = [ "shlex", ] -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - [[package]] name = "cexpr" version = "0.6.0" @@ -893,9 +790,9 @@ dependencies = [ [[package]] name = "cfg-expr" -version = "0.20.6" +version = "0.20.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cef5b5a1a6827c7322ae2a636368a573006b27cfa76c7ebd53e834daeaab6a" +checksum = "3c6b04e07d8080154ed4ac03546d9a2b303cc2fe1901ba0b35b301516e289368" dependencies = [ "smallvec", "target-lexicon", @@ -907,12 +804,6 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" -[[package]] -name = "cfg_aliases" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" - [[package]] name = "cfg_aliases" version = "0.2.1" @@ -921,14 +812,14 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.43" +version = "0.4.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" dependencies = [ "iana-time-zone", "num-traits", "serde", - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -964,7 +855,7 @@ dependencies = [ [[package]] name = "clipboard_macos" version = "0.1.0" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=pop-0.13-2#6b9faab87bea9cebec6ae036906fd67fed254f5f" +source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "objc", "objc-foundation", @@ -974,7 +865,7 @@ dependencies = [ [[package]] name = "clipboard_wayland" version = "0.2.2" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=pop-0.13-2#6b9faab87bea9cebec6ae036906fd67fed254f5f" +source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "dnd", "mime 0.1.0", @@ -984,7 +875,7 @@ dependencies = [ [[package]] name = "clipboard_x11" version = "0.4.2" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=pop-0.13-2#6b9faab87bea9cebec6ae036906fd67fed254f5f" +source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "thiserror 1.0.69", "x11rb", @@ -1022,12 +913,11 @@ dependencies = [ [[package]] name = "codespan-reporting" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" dependencies = [ - "termcolor", - "unicode-width 0.1.14", + "unicode-width", ] [[package]] @@ -1036,37 +926,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" -[[package]] -name = "com" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e17887fd17353b65b1b2ef1c526c83e26cd72e74f598a8dc1bee13a48f3d9f6" -dependencies = [ - "com_macros", -] - -[[package]] -name = "com_macros" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d375883580a668c7481ea6631fc1a8863e33cc335bf56bfad8d7e6d4b04b13a5" -dependencies = [ - "com_macros_support", - "proc-macro2", - "syn 1.0.109", -] - -[[package]] -name = "com_macros_support" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "combine" version = "4.6.7" @@ -1164,7 +1023,7 @@ dependencies = [ "cosmic-app-list-config", "cosmic-client-toolkit", "cosmic-protocols", - "fastrand 2.3.0", + "fastrand", "futures", "i18n-embed", "i18n-embed-fl", @@ -1180,7 +1039,7 @@ dependencies = [ "tracing-log", "tracing-subscriber", "url", - "zbus 5.14.0", + "zbus", ] [[package]] @@ -1200,7 +1059,6 @@ dependencies = [ "cosmic-protocols", "cosmic-settings-a11y-manager-subscription", "cosmic-settings-accessibility-subscription", - "cosmic-time", "i18n-embed", "i18n-embed-fl", "libcosmic", @@ -1216,7 +1074,6 @@ name = "cosmic-applet-audio" version = "1.0.2" dependencies = [ "cosmic-settings-sound-subscription", - "cosmic-time", "i18n-embed", "i18n-embed-fl", "libcosmic", @@ -1229,7 +1086,7 @@ dependencies = [ "tracing-subscriber", "url", "urlencoding", - "zbus 5.14.0", + "zbus", ] [[package]] @@ -1241,7 +1098,6 @@ dependencies = [ "cosmic-config", "cosmic-settings-daemon-subscription", "cosmic-settings-upower-subscription", - "cosmic-time", "drm 0.14.1", "futures", "i18n-embed", @@ -1255,7 +1111,7 @@ dependencies = [ "tracing-log", "tracing-subscriber", "udev", - "zbus 5.14.0", + "zbus", ] [[package]] @@ -1264,8 +1120,7 @@ version = "1.0.2" dependencies = [ "anyhow", "bluer", - "cosmic-time", - "fastrand 2.3.0", + "fastrand", "futures", "i18n-embed", "i18n-embed-fl", @@ -1321,7 +1176,6 @@ dependencies = [ "cosmic-dbus-networkmanager", "cosmic-settings-airplane-mode-subscription", "cosmic-settings-network-manager-subscription", - "cosmic-time", "futures", "futures-util", "i18n-embed", @@ -1337,7 +1191,7 @@ dependencies = [ "tracing-log", "tracing-subscriber", "uuid", - "zbus 5.14.0", + "zbus", ] [[package]] @@ -1347,7 +1201,6 @@ dependencies = [ "anyhow", "cosmic-notifications-config", "cosmic-notifications-util", - "cosmic-time", "futures-util", "i18n-embed", "i18n-embed-fl", @@ -1358,7 +1211,7 @@ dependencies = [ "tracing-log", "tracing-subscriber", "url", - "zbus 5.14.0", + "zbus", ] [[package]] @@ -1375,7 +1228,7 @@ dependencies = [ "tracing", "tracing-log", "tracing-subscriber", - "zbus 5.14.0", + "zbus", ] [[package]] @@ -1390,7 +1243,7 @@ dependencies = [ "tracing", "tracing-log", "tracing-subscriber", - "zbus 5.14.0", + "zbus", ] [[package]] @@ -1401,7 +1254,6 @@ dependencies = [ "cosmic-client-toolkit", "cosmic-comp-config", "cosmic-protocols", - "cosmic-time", "i18n-embed", "i18n-embed-fl", "libcosmic", @@ -1430,7 +1282,7 @@ dependencies = [ "tracing", "tracing-log", "tracing-subscriber", - "zbus 5.14.0", + "zbus", ] [[package]] @@ -1492,7 +1344,7 @@ dependencies = [ "bitflags 2.11.0", "cosmic-protocols", "libc", - "smithay-client-toolkit 0.20.0", + "smithay-client-toolkit", "wayland-client", "wayland-protocols", ] @@ -1510,7 +1362,7 @@ dependencies = [ [[package]] name = "cosmic-config" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#384e8f6e219bb458720eafa5bb971b832c057f23" +source = "git+https://github.com/pop-os/libcosmic#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "atomicwrites", "cosmic-config-derive", @@ -1525,37 +1377,37 @@ dependencies = [ "tokio", "tracing", "xdg", - "zbus 5.14.0", + "zbus", ] [[package]] name = "cosmic-config-derive" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#384e8f6e219bb458720eafa5bb971b832c057f23" +source = "git+https://github.com/pop-os/libcosmic#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "quote", - "syn 2.0.117", + "syn", ] [[package]] name = "cosmic-dbus-a11y" version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#0fa672f8dadb884001ef9a251b149ed432879629" +source = "git+https://github.com/pop-os/dbus-settings-bindings#507e342c21d3ce6ae41b1d4f3fa2f0ad5ee23e75" dependencies = [ - "zbus 5.14.0", + "zbus", ] [[package]] name = "cosmic-dbus-networkmanager" version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#0fa672f8dadb884001ef9a251b149ed432879629" +source = "git+https://github.com/pop-os/dbus-settings-bindings#507e342c21d3ce6ae41b1d4f3fa2f0ad5ee23e75" dependencies = [ "bitflags 2.11.0", "derive_builder", + "jiff", "procfs", - "time", - "zbus 5.14.0", - "zvariant 5.10.0", + "zbus", + "zvariant", ] [[package]] @@ -1575,7 +1427,7 @@ dependencies = [ [[package]] name = "cosmic-notifications-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-notifications#b58fb29bd7e5898e4252ecb45d5bebfdecdf7cca" +source = "git+https://github.com/pop-os/cosmic-notifications#de57c9ef0e2bd5f5608eb425a736bbe4c815cb76" dependencies = [ "cosmic-config", "serde", @@ -1584,14 +1436,15 @@ dependencies = [ [[package]] name = "cosmic-notifications-util" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-notifications#b58fb29bd7e5898e4252ecb45d5bebfdecdf7cca" +source = "git+https://github.com/pop-os/cosmic-notifications#de57c9ef0e2bd5f5608eb425a736bbe4c815cb76" dependencies = [ "fast_image_resize", "libcosmic", "serde", + "tl", "tracing", "url", - "zbus 5.14.0", + "zbus", ] [[package]] @@ -1610,12 +1463,12 @@ dependencies = [ [[package]] name = "cosmic-panel-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-panel#6a783a18c3079955ff4cde1d00eaadf8e77b869c" +source = "git+https://github.com/pop-os/cosmic-panel#d518c7d25ef96f1a9696aa8cce008656bf66ece4" dependencies = [ "anyhow", "cosmic-config", "serde", - "smithay-client-toolkit 0.20.0", + "smithay-client-toolkit", "tracing", "wayland-protocols-wlr", "xdg-shell-wrapper-config", @@ -1624,7 +1477,7 @@ dependencies = [ [[package]] name = "cosmic-pipewire" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#eb8d0e349fa588f21ecf0fbc430b2e82ff25640c" +source = "git+https://github.com/pop-os/cosmic-settings#7dc9530a3e3d804b36a0d78a75e39efdcf72bbba" dependencies = [ "intmap", "libspa", @@ -1652,13 +1505,13 @@ dependencies = [ [[package]] name = "cosmic-settings-a11y-manager-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#eb8d0e349fa588f21ecf0fbc430b2e82ff25640c" +source = "git+https://github.com/pop-os/cosmic-settings#7dc9530a3e3d804b36a0d78a75e39efdcf72bbba" dependencies = [ "cosmic-protocols", "iced_futures", "num-derive", "num-traits", - "smithay-client-toolkit 0.20.0", + "smithay-client-toolkit", "tokio", "tracing", ] @@ -1666,20 +1519,20 @@ dependencies = [ [[package]] name = "cosmic-settings-accessibility-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#eb8d0e349fa588f21ecf0fbc430b2e82ff25640c" +source = "git+https://github.com/pop-os/cosmic-settings#7dc9530a3e3d804b36a0d78a75e39efdcf72bbba" dependencies = [ "cosmic-dbus-a11y", "futures", "iced_futures", "tokio", "tracing", - "zbus 5.14.0", + "zbus", ] [[package]] name = "cosmic-settings-airplane-mode-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#eb8d0e349fa588f21ecf0fbc430b2e82ff25640c" +source = "git+https://github.com/pop-os/cosmic-settings#7dc9530a3e3d804b36a0d78a75e39efdcf72bbba" dependencies = [ "futures", "iced_futures", @@ -1691,7 +1544,7 @@ dependencies = [ [[package]] name = "cosmic-settings-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-settings-daemon#defa9f790432c70054ca1f39737d879ada5d0252" +source = "git+https://github.com/pop-os/cosmic-settings-daemon#8d83e2a4179bbe193d195cd42efe9ce50bcc9926" dependencies = [ "cosmic-config", "ron 0.11.0", @@ -1704,28 +1557,28 @@ dependencies = [ [[package]] name = "cosmic-settings-daemon" version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#0fa672f8dadb884001ef9a251b149ed432879629" +source = "git+https://github.com/pop-os/dbus-settings-bindings#507e342c21d3ce6ae41b1d4f3fa2f0ad5ee23e75" dependencies = [ - "zbus 5.14.0", + "zbus", ] [[package]] name = "cosmic-settings-daemon-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#eb8d0e349fa588f21ecf0fbc430b2e82ff25640c" +source = "git+https://github.com/pop-os/cosmic-settings#7dc9530a3e3d804b36a0d78a75e39efdcf72bbba" dependencies = [ "futures", "iced_futures", "log", "tokio", "tokio-stream", - "zbus 5.14.0", + "zbus", ] [[package]] name = "cosmic-settings-network-manager-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#eb8d0e349fa588f21ecf0fbc430b2e82ff25640c" +source = "git+https://github.com/pop-os/cosmic-settings#7dc9530a3e3d804b36a0d78a75e39efdcf72bbba" dependencies = [ "bitflags 2.11.0", "cosmic-dbus-networkmanager", @@ -1738,13 +1591,13 @@ dependencies = [ "thiserror 2.0.18", "tokio", "tracing", - "zbus 5.14.0", + "zbus", ] [[package]] name = "cosmic-settings-sound-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#eb8d0e349fa588f21ecf0fbc430b2e82ff25640c" +source = "git+https://github.com/pop-os/cosmic-settings#7dc9530a3e3d804b36a0d78a75e39efdcf72bbba" dependencies = [ "cosmic-pipewire", "futures", @@ -1759,7 +1612,7 @@ dependencies = [ [[package]] name = "cosmic-settings-upower-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#eb8d0e349fa588f21ecf0fbc430b2e82ff25640c" +source = "git+https://github.com/pop-os/cosmic-settings#7dc9530a3e3d804b36a0d78a75e39efdcf72bbba" dependencies = [ "futures", "iced_futures", @@ -1767,16 +1620,16 @@ dependencies = [ "tokio", "tokio-stream", "upower_dbus", - "zbus 5.14.0", + "zbus", ] [[package]] name = "cosmic-text" version = "0.18.2" -source = "git+https://github.com/pop-os/cosmic-text.git#f31b9d86959676d97fde54ff5907a58ab4308897" +source = "git+https://github.com/pop-os/cosmic-text.git#d5a972a2b63649fad11ea3a7e80f7dc4c592f01a" dependencies = [ "bitflags 2.11.0", - "fontdb 0.23.0", + "fontdb", "harfrust", "linebender_resource_handle", "log", @@ -1784,7 +1637,7 @@ dependencies = [ "rustc-hash 2.1.1", "self_cell", "skrifa 0.40.0", - "smol_str 0.3.5", + "smol_str", "swash", "sys-locale", "unicode-bidi", @@ -1796,7 +1649,7 @@ dependencies = [ [[package]] name = "cosmic-theme" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#384e8f6e219bb458720eafa5bb971b832c057f23" +source = "git+https://github.com/pop-os/libcosmic#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "almost", "configparser", @@ -1810,15 +1663,6 @@ dependencies = [ "thiserror 2.0.18", ] -[[package]] -name = "cosmic-time" -version = "0.4.0" -source = "git+https://github.com/pop-os/cosmic-time#257aecae2aa4073e96e7ebf24c6c0d4698c85dda" -dependencies = [ - "float-cmp", - "libcosmic", -] - [[package]] name = "cpufeatures" version = "0.2.17" @@ -1849,6 +1693,18 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" +[[package]] +name = "cryoglyph" +version = "0.1.0" +source = "git+https://github.com/pop-os/glyphon.git?tag=cosmic-0.14#c49de15bce4d8254ac136d1be9911960cc85ce12" +dependencies = [ + "cosmic-text", + "etagere", + "lru", + "rustc-hash 2.1.1", + "wgpu", +] + [[package]] name = "crypto-common" version = "0.1.7" @@ -1867,9 +1723,9 @@ checksum = "42aaeae719fd78ce501d77c6cdf01f7e96f26bcd5617a4903a1c2b97e388543a" [[package]] name = "csscolorparser" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a878cfd6075649977f548ed439564cfdbe1f190a6656a00b48af7740f2f148" +checksum = "199f851bd3cb5004c09474252c7f74e7c047441ed0979bf3688a7106a13da952" dependencies = [ "num-traits", "phf 0.13.1", @@ -1907,21 +1763,10 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn", "synstructure", ] -[[package]] -name = "d3d12" -version = "22.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdbd1f579714e3c809ebd822c81ef148b1ceaeb3d535352afc73fd0c4c6a0017" -dependencies = [ - "bitflags 2.11.0", - "libloading", - "winapi", -] - [[package]] name = "darling" version = "0.20.11" @@ -1942,6 +1787,16 @@ dependencies = [ "darling_macro 0.21.3", ] +[[package]] +name = "darling" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +dependencies = [ + "darling_core 0.23.0", + "darling_macro 0.23.0", +] + [[package]] name = "darling_core" version = "0.20.11" @@ -1953,7 +1808,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn", ] [[package]] @@ -1967,7 +1822,20 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn", +] + +[[package]] +name = "darling_core" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", ] [[package]] @@ -1978,7 +1846,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -1989,7 +1857,18 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn 2.0.117", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +dependencies = [ + "darling_core 0.23.0", + "quote", + "syn", ] [[package]] @@ -2041,17 +1920,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "derive_builder" version = "0.20.2" @@ -2070,7 +1938,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -2080,7 +1948,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.117", + "syn", ] [[package]] @@ -2092,18 +1960,18 @@ dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] name = "derive_utils" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccfae181bab5ab6c5478b2ccb69e4c68a02f8c3ec72f6616bfec9dbc599d2ee0" +checksum = "362f47930db19fe7735f527e6595e4900316b893ebf6d48ad3d31be928d57dd6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -2138,22 +2006,16 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "dispatch" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" - [[package]] name = "dispatch2" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ "bitflags 2.11.0", "block2 0.6.2", "libc", - "objc2 0.6.3", + "objc2 0.6.4", ] [[package]] @@ -2164,14 +2026,14 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] name = "dlib" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +checksum = "ab8ecd87370524b461f8557c119c405552c396ed91fc0a8eec68679eab26f94a" dependencies = [ "libloading", ] @@ -2179,12 +2041,12 @@ dependencies = [ [[package]] name = "dnd" version = "0.1.0" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=pop-0.13-2#6b9faab87bea9cebec6ae036906fd67fed254f5f" +source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "bitflags 2.11.0", "mime 0.1.0", "raw-window-handle", - "smithay-client-toolkit 0.19.2", + "smithay-client-toolkit", "smithay-clipboard", ] @@ -2205,8 +2067,8 @@ checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "dpi" -version = "0.1.1" -source = "git+https://github.com/pop-os/winit.git?tag=iced-xdg-surface-0.13-rc#dd46a1499bcc38f2134ab869e8860a32e091c55b" +version = "0.1.2" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" [[package]] name = "drm" @@ -2229,7 +2091,7 @@ checksum = "80bc8c5c6c2941f70a55c15f8d9f00f9710ebda3ffda98075f996a0e6c92756f" dependencies = [ "bitflags 2.11.0", "bytemuck", - "drm-ffi 0.9.0", + "drm-ffi 0.9.1", "drm-fourcc", "libc", "rustix 0.38.44", @@ -2247,12 +2109,12 @@ dependencies = [ [[package]] name = "drm-ffi" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8e41459d99a9b529845f6d2c909eb9adf3b6d2f82635ae40be8de0601726e8b" +checksum = "51a91c9b32ac4e8105dec255e849e0d66e27d7c34d184364fb93e469db08f690" dependencies = [ - "drm-sys 0.8.0", - "rustix 0.38.44", + "drm-sys 0.8.1", + "rustix 1.1.4", ] [[package]] @@ -2273,12 +2135,12 @@ dependencies = [ [[package]] name = "drm-sys" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bafb66c8dbc944d69e15cfcc661df7e703beffbaec8bd63151368b06c5f9858c" +checksum = "ecc8e1361066d91f5ffccff060a3c3be9c3ecde15be2959c1937595f7a82a9f8" dependencies = [ "libc", - "linux-raw-sys 0.6.5", + "linux-raw-sys 0.9.4", ] [[package]] @@ -2317,7 +2179,7 @@ checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -2354,30 +2216,13 @@ dependencies = [ [[package]] name = "euclid" -version = "0.22.13" +version = "0.22.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df61bf483e837f88d5c2291dcf55c67be7e676b3a51acc48db3a7b163b91ed63" +checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06" dependencies = [ "num-traits", ] -[[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - -[[package]] -name = "event-listener" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - [[package]] name = "event-listener" version = "5.4.1" @@ -2395,7 +2240,7 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" dependencies = [ - "event-listener 5.4.1", + "event-listener", "pin-project-lite", ] @@ -2417,15 +2262,6 @@ dependencies = [ "thiserror 2.0.18", ] -[[package]] -name = "fastrand" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] - [[package]] name = "fastrand" version = "2.3.0" @@ -2482,6 +2318,12 @@ name = "float-cmp" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" + +[[package]] +name = "float-cmp" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b09cf3155332e944990140d967ff5eceb70df778b34f77d8075db46e4704e6d8" dependencies = [ "num-traits", ] @@ -2549,6 +2391,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "font-types" version = "0.10.1" @@ -2560,9 +2408,9 @@ dependencies = [ [[package]] name = "font-types" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e4d2d0cf79d38430cc9dc9aadec84774bff2e1ba30ae2bf6c16cfce9385a23" +checksum = "73829a7b5c91198af28a99159b7ae4afbb252fb906159ff7f189f3a2ceaa3df2" dependencies = [ "bytemuck", ] @@ -2576,20 +2424,6 @@ dependencies = [ "roxmltree", ] -[[package]] -name = "fontdb" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e32eac81c1135c1df01d4e6d4233c47ba11f6a6d07f33e0bba09d18797077770" -dependencies = [ - "fontconfig-parser", - "log", - "memmap2 0.9.10", - "slotmap", - "tinyvec", - "ttf-parser 0.21.1", -] - [[package]] name = "fontdb" version = "0.23.0" @@ -2601,7 +2435,7 @@ dependencies = [ "memmap2 0.9.10", "slotmap", "tinyvec", - "ttf-parser 0.25.1", + "ttf-parser", ] [[package]] @@ -2622,7 +2456,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -2722,28 +2556,13 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" -[[package]] -name = "futures-lite" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" -dependencies = [ - "fastrand 1.9.0", - "futures-core", - "futures-io", - "memchr", - "parking", - "pin-project-lite", - "waker-fn", -] - [[package]] name = "futures-lite" version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" dependencies = [ - "fastrand 2.3.0", + "fastrand", "futures-core", "futures-io", "parking", @@ -2758,7 +2577,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -2807,7 +2626,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" dependencies = [ "rustix 1.1.4", - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -2829,19 +2648,19 @@ checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "libc", - "r-efi", + "r-efi 5.3.0", "wasip2", ] [[package]] name = "getrandom" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" dependencies = [ "cfg-if", "libc", - "r-efi", + "r-efi 6.0.0", "wasip2", "wasip3", ] @@ -2876,17 +2695,6 @@ dependencies = [ "weezl", ] -[[package]] -name = "gl_generator" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" -dependencies = [ - "khronos_api", - "log", - "xml-rs", -] - [[package]] name = "glam" version = "0.25.0" @@ -2899,79 +2707,6 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" -[[package]] -name = "glow" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1" -dependencies = [ - "js-sys", - "slotmap", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "glutin_wgl_sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" -dependencies = [ - "gl_generator", -] - -[[package]] -name = "gpu-alloc" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" -dependencies = [ - "bitflags 2.11.0", - "gpu-alloc-types", -] - -[[package]] -name = "gpu-alloc-types" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" -dependencies = [ - "bitflags 2.11.0", -] - -[[package]] -name = "gpu-allocator" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdd4240fc91d3433d5e5b0fc5b67672d771850dc19bbee03c1381e19322803d7" -dependencies = [ - "log", - "presser", - "thiserror 1.0.69", - "winapi", - "windows 0.52.0", -] - -[[package]] -name = "gpu-descriptor" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" -dependencies = [ - "bitflags 2.11.0", - "gpu-descriptor-types", - "hashbrown 0.15.5", -] - -[[package]] -name = "gpu-descriptor-types" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" -dependencies = [ - "bitflags 2.11.0", -] - [[package]] name = "grid" version = "1.0.0" @@ -2996,14 +2731,15 @@ checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ "cfg-if", "crunchy", + "num-traits", "zerocopy", ] [[package]] name = "harfrust" -version = "0.5.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f9f40651a03bc0f7316bd75267ff5767e93017ef3cfffe76c6aa7252cc5a31c" +checksum = "9da2e5ae821f6e96664977bf974d6d6a2d6682f9ccee23e62ec1d134246845f9" dependencies = [ "bitflags 2.11.0", "bytemuck", @@ -3024,7 +2760,7 @@ version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ - "foldhash", + "foldhash 0.1.5", ] [[package]] @@ -3032,20 +2768,8 @@ name = "hashbrown" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" - -[[package]] -name = "hassle-rs" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" dependencies = [ - "bitflags 2.11.0", - "com", - "libc", - "libloading", - "thiserror 1.0.69", - "widestring", - "winapi", + "foldhash 0.2.0", ] [[package]] @@ -3129,7 +2853,7 @@ dependencies = [ "i18n-embed-impl", "intl-memoizer", "log", - "parking_lot 0.12.5", + "parking_lot", "rust-embed", "sys-locale", "thiserror 1.0.69", @@ -3152,7 +2876,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn", "unic-langid", ] @@ -3166,7 +2890,7 @@ dependencies = [ "i18n-config", "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -3195,26 +2919,29 @@ dependencies = [ [[package]] name = "iced" -version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#384e8f6e219bb458720eafa5bb971b832c057f23" +version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "dnd", "iced_accessibility", "iced_core", + "iced_debug", "iced_futures", + "iced_program", "iced_renderer", + "iced_runtime", "iced_widget", "iced_winit", "image", "mime 0.1.0", - "thiserror 1.0.69", + "thiserror 2.0.18", "window_clipboard", ] [[package]] name = "iced_accessibility" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#384e8f6e219bb458720eafa5bb971b832c057f23" +source = "git+https://github.com/pop-os/libcosmic#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "accesskit", "accesskit_winit", @@ -3222,32 +2949,42 @@ dependencies = [ [[package]] name = "iced_core" -version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#384e8f6e219bb458720eafa5bb971b832c057f23" +version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "bitflags 2.11.0", "bytes", "cosmic-client-toolkit", "dnd", "glam", + "lilt", "log", "mime 0.1.0", "num-traits", - "once_cell", "palette", "raw-window-handle", "rustc-hash 2.1.1", "serde", - "smol_str 0.2.2", - "thiserror 1.0.69", + "smol_str", + "thiserror 2.0.18", "web-time", "window_clipboard", ] +[[package]] +name = "iced_debug" +version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#adb3e341fc35282c0cee108b73740dcb28d4efe1" +dependencies = [ + "iced_core", + "iced_futures", + "log", +] + [[package]] name = "iced_futures" -version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#384e8f6e219bb458720eafa5bb971b832c057f23" +version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "futures", "iced_core", @@ -3255,25 +2992,13 @@ dependencies = [ "rustc-hash 2.1.1", "tokio", "wasm-bindgen-futures", - "wasm-timer", -] - -[[package]] -name = "iced_glyphon" -version = "0.6.0" -source = "git+https://github.com/pop-os/glyphon.git?tag=iced-0.14-dev#6ef9d12a20cfd0f7bdf38136a26ded9f7459ec8b" -dependencies = [ - "cosmic-text", - "etagere", - "lru", - "rustc-hash 2.1.1", - "wgpu", + "wasmtimer", ] [[package]] name = "iced_graphics" -version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#384e8f6e219bb458720eafa5bb971b832c057f23" +version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "bitflags 2.11.0", "bytemuck", @@ -3285,29 +3010,37 @@ dependencies = [ "kamadak-exif", "log", "lyon_path", - "once_cell", "raw-window-handle", "rustc-hash 2.1.1", - "thiserror 1.0.69", + "thiserror 2.0.18", "unicode-segmentation", ] +[[package]] +name = "iced_program" +version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#adb3e341fc35282c0cee108b73740dcb28d4efe1" +dependencies = [ + "iced_graphics", + "iced_runtime", +] + [[package]] name = "iced_renderer" -version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#384e8f6e219bb458720eafa5bb971b832c057f23" +version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "iced_graphics", "iced_tiny_skia", "iced_wgpu", "log", - "thiserror 1.0.69", + "thiserror 2.0.18", ] [[package]] name = "iced_runtime" -version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#384e8f6e219bb458720eafa5bb971b832c057f23" +version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "bytes", "cosmic-client-toolkit", @@ -3315,17 +3048,18 @@ dependencies = [ "iced_core", "iced_futures", "raw-window-handle", - "thiserror 1.0.69", + "thiserror 2.0.18", "window_clipboard", ] [[package]] name = "iced_tiny_skia" -version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#384e8f6e219bb458720eafa5bb971b832c057f23" +version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "bytemuck", "cosmic-text", + "iced_debug", "iced_graphics", "kurbo 0.10.4", "log", @@ -3337,26 +3071,26 @@ dependencies = [ [[package]] name = "iced_wgpu" -version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#384e8f6e219bb458720eafa5bb971b832c057f23" +version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "as-raw-xcb-connection", "bitflags 2.11.0", "bytemuck", "cosmic-client-toolkit", + "cryoglyph", "futures", "glam", "guillotiere", - "iced_glyphon", + "iced_debug", "iced_graphics", "log", "lyon", - "once_cell", "raw-window-handle", "resvg", "rustc-hash 2.1.1", "rustix 0.38.44", - "thiserror 1.0.69", + "thiserror 2.0.18", "tiny-xlib", "wayland-backend", "wayland-client", @@ -3368,8 +3102,8 @@ dependencies = [ [[package]] name = "iced_widget" -version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#384e8f6e219bb458720eafa5bb971b832c057f23" +version = "0.14.2" +source = "git+https://github.com/pop-os/libcosmic#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "cosmic-client-toolkit", "dnd", @@ -3377,30 +3111,31 @@ dependencies = [ "iced_runtime", "log", "num-traits", - "once_cell", "ouroboros", "rustc-hash 2.1.1", - "thiserror 1.0.69", + "thiserror 2.0.18", "unicode-segmentation", "window_clipboard", ] [[package]] name = "iced_winit" -version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#384e8f6e219bb458720eafa5bb971b832c057f23" +version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "cosmic-client-toolkit", + "cursor-icon", "dnd", + "iced_debug", "iced_futures", "iced_graphics", + "iced_program", "iced_runtime", "log", "raw-window-handle", "rustc-hash 2.1.1", "rustix 0.38.44", - "thiserror 1.0.69", - "tracing", + "thiserror 2.0.18", "wasm-bindgen-futures", "wayland-backend", "wayland-client", @@ -3409,6 +3144,7 @@ dependencies = [ "winapi", "window_clipboard", "winit", + "winit-core", "xkbcommon 0.7.0", "xkbcommon-dl", "xkeysym", @@ -3844,33 +3580,34 @@ dependencies = [ [[package]] name = "image" -version = "0.25.9" +version = "0.25.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a" +checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" dependencies = [ "bytemuck", "byteorder-lite", "moxcms", "num-traits", "png 0.18.1", - "zune-core", - "zune-jpeg", + "zune-core 0.5.1", + "zune-jpeg 0.5.14", +] + +[[package]] +name = "image-webp" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3" +dependencies = [ + "byteorder-lite", + "quick-error", ] [[package]] name = "imagesize" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "029d73f573d8e8d63e6d5020011d3255b28c3ba85d6cf870a07184ed23de9284" - -[[package]] -name = "immutable-chunkmap" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3e98b1520e49e252237edc238a39869da9f3241f2ec19dc788c1d24694d1e4" -dependencies = [ - "arrayvec", -] +checksum = "edcd27d72f2f071c64249075f42e205ff93c9a4c5f6c6da53e79ed9f9832c285" [[package]] name = "indexmap" @@ -3897,9 +3634,9 @@ dependencies = [ [[package]] name = "inotify" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" +checksum = "bd5b3eaf1a28b758ac0faa5a4254e8ab2705605496f1b1f3fbbc3988ad73d199" dependencies = [ "bitflags 2.11.0", "inotify-sys", @@ -3944,15 +3681,6 @@ version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd4f5b4d1c00331c5245163aacfe5f20be75b564c7112d45893d4ae038119eb0" -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", -] - [[package]] name = "intl-memoizer" version = "0.5.3" @@ -4009,9 +3737,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "ixdtf" @@ -4021,9 +3749,9 @@ checksum = "84de9d95a6d2547d9b77ee3f25fa0ee32e3c3a6484d47a55adebc0439c077992" [[package]] name = "jiff" -version = "0.2.21" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3e3d65f018c6ae946ab16e80944b97096ed73c35b221d1c478a6c81d8f57940" +checksum = "1a3546dc96b6d42c5f24902af9e2538e82e39ad350b0c766eb3fbf2d8f3d8359" dependencies = [ "jiff-static", "jiff-tzdb-platform", @@ -4036,20 +3764,20 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.21" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17c2b211d863c7fde02cbea8a3c1a439b98e109286554f2860bdded7ff83818" +checksum = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] name = "jiff-tzdb" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68971ebff725b9e2ca27a601c5eb38a4c5d64422c4cbab0c535f248087eda5c2" +checksum = "c900ef84826f1338a557697dc8fc601df9ca9af4ac137c7fb61d4c6f2dfd3076" [[package]] name = "jiff-tzdb-platform" @@ -4062,25 +3790,61 @@ dependencies = [ [[package]] name = "jni" -version = "0.21.1" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" dependencies = [ - "cesu8", "cfg-if", "combine", - "jni-sys", + "jni-macros", + "jni-sys 0.4.1", "log", - "thiserror 1.0.69", + "simd_cesu8", + "thiserror 2.0.18", "walkdir", - "windows-sys 0.45.0", + "windows-link 0.2.1", +] + +[[package]] +name = "jni-macros" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "simd_cesu8", + "syn", ] [[package]] name = "jni-sys" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn", +] [[package]] name = "jobserver" @@ -4092,17 +3856,11 @@ dependencies = [ "libc", ] -[[package]] -name = "jpeg-decoder" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07" - [[package]] name = "js-sys" -version = "0.3.88" +version = "0.3.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e709f3e3d22866f9c25b3aff01af289b18422cc8b4262fb19103ee80fe513d" +checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" dependencies = [ "once_cell", "wasm-bindgen", @@ -4110,35 +3868,28 @@ dependencies = [ [[package]] name = "kamadak-exif" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef4fc70d0ab7e5b6bafa30216a6b48705ea964cdfc29c050f2412295eba58077" +checksum = "1130d80c7374efad55a117d715a3af9368f0fa7a2c54573afc15a188cd984837" dependencies = [ "mutate_once", ] [[package]] -name = "khronos-egl" -version = "6.0.0" +name = "keyboard-types" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" +checksum = "0fbe853b403ae61a04233030ae8a79d94975281ed9770a1f9e246732b534b28d" dependencies = [ - "libc", - "libloading", - "pkg-config", + "bitflags 2.11.0", + "serde", ] -[[package]] -name = "khronos_api" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" - [[package]] name = "known-folders" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "770919970f7d2f74fea948900d35e2ef64f44129e8ae4015f59de1f0aca7c2a5" +checksum = "7a1886916523694cd6ea3d175f03a1e5010699a2a4cc13696d83d7bea1d80638" dependencies = [ "windows-sys 0.61.2", ] @@ -4198,14 +3949,14 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.183" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" [[package]] name = "libcosmic" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#384e8f6e219bb458720eafa5bb971b832c057f23" +source = "git+https://github.com/pop-os/libcosmic#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "apply", "ashpd 0.12.3", @@ -4219,6 +3970,7 @@ dependencies = [ "cosmic-theme", "css-color", "derive_setters", + "float-cmp 0.10.0", "freedesktop-desktop-entry", "futures", "i18n-embed", @@ -4238,7 +3990,6 @@ dependencies = [ "mime 0.3.17", "palette", "phf 0.13.1", - "raw-window-handle", "rfd", "ron 0.12.0", "rust-embed", @@ -4252,7 +4003,7 @@ dependencies = [ "tracing", "unicode-segmentation", "url", - "zbus 5.14.0", + "zbus", ] [[package]] @@ -4271,7 +4022,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -4282,13 +4033,14 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.12" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" +checksum = "7ddbf48fd451246b1f8c2610bd3b4ac0cc6e149d89832867093ab69a17194f08" dependencies = [ "bitflags 2.11.0", "libc", - "redox_syscall 0.7.1", + "plain", + "redox_syscall 0.7.3", ] [[package]] @@ -4329,18 +4081,21 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "lilt" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f67562e5eff6b20553fa9be1c503356768420994e28f67e3eafe6f41910e57ad" +dependencies = [ + "web-time", +] + [[package]] name = "linebender_resource_handle" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4a5ff6bcca6c4867b1c4fd4ef63e4db7436ef363e0ad7531d1558856bae64f4" -[[package]] -name = "linux-raw-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" - [[package]] name = "linux-raw-sys" version = "0.4.15" @@ -4353,6 +4108,12 @@ 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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + [[package]] name = "linux-raw-sys" version = "0.12.1" @@ -4406,20 +4167,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "469c962578b549a82f3d0cc72d0f77d1123780fa7121e2b03d78b0780f6ccac6" dependencies = [ "serde", - "zbus 5.14.0", + "zbus", ] [[package]] name = "lru" -version = "0.12.5" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +checksum = "a1dc47f592c06f33f8e3aea9591776ec7c9f9e4124778ff8a3c3b87159f7e593" [[package]] name = "lyon" -version = "1.0.16" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbcb7d54d54c8937364c9d41902d066656817dce1e03a44e5533afebd1ef4352" +checksum = "bd0578bdecb7d6d88987b8b2b1e3a4e2f81df9d0ece1078623324a567904e7b7" dependencies = [ "lyon_algorithms", "lyon_tessellation", @@ -4427,9 +4188,9 @@ dependencies = [ [[package]] name = "lyon_algorithms" -version = "1.0.16" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c0829e28c4f336396f250d850c3987e16ce6db057ffe047ce0dd54aab6b647" +checksum = "9815fac08e6fd96733a11dce4f9d15a3f338e96a2e2311ee21e1b738efc2bc0f" dependencies = [ "lyon_path", "num-traits", @@ -4437,9 +4198,9 @@ dependencies = [ [[package]] name = "lyon_geom" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e260b6de923e6e47adfedf6243013a7a874684165a6a277594ee3906021b2343" +checksum = "4336502e29e32af93cf2dad2214ed6003c17ceb5bd499df77b1de663b9042b92" dependencies = [ "arrayvec", "euclid", @@ -4448,9 +4209,9 @@ dependencies = [ [[package]] name = "lyon_path" -version = "1.0.16" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aeca86bcfd632a15984ba029b539ffb811e0a70bf55e814ef8b0f54f506fdeb" +checksum = "5c463f9c428b7fc5ec885dcd39ce4aa61e29111d0e33483f6f98c74e89d8621e" dependencies = [ "lyon_geom", "num-traits", @@ -4458,9 +4219,9 @@ dependencies = [ [[package]] name = "lyon_tessellation" -version = "1.0.16" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3f586142e1280335b1bc89539f7c97dd80f08fc43e9ab1b74ef0a42b04aa353" +checksum = "8e43b7e44161571868f5c931d12583592c223c5583eef86b08aa02b7048a3552" dependencies = [ "float_next_after", "lyon_path", @@ -4515,15 +4276,6 @@ dependencies = [ "libc", ] -[[package]] -name = "memoffset" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" -dependencies = [ - "autocfg", -] - [[package]] name = "memoffset" version = "0.9.1" @@ -4533,25 +4285,10 @@ dependencies = [ "autocfg", ] -[[package]] -name = "metal" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" -dependencies = [ - "bitflags 2.11.0", - "block", - "core-graphics-types", - "foreign-types", - "log", - "objc", - "paste", -] - [[package]] name = "mime" version = "0.1.0" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=pop-0.13-2#6b9faab87bea9cebec6ae036906fd67fed254f5f" +source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "smithay-clipboard", ] @@ -4592,9 +4329,9 @@ dependencies = [ [[package]] name = "moxcms" -version = "0.7.11" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac9557c559cd6fc9867e122e20d2cbefc9ca29d80d027a8e39310920ed2f0a97" +checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b" dependencies = [ "num-traits", "pxfm", @@ -4603,14 +4340,14 @@ dependencies = [ [[package]] name = "mpris2-zbus" version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#0fa672f8dadb884001ef9a251b149ed432879629" +source = "git+https://github.com/pop-os/dbus-settings-bindings#507e342c21d3ce6ae41b1d4f3fa2f0ad5ee23e75" dependencies = [ "futures-util", + "jiff", "serde", "thiserror 2.0.18", - "time", - "zbus 5.14.0", - "zvariant 5.10.0", + "zbus", + "zvariant", ] [[package]] @@ -4621,23 +4358,27 @@ checksum = "13d2233c9842d08cfe13f9eac96e207ca6a2ea10b80259ebe8ad0268be27d2af" [[package]] name = "naga" -version = "22.1.0" +version = "27.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bd5a652b6faf21496f2cfd88fc49989c8db0825d1f6746b1a71a6ede24a63ad" +checksum = "066cf25f0e8b11ee0df221219010f213ad429855f57c494f995590c861a9a7d8" dependencies = [ "arrayvec", "bit-set", "bitflags 2.11.0", - "cfg_aliases 0.1.1", + "cfg-if", + "cfg_aliases", "codespan-reporting", + "half", + "hashbrown 0.16.1", "hexf-parse", "indexmap 2.13.0", + "libm", "log", + "num-traits", + "once_cell", "rustc-hash 1.1.0", - "spirv", - "termcolor", - "thiserror 1.0.69", - "unicode-xid", + "thiserror 2.0.18", + "unicode-ident", ] [[package]] @@ -4647,9 +4388,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ "bitflags 2.11.0", - "jni-sys", + "jni-sys 0.3.1", "log", - "ndk-sys 0.6.0+11769913", + "ndk-sys", "num_enum", "raw-window-handle", "thiserror 1.0.69", @@ -4661,34 +4402,13 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" -[[package]] -name = "ndk-sys" -version = "0.5.0+25.2.9519653" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" -dependencies = [ - "jni-sys", -] - [[package]] name = "ndk-sys" version = "0.6.0+11769913" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" dependencies = [ - "jni-sys", -] - -[[package]] -name = "nix" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" -dependencies = [ - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset 0.7.1", + "jni-sys 0.3.1", ] [[package]] @@ -4699,7 +4419,7 @@ checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ "bitflags 2.11.0", "cfg-if", - "cfg_aliases 0.2.1", + "cfg_aliases", "libc", ] @@ -4711,16 +4431,16 @@ checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ "bitflags 2.11.0", "cfg-if", - "cfg_aliases 0.2.1", + "cfg_aliases", "libc", ] [[package]] name = "nm-secret-agent-manager" version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#0fa672f8dadb884001ef9a251b149ed432879629" +source = "git+https://github.com/pop-os/dbus-settings-bindings#507e342c21d3ce6ae41b1d4f3fa2f0ad5ee23e75" dependencies = [ - "zbus 5.14.0", + "zbus", ] [[package]] @@ -4813,9 +4533,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" +checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" [[package]] name = "num-derive" @@ -4825,7 +4545,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -4871,9 +4591,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" dependencies = [ "num_enum_derive", "rustversion", @@ -4881,21 +4601,21 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ - "proc-macro-crate 3.4.0", + "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] name = "numtoa" -version = "1.0.0-alpha1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3f98606e662e333dada0fa9fb6723a3c363fb4a66b51e47ce964cfaf58833d2" +checksum = "9e4d8a81ede501fad07191e746a299f4d79f6dcd053bab1b97af4ff5a90099f2" [[package]] name = "objc" @@ -4935,9 +4655,9 @@ dependencies = [ [[package]] name = "objc2" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" +checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" dependencies = [ "objc2-encode", ] @@ -4966,34 +4686,11 @@ checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ "bitflags 2.11.0", "block2 0.6.2", - "objc2 0.6.3", + "objc2 0.6.4", + "objc2-core-foundation", "objc2-foundation 0.3.2", ] -[[package]] -name = "objc2-cloud-kit" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" -dependencies = [ - "bitflags 2.11.0", - "block2 0.5.1", - "objc2 0.5.2", - "objc2-core-location", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-contacts" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" -dependencies = [ - "block2 0.5.1", - "objc2 0.5.2", - "objc2-foundation 0.2.2", -] - [[package]] name = "objc2-core-data" version = "0.2.2" @@ -5013,8 +4710,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ "bitflags 2.11.0", + "block2 0.6.2", "dispatch2", - "objc2 0.6.3", + "objc2 0.6.4", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" +dependencies = [ + "bitflags 2.11.0", + "libc", + "objc2-core-foundation", ] [[package]] @@ -5030,15 +4739,14 @@ dependencies = [ ] [[package]] -name = "objc2-core-location" -version = "0.2.2" +name = "objc2-core-video" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" +checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6" dependencies = [ - "block2 0.5.1", - "objc2 0.5.2", - "objc2-contacts", - "objc2-foundation 0.2.2", + "bitflags 2.11.0", + "objc2-core-foundation", + "objc2-core-graphics", ] [[package]] @@ -5055,7 +4763,6 @@ checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ "bitflags 2.11.0", "block2 0.5.1", - "dispatch", "libc", "objc2 0.5.2", ] @@ -5067,22 +4774,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ "bitflags 2.11.0", - "objc2 0.6.3", + "block2 0.6.2", + "objc2 0.6.4", "objc2-core-foundation", ] -[[package]] -name = "objc2-link-presentation" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" -dependencies = [ - "block2 0.5.1", - "objc2 0.5.2", - "objc2-app-kit 0.2.2", - "objc2-foundation 0.2.2", -] - [[package]] name = "objc2-metal" version = "0.2.2" @@ -5108,59 +4804,16 @@ dependencies = [ "objc2-metal", ] -[[package]] -name = "objc2-symbols" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" -dependencies = [ - "objc2 0.5.2", - "objc2-foundation 0.2.2", -] - [[package]] name = "objc2-ui-kit" -version = "0.2.2" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" dependencies = [ "bitflags 2.11.0", - "block2 0.5.1", - "objc2 0.5.2", - "objc2-cloud-kit", - "objc2-core-data", - "objc2-core-image", - "objc2-core-location", - "objc2-foundation 0.2.2", - "objc2-link-presentation", - "objc2-quartz-core", - "objc2-symbols", - "objc2-uniform-type-identifiers", - "objc2-user-notifications", -] - -[[package]] -name = "objc2-uniform-type-identifiers" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" -dependencies = [ - "block2 0.5.1", - "objc2 0.5.2", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-user-notifications" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" -dependencies = [ - "bitflags 2.11.0", - "block2 0.5.1", - "objc2 0.5.2", - "objc2-core-location", - "objc2-foundation 0.2.2", + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-foundation 0.3.2", ] [[package]] @@ -5174,9 +4827,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "option-ext" @@ -5186,9 +4839,9 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "orbclient" -version = "0.3.50" +version = "0.3.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ad2c6bae700b7aa5d1cc30c59bdd3a1c180b09dbaea51e2ae2b8e1cf211fdd" +checksum = "59aed3b33578edcfa1bc96a321d590d31832b6ad55a26f0313362ce687e9abd6" dependencies = [ "libc", "libredox", @@ -5225,7 +4878,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -5234,7 +4887,7 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b" dependencies = [ - "ttf-parser 0.25.1", + "ttf-parser", ] [[package]] @@ -5259,7 +4912,7 @@ dependencies = [ "by_address", "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -5268,17 +4921,6 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.6", -] - [[package]] name = "parking_lot" version = "0.12.5" @@ -5286,21 +4928,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", - "parking_lot_core 0.9.12", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" -dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall 0.2.16", - "smallvec", - "winapi", + "parking_lot_core", ] [[package]] @@ -5313,15 +4941,9 @@ dependencies = [ "libc", "redox_syscall 0.5.18", "smallvec", - "windows-link", + "windows-link 0.2.1", ] -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - [[package]] name = "percent-encoding" version = "2.3.2" @@ -5365,7 +4987,7 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" dependencies = [ - "fastrand 2.3.0", + "fastrand", "phf_shared 0.13.1", ] @@ -5379,7 +5001,7 @@ dependencies = [ "phf_shared 0.11.3", "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -5392,7 +5014,7 @@ dependencies = [ "phf_shared 0.13.1", "proc-macro2", "quote", - "syn 2.0.117", + "syn", "uncased", ] @@ -5423,29 +5045,29 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project" -version = "1.1.10" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +checksum = "f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.10" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pin-utils" @@ -5455,12 +5077,12 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +checksum = "c835479a4443ded371d6c535cbfd8d31ad92c5d23ae9770a61bc155e4992a3c1" dependencies = [ "atomic-waker", - "fastrand 2.3.0", + "fastrand", "futures-io", ] @@ -5498,6 +5120,12 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + [[package]] name = "png" version = "0.17.16" @@ -5524,22 +5152,6 @@ dependencies = [ "miniz_oxide", ] -[[package]] -name = "polling" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" -dependencies = [ - "autocfg", - "bitflags 1.3.2", - "cfg-if", - "concurrent-queue", - "libc", - "log", - "pin-project-lite", - "windows-sys 0.48.0", -] - [[package]] name = "polling" version = "3.11.0" @@ -5568,9 +5180,9 @@ checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" [[package]] name = "portable-atomic-util" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a9db96d7fa8782dd8c15ce32ffe8680bbd1e978a43bf51a34d39483540495f5" +checksum = "091397be61a01d4be58e7841595bd4bfedb15f1cd54977d79b8271e94ed799a3" dependencies = [ "portable-atomic", ] @@ -5601,12 +5213,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "presser" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" - [[package]] name = "prettyplease" version = "0.2.37" @@ -5614,26 +5220,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.117", + "syn", ] [[package]] name = "proc-macro-crate" -version = "1.3.1" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ - "once_cell", - "toml_edit 0.19.15", -] - -[[package]] -name = "proc-macro-crate" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" -dependencies = [ - "toml_edit 0.23.10+spec-1.0.0", + "toml_edit", ] [[package]] @@ -5655,7 +5251,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -5675,7 +5271,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", "version_check", "yansi", ] @@ -5709,27 +5305,40 @@ checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" [[package]] name = "pxfm" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7186d3822593aa4393561d186d1393b3923e9d6163d3fbfd6e825e3e6cf3e6a8" -dependencies = [ - "num-traits", -] +checksum = "b5a041e753da8b807c9255f28de81879c78c876392ff2469cde94799b2896b9d" + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" [[package]] name = "quick-xml" version = "0.38.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "quick-xml" +version = "0.39.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "958f21e8e7ceb5a1aa7fa87fab28e7c75976e0bfe7e23ff069e0a260f894067d" dependencies = [ "memchr", ] [[package]] name = "quote" -version = "1.0.44" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] @@ -5740,14 +5349,18 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "rand" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ - "libc", - "rand_chacha 0.3.1", "rand_core 0.6.4", ] @@ -5757,20 +5370,10 @@ version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ - "rand_chacha 0.9.0", + "rand_chacha", "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" @@ -5786,9 +5389,6 @@ 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" @@ -5799,12 +5399,6 @@ dependencies = [ "getrandom 0.3.4", ] -[[package]] -name = "range-alloc" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d6831663a5098ea164f89cff59c6284e95f4e3c76ce9848d4529f5ccca9bde" - [[package]] name = "rangemap" version = "1.7.1" @@ -5835,26 +5429,7 @@ checksum = "7b634fabf032fab15307ffd272149b622260f55974d9fad689292a5d33df02e5" dependencies = [ "bytemuck", "core_maths", - "font-types 0.11.0", -] - -[[package]] -name = "redox_event" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3514da49aa6ca4cff5088a1b382ef3a0d9149964d29bb49ebd03fd66cc575a18" -dependencies = [ - "bitflags 2.11.0", - "libredox", -] - -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags 1.3.2", + "font-types 0.11.1", ] [[package]] @@ -5868,9 +5443,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.7.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35985aa610addc02e24fc232012c86fd11f14111180f902b67e2d5331f8ebf2b" +checksum = "6ce70a74e890531977d37e532c34d45e9055d2409ed08ddba14529471ed0be16" dependencies = [ "bitflags 2.11.0", ] @@ -5903,7 +5478,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -5931,9 +5506,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.9" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a96887878f22d7bad8a3b6dc5b7440e0ada9a245242924394987b21cf2210a4c" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] name = "renderdoc-sys" @@ -5943,18 +5518,19 @@ checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" [[package]] name = "resvg" -version = "0.42.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "944d052815156ac8fa77eaac055220e95ba0b01fa8887108ca710c03805d9051" +checksum = "a8928798c0a55e03c9ca6c4c6846f76377427d2c1e1f7e6de3c06ae57942df43" dependencies = [ "gif", - "jpeg-decoder", + "image-webp", "log", "pico-args", "rgb", "svgtypes", "tiny-skia", "usvg", + "zune-jpeg 0.4.21", ] [[package]] @@ -5968,7 +5544,7 @@ dependencies = [ "dispatch2", "js-sys", "log", - "objc2 0.6.3", + "objc2 0.6.4", "objc2-app-kit 0.3.2", "objc2-core-foundation", "objc2-foundation 0.3.2", @@ -5983,9 +5559,9 @@ dependencies = [ [[package]] name = "rgb" -version = "0.8.52" +version = "0.8.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" dependencies = [ "bytemuck", ] @@ -6043,7 +5619,7 @@ dependencies = [ "proc-macro2", "quote", "rust-embed-utils", - "syn 2.0.117", + "syn", "walkdir", ] @@ -6070,17 +5646,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] -name = "rustix" -version = "0.37.28" +name = "rustc_version" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "519165d378b97752ca44bbe15047d5d3409e875f39327546b42ac81d7e18c1b6" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys 0.3.8", - "windows-sys 0.48.0", + "semver", ] [[package]] @@ -6117,14 +5688,16 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "rustybuzz" -version = "0.14.1" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfb9cf8877777222e4a3bc7eb247e398b56baba500c38c1c46842431adc8b55c" +checksum = "fd3c7c96f8a08ee34eff8857b11b49b07d71d1c3f4e88f8a88d4c9e9f90b1702" dependencies = [ "bitflags 2.11.0", "bytemuck", + "core_maths", + "log", "smallvec", - "ttf-parser 0.21.1", + "ttf-parser", "unicode-bidi-mirroring", "unicode-ccc", "unicode-properties", @@ -6178,14 +5751,14 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sctk-adwaita" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" +checksum = "1dd3accc0f3f4bbaf2c9e1957a030dc582028130c67660d44c0a0345a22ca69b" dependencies = [ "ab_glyph", "log", "memmap2 0.9.10", - "smithay-client-toolkit 0.19.2", + "smithay-client-toolkit", "tiny-skia", ] @@ -6205,7 +5778,7 @@ dependencies = [ "once_cell", "serde", "sha2", - "zbus 5.14.0", + "zbus", ] [[package]] @@ -6269,7 +5842,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -6294,23 +5867,23 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "876ac351060d4f882bb1032b6369eb0aef79ad9df1ea8bc404874d8cc3d0cd98" dependencies = [ "serde_core", ] [[package]] name = "serde_with" -version = "3.16.1" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" +checksum = "dd5414fad8e6907dbdd5bc441a50ae8d6e26151a03b1de04d89a5576de61d01f" dependencies = [ "base64", "chrono", @@ -6327,25 +5900,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.16.1" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" +checksum = "d3db8978e608f1fe7357e211969fd9abdcae80bac1ba7a3369bb7eb6b404eb65" dependencies = [ - "darling 0.21.3", + "darling 0.23.0", "proc-macro2", "quote", - "syn 2.0.117", -] - -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", + "syn", ] [[package]] @@ -6390,6 +5952,22 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" +[[package]] +name = "simd_cesu8" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +dependencies = [ + "rustc_version", + "simdutf8", +] + +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + [[package]] name = "simplecss" version = "0.2.2" @@ -6446,31 +6024,6 @@ version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" -[[package]] -name = "smithay-client-toolkit" -version = "0.19.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" -dependencies = [ - "bitflags 2.11.0", - "calloop 0.13.0", - "calloop-wayland-source 0.3.0", - "cursor-icon", - "libc", - "log", - "memmap2 0.9.10", - "rustix 0.38.44", - "thiserror 1.0.69", - "wayland-backend", - "wayland-client", - "wayland-csd-frame", - "wayland-cursor", - "wayland-protocols", - "wayland-protocols-wlr", - "wayland-scanner", - "xkeysym", -] - [[package]] name = "smithay-client-toolkit" version = "0.20.0" @@ -6479,8 +6032,8 @@ checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0" dependencies = [ "bitflags 2.11.0", "bytemuck", - "calloop 0.14.4", - "calloop-wayland-source 0.4.1", + "calloop", + "calloop-wayland-source", "cursor-icon", "libc", "log", @@ -6504,47 +6057,32 @@ dependencies = [ [[package]] name = "smithay-clipboard" version = "0.8.0" -source = "git+https://github.com/pop-os/smithay-clipboard?tag=pop-dnd-5#5a3007def49eb678d1144850c9ee04b80707c56a" +source = "git+https://github.com/pop-os/smithay-clipboard?tag=sctk-0.20#859b02c88f45c554049a67c6ddeec1692ce0e20b" dependencies = [ "libc", "raw-window-handle", - "smithay-client-toolkit 0.19.2", + "smithay-client-toolkit", "wayland-backend", ] [[package]] name = "smol_str" -version = "0.2.2" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" +checksum = "4aaa7368fcf4852a4c2dd92df0cace6a71f2091ca0a23391ce7f3a31833f1523" dependencies = [ - "serde", -] - -[[package]] -name = "smol_str" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f7a918bd2a9951d18ee6e48f076843e8e73a9a5d22cf05bcd4b7a81bdd04e17" - -[[package]] -name = "socket2" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" -dependencies = [ - "libc", - "winapi", + "borsh", + "serde_core", ] [[package]] name = "socket2" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" +checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -6554,11 +6092,11 @@ source = "git+https://github.com/pop-os/softbuffer?tag=cosmic-4.0#a3f77e251e7422 dependencies = [ "as-raw-xcb-connection", "bytemuck", - "cfg_aliases 0.2.1", + "cfg_aliases", "cocoa", "core-graphics", "drm 0.11.1", - "fastrand 2.3.0", + "fastrand", "foreign-types", "js-sys", "log", @@ -6577,15 +6115,6 @@ dependencies = [ "x11rb", ] -[[package]] -name = "spirv" -version = "0.3.0+sdk-1.3.268.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" -dependencies = [ - "bitflags 2.11.0", -] - [[package]] name = "stable_deref_trait" version = "1.2.1" @@ -6604,7 +6133,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" dependencies = [ - "float-cmp", + "float-cmp 0.9.0", ] [[package]] @@ -6632,7 +6161,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.117", + "syn", ] [[package]] @@ -6671,20 +6200,9 @@ dependencies = [ [[package]] name = "switcheroo-control" version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#0fa672f8dadb884001ef9a251b149ed432879629" +source = "git+https://github.com/pop-os/dbus-settings-bindings#507e342c21d3ce6ae41b1d4f3fa2f0ad5ee23e75" dependencies = [ - "zbus 5.14.0", -] - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", + "zbus", ] [[package]] @@ -6706,7 +6224,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -6757,26 +6275,17 @@ checksum = "83176759e9416cf81ee66cb6508dbfe9c96f20b8b56265a39917551c23c70964" [[package]] name = "tempfile" -version = "3.25.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0136791f7c95b1f6dd99f9cc786b91bb81c3800b639b3478e561ddb7be95e5f1" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ - "fastrand 2.3.0", - "getrandom 0.4.1", + "fastrand", + "getrandom 0.4.2", "once_cell", "rustix 1.1.4", "windows-sys 0.61.2", ] -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - [[package]] name = "thiserror" version = "1.0.69" @@ -6803,7 +6312,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -6814,7 +6323,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -6860,9 +6369,9 @@ dependencies = [ [[package]] name = "timedate-zbus" version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#0fa672f8dadb884001ef9a251b149ed432879629" +source = "git+https://github.com/pop-os/dbus-settings-bindings#507e342c21d3ce6ae41b1d4f3fa2f0ad5ee23e75" dependencies = [ - "zbus 5.14.0", + "zbus", ] [[package]] @@ -6917,9 +6426,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" dependencies = [ "tinyvec_macros", ] @@ -6931,18 +6440,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] -name = "tokio" -version = "1.49.0" +name = "tl" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" +checksum = "b130bd8a58c163224b44e217b4239ca7b927d82bf6cc2fea1fc561d15056e3f7" + +[[package]] +name = "tokio" +version = "1.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" dependencies = [ "bytes", "libc", "mio", - "parking_lot 0.12.5", + "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.6.2", + "socket2", "tokio-macros", "tracing", "windows-sys 0.61.2", @@ -6950,13 +6465,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -6991,15 +6506,9 @@ dependencies = [ "toml_datetime 0.7.5+spec-1.1.0", "toml_parser", "toml_writer", - "winnow 0.7.14", + "winnow 0.7.15", ] -[[package]] -name = "toml_datetime" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" - [[package]] name = "toml_datetime" version = "0.7.5+spec-1.1.0" @@ -7010,42 +6519,40 @@ dependencies = [ ] [[package]] -name = "toml_edit" -version = "0.19.15" +name = "toml_datetime" +version = "1.1.0+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +checksum = "97251a7c317e03ad83774a8752a7e81fb6067740609f75ea2b585b569a59198f" dependencies = [ - "indexmap 2.13.0", - "toml_datetime 0.6.11", - "winnow 0.5.40", + "serde_core", ] [[package]] name = "toml_edit" -version = "0.23.10+spec-1.0.0" +version = "0.25.8+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" +checksum = "16bff38f1d86c47f9ff0647e6838d7bb362522bdf44006c7068c2b1e606f1f3c" dependencies = [ "indexmap 2.13.0", - "toml_datetime 0.7.5+spec-1.1.0", + "toml_datetime 1.1.0+spec-1.1.0", "toml_parser", - "winnow 0.7.14", + "winnow 1.0.0", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.0+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "2334f11ee363607eb04df9b8fc8a13ca1715a72ba8662a26ac285c98aabb4011" dependencies = [ - "winnow 0.7.14", + "winnow 1.0.0", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.0+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "d282ade6016312faf3e41e57ebbba0c073e4056dab1232ab1cb624199648f8ed" [[package]] name = "tracing" @@ -7067,7 +6574,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -7093,9 +6600,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.22" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" dependencies = [ "matchers", "nu-ansi-term", @@ -7109,12 +6616,6 @@ dependencies = [ "tracing-log", ] -[[package]] -name = "ttf-parser" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c591d83f69777866b9126b24c6dd9a18351f177e49d625920d19f989fd31cf8" - [[package]] name = "ttf-parser" version = "0.25.1" @@ -7159,13 +6660,13 @@ dependencies = [ [[package]] name = "uds_windows" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +checksum = "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e" dependencies = [ - "memoffset 0.9.1", + "memoffset", "tempfile", - "winapi", + "windows-sys 0.61.2", ] [[package]] @@ -7210,15 +6711,15 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-bidi-mirroring" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23cb788ffebc92c5948d0e997106233eeb1d8b9512f93f41651f52b6c5f5af86" +checksum = "5dfa6e8c60bb66d49db113e0125ee8711b7647b5579dc7f5f19c42357ed039fe" [[package]] name = "unicode-ccc" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df77b101bcc4ea3d78dafc5ad7e4f58ceffe0b2b16bf446aeb50b6cb4157656" +checksum = "ce61d488bcdc9bc8b5d1772c404828b17fc481c0a582b5581e95fb233aef503e" [[package]] name = "unicode-ident" @@ -7246,9 +6747,9 @@ checksum = "383ad40bb927465ec0ce7720e033cb4ca06912855fc35db31b5755d0de75b1ee" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" [[package]] name = "unicode-vo" @@ -7256,12 +6757,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94" -[[package]] -name = "unicode-width" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" - [[package]] name = "unicode-width" version = "0.2.2" @@ -7277,11 +6772,11 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "upower_dbus" version = "0.3.2" -source = "git+https://github.com/pop-os/dbus-settings-bindings#0fa672f8dadb884001ef9a251b149ed432879629" +source = "git+https://github.com/pop-os/dbus-settings-bindings#507e342c21d3ce6ae41b1d4f3fa2f0ad5ee23e75" dependencies = [ "serde", "serde_repr", - "zbus 5.14.0", + "zbus", ] [[package]] @@ -7305,14 +6800,14 @@ checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] name = "usvg" -version = "0.42.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b84ea542ae85c715f07b082438a4231c3760539d902e11d093847a0b22963032" +checksum = "80be9b06fbae3b8b303400ab20778c80bbaf338f563afe567cf3c9eea17b47ef" dependencies = [ "base64", "data-url", "flate2", - "fontdb 0.18.0", + "fontdb", "imagesize", "kurbo 0.11.3", "log", @@ -7344,11 +6839,11 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] name = "uuid" -version = "1.21.0" +version = "1.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37" dependencies = [ - "getrandom 0.4.1", + "getrandom 0.4.2", "js-sys", "serde_core", "wasm-bindgen", @@ -7372,12 +6867,6 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" -[[package]] -name = "waker-fn" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" - [[package]] name = "walkdir" version = "2.5.0" @@ -7414,9 +6903,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.111" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec1adf1535672f5b7824f817792b1afd731d7e843d2d04ec8f27e8cb51edd8ac" +checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" dependencies = [ "cfg-if", "once_cell", @@ -7427,9 +6916,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.61" +version = "0.4.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe88540d1c934c4ec8e6db0afa536876c5441289d7f9f9123d4f065ac1250a6b" +checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8" dependencies = [ "cfg-if", "futures-util", @@ -7441,9 +6930,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.111" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19e638317c08b21663aed4d2b9a2091450548954695ff4efa75bff5fa546b3b1" +checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7451,22 +6940,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.111" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c64760850114d03d5f65457e96fc988f11f01d38fbaa51b254e4ab5809102af" +checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.111" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60eecd4fe26177cfa3339eb00b4a36445889ba3ad37080c2429879718e20ca41" +checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" dependencies = [ "unicode-ident", ] @@ -7493,21 +6982,6 @@ dependencies = [ "wasmparser", ] -[[package]] -name = "wasm-timer" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" -dependencies = [ - "futures", - "js-sys", - "parking_lot 0.11.2", - "pin-utils", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - [[package]] name = "wasmparser" version = "0.244.0" @@ -7521,10 +6995,24 @@ dependencies = [ ] [[package]] -name = "wayland-backend" -version = "0.3.12" +name = "wasmtimer" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee64194ccd96bf648f42a65a7e589547096dfa702f7cadef84347b66ad164f9" +checksum = "1c598d6b99ea013e35844697fc4670d08339d5cda15588f193c6beedd12f644b" +dependencies = [ + "futures", + "js-sys", + "parking_lot", + "pin-utils", + "slab", + "wasm-bindgen", +] + +[[package]] +name = "wayland-backend" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa75f400b7f719bcd68b3f47cd939ba654cedeef690f486db71331eec4c6a406" dependencies = [ "cc", "downcast-rs", @@ -7536,9 +7024,9 @@ dependencies = [ [[package]] name = "wayland-client" -version = "0.31.12" +version = "0.31.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e6faa537fbb6c186cb9f1d41f2f811a4120d1b57ec61f50da451a0c5122bec" +checksum = "ab51d9f7c071abeee76007e2b742499e535148035bb835f97aaed1338cf516c3" dependencies = [ "bitflags 2.11.0", "rustix 1.1.4", @@ -7559,9 +7047,9 @@ dependencies = [ [[package]] name = "wayland-cursor" -version = "0.31.12" +version = "0.31.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5864c4b5b6064b06b1e8b74ead4a98a6c45a285fe7a0e784d24735f011fdb078" +checksum = "4b3298683470fbdc6ca40151dfc48c8f2fd4c41a26e13042f801f85002384091" dependencies = [ "rustix 1.1.4", "wayland-client", @@ -7570,9 +7058,9 @@ dependencies = [ [[package]] name = "wayland-protocols" -version = "0.32.10" +version = "0.32.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baeda9ffbcfc8cd6ddaade385eaf2393bd2115a69523c735f12242353c3df4f3" +checksum = "b23b5df31ceff1328f06ac607591d5ba360cf58f90c8fad4ac8d3a55a3c4aec7" dependencies = [ "bitflags 2.11.0", "wayland-backend", @@ -7596,9 +7084,9 @@ dependencies = [ [[package]] name = "wayland-protocols-misc" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791c58fdeec5406aa37169dd815327d1e47f334219b523444bc26d70ceb4c34e" +checksum = "429b99200febaf95d4f4e46deff6fe4382bcff3280ee16a41cf887b3c3364984" dependencies = [ "bitflags 2.11.0", "wayland-backend", @@ -7609,9 +7097,9 @@ dependencies = [ [[package]] name = "wayland-protocols-plasma" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa98634619300a535a9a97f338aed9a5ff1e01a461943e8346ff4ae26007306b" +checksum = "d392fc283a87774afc9beefcd6f931582bb97fe0e6ced0b306a62cb1d026527c" dependencies = [ "bitflags 2.11.0", "wayland-backend", @@ -7622,9 +7110,9 @@ dependencies = [ [[package]] name = "wayland-protocols-wlr" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9597cdf02cf0c34cd5823786dce6b5ae8598f05c2daf5621b6e178d4f7345f3" +checksum = "78248e4cc0eff8163370ba5c158630dcae1f3497a586b826eca2ef5f348d6235" dependencies = [ "bitflags 2.11.0", "wayland-backend", @@ -7636,20 +7124,20 @@ dependencies = [ [[package]] name = "wayland-scanner" -version = "0.31.8" +version = "0.31.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5423e94b6a63e68e439803a3e153a9252d5ead12fd853334e2ad33997e3889e3" +checksum = "c86287151a309799b821ca709b7345a048a2956af05957c89cb824ab919fa4e3" dependencies = [ "proc-macro2", - "quick-xml", + "quick-xml 0.39.2", "quote", ] [[package]] name = "wayland-server" -version = "0.31.11" +version = "0.31.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9297ab90f8d1f597711d36455c5b1b2290eca59b8134485e377a296b80b118c9" +checksum = "63736a4a73e781cf6a736aa32c5d6773c3eb5389197562742a8c611b49b5e359" dependencies = [ "bitflags 2.11.0", "downcast-rs", @@ -7660,9 +7148,9 @@ dependencies = [ [[package]] name = "wayland-sys" -version = "0.31.8" +version = "0.31.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6dbfc3ac5ef974c92a2235805cc0114033018ae1290a72e474aa8b28cbbdfd" +checksum = "374f6b70e8e0d6bf9461a32988fd553b59ff630964924dad6e4a4eb6bd538d17" dependencies = [ "dlib", "log", @@ -7672,9 +7160,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.88" +version = "0.3.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d6bb20ed2d9572df8584f6dc81d68a41a625cadc6f15999d649a70ce7e3597a" +checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9" dependencies = [ "js-sys", "wasm-bindgen", @@ -7698,24 +7186,22 @@ checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" [[package]] name = "wgpu" -version = "22.1.0" +version = "27.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d1c4ba43f80542cf63a0a6ed3134629ae73e8ab51e4b765a67f3aa062eb433" +checksum = "bfe68bac7cde125de7a731c3400723cadaaf1703795ad3f4805f187459cd7a77" dependencies = [ "arrayvec", - "cfg_aliases 0.1.1", + "bitflags 2.11.0", + "cfg-if", + "cfg_aliases", "document-features", - "js-sys", + "hashbrown 0.16.1", "log", - "naga", - "parking_lot 0.12.5", + "portable-atomic", "profiling", "raw-window-handle", "smallvec", "static_assertions", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", "wgpu-core", "wgpu-hal", "wgpu-types", @@ -7723,91 +7209,77 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "22.1.0" +version = "27.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0348c840d1051b8e86c3bcd31206080c5e71e5933dabd79be1ce732b0b2f089a" +checksum = "27a75de515543b1897b26119f93731b385a19aea165a1ec5f0e3acecc229cae7" dependencies = [ "arrayvec", + "bit-set", "bit-vec", "bitflags 2.11.0", - "cfg_aliases 0.1.1", + "bytemuck", + "cfg_aliases", "document-features", + "hashbrown 0.16.1", "indexmap 2.13.0", "log", "naga", "once_cell", - "parking_lot 0.12.5", + "parking_lot", + "portable-atomic", "profiling", "raw-window-handle", "rustc-hash 1.1.0", "smallvec", - "thiserror 1.0.69", + "thiserror 2.0.18", + "wgpu-core-deps-windows-linux-android", "wgpu-hal", "wgpu-types", ] [[package]] -name = "wgpu-hal" -version = "22.0.0" +name = "wgpu-core-deps-windows-linux-android" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6bbf4b4de8b2a83c0401d9e5ae0080a2792055f25859a02bf9be97952bbed4f" +checksum = "71197027d61a71748e4120f05a9242b2ad142e3c01f8c1b47707945a879a03c3" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-hal" +version = "27.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b21cb61c57ee198bc4aff71aeadff4cbb80b927beb912506af9c780d64313ce" dependencies = [ - "android_system_properties", - "arrayvec", - "ash", - "bit-set", "bitflags 2.11.0", - "block", - "cfg_aliases 0.1.1", - "core-graphics-types", - "d3d12", - "glow", - "glutin_wgl_sys", - "gpu-alloc", - "gpu-allocator", - "gpu-descriptor", - "hassle-rs", - "js-sys", - "khronos-egl", - "libc", + "cfg-if", + "cfg_aliases", "libloading", "log", - "metal", "naga", - "ndk-sys 0.5.0+25.2.9519653", - "objc", - "once_cell", - "parking_lot 0.12.5", - "profiling", - "range-alloc", + "portable-atomic", + "portable-atomic-util", "raw-window-handle", "renderdoc-sys", - "rustc-hash 1.1.0", - "smallvec", - "thiserror 1.0.69", - "wasm-bindgen", - "web-sys", + "thiserror 2.0.18", "wgpu-types", - "winapi", ] [[package]] name = "wgpu-types" -version = "22.0.0" +version = "27.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc9d91f0e2c4b51434dfa6db77846f2793149d8e73f800fa2e41f52b8eac3c5d" +checksum = "afdcf84c395990db737f2dd91628706cb31e86d72e53482320d368e52b5da5eb" dependencies = [ "bitflags 2.11.0", + "bytemuck", "js-sys", + "log", + "thiserror 2.0.18", "web-sys", ] -[[package]] -name = "widestring" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" - [[package]] name = "winapi" version = "0.3.9" @@ -7842,7 +7314,7 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "window_clipboard" version = "0.4.1" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=pop-0.13-2#6b9faab87bea9cebec6ae036906fd67fed254f5f" +source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "clipboard-win", "clipboard_macos", @@ -7856,43 +7328,37 @@ dependencies = [ [[package]] name = "windows" -version = "0.52.0" +version = "0.61.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ - "windows-core 0.52.0", - "windows-targets 0.52.6", + "windows-collections", + "windows-core 0.61.2", + "windows-future", + "windows-link 0.1.3", + "windows-numerics", ] [[package]] -name = "windows" -version = "0.54.0" +name = "windows-collections" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" dependencies = [ - "windows-core 0.54.0", - "windows-implement 0.53.0", - "windows-interface 0.53.0", - "windows-targets 0.52.6", + "windows-core 0.61.2", ] [[package]] name = "windows-core" -version = "0.52.0" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-core" -version = "0.54.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" -dependencies = [ - "windows-result 0.1.2", - "windows-targets 0.52.6", + "windows-implement", + "windows-interface", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", ] [[package]] @@ -7901,22 +7367,22 @@ 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-link", + "windows-implement", + "windows-interface", + "windows-link 0.2.1", "windows-result 0.4.1", - "windows-strings", + "windows-strings 0.5.1", ] [[package]] -name = "windows-implement" -version = "0.53.0" +name = "windows-future" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942ac266be9249c84ca862f0a164a39533dc2f6f33dc98ec89c8da99b82ea0bd" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", + "windows-core 0.61.2", + "windows-link 0.1.3", + "windows-threading", ] [[package]] @@ -7927,18 +7393,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", -] - -[[package]] -name = "windows-interface" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da33557140a288fae4e1d5f8873aaf9eb6613a9cf82c3e070223ff177f598b60" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -7949,9 +7404,15 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + [[package]] name = "windows-link" version = "0.2.1" @@ -7959,12 +7420,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] -name = "windows-result" -version = "0.1.2" +name = "windows-numerics" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" dependencies = [ - "windows-targets 0.52.6", + "windows-core 0.61.2", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", ] [[package]] @@ -7973,7 +7444,16 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "windows-link", + "windows-link 0.2.1", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link 0.1.3", ] [[package]] @@ -7982,16 +7462,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", + "windows-link 0.2.1", ] [[package]] @@ -8036,22 +7507,7 @@ version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", + "windows-link 0.2.1", ] [[package]] @@ -8091,7 +7547,7 @@ version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows-link", + "windows-link 0.2.1", "windows_aarch64_gnullvm 0.53.1", "windows_aarch64_msvc 0.53.1", "windows_i686_gnu 0.53.1", @@ -8103,10 +7559,13 @@ dependencies = [ ] [[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" +name = "windows-threading" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link 0.1.3", +] [[package]] name = "windows_aarch64_gnullvm" @@ -8126,12 +7585,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -8150,12 +7603,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -8186,12 +7633,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -8210,12 +7651,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -8234,12 +7669,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -8258,12 +7687,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -8284,51 +7707,214 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winit" -version = "0.30.5" -source = "git+https://github.com/pop-os/winit.git?tag=iced-xdg-surface-0.13-rc#dd46a1499bcc38f2134ab869e8860a32e091c55b" +version = "0.31.0-beta.2" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" dependencies = [ - "ahash", - "android-activity", - "atomic-waker", "bitflags 2.11.0", - "block2 0.5.1", - "bytemuck", - "calloop 0.13.0", - "cfg_aliases 0.2.1", - "concurrent-queue", - "core-foundation", - "core-graphics", + "cfg_aliases", "cursor-icon", "dpi", - "js-sys", "libc", - "libredox", - "memmap2 0.9.10", - "ndk", - "objc2 0.5.2", - "objc2-app-kit 0.2.2", - "objc2-foundation 0.2.2", - "objc2-ui-kit", - "orbclient", - "percent-encoding", - "pin-project", "raw-window-handle", - "redox_event", - "rustix 0.38.44", - "sctk-adwaita", - "smithay-client-toolkit 0.19.2", - "smol_str 0.2.2", + "rustix 1.1.4", + "smol_str", + "tracing", + "winit-android", + "winit-appkit", + "winit-common", + "winit-core", + "winit-orbital", + "winit-uikit", + "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#a610ac9c7a72b39ff102ed4d946291618dc725b6" +dependencies = [ + "android-activity", + "bitflags 2.11.0", + "dpi", + "ndk", + "raw-window-handle", + "smol_str", + "tracing", + "winit-core", +] + +[[package]] +name = "winit-appkit" +version = "0.31.0-beta.2" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +dependencies = [ + "bitflags 2.11.0", + "block2 0.6.2", + "dispatch2", + "dpi", + "objc2 0.6.4", + "objc2-app-kit 0.3.2", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-core-video", + "objc2-foundation 0.3.2", + "raw-window-handle", + "smol_str", + "tracing", + "winit-common", + "winit-core", +] + +[[package]] +name = "winit-common" +version = "0.31.0-beta.2" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +dependencies = [ + "memmap2 0.9.10", + "objc2 0.6.4", + "objc2-core-foundation", + "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#a610ac9c7a72b39ff102ed4d946291618dc725b6" +dependencies = [ + "bitflags 2.11.0", + "cursor-icon", + "dpi", + "keyboard-types", + "raw-window-handle", + "smol_str", + "web-time", +] + +[[package]] +name = "winit-orbital" +version = "0.31.0-beta.2" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +dependencies = [ + "bitflags 2.11.0", + "dpi", + "libredox", + "orbclient", + "raw-window-handle", + "redox_syscall 0.7.3", + "smol_str", + "tracing", + "winit-core", +] + +[[package]] +name = "winit-uikit" +version = "0.31.0-beta.2" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +dependencies = [ + "bitflags 2.11.0", + "block2 0.6.2", + "dispatch2", + "dpi", + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-foundation 0.3.2", + "objc2-ui-kit", + "raw-window-handle", + "smol_str", + "tracing", + "winit-common", + "winit-core", +] + +[[package]] +name = "winit-wayland" +version = "0.31.0-beta.2" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +dependencies = [ + "ahash", + "bitflags 2.11.0", + "calloop", + "cursor-icon", + "dpi", + "libc", + "memmap2 0.9.10", + "raw-window-handle", + "rustix 1.1.4", + "sctk-adwaita", + "smithay-client-toolkit", + "smol_str", "tracing", - "unicode-segmentation", - "wasm-bindgen", - "wasm-bindgen-futures", "wayland-backend", "wayland-client", "wayland-protocols", "wayland-protocols-plasma", + "winit-common", + "winit-core", +] + +[[package]] +name = "winit-web" +version = "0.31.0-beta.2" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +dependencies = [ + "atomic-waker", + "bitflags 2.11.0", + "concurrent-queue", + "cursor-icon", + "dpi", + "js-sys", + "pin-project", + "raw-window-handle", + "smol_str", + "tracing", + "wasm-bindgen", + "wasm-bindgen-futures", "web-sys", "web-time", - "windows-sys 0.52.0", + "winit-core", +] + +[[package]] +name = "winit-win32" +version = "0.31.0-beta.2" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +dependencies = [ + "bitflags 2.11.0", + "cursor-icon", + "dpi", + "raw-window-handle", + "smol_str", + "tracing", + "unicode-segmentation", + "windows-sys 0.59.0", + "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#a610ac9c7a72b39ff102ed4d946291618dc725b6" +dependencies = [ + "bitflags 2.11.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", @@ -8336,18 +7922,18 @@ dependencies = [ [[package]] name = "winnow" -version = "0.5.40" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" dependencies = [ "memchr", ] [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "a90e88e4667264a994d34e6d1ab2d26d398dcdca8b7f52bec8668957517fc7d8" dependencies = [ "memchr", ] @@ -8382,7 +7968,7 @@ dependencies = [ "heck 0.5.0", "indexmap 2.13.0", "prettyplease", - "syn 2.0.117", + "syn", "wasm-metadata", "wit-bindgen-core", "wit-component", @@ -8398,7 +7984,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.117", + "syn", "wit-bindgen-core", "wit-bindgen-rust", ] @@ -8500,20 +8086,10 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fb433233f2df9344722454bc7e96465c9d03bff9d77c248f9e7523fe79585b5" -[[package]] -name = "xdg-home" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] - [[package]] name = "xdg-shell-wrapper-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-panel#6a783a18c3079955ff4cde1d00eaadf8e77b869c" +source = "git+https://github.com/pop-os/cosmic-panel#d518c7d25ef96f1a9696aa8cce008656bf66ece4" dependencies = [ "serde", "wayland-protocols-wlr", @@ -8654,65 +8230,29 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", "synstructure", ] -[[package]] -name = "zbus" -version = "3.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "675d170b632a6ad49804c8cf2105d7c31eddd3312555cffd4b740e08e97c25e6" -dependencies = [ - "async-broadcast 0.5.1", - "async-process 1.8.1", - "async-recursion", - "async-trait", - "byteorder", - "derivative", - "enumflags2", - "event-listener 2.5.3", - "futures-core", - "futures-sink", - "futures-util", - "hex", - "nix 0.26.4", - "once_cell", - "ordered-stream", - "rand 0.8.5", - "serde", - "serde_repr", - "sha1", - "static_assertions", - "tokio", - "tracing", - "uds_windows", - "winapi", - "xdg-home", - "zbus_macros 3.15.2", - "zbus_names 2.6.1", - "zvariant 3.15.2", -] - [[package]] name = "zbus" version = "5.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca82f95dbd3943a40a53cfded6c2d0a2ca26192011846a1810c4256ef92c60bc" dependencies = [ - "async-broadcast 0.7.2", + "async-broadcast", "async-executor", - "async-io 2.6.0", - "async-lock 3.4.2", - "async-process 2.5.0", + "async-io", + "async-lock", + "async-process", "async-recursion", "async-task", "async-trait", "blocking", "enumflags2", - "event-listener 5.4.1", + "event-listener", "futures-core", - "futures-lite 2.6.1", + "futures-lite", "hex", "libc", "ordered-stream", @@ -8724,24 +8264,34 @@ dependencies = [ "uds_windows", "uuid", "windows-sys 0.61.2", - "winnow 0.7.14", - "zbus_macros 5.14.0", - "zbus_names 4.3.1", - "zvariant 5.10.0", + "winnow 0.7.15", + "zbus_macros", + "zbus_names", + "zvariant", ] [[package]] -name = "zbus_macros" -version = "3.15.2" +name = "zbus-lockstep" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7131497b0f887e8061b430c530240063d33bf9455fa34438f388a245da69e0a5" +checksum = "6998de05217a084b7578728a9443d04ea4cd80f2a0839b8d78770b76ccd45863" +dependencies = [ + "zbus_xml", + "zvariant", +] + +[[package]] +name = "zbus-lockstep-macros" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10da05367f3a7b7553c8cdf8fa91aee6b64afebe32b51c95177957efc47ca3a0" dependencies = [ - "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "regex", - "syn 1.0.109", - "zvariant_utils 1.0.1", + "syn", + "zbus-lockstep", + "zbus_xml", + "zvariant", ] [[package]] @@ -8750,24 +8300,13 @@ version = "5.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897e79616e84aac4b2c46e9132a4f63b93105d54fe8c0e8f6bffc21fa8d49222" dependencies = [ - "proc-macro-crate 3.4.0", + "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.117", - "zbus_names 4.3.1", - "zvariant 5.10.0", - "zvariant_utils 3.3.0", -] - -[[package]] -name = "zbus_names" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "437d738d3750bed6ca9b8d423ccc7a8eb284f6b1d6d4e225a0e4e6258d864c8d" -dependencies = [ - "serde", - "static_assertions", - "zvariant 3.15.2", + "syn", + "zbus_names", + "zvariant", + "zvariant_utils", ] [[package]] @@ -8777,8 +8316,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffd8af6d5b78619bab301ff3c560a5bd22426150253db278f164d6cf3b72c50f" dependencies = [ "serde", - "winnow 0.7.14", - "zvariant 5.10.0", + "winnow 0.7.15", + "zvariant", +] + +[[package]] +name = "zbus_xml" +version = "5.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "441a0064125265655bccc3a6af6bef56814d9277ac83fce48b1cd7e160b80eac" +dependencies = [ + "quick-xml 0.38.4", + "serde", + "zbus_names", + "zvariant", ] [[package]] @@ -8789,22 +8340,22 @@ checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524" [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "efbb2a062be311f2ba113ce66f697a4dc589f85e78a4aea276200804cea0ed87" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "0e8bc7269b54418e7aeeef514aa68f8690b8c0489a06b0136e5f57c4c5ccab89" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -8824,7 +8375,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", "synstructure", ] @@ -8865,7 +8416,7 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -8874,6 +8425,12 @@ version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" +[[package]] +name = "zune-core" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" + [[package]] name = "zune-core" version = "0.5.1" @@ -8882,25 +8439,20 @@ checksum = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9" [[package]] name = "zune-jpeg" -version = "0.5.12" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "410e9ecef634c709e3831c2cfdb8d9c32164fae1c67496d5b68fff728eec37fe" +checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713" dependencies = [ - "zune-core", + "zune-core 0.4.12", ] [[package]] -name = "zvariant" -version = "3.15.2" +name = "zune-jpeg" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eef2be88ba09b358d3b58aca6e41cd853631d44787f319a1383ca83424fb2db" +checksum = "0b7a1c0af6e5d8d1363f4994b7a091ccf963d8b694f7da5b0b9cceb82da2c0a6" dependencies = [ - "byteorder", - "enumflags2", - "libc", - "serde", - "static_assertions", - "zvariant_derive 3.15.2", + "zune-core 0.5.1", ] [[package]] @@ -8913,22 +8465,9 @@ dependencies = [ "enumflags2", "serde", "url", - "winnow 0.7.14", - "zvariant_derive 5.10.0", - "zvariant_utils 3.3.0", -] - -[[package]] -name = "zvariant_derive" -version = "3.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37c24dc0bed72f5f90d1f8bb5b07228cbf63b3c6e9f82d82559d4bae666e7ed9" -dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 1.0.109", - "zvariant_utils 1.0.1", + "winnow 0.7.15", + "zvariant_derive", + "zvariant_utils", ] [[package]] @@ -8937,22 +8476,11 @@ version = "5.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b59b012ebe9c46656f9cc08d8da8b4c726510aef12559da3e5f1bf72780752c" dependencies = [ - "proc-macro-crate 3.4.0", + "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.117", - "zvariant_utils 3.3.0", -] - -[[package]] -name = "zvariant_utils" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "syn", + "zvariant_utils", ] [[package]] @@ -8964,6 +8492,6 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", - "winnow 0.7.14", + "syn", + "winnow 0.7.15", ] diff --git a/Cargo.toml b/Cargo.toml index d052de31..5e6940de 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,8 +30,6 @@ cosmic-applets-config = { path = "cosmic-applets-config" } cosmic-protocols = { git = "https://github.com/pop-os/cosmic-protocols", default-features = false, features = [ "client", ], rev = "d0e95be" } -cosmic-time = { git = "https://github.com/pop-os/cosmic-time", default-features = false } -# cosmic-time = { path = "../cosmic-time", default-features = false ] } futures = "0.3" futures-util = "0.3" @@ -59,24 +57,26 @@ tracing = "0.1" tracing-subscriber = { version = "0.3.22", features = ["env-filter"] } tracing-log = "0.2.0" tokio = { version = "1.49.0", features = ["full"] } +# cosmic-config = { path = "../libcosmic/cosmic-config" } cosmic-config = { git = "https://github.com/pop-os/libcosmic" } serde = { version = "1.0.228", features = ["derive"] } [profile.release] -opt-level = 3 -panic = "abort" -lto = "thin" +# opt-level = 3 +# panic = "abort" +# lto = "thin" +opt-level = 1 [workspace.metadata.cargo-machete] ignored = ["libcosmic"] # [patch."https://github.com/pop-os/libcosmic"] -# cosmic-config = { git = "https://github.com/pop-os/libcosmic//", branch = "" } -# libcosmic = { git = "https://github.com/pop-os/libcosmic//", branch = "" } -# iced_futures = { git = "https://github.com/pop-os/libcosmic//", branch = "" } # 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" } diff --git a/cosmic-app-list/src/app.rs b/cosmic-app-list/src/app.rs index 0e5f8910..205b8383 100755 --- a/cosmic-app-list/src/app.rs +++ b/cosmic-app-list/src/app.rs @@ -19,7 +19,6 @@ use cctk::{ workspace::v1::client::ext_workspace_handle_v1::ExtWorkspaceHandleV1, }, }; -use cosmic::desktop::fde::{self, DesktopEntry, get_languages_from_env, unicase::Ascii}; use cosmic::{ Apply, Element, Task, app, applet::{ @@ -34,20 +33,27 @@ use cosmic::{ clipboard::mime::{AllowedMimeTypes, AsMimeTypes}, event::listen_with, platform_specific::shell::commands::popup::{destroy_popup, get_popup}, - widget::{Column, Row, column, mouse_area, row, stack, vertical_rule, vertical_space}, + widget::{ + Column, Row, column, mouse_area, row, rule::vertical as vertical_rule, + space::horizontal as horizontal_space, space::vertical as vertical_space, stack, + }, window, }, iced_runtime::{core::event, dnd::peek_dnd}, surface, theme::{self, Button, Container}, widget::{ - DndDestination, Image, button, container, divider, dnd_source, horizontal_space, + DndDestination, Image, button, container, divider, dnd_source, icon::{self, from_name}, image::Handle, rectangle_tracker::{RectangleTracker, RectangleUpdate, rectangle_tracker_subscription}, svg, text, }, }; +use cosmic::{ + desktop::fde::{self, DesktopEntry, get_languages_from_env, unicase::Ascii}, + widget::DndSource, +}; use cosmic_app_list_config::{APP_ID, AppListConfig}; use cosmic_protocols::toplevel_info::v1::client::zcosmic_toplevel_handle_v1::State; use futures::future::pending; @@ -295,7 +301,7 @@ impl DockItem { let path = desktop_info.path.clone(); let icon_button = if dnd_source_enabled && interaction_enabled { - dnd_source(icon_button) + DndSource::with_id(icon_button, cosmic::widget::Id::new("asdfasdfadfs")) .window(window_id) .drag_icon(move |_| { ( @@ -2410,7 +2416,7 @@ impl cosmic::Application for CosmicAppList { ]) } - fn style(&self) -> Option { + fn style(&self) -> Option { Some(cosmic::applet::style()) } diff --git a/cosmic-app-list/src/wayland_subscription.rs b/cosmic-app-list/src/wayland_subscription.rs index 016e83ae..5122373d 100644 --- a/cosmic-app-list/src/wayland_subscription.rs +++ b/cosmic-app-list/src/wayland_subscription.rs @@ -13,7 +13,7 @@ use cctk::{ }; use cosmic::{ iced::{self, Subscription, stream}, - iced_core::image::Bytes, + iced_core::Bytes, }; use image::EncodableLayout; @@ -31,16 +31,15 @@ pub static WAYLAND_RX: LazyLock>>> LazyLock::new(|| Mutex::new(None)); pub fn wayland_subscription() -> iced::Subscription { - Subscription::run_with_id( - std::any::TypeId::of::(), + Subscription::run_with(std::any::TypeId::of::(), |_| { stream::channel(50, move |mut output| async move { let mut state = State::Waiting; loop { state = start_listening(state, &mut output).await; } - }), - ) + }) + }) } pub enum State { diff --git a/cosmic-applet-a11y/Cargo.toml b/cosmic-applet-a11y/Cargo.toml index f34d9434..a5bb12b4 100644 --- a/cosmic-applet-a11y/Cargo.toml +++ b/cosmic-applet-a11y/Cargo.toml @@ -7,7 +7,6 @@ edition = "2024" anyhow.workspace = true cctk.workspace = true cosmic-protocols.workspace = true -cosmic-time.workspace = true i18n-embed-fl.workspace = true i18n-embed.workspace = true libcosmic.workspace = true @@ -19,6 +18,8 @@ tracing.workspace = true [dependencies.cosmic-settings-a11y-manager-subscription] git = "https://github.com/pop-os/cosmic-settings" +# path = "../../cosmic-settings/subscriptions/a11y-manager" [dependencies.cosmic-settings-accessibility-subscription] git = "https://github.com/pop-os/cosmic-settings" +# path = "../../cosmic-settings/subscriptions/accessibility" diff --git a/cosmic-applet-a11y/src/app.rs b/cosmic-applet-a11y/src/app.rs index 27c2dba3..ad5f2a1e 100644 --- a/cosmic-applet-a11y/src/app.rs +++ b/cosmic-applet-a11y/src/app.rs @@ -22,23 +22,16 @@ use cosmic::{ }, surface, theme::{self, CosmicTheme}, - widget::{Column, divider, text}, + widget::{Column, divider, text, toggler}, }; use cosmic_settings_a11y_manager_subscription::{ self as cosmic_a11y_manager, AccessibilityEvent, AccessibilityRequest, ColorFilter, }; use cosmic_settings_accessibility_subscription::{self as accessibility}; -use cosmic_time::{Instant, Timeline, anim, chain, id}; use std::sync::LazyLock; use tokio::sync::mpsc::UnboundedSender; -static READER_TOGGLE: LazyLock = LazyLock::new(id::Toggler::unique); -static FILTER_TOGGLE: LazyLock = LazyLock::new(id::Toggler::unique); -static HC_TOGGLE: LazyLock = LazyLock::new(id::Toggler::unique); -static MAGNIFIER_TOGGLE: LazyLock = LazyLock::new(id::Toggler::unique); -static INVERT_COLORS_TOGGLE: LazyLock = LazyLock::new(id::Toggler::unique); - pub fn run() -> cosmic::iced::Result { cosmic::applet::run::(()) } @@ -54,7 +47,6 @@ struct CosmicA11yApplet { dbus_sender: Option>, wayland_sender: Option>, wayland_protocol_version: Option, - timeline: Timeline, token_tx: Option>, screen_filter_active: bool, } @@ -63,12 +55,11 @@ struct CosmicA11yApplet { enum Message { TogglePopup, CloseRequested(window::Id), - HighContrastEnabled(chain::Toggler, bool), - ScreenReaderEnabled(chain::Toggler, bool), - MagnifierEnabled(chain::Toggler, bool), - InvertedColorsEnabled(chain::Toggler, bool), - FilterColorsEnabled(chain::Toggler, bool), - Frame(Instant), + HighContrastEnabled(bool), + ScreenReaderEnabled(bool), + MagnifierEnabled(bool), + InvertedColorsEnabled(bool), + FilterColorsEnabled(bool), Token(TokenUpdate), OpenSettings, DBusUpdate(accessibility::Response), @@ -104,28 +95,24 @@ impl cosmic::Application for CosmicA11yApplet { fn update(&mut self, message: Self::Message) -> app::Task { match message { - Message::Frame(now) => self.timeline.now(now), - Message::ScreenReaderEnabled(chain, enabled) => { + Message::ScreenReaderEnabled(enabled) => { if let Some(tx) = &self.dbus_sender { - self.timeline.set_chain(chain).start(); self.reader_enabled = enabled; let _ = tx.send(accessibility::Request::ScreenReader(enabled)); } else { self.reader_enabled = false; } } - Message::MagnifierEnabled(chain, enabled) => { + Message::MagnifierEnabled(enabled) => { if let Some(tx) = &self.wayland_sender { - self.timeline.set_chain(chain).start(); self.magnifier_enabled = enabled; let _ = tx.send(AccessibilityRequest::Magnifier(enabled)); } else { self.magnifier_enabled = false; } } - Message::InvertedColorsEnabled(chain, enabled) => { + Message::InvertedColorsEnabled(enabled) => { if let Some(tx) = &self.wayland_sender { - self.timeline.set_chain(chain).start(); self.inverted_colors_enabled = enabled; let _ = tx.send(AccessibilityRequest::ScreenFilter { inverted: enabled, @@ -135,9 +122,8 @@ impl cosmic::Application for CosmicA11yApplet { self.inverted_colors_enabled = false; } } - Message::FilterColorsEnabled(chain, enabled) => { + Message::FilterColorsEnabled(enabled) => { if let Some(sender) = self.wayland_sender.as_ref() { - self.timeline.set_chain(chain).start(); self.screen_filter_active = enabled; let _ = sender.send(AccessibilityRequest::ScreenFilter { inverted: self.inverted_colors_enabled, @@ -149,8 +135,6 @@ impl cosmic::Application for CosmicA11yApplet { if let Some(p) = self.popup.take() { return destroy_popup(p); } else { - self.timeline = Timeline::new(); - let new_id = window::Id::unique(); self.popup.replace(new_id); @@ -170,13 +154,13 @@ impl cosmic::Application for CosmicA11yApplet { self.popup = None; } } - Message::HighContrastEnabled(chain, enabled) => { + Message::HighContrastEnabled(enabled) => { if self.core.system_theme().cosmic().is_high_contrast == enabled || self.high_contrast.is_some_and(|hc| hc == enabled) { return Task::none(); } - self.timeline.set_chain(chain).start(); + self.high_contrast = Some(enabled); _ = std::thread::spawn(move || { @@ -319,62 +303,44 @@ impl cosmic::Application for CosmicA11yApplet { } = theme::active().cosmic().spacing; let reader_toggle = padded_control( - anim!( - READER_TOGGLE, - &self.timeline, - fl!("screen-reader"), - self.reader_enabled, - Message::ScreenReaderEnabled, - ) - .text_size(14) - .width(Length::Fill), + toggler(self.reader_enabled) + .on_toggle(Message::ScreenReaderEnabled) + .text_size(14) + .width(Length::Fill) + .label(fl!("screen-reader")), ); let magnifier_toggle = padded_control( - anim!( - MAGNIFIER_TOGGLE, - &self.timeline, - fl!("magnifier"), - self.magnifier_enabled, - Message::MagnifierEnabled, - ) - .text_size(14) - .width(Length::Fill), + toggler(self.magnifier_enabled) + .on_toggle(Message::MagnifierEnabled) + .text_size(14) + .width(Length::Fill) + .label(fl!("magnifier")), ); let invert_colors_toggle = padded_control( - anim!( - INVERT_COLORS_TOGGLE, - &self.timeline, - fl!("invert-colors"), - self.inverted_colors_enabled, - Message::InvertedColorsEnabled, - ) - .text_size(14) - .width(Length::Fill), + toggler(self.inverted_colors_enabled) + .on_toggle(Message::InvertedColorsEnabled) + .text_size(14) + .width(Length::Fill) + .label(fl!("invert-colors")), ); let hc_colors_toggle = padded_control( - anim!( - HC_TOGGLE, - &self.timeline, - fl!("high-contrast"), + toggler( self.high_contrast .unwrap_or(self.core.system_theme().cosmic().is_high_contrast), - Message::HighContrastEnabled, ) + .on_toggle(Message::HighContrastEnabled) + .label(fl!("high-contrast")) .text_size(14) .width(Length::Fill), ); let filter_colors_toggle = padded_control( - anim!( - FILTER_TOGGLE, - &self.timeline, - fl!("filter-colors"), - self.screen_filter_active, - Message::FilterColorsEnabled, - ) - .text_size(14) - .width(Length::Fill), + toggler(self.screen_filter_active) + .on_toggle(Message::FilterColorsEnabled) + .label(fl!("filter-colors")) + .width(Length::Fill) + .text_size(14), ); let content_list = Column::with_capacity(5) @@ -406,9 +372,6 @@ impl cosmic::Application for CosmicA11yApplet { Subscription::batch([ accessibility::subscription().map(Message::DBusUpdate), backend::wayland::a11y_subscription().map(Message::WaylandUpdate), - self.timeline - .as_subscription() - .map(|(_, now)| Message::Frame(now)), activation_token_subscription(0).map(Message::Token), ]) } @@ -417,7 +380,7 @@ impl cosmic::Application for CosmicA11yApplet { Some(Message::CloseRequested(id)) } - fn style(&self) -> Option { + fn style(&self) -> Option { Some(cosmic::applet::style()) } } diff --git a/cosmic-applet-a11y/src/backend/wayland/mod.rs b/cosmic-applet-a11y/src/backend/wayland/mod.rs index f66cbb2d..fa9796f0 100644 --- a/cosmic-applet-a11y/src/backend/wayland/mod.rs +++ b/cosmic-applet-a11y/src/backend/wayland/mod.rs @@ -26,16 +26,15 @@ pub enum WaylandUpdate { } pub fn a11y_subscription() -> iced::Subscription { - Subscription::run_with_id( - std::any::TypeId::of::(), + Subscription::run_with(std::any::TypeId::of::(), |_| { stream::channel(50, move |mut output| async move { let mut state = State::Waiting; loop { state = start_listening(state, &mut output).await; } - }), - ) + }) + }) } async fn start_listening( diff --git a/cosmic-applet-audio/Cargo.toml b/cosmic-applet-audio/Cargo.toml index 2b4d3624..96d37cad 100644 --- a/cosmic-applet-audio/Cargo.toml +++ b/cosmic-applet-audio/Cargo.toml @@ -5,7 +5,6 @@ edition = "2024" license = "GPL-3.0-only" [dependencies] -cosmic-time.workspace = true i18n-embed-fl.workspace = true i18n-embed.workspace = true libcosmic.workspace = true @@ -23,3 +22,4 @@ zbus.workspace = true [dependencies.cosmic-settings-sound-subscription] git = "https://github.com/pop-os/cosmic-settings" +# path = "../../cosmic-settings/subscriptions/sound" diff --git a/cosmic-applet-audio/src/lib.rs b/cosmic-applet-audio/src/lib.rs index 598cb7ba..5f49d0f9 100644 --- a/cosmic-applet-audio/src/lib.rs +++ b/cosmic-applet-audio/src/lib.rs @@ -24,20 +24,16 @@ use cosmic::{ window, }, surface, theme, - widget::{Row, button, container, divider, horizontal_space, icon, text}, + widget::{Row, button, container, divider, icon, space, text, toggler}, }; use cosmic_settings_sound_subscription as css; -use cosmic_time::{Instant, Timeline, anim, chain, id}; use iced::platform_specific::shell::wayland::commands::popup::{destroy_popup, get_popup}; use mpris_subscription::{MprisRequest, MprisUpdate}; use mpris2_zbus::player::PlaybackStatus; -use std::sync::LazyLock; mod config; mod mpris_subscription; -static SHOW_MEDIA_CONTROLS: LazyLock = LazyLock::new(id::Toggler::unique); - const GO_BACK: &str = "media-skip-backward-symbolic"; const GO_NEXT: &str = "media-skip-forward-symbolic"; const PAUSE: &str = "media-playback-pause-symbolic"; @@ -66,8 +62,6 @@ pub struct Audio { sink_breakpoints: &'static [u32], /// Breakpoitns for the source volume slider. source_breakpoints: &'static [u32], - /// Track animations used by the revealers. - timeline: Timeline, /// Config file specific to this applet. config: AudioAppletConfig, /// mpris player status @@ -129,8 +123,7 @@ pub enum Message { InputToggle, TogglePopup, CloseRequested(window::Id), - ToggleMediaControlsInTopPanel(chain::Toggler, bool), - Frame(Instant), + ToggleMediaControlsInTopPanel(bool), ConfigChanged(AudioAppletConfig), Mpris(mpris_subscription::MprisUpdate), MprisRequest(MprisRequest), @@ -272,13 +265,12 @@ impl cosmic::Application for Audio { &mut self.core } - fn style(&self) -> Option { + fn style(&self) -> Option { Some(cosmic::applet::style()) } fn update(&mut self, message: Message) -> app::Task { match message { - Message::Frame(now) => self.timeline.now(now), Message::Ignore => {} Message::TogglePopup => { if let Some(p) = self.popup.take() { @@ -286,7 +278,6 @@ impl cosmic::Application for Audio { } else { let new_id = window::Id::unique(); self.popup.replace(new_id); - self.timeline = Timeline::new(); (self.max_sink_volume, self.sink_breakpoints) = if amplification_sink() { (150, &[100][..]) @@ -365,8 +356,7 @@ impl cosmic::Application for Audio { .map(|message| Message::Subscription(message).into()); } - Message::ToggleMediaControlsInTopPanel(chain, enabled) => { - self.timeline.set_chain(chain).start(); + Message::ToggleMediaControlsInTopPanel(enabled) => { self.config.show_media_controls_in_top_panel = enabled; if let Ok(helper) = cosmic::cosmic_config::Config::new(Self::APP_ID, AudioAppletConfig::VERSION) @@ -478,9 +468,6 @@ impl cosmic::Application for Audio { fn subscription(&self) -> Subscription { Subscription::batch([ - self.timeline - .as_subscription() - .map(|(_, now)| Message::Frame(now)), self.core.watch_config(Self::APP_ID).map(|u| { for err in u.errors { tracing::error!(?err, "Error watching config"); @@ -532,6 +519,7 @@ impl cosmic::Application for Audio { applet_column::Column::with_children(playback_buttons) .push(btn) .align_x(Alignment::Center) + .height(Length::Shrink) // TODO configurable variable from the panel? .spacing( -(self.core.applet.suggested_padding(true).0 as f32) @@ -542,6 +530,7 @@ impl cosmic::Application for Audio { applet_row::Row::with_children(playback_buttons) .push(btn) .align_y(Alignment::Center) + .width(Length::Shrink) // TODO configurable variable from the panel? .spacing( -(self.core.applet.suggested_padding(true).0 as f32) @@ -696,7 +685,7 @@ impl cosmic::Application for Audio { ); let mut control_elements = Vec::with_capacity(4); - control_elements.push(horizontal_space().width(Length::Fill).into()); + control_elements.push(space::horizontal().width(Length::Fill).into()); if let Some(go_prev) = self.go_previous(32) { control_elements.push(go_prev); } @@ -745,16 +734,11 @@ impl cosmic::Application for Audio { audio_content, padded_control(divider::horizontal::default()).padding([space_xxs, space_s]), padded_control( - anim!( - // toggler - SHOW_MEDIA_CONTROLS, - &self.timeline, - Some(fl!("show-media-controls")), - self.config.show_media_controls_in_top_panel, - Message::ToggleMediaControlsInTopPanel, - ) - .text_size(14) - .width(Length::Fill) + toggler(self.config.show_media_controls_in_top_panel) + .on_toggle(Message::ToggleMediaControlsInTopPanel) + .label(fl!("show-media-controls")) + .text_size(14) + .width(Length::Fill) ), padded_control(divider::horizontal::default()).padding([space_xxs, space_s]), menu_button(text::body(fl!("sound-settings"))).on_press(Message::OpenSettings) diff --git a/cosmic-applet-audio/src/mouse_area.rs b/cosmic-applet-audio/src/mouse_area.rs index cc928c1f..431f2608 100644 --- a/cosmic-applet-audio/src/mouse_area.rs +++ b/cosmic-applet-audio/src/mouse_area.rs @@ -156,50 +156,51 @@ where } fn layout( - &self, + &mut self, tree: &mut Tree, renderer: &Renderer, limits: &layout::Limits, ) -> layout::Node { self.content - .as_widget() + .as_widget_mut() .layout(&mut tree.children[0], renderer, limits) } fn operate( - &self, + &mut self, tree: &mut Tree, layout: Layout<'_>, renderer: &Renderer, operation: &mut dyn Operation<()>, ) { self.content - .as_widget() + .as_widget_mut() .operate(&mut tree.children[0], layout, renderer, operation); } - fn on_event( + fn update( &mut self, tree: &mut Tree, - event: Event, + event: &Event, layout: Layout<'_>, cursor: mouse::Cursor, renderer: &Renderer, clipboard: &mut dyn Clipboard, shell: &mut Shell<'_, Message>, viewport: &Rectangle, - ) -> event::Status { - if let event::Status::Captured = self.content.as_widget_mut().on_event( + ) { + self.content.as_widget_mut().update( &mut tree.children[0], - event.clone(), + &event, layout, cursor, renderer, clipboard, shell, viewport, - ) { - return event::Status::Captured; + ); + if shell.is_event_captured() { + return; } update( @@ -209,7 +210,7 @@ where cursor, shell, tree.state.downcast_mut::(), - ) + ); } fn mouse_interaction( @@ -249,17 +250,24 @@ where viewport, ); } + fn overlay<'b>( &'b mut self, tree: &'b mut Tree, - layout: Layout<'_>, + layout: Layout<'b>, renderer: &Renderer, + viewport: &Rectangle, translation: Vector, ) -> Option> { - self.content - .as_widget_mut() - .overlay(&mut tree.children[0], layout, renderer, translation) + self.content.as_widget_mut().overlay( + &mut tree.children[0], + layout, + renderer, + viewport, + translation, + ) } + fn drag_destinations( &self, state: &Tree, @@ -298,7 +306,7 @@ fn update( cursor: mouse::Cursor, shell: &mut Shell<'_, Message>, state: &mut State, -) -> event::Status { +) { if !cursor.is_over(layout.bounds()) { if !state.is_out_of_bounds { if widget @@ -312,12 +320,13 @@ fn update( if let Some(message) = widget.on_mouse_exit.as_ref() { shell.publish(message.clone()); } - return event::Status::Captured; + shell.capture_event(); + return; } } } - return event::Status::Ignored; + return; } if let Some(message) = widget.on_press.as_ref() { @@ -326,8 +335,8 @@ fn update( { state.drag_initiated = cursor.position(); shell.publish(message.clone()); - - return event::Status::Captured; + shell.capture_event(); + return; } } @@ -337,32 +346,32 @@ fn update( { state.drag_initiated = None; shell.publish(message.clone()); - - return event::Status::Captured; + shell.capture_event(); + return; } } if let Some(message) = widget.on_right_press.as_ref() { if let Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Right)) = event { shell.publish(message.clone()); - - return event::Status::Captured; + shell.capture_event(); + return; } } if let Some(message) = widget.on_right_release.as_ref() { if let Event::Mouse(mouse::Event::ButtonReleased(mouse::Button::Right)) = event { shell.publish(message.clone()); - - return event::Status::Captured; + shell.capture_event(); + return; } } if let Some(message) = widget.on_middle_press.as_ref() { if let Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Middle)) = event { shell.publish(message.clone()); - - return event::Status::Captured; + shell.capture_event(); + return; } } @@ -370,7 +379,8 @@ fn update( if let Event::Mouse(mouse::Event::ButtonReleased(mouse::Button::Middle)) = event { shell.publish(message.clone()); - return event::Status::Captured; + shell.capture_event(); + return; } } if let Some(message) = widget @@ -384,7 +394,8 @@ fn update( if widget.on_mouse_enter.is_some() { shell.publish(message.clone()); } - return event::Status::Captured; + shell.capture_event(); + return; } } } @@ -400,8 +411,8 @@ fn update( if position.distance(drag_source) > 1.0 { state.drag_initiated = None; shell.publish(message.clone()); - - return event::Status::Captured; + shell.capture_event(); + return; } } } @@ -409,9 +420,8 @@ fn update( if let Some(message) = widget.on_mouse_wheel.as_ref() { if let Event::Mouse(mouse::Event::WheelScrolled { delta }) = event { shell.publish((message)(*delta)); - return event::Status::Captured; + shell.capture_event(); + return; } } - - event::Status::Ignored } diff --git a/cosmic-applet-audio/src/mpris_subscription.rs b/cosmic-applet-audio/src/mpris_subscription.rs index c2e010dc..b2493acf 100644 --- a/cosmic-applet-audio/src/mpris_subscription.rs +++ b/cosmic-applet-audio/src/mpris_subscription.rs @@ -83,14 +83,13 @@ impl PlayerStatus { pub fn mpris_subscription( id: I, ) -> iced::Subscription { - Subscription::run_with_id( - id, + Subscription::run_with(id, |_| { stream::channel(50, move |mut output| async move { run(&mut output).await; let _ = output.send(MprisUpdate::Finished).await; futures::future::pending().await - }), - ) + }) + }) } #[derive(Clone, Debug)] diff --git a/cosmic-applet-battery/Cargo.toml b/cosmic-applet-battery/Cargo.toml index b9c4dd13..2218f638 100644 --- a/cosmic-applet-battery/Cargo.toml +++ b/cosmic-applet-battery/Cargo.toml @@ -6,7 +6,6 @@ license = "GPL-3.0-only" [dependencies] anyhow.workspace = true -cosmic-time.workspace = true cosmic-config.workspace = true cosmic-applets-config.workspace = true drm = "0.14.1" @@ -26,6 +25,8 @@ serde.workspace = true [dependencies.cosmic-settings-upower-subscription] 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" +# path = "../../cosmic-settings/subscriptions/settings-daemon" diff --git a/cosmic-applet-battery/src/app.rs b/cosmic-applet-battery/src/app.rs index 5c15c19c..973eb282 100644 --- a/cosmic-applet-battery/src/app.rs +++ b/cosmic-applet-battery/src/app.rs @@ -29,7 +29,7 @@ use cosmic::{ iced_core::{Alignment, Background, Border, Color, Shadow}, surface, theme::{self, Button}, - widget::{button, divider, horizontal_space, icon, scrollable, slider, text, vertical_space}, + widget::{button, divider, icon, scrollable, slider, space, text, toggler}, }; use cosmic_applets_config::battery::BatteryAppletConfig; use cosmic_config::{Config, CosmicConfigEntry}; @@ -39,8 +39,6 @@ use cosmic_settings_upower_subscription::{ kbdbacklight::{KeyboardBacklightRequest, KeyboardBacklightUpdate, kbd_backlight_subscription}, }; -use cosmic_time::{Instant, Timeline, anim, chain, id}; - use rustc_hash::FxHashMap; use std::{path::PathBuf, sync::LazyLock, time::Duration}; use tokio::sync::mpsc::UnboundedSender; @@ -65,8 +63,6 @@ pub fn run() -> cosmic::iced::Result { cosmic::applet::run::(()) } -static MAX_CHARGE: LazyLock = LazyLock::new(id::Toggler::unique); - #[derive(Clone, Default)] struct GPUData { name: String, @@ -95,7 +91,6 @@ struct CosmicBatteryApplet { kbd_sender: Option>, power_profile: Power, power_profile_sender: Option>, - timeline: Timeline, token_tx: Option>, zbus_connection: Option, dragging_screen_brightness: bool, @@ -186,7 +181,7 @@ enum Message { SetScreenBrightnessDebounced, ReleaseScreenBrightness, InitChargingLimit(Option), - SetChargingLimit(chain::Toggler, bool), + SetChargingLimit(bool), KeyboardBacklight(KeyboardBacklightUpdate), UpowerDevice(DeviceDbusEvent), GpuInit(UnboundedSender<()>), @@ -197,7 +192,6 @@ enum Message { InitProfile(UnboundedSender, Power), Profile(Power), SelectProfile(Power), - Frame(Instant), ConfigChanged(BatteryAppletConfig), Token(TokenUpdate), OpenSettings, @@ -248,7 +242,6 @@ impl cosmic::Application for CosmicBatteryApplet { fn update(&mut self, message: Self::Message) -> app::Task { match message { - Message::Frame(now) => self.timeline.now(now), Message::SetKbdBrightness(brightness) => { self.kbd_brightness = Some(brightness); @@ -330,8 +323,7 @@ impl cosmic::Application for CosmicBatteryApplet { self.set_charging_limit(enable); } } - Message::SetChargingLimit(chain, enable) => { - self.timeline.set_chain(chain).start(); + Message::SetChargingLimit(enable) => { self.set_charging_limit(enable); if enable { @@ -357,7 +349,6 @@ impl cosmic::Application for CosmicBatteryApplet { if let Some(tx) = &self.kbd_sender { let _ = tx.send(KeyboardBacklightRequest::Get); } - self.timeline = Timeline::new(); let new_id = window::Id::unique(); self.popup.replace(new_id); @@ -582,7 +573,7 @@ impl cosmic::Application for CosmicBatteryApplet { let content = if self.gpus.is_empty() { btn } else { - let dot = container(vertical_space().height(Length::Fixed(0.0))) + let dot = container(space::vertical().height(Length::Fixed(0.0))) .padding(2.0) .class(cosmic::style::Container::Custom(Box::new(|theme| { container::Style { @@ -595,6 +586,7 @@ impl cosmic::Application for CosmicBatteryApplet { }, shadow: Shadow::default(), icon_color: Some(Color::TRANSPARENT), + snap: true, } }))); let (dot_align_x, dot_align_y) = match self.core.applet.anchor { @@ -638,7 +630,7 @@ impl cosmic::Application for CosmicBatteryApplet { }, ); - let mut content = vec![ + let mut content: Vec> = vec![ padded_control( row![ icon::from_name(&*self.icon_name).size(24).symbolic(true), @@ -665,7 +657,7 @@ impl cosmic::Application for CosmicBatteryApplet { .symbolic(true), ) } else { - container(horizontal_space().width(1.0)) + container(space::horizontal().width(1.0)) } ] .align_y(Alignment::Center), @@ -686,7 +678,7 @@ impl cosmic::Application for CosmicBatteryApplet { .symbolic(true), ) } else { - container(horizontal_space().width(1.0)) + container(space::horizontal().width(1.0)) } ] .align_y(Alignment::Center), @@ -707,7 +699,7 @@ impl cosmic::Application for CosmicBatteryApplet { .symbolic(true), ) } else { - container(horizontal_space().width(1.0)) + container(space::horizontal().width(1.0)) } ] .align_y(Alignment::Center), @@ -722,16 +714,11 @@ impl cosmic::Application for CosmicBatteryApplet { if let Some(charging_limit) = self.charging_limit { content.push( padded_control( - anim!( - //toggler - MAX_CHARGE, - &self.timeline, - fl!("max-charge"), - charging_limit, - Message::SetChargingLimit, - ) - .text_size(14) - .width(Length::Fill), + toggler(charging_limit) + .on_toggle(Message::SetChargingLimit) + .label(fl!("max-charge")) + .text_size(14) + .width(Length::Fill), ) .into(), ); @@ -819,7 +806,7 @@ impl cosmic::Application for CosmicBatteryApplet { .width(Length::Fill) .align_x(Alignment::Start), container( - vertical_space() + space::vertical() .width(Length::Fixed(0.0)) .height(Length::Fixed(0.0)) ) @@ -837,6 +824,7 @@ impl cosmic::Application for CosmicBatteryApplet { }, shadow: Shadow::default(), icon_color: Some(Color::TRANSPARENT), + snap: true, } },))), ] @@ -902,7 +890,7 @@ impl cosmic::Application for CosmicBatteryApplet { if let Some(icon) = &app.icon { container(icon::from_name(&**icon).size(12).symbolic(true)) } else { - container(horizontal_space().width(12.0)) + container(space::horizontal().width(12.0)) }, column![text::body(&app.name), text::caption(&app.secondary)] .width(Length::Fill), @@ -952,9 +940,6 @@ impl cosmic::Application for CosmicBatteryApplet { GpuUpdate::On(path, name, list) => Message::GpuOn(path, name, list), GpuUpdate::Off(path) => Message::GpuOff(path), }), - self.timeline - .as_subscription() - .map(|(_, now)| Message::Frame(now)), activation_token_subscription(0).map(Message::Token), self.core.watch_config(Self::APP_ID).map(|u| { for err in u.errors { @@ -973,7 +958,7 @@ impl cosmic::Application for CosmicBatteryApplet { Some(Message::CloseRequested(id)) } - fn style(&self) -> Option { + fn style(&self) -> Option { Some(cosmic::applet::style()) } } diff --git a/cosmic-applet-battery/src/backend/mod.rs b/cosmic-applet-battery/src/backend/mod.rs index 8c653c38..8b9661ef 100644 --- a/cosmic-applet-battery/src/backend/mod.rs +++ b/cosmic-applet-battery/src/backend/mod.rs @@ -98,16 +98,15 @@ pub async fn set_power_profile(daemon: Backend<'_>, power: Power) -> Result<()> pub fn power_profile_subscription( id: I, ) -> iced::Subscription { - Subscription::run_with_id( - id, + Subscription::run_with(id, |_| { stream::channel(50, move |mut output| async move { let mut state = State::Ready; loop { state = start_listening(state, &mut output).await; } - }), - ) + }) + }) } #[derive(Debug)] diff --git a/cosmic-applet-battery/src/dgpu.rs b/cosmic-applet-battery/src/dgpu.rs index e035d56c..1ae2a143 100644 --- a/cosmic-applet-battery/src/dgpu.rs +++ b/cosmic-applet-battery/src/dgpu.rs @@ -418,16 +418,15 @@ fn all_gpus>(seat: S) -> io::Result> { pub fn dgpu_subscription( id: I, ) -> iced::Subscription { - Subscription::run_with_id( - id, + Subscription::run_with(id, |_| { stream::channel(50, move |mut output| async move { let mut state = State::Ready; loop { state = start_listening(state, &mut output).await; } - }), - ) + }) + }) } #[derive(Debug)] diff --git a/cosmic-applet-bluetooth/Cargo.toml b/cosmic-applet-bluetooth/Cargo.toml index d98c937d..03b67388 100644 --- a/cosmic-applet-bluetooth/Cargo.toml +++ b/cosmic-applet-bluetooth/Cargo.toml @@ -7,7 +7,6 @@ license = "GPL-3.0-only" [dependencies] anyhow.workspace = true bluer = { version = "0.17", features = ["bluetoothd", "id"] } -cosmic-time.workspace = true futures.workspace = true i18n-embed-fl.workspace = true i18n-embed.workspace = true diff --git a/cosmic-applet-bluetooth/src/app.rs b/cosmic-applet-bluetooth/src/app.rs index 3fed7463..25603991 100644 --- a/cosmic-applet-bluetooth/src/app.rs +++ b/cosmic-applet-bluetooth/src/app.rs @@ -7,6 +7,7 @@ use cosmic::{ applet::token::subscription::{TokenRequest, TokenUpdate, activation_token_subscription}, cctk::sctk::reexports::calloop, surface, + widget::toggler, }; use cosmic::{ @@ -22,7 +23,6 @@ use cosmic::{ theme, widget::{button, divider, icon, scrollable, text}, }; -use cosmic_time::{Instant, Timeline, anim, chain, id}; use futures::FutureExt; use std::{collections::HashMap, sync::LazyLock, time::Duration}; use tokio::sync::mpsc::Sender; @@ -32,8 +32,6 @@ use crate::{ config, fl, }; -static BLUETOOTH_ENABLED: LazyLock = LazyLock::new(id::Toggler::unique); - #[inline] pub fn run() -> cosmic::iced::Result { cosmic::applet::run::(()) @@ -50,7 +48,6 @@ struct CosmicBluetoothApplet { show_visible_devices: bool, request_confirmation: Option<(BluerDevice, String, Sender)>, token_tx: Option>, - timeline: Timeline, } impl CosmicBluetoothApplet { @@ -77,8 +74,7 @@ enum Message { Confirm, Token(TokenUpdate), OpenSettings, - Frame(Instant), - ToggleBluetooth(chain::Toggler, bool), + ToggleBluetooth(bool), Surface(surface::Action), } @@ -127,7 +123,6 @@ impl cosmic::Application for CosmicBluetoothApplet { // TODO request update of state maybe let new_id = window::Id::unique(); self.popup.replace(new_id); - self.timeline = Timeline::new(); let popup_settings = self.core.applet.get_popup_settings( self.core.main_window_id().unwrap(), @@ -157,15 +152,6 @@ impl cosmic::Application for CosmicBluetoothApplet { if let Some(err_msg) = err_msg { eprintln!("bluetooth request error: {err_msg}"); } - if self.bluer_state.bluetooth_enabled != state.bluetooth_enabled { - self.timeline - .set_chain(if state.bluetooth_enabled { - chain::Toggler::on(BLUETOOTH_ENABLED.clone(), 1.0) - } else { - chain::Toggler::off(BLUETOOTH_ENABLED.clone(), 1.0) - }) - .start(); - } self.bluer_state = state; } @@ -300,12 +286,10 @@ impl cosmic::Application for CosmicBluetoothApplet { tokio::spawn(cosmic::process::spawn(cmd)); } }, - Message::Frame(instant) => self.timeline.now(instant), - Message::ToggleBluetooth(chain, enabled) => { + Message::ToggleBluetooth(enabled) => { if self.bluer_state.bluetooth_enabled == enabled { return Task::none(); } - self.timeline.set_chain(chain).start(); self.bluer_state.bluetooth_enabled = enabled; if let Some(tx) = self.bluer_sender.clone() { tokio::spawn(async move { @@ -416,16 +400,11 @@ impl cosmic::Application for CosmicBluetoothApplet { } let mut content = column![column![padded_control( - anim!( - //toggler - BLUETOOTH_ENABLED, - &self.timeline, - fl!("bluetooth"), - self.bluer_state.bluetooth_enabled, - Message::ToggleBluetooth, - ) - .text_size(14) - .width(Length::Fill) + toggler(self.bluer_state.bluetooth_enabled) + .label(fl!("bluetooth")) + .on_toggle(Message::ToggleBluetooth) + .width(Length::Fill) + .text_size(14) ),],] .align_x(Alignment::Center) .padding([8, 0]); @@ -549,13 +528,10 @@ impl cosmic::Application for CosmicBluetoothApplet { Subscription::batch([ activation_token_subscription(0).map(Message::Token), bluetooth_subscription(0).map(Message::BluetoothEvent), - self.timeline - .as_subscription() - .map(|(_, now)| Message::Frame(now)), ]) } - fn style(&self) -> Option { + fn style(&self) -> Option { Some(cosmic::applet::style()) } diff --git a/cosmic-applet-bluetooth/src/bluetooth.rs b/cosmic-applet-bluetooth/src/bluetooth.rs index 46903d0e..eb810760 100644 --- a/cosmic-applet-bluetooth/src/bluetooth.rs +++ b/cosmic-applet-bluetooth/src/bluetooth.rs @@ -6,7 +6,6 @@ use rustc_hash::FxHashMap; use std::{ fmt::Debug, hash::Hash, - mem, sync::{ Arc, LazyLock, atomic::{AtomicBool, Ordering}, @@ -90,100 +89,104 @@ fn rfkill_path_var() -> std::ffi::OsString { pub fn bluetooth_subscription( id: I, ) -> iced::Subscription { - Subscription::run_with_id( - id, - stream::channel(50, move |mut output| async move { - let mut retry_count = 0u32; + Subscription::run_with(id, |_| { + stream::channel( + 50, + move |mut output: futures::channel::mpsc::Sender| async move { + let mut retry_count = 0u32; - // Initialize connection. - let mut session_state = loop { - if let Ok(session) = Session::new().await { - if let Ok(state) = BluerSessionState::new(session).await { - break state; - } - } - - retry_count = retry_count.saturating_add(1); - () = tokio::time::sleep(Duration::from_millis( - 2_u64.saturating_pow(retry_count).min(68719476734), - )) - .await; - }; - - let state = bluer_state(&session_state.adapter).await; - - // reconnect to paired and trusted devices - if state.bluetooth_enabled { - for d in &state.devices { - if d.paired_and_trusted() && !matches!(d.status, BluerDeviceStatus::Connected) { - _ = session_state - .req_tx - .send(BluerRequest::ConnectDevice(d.address)) - .await; - } - } - } - _ = output - .send(BluerEvent::Init { - sender: session_state.req_tx.clone(), - state: state.clone(), - }) - .await; - - let mut event_handler = async |event| { - let message = match event { - BluerSessionEvent::ChangesProcessed(state) => { - BluerEvent::DevicesChanged { state } - } - - BluerSessionEvent::RequestResponse { - req, - state, - err_msg, - } => BluerEvent::RequestResponse { - req, - state, - err_msg, - }, - - BluerSessionEvent::AgentEvent(e) => BluerEvent::AgentEvent(e), - - _ => return, - }; - - _ = output.send(message).await; - }; - - let mut interval = tokio::time::interval(Duration::from_secs(10)); - interval.set_missed_tick_behavior(tokio::time::MissedTickBehavior::Skip); - loop { - let Some(mut session_rx) = session_state.rx.take() else { - break; - }; - - if let Some(event) = session_rx.recv().await { - event_handler(event).await; - // Consume any additional available events. - let mut count = 0; - while let Ok(event) = session_rx.try_recv() { - event_handler(event).await; - count += 1; - if count == 100 { - break; + // Initialize connection. + let mut session_state = loop { + if let Ok(session) = Session::new().await { + if let Ok(state) = BluerSessionState::new(session).await { + break state; } } - } else { - break; + + retry_count = retry_count.saturating_add(1); + () = tokio::time::sleep(Duration::from_millis( + 2_u64.saturating_pow(retry_count).min(68719476734), + )) + .await; + }; + + let state = bluer_state(&session_state.adapter).await; + + // reconnect to paired and trusted devices + if state.bluetooth_enabled { + for d in &state.devices { + if d.paired_and_trusted() + && !matches!(d.status, BluerDeviceStatus::Connected) + { + _ = session_state + .req_tx + .send(BluerRequest::ConnectDevice(d.address)) + .await; + } + } + } + _ = output + .send(BluerEvent::Init { + sender: session_state.req_tx.clone(), + state: state.clone(), + }) + .await; + + let mut event_handler = async |event| { + let message = match event { + BluerSessionEvent::ChangesProcessed(state) => { + BluerEvent::DevicesChanged { state } + } + + BluerSessionEvent::RequestResponse { + req, + state, + err_msg, + } => BluerEvent::RequestResponse { + req, + state, + err_msg, + }, + + BluerSessionEvent::AgentEvent(e) => BluerEvent::AgentEvent(e), + + _ => return, + }; + + _ = output.send(message).await; + }; + + let mut interval = tokio::time::interval(Duration::from_secs(10)); + interval.set_missed_tick_behavior(tokio::time::MissedTickBehavior::Skip); + loop { + let Some(mut session_rx) = session_state.rx.take() else { + break; + }; + + if let Some(event) = session_rx.recv().await { + event_handler(event).await; + // Consume any additional available events. + let mut count = 0; + while let Ok(event) = session_rx.try_recv() { + event_handler(event).await; + count += 1; + if count == 100 { + break; + } + } + } else { + break; + } + + session_state.rx = Some(session_rx); + interval.tick().await; } - session_state.rx = Some(session_rx); - interval.tick().await; - } - - _ = output.send(BluerEvent::Finished).await; - futures::future::pending().await - }), - ) + _ = output.send(BluerEvent::Finished).await; + futures::future::pending().await + }, + ) + }) } #[derive(Debug, Clone, Hash, Eq, PartialEq)] diff --git a/cosmic-applet-input-sources/Cargo.toml b/cosmic-applet-input-sources/Cargo.toml index 81c2bbc2..92a7daf3 100644 --- a/cosmic-applet-input-sources/Cargo.toml +++ b/cosmic-applet-input-sources/Cargo.toml @@ -5,7 +5,6 @@ edition = "2024" license = "GPL-3.0-only" [dependencies] -# cosmic-time.workspace = true cosmic-comp-config = { git = "https://github.com/pop-os/cosmic-comp.git", rev = "5eb5af4" } i18n-embed-fl.workspace = true i18n-embed.workspace = true diff --git a/cosmic-applet-input-sources/src/lib.rs b/cosmic-applet-input-sources/src/lib.rs index 0eae0e09..b16748ce 100644 --- a/cosmic-applet-input-sources/src/lib.rs +++ b/cosmic-applet-input-sources/src/lib.rs @@ -21,9 +21,9 @@ use cosmic::{ prelude::*, surface, theme, widget::{ - self, autosize, horizontal_space, + self, autosize, rectangle_tracker::{RectangleTracker, RectangleUpdate, rectangle_tracker_subscription}, - vertical_space, + space, }, }; use cosmic_comp_config::CosmicCompConfig; @@ -291,7 +291,7 @@ impl cosmic::Application for Window { ]) } - fn style(&self) -> Option { + fn style(&self) -> Option { Some(cosmic::applet::style()) } } diff --git a/cosmic-applet-minimize/src/lib.rs b/cosmic-applet-minimize/src/lib.rs index e836290d..4408d147 100644 --- a/cosmic-applet-minimize/src/lib.rs +++ b/cosmic-applet-minimize/src/lib.rs @@ -158,7 +158,7 @@ impl cosmic::Application for Minimize { &mut self.core } - fn style(&self) -> Option { + fn style(&self) -> Option { Some(cosmic::applet::style()) } diff --git a/cosmic-applet-minimize/src/wayland_subscription.rs b/cosmic-applet-minimize/src/wayland_subscription.rs index becabebf..728ec7dc 100644 --- a/cosmic-applet-minimize/src/wayland_subscription.rs +++ b/cosmic-applet-minimize/src/wayland_subscription.rs @@ -12,7 +12,7 @@ use cosmic::{ wayland_protocols::ext::foreign_toplevel_list::v1::client::ext_foreign_toplevel_handle_v1::ExtForeignToplevelHandleV1, }, iced::{self, Subscription}, - iced_core::image::Bytes, + iced_core::Bytes, iced_futures::{futures, stream}, }; use futures::SinkExt; @@ -22,24 +22,26 @@ use std::fmt::Debug; use crate::wayland_handler::wayland_handler; pub fn wayland_subscription() -> iced::Subscription { - Subscription::run_with_id( - std::any::TypeId::of::(), - stream::channel(1, move |mut output| async move { - let (calloop_tx, calloop_rx) = calloop::channel::channel(); - let runtime = tokio::runtime::Handle::current(); + Subscription::run_with(std::any::TypeId::of::(), |_| { + stream::channel( + 1, + move |mut output: futures::channel::mpsc::Sender| async move { + let (calloop_tx, calloop_rx) = calloop::channel::channel(); + let runtime = tokio::runtime::Handle::current(); - let _ = std::thread::spawn(move || { - runtime.block_on(async move { - _ = output.send(WaylandUpdate::Init(calloop_tx)).await; - wayland_handler(output.clone(), calloop_rx); - tracing::error!("Wayland handler thread died"); - _ = output.send(WaylandUpdate::Finished).await; + let _ = std::thread::spawn(move || { + runtime.block_on(async move { + _ = output.send(WaylandUpdate::Init(calloop_tx)).await; + wayland_handler(output.clone(), calloop_rx); + tracing::error!("Wayland handler thread died"); + _ = output.send(WaylandUpdate::Finished).await; + }); }); - }); - futures::future::pending().await - }), - ) + futures::future::pending().await + }, + ) + }) } #[derive(Clone, Debug)] diff --git a/cosmic-applet-minimize/src/window_image.rs b/cosmic-applet-minimize/src/window_image.rs index 7b7f639d..c2a24eab 100644 --- a/cosmic-applet-minimize/src/window_image.rs +++ b/cosmic-applet-minimize/src/window_image.rs @@ -93,8 +93,9 @@ impl Widget for WindowImage<'_, Msg> fn overlay<'b>( &'b mut self, state: &'b mut Tree, - layout: Layout<'_>, + layout: Layout<'b>, renderer: &cosmic::Renderer, + viewport: &cosmic::iced_core::Rectangle, translation: Vector, ) -> Option> { let children = [&mut self.image_button, &mut self.icon] @@ -104,7 +105,7 @@ impl Widget for WindowImage<'_, Msg> .filter_map(|((child, state), layout)| { child .as_widget_mut() - .overlay(state, layout, renderer, translation) + .overlay(state, layout, renderer, viewport, translation) }) .collect::>(); @@ -116,7 +117,7 @@ impl Widget for WindowImage<'_, Msg> } fn layout( - &self, + &mut self, tree: &mut cosmic::iced_core::widget::Tree, renderer: &cosmic::Renderer, limits: &cosmic::iced_core::layout::Limits, @@ -125,7 +126,7 @@ impl Widget for WindowImage<'_, Msg> let button = &mut children[0]; let button_node = self .image_button - .as_widget() + .as_widget_mut() .layout(button, renderer, limits); let img_node = &button_node.children()[0].children()[0]; @@ -135,7 +136,7 @@ impl Widget for WindowImage<'_, Msg> let icon = &mut children[1]; let icon_node = self .icon - .as_widget() + .as_widget_mut() .layout( icon, renderer, @@ -185,14 +186,14 @@ impl Widget for WindowImage<'_, Msg> } fn operate( - &self, + &mut self, tree: &mut cosmic::iced_core::widget::Tree, layout: cosmic::iced_core::Layout<'_>, renderer: &cosmic::Renderer, operation: &mut dyn cosmic::widget::Operation<()>, ) { let layout = layout.children().collect::>(); - let children = [&self.image_button, &self.icon]; + let children = [&mut self.image_button, &mut self.icon]; for (i, (layout, child)) in layout .into_iter() .zip(children.into_iter()) @@ -200,26 +201,27 @@ impl Widget for WindowImage<'_, Msg> .rev() { let tree = &mut tree.children[i]; - child.as_widget().operate(tree, layout, renderer, operation); + child + .as_widget_mut() + .operate(tree, layout, renderer, operation); } } - fn on_event( + fn update( &mut self, state: &mut cosmic::iced_core::widget::Tree, - event: cosmic::iced_core::Event, + event: &cosmic::iced_core::Event, layout: cosmic::iced_core::Layout<'_>, cursor: cosmic::iced_core::mouse::Cursor, renderer: &cosmic::Renderer, clipboard: &mut dyn cosmic::iced_core::Clipboard, shell: &mut cosmic::iced_core::Shell<'_, Msg>, viewport: &cosmic::iced_core::Rectangle, - ) -> cosmic::iced_core::event::Status { + ) { let children = [&mut self.image_button, &mut self.icon]; let layout = layout.children().collect::>(); // draw children in order - let mut status = cosmic::iced_core::event::Status::Ignored; for (i, (layout, child)) in layout .into_iter() .zip(children.into_iter()) @@ -228,21 +230,13 @@ impl Widget for WindowImage<'_, Msg> { let tree = &mut state.children[i]; - status = child.as_widget_mut().on_event( - tree, - event.clone(), - layout, - cursor, - renderer, - clipboard, - shell, - viewport, + child.as_widget_mut().update( + tree, event, layout, cursor, renderer, clipboard, shell, viewport, ); - if matches!(status, cosmic::iced_core::event::Status::Captured) { - return status; + if shell.is_event_captured() { + return; } } - status } fn mouse_interaction( diff --git a/cosmic-applet-network/Cargo.toml b/cosmic-applet-network/Cargo.toml index 814343f7..659dd076 100644 --- a/cosmic-applet-network/Cargo.toml +++ b/cosmic-applet-network/Cargo.toml @@ -8,7 +8,6 @@ license = "GPL-3.0-or-later" anyhow.workspace = true async-fn-stream = "0.3" cosmic-dbus-networkmanager = { git = "https://github.com/pop-os/dbus-settings-bindings" } -cosmic-time.workspace = true futures.workspace = true futures-util.workspace = true i18n-embed-fl.workspace = true @@ -35,7 +34,8 @@ uuid = { version = "1.21.0", features = ["v4"] } [dependencies.cosmic-settings-network-manager-subscription] git = "https://github.com/pop-os/cosmic-settings/" +# path = "../../cosmic-settings/subscriptions/network-manager" [dependencies.cosmic-settings-airplane-mode-subscription] git = "https://github.com/pop-os/cosmic-settings/" - +# path = "../../cosmic-settings/subscriptions/airplane-mode" diff --git a/cosmic-applet-network/src/app.rs b/cosmic-applet-network/src/app.rs index 0c15d2bd..666f80c6 100644 --- a/cosmic-applet-network/src/app.rs +++ b/cosmic-applet-network/src/app.rs @@ -36,14 +36,13 @@ use cosmic::{ widget::{ Column, Id, Row, button, container, divider, icon::{self, from_name}, - scrollable, secure_input, text, text_input, + scrollable, secure_input, text, text_input, toggler, }, }; use cosmic_dbus_networkmanager::interface::{ access_point, enums::{ActiveConnectionState, DeviceState, NmConnectivityState, NmState}, }; -use cosmic_time::{Instant, Timeline, anim, chain, id}; use futures::{StreamExt, channel::mpsc::TrySendError}; use zbus::{Connection, zvariant::ObjectPath}; @@ -96,9 +95,6 @@ impl From for AccessPoint { } } -static WIFI: LazyLock = LazyLock::new(id::Toggler::unique); -static AIRPLANE_MODE: LazyLock = LazyLock::new(id::Toggler::unique); - pub static SECURE_INPUT_WIFI: LazyLock = LazyLock::new(Id::unique); #[derive(Default, Debug, Clone)] @@ -170,7 +166,6 @@ struct CosmicNetworkApplet { show_available_vpns: bool, new_connection: Option, conn: Option, - timeline: Timeline, toggle_wifi_ctr: u128, token_tx: Option>, failed_known_ssids: FxHashSet>, @@ -363,31 +358,15 @@ impl CosmicNetworkApplet { } fn update_togglers(&mut self, state: &NetworkManagerState) { - let timeline = &mut self.timeline; let mut changed = false; if self.nm_state.nm_state.wifi_enabled != state.wifi_enabled { self.nm_state.nm_state.wifi_enabled = state.wifi_enabled; changed = true; - let chain = if state.wifi_enabled { - chain::Toggler::on(WIFI.clone(), 1.) - } else { - chain::Toggler::off(WIFI.clone(), 1.) - }; - timeline.set_chain(chain); } if self.nm_state.nm_state.airplane_mode != state.airplane_mode { self.nm_state.nm_state.airplane_mode = state.airplane_mode; changed = true; - let chain = if state.airplane_mode { - chain::Toggler::on(AIRPLANE_MODE.clone(), 1.) - } else { - chain::Toggler::off(AIRPLANE_MODE.clone(), 1.) - }; - timeline.set_chain(chain); - } - if changed { - timeline.start(); } } fn view_window_return<'a>(&self, mut content: Column<'a, Message>) -> Element<'a, Message> { @@ -463,7 +442,6 @@ pub(crate) enum Message { ToggleVisibleNetworks, SelectWirelessAccessPoint(AccessPoint), CancelNewConnection, - Frame(Instant), Token(TokenUpdate), OpenSettings, ResetFailedKnownSsid(String, HwAddress), @@ -789,7 +767,6 @@ impl cosmic::Application for CosmicNetworkApplet { fn update(&mut self, message: Message) -> app::Task { match message { - Message::Frame(now) => self.timeline.now(now), Message::TogglePopup => { if let Some(p) = self.popup.take() { self.show_visible_networks = false; @@ -817,7 +794,6 @@ impl cosmic::Application for CosmicNetworkApplet { // TODO request update of state maybe let new_id = window::Id::unique(); self.popup.replace(new_id); - self.timeline = Timeline::new(); let popup_settings = self.core.applet.get_popup_settings( self.core.main_window_id().unwrap(), @@ -1604,16 +1580,11 @@ impl cosmic::Application for CosmicNetworkApplet { column![ vpn_ethernet_col, padded_control( - anim!( - //toggler - AIRPLANE_MODE, - &self.timeline, - fl!("airplane-mode"), - self.nm_state.nm_state.airplane_mode, - |_chain, enable| { Message::ToggleAirplaneMode(enable) }, - ) - .text_size(14) - .width(Length::Fill) + toggler(self.nm_state.nm_state.airplane_mode,) + .label(fl!("airplane-mode")) + .on_toggle(Message::ToggleAirplaneMode) + .text_size(14) + .width(Length::Fill) ), padded_control(divider::horizontal::default()) .padding([space_xxs, space_s]), @@ -1621,16 +1592,11 @@ impl cosmic::Application for CosmicNetworkApplet { .align_x(Alignment::Center) ), padded_control( - anim!( - //toggler - WIFI, - &self.timeline, - fl!("wifi"), - self.nm_state.nm_state.wifi_enabled, - |_chain, enable| { Message::WiFiEnable(enable) }, - ) - .text_size(14) - .width(Length::Fill) + toggler(self.nm_state.nm_state.wifi_enabled,) + .label(fl!("wifi")) + .on_toggle(Message::WiFiEnable) + .text_size(14) + .width(Length::Fill) ), ] .align_x(Alignment::Center) @@ -1993,16 +1959,10 @@ impl cosmic::Application for CosmicNetworkApplet { } fn subscription(&self) -> Subscription { - let timeline = self - .timeline - .as_subscription() - .map(|(_, now)| Message::Frame(now)); - let token_sub = activation_token_subscription(0).map(Message::Token); - - Subscription::batch([timeline, token_sub]) + activation_token_subscription(0).map(Message::Token) } - fn style(&self) -> Option { + fn style(&self) -> Option { Some(cosmic::applet::style()) } diff --git a/cosmic-applet-notifications/Cargo.toml b/cosmic-applet-notifications/Cargo.toml index f32e2fdf..0ef51421 100644 --- a/cosmic-applet-notifications/Cargo.toml +++ b/cosmic-applet-notifications/Cargo.toml @@ -6,7 +6,6 @@ license = "GPL-3.0-only" [dependencies] anyhow.workspace = true -cosmic-time.workspace = true libcosmic.workspace = true tokio.workspace = true cosmic-notifications-util = { git = "https://github.com/pop-os/cosmic-notifications" } diff --git a/cosmic-applet-notifications/src/lib.rs b/cosmic-applet-notifications/src/lib.rs index a0bef95d..bd827aef 100644 --- a/cosmic-applet-notifications/src/lib.rs +++ b/cosmic-applet-notifications/src/lib.rs @@ -16,18 +16,17 @@ use cosmic::{ Alignment, Length, Subscription, advanced::text::{Ellipsize, EllipsizeHeightLimit}, platform_specific::shell::wayland::commands::popup::{destroy_popup, get_popup}, - widget::{column, row}, + widget::{self, column, row}, window, }, surface, theme, - widget::{Column, button, container, divider, icon, scrollable, text}, + widget::{Column, button, cards, container, divider, icon, scrollable, space, text, toggler}, }; use cosmic::iced_futures::futures::executor::block_on; use cosmic_notifications_config::NotificationsConfig; use cosmic_notifications_util::{ActionId, Image, Notification}; -use cosmic_time::{Instant, Timeline, anim, chain, id}; use std::{borrow::Cow, collections::HashMap, path::PathBuf, sync::LazyLock}; use subscriptions::notifications::{self, NotificationsAppletProxy}; use tokio::sync::mpsc::Sender; @@ -38,8 +37,6 @@ pub fn run() -> cosmic::iced::Result { cosmic::applet::run::(()) } -static DO_NOT_DISTURB: LazyLock = LazyLock::new(id::Toggler::unique); - struct Notifications { core: cosmic::app::Core, config: NotificationsConfig, @@ -47,27 +44,14 @@ struct Notifications { icon_name: String, popup: Option, // notifications: Vec, - timeline: Timeline, dbus_sender: Option>, - cards: Vec<(id::Cards, Vec, bool, String, String, String)>, + cards: Vec<(widget::Id, Vec, bool, String, String, String)>, token_tx: Option>, proxy: NotificationsAppletProxy<'static>, notifications_tx: Option>, } impl Notifications { - fn update_cards(&mut self, id: id::Cards) { - if let Some((id, _, card_value, ..)) = self.cards.iter().find(|c| c.0 == id) { - let chain = if *card_value { - chain::Cards::on(id.clone(), 1.) - } else { - chain::Cards::off(id.clone(), 1.) - }; - self.timeline.set_chain(chain); - self.timeline.start(); - } - } - fn update_icon(&mut self) { self.icon_name = if self.config.do_not_disturb { "cosmic-applet-notification-disabled-symbolic" @@ -84,8 +68,7 @@ impl Notifications { enum Message { TogglePopup, CloseRequested(window::Id), - DoNotDisturb(chain::Toggler, bool), - Frame(Instant), + DoNotDisturb(bool), NotificationEvent(notifications::Output), Config(NotificationsConfig), DbusEvent(subscriptions::dbus::Output), @@ -128,7 +111,6 @@ impl cosmic::Application for Notifications { config, icon_name: String::default(), popup: None, - timeline: Timeline::default(), dbus_sender: Option::default(), cards: Vec::new(), token_tx: Option::default(), @@ -148,7 +130,7 @@ impl cosmic::Application for Notifications { &mut self.core } - fn style(&self) -> Option { + fn style(&self) -> Option { Some(cosmic::applet::style()) } @@ -162,9 +144,6 @@ impl cosmic::Application for Notifications { } Message::Config(res.config) }), - self.timeline - .as_subscription() - .map(|(_, now)| Message::Frame(now)), subscriptions::dbus::proxy().map(Message::DbusEvent), subscriptions::notifications::notifications(self.proxy.clone()) .map(Message::NotificationEvent), @@ -174,16 +153,12 @@ impl cosmic::Application for Notifications { fn update(&mut self, message: Self::Message) -> app::Task { match message { - Message::Frame(now) => { - self.timeline.now(now); - } Message::TogglePopup => { if let Some(p) = self.popup.take() { return destroy_popup(p); } else { let new_id = window::Id::unique(); self.popup.replace(new_id); - self.timeline = Timeline::new(); let popup_settings = self.core.applet.get_popup_settings( self.core.main_window_id().unwrap(), @@ -196,8 +171,7 @@ impl cosmic::Application for Notifications { return get_popup(popup_settings); } } - Message::DoNotDisturb(chain, b) => { - self.timeline.set_chain(chain).start(); + Message::DoNotDisturb(b) => { self.config.do_not_disturb = b; if let Some(helper) = &self.config_helper { if let Err(err) = self.config.write_entry(helper) { @@ -223,7 +197,7 @@ impl cosmic::Application for Notifications { } } else { self.cards.push(( - id::Cards::new(n.app_name.clone()), + widget::Id::new(n.app_name.clone()), vec![n], false, fl!("show-more", HashMap::from([("more", "1")])), @@ -315,7 +289,6 @@ impl cosmic::Application for Notifications { } else { return Task::none(); }; - self.update_cards(id); } Message::CloseRequested(id) => { if Some(id) == self.popup { @@ -412,15 +385,11 @@ impl cosmic::Application for Notifications { } = theme::active().cosmic().spacing; let do_not_disturb = padded_control(row![ - anim!( - DO_NOT_DISTURB, - &self.timeline, - fl!("do-not-disturb"), - self.config.do_not_disturb, - Message::DoNotDisturb - ) - .text_size(14) - .width(Length::Fill) + toggler(self.config.do_not_disturb) + .on_toggle(Message::DoNotDisturb) + .text_size(14) + .width(Length::Fill) + .label(fl!("do-not-disturb")) ]); let notifications = if self.cards.is_empty() { @@ -522,13 +491,12 @@ impl cosmic::Application for Notifications { Some(cosmic::widget::icon::from_name(n.app_icon.as_str()).handle()) } }); - let card_list = anim!( + let card_list = cards( //cards c.0.clone(), - &self.timeline, notif_elems, Message::ClearAll(Some(name.clone())), - Some(move |_, e| Message::CardsToggled(name.clone(), e)), + Some(move |e| Message::CardsToggled(name.clone(), e)), Some(move |id| Message::ActivateNotification(ids[id])), &c.3, &c.4, @@ -536,6 +504,7 @@ impl cosmic::Application for Notifications { show_more_icon, c.2, ); + // let card_list = space::horizontal().width(Length::Fixed(10.)); notifs.push(card_list.into()); } diff --git a/cosmic-applet-notifications/src/subscriptions/dbus.rs b/cosmic-applet-notifications/src/subscriptions/dbus.rs index 3c1a159d..076d2321 100644 --- a/cosmic-applet-notifications/src/subscriptions/dbus.rs +++ b/cosmic-applet-notifications/src/subscriptions/dbus.rs @@ -33,73 +33,75 @@ pub enum Output { pub fn proxy() -> Subscription { struct SomeWorker; - Subscription::run_with_id( - std::any::TypeId::of::(), - stream::channel(50, |mut output| async move { - let mut state = State::Ready; + Subscription::run_with(std::any::TypeId::of::(), |_| { + stream::channel( + 50, + |mut output: futures::channel::mpsc::Sender| async move { + let mut state = State::Ready; - loop { - match &mut state { - State::Ready => { - let (sender, receiver) = channel(10); - let Ok(conn) = Connection::session().await else { - error!("Failed to connect to session bus"); - state = State::Finished; - continue; - }; + loop { + match &mut state { + State::Ready => { + let (sender, receiver) = channel(10); + let Ok(conn) = Connection::session().await else { + error!("Failed to connect to session bus"); + state = State::Finished; + continue; + }; - let Ok(proxy) = NotificationsProxy::new(&conn).await else { - error!("Failed to create proxy from session connection"); - state = State::Finished; - continue; - }; - let tx = sender.clone(); - if let Err(err) = output.send(Output::Ready(sender)).await { - error!("Failed to send sender: {}", err); - state = State::Finished; - continue; - } - state = match proxy.receive_notification_closed().await { - Ok(mut s) => { - tokio::spawn(async move { - while let Some(msg) = s.next().await { - let Ok(id) = msg.args().map(|args| args.id) else { - continue; - }; - _ = tx.send(Input::CloseEvent(id)).await; - } - }); - State::WaitingForNotificationEvent(proxy, receiver) + let Ok(proxy) = NotificationsProxy::new(&conn).await else { + error!("Failed to create proxy from session connection"); + state = State::Finished; + continue; + }; + let tx = sender.clone(); + if let Err(err) = output.send(Output::Ready(sender)).await { + error!("Failed to send sender: {}", err); + state = State::Finished; + continue; } - Err(err) => { - error!( - "failed to get a stream of signals for notifications. {}", - err - ); - State::Finished + state = match proxy.receive_notification_closed().await { + Ok(mut s) => { + tokio::spawn(async move { + while let Some(msg) = s.next().await { + let Ok(id) = msg.args().map(|args| args.id) else { + continue; + }; + _ = tx.send(Input::CloseEvent(id)).await; + } + }); + State::WaitingForNotificationEvent(proxy, receiver) + } + Err(err) => { + error!( + "failed to get a stream of signals for notifications. {}", + err + ); + State::Finished + } + }; + } + State::WaitingForNotificationEvent(proxy, rx) => match rx.recv().await { + Some(Input::Dismiss(id)) => { + if let Err(err) = proxy.close_notification(id).await { + error!("Failed to close notification: {}", err); + } } - }; - } - State::WaitingForNotificationEvent(proxy, rx) => match rx.recv().await { - Some(Input::Dismiss(id)) => { - if let Err(err) = proxy.close_notification(id).await { - error!("Failed to close notification: {}", err); + Some(Input::CloseEvent(id)) => { + _ = output.send(Output::CloseEvent(id)).await; } + None => { + warn!("Notification event channel closed"); + state = State::Finished; + continue; + } + }, + State::Finished => { + let () = futures::future::pending().await; } - Some(Input::CloseEvent(id)) => { - _ = output.send(Output::CloseEvent(id)).await; - } - None => { - warn!("Notification event channel closed"); - state = State::Finished; - continue; - } - }, - State::Finished => { - let () = futures::future::pending().await; } } - } - }), - ) + }, + ) + }) } diff --git a/cosmic-applet-notifications/src/subscriptions/notifications.rs b/cosmic-applet-notifications/src/subscriptions/notifications.rs index a945e449..ab0241c5 100644 --- a/cosmic-applet-notifications/src/subscriptions/notifications.rs +++ b/cosmic-applet-notifications/src/subscriptions/notifications.rs @@ -12,6 +12,7 @@ use cosmic_notifications_util::Notification; use futures_util::{SinkExt, StreamExt}; use std::{ collections::HashMap, + hash::Hash, os::unix::io::{FromRawFd, RawFd}, pin::pin, }; @@ -37,89 +38,97 @@ pub enum Output { } pub fn notifications(proxy: NotificationsAppletProxy<'static>) -> Subscription { - struct SomeWorker; + struct Wrapper(NotificationsAppletProxy<'static>); - Subscription::run_with_id( - std::any::TypeId::of::(), - stream::channel(50, |mut output| async move { - let mut state = State::WaitingForNotificationEvent; - let (sender, mut receiver) = mpsc::channel(10); - _ = output.send(Output::Ready(sender)).await; + impl Hash for Wrapper { + fn hash(&self, state: &mut H) { + std::any::TypeId::of::>().hash(state); + } + } + Subscription::run_with(Wrapper(proxy), |Wrapper(proxy)| { + let proxy = proxy.clone(); + stream::channel( + 50, + move |mut output: futures::channel::mpsc::Sender| async move { + let mut state = State::WaitingForNotificationEvent; + let (sender, mut receiver) = mpsc::channel(10); + _ = output.send(Output::Ready(sender)).await; - let mut signal; - let mut fail_count: u8 = 0; - loop { - match proxy.receive_notify().await { - Ok(s) => { - signal = s; - break; - } - Err(err) => { - error!( - "failed to get a stream of signals for notifications. {}", - err - ); - fail_count = fail_count.saturating_add(1); - if fail_count > 5 { - error!("Failed to receive notification events"); - // exit because the applet needs the notifications daemon in order to work properly - std::process::exit(0); - } else { - tokio::time::sleep(std::time::Duration::from_secs(1)).await; + let mut signal; + let mut fail_count: u8 = 0; + loop { + match proxy.receive_notify().await { + Ok(s) => { + signal = s; + break; + } + Err(err) => { + error!( + "failed to get a stream of signals for notifications. {}", + err + ); + fail_count = fail_count.saturating_add(1); + if fail_count > 5 { + error!("Failed to receive notification events"); + // exit because the applet needs the notifications daemon in order to work properly + std::process::exit(0); + } else { + tokio::time::sleep(std::time::Duration::from_secs(1)).await; + } + continue; } - continue; } } - } - loop { - match &mut state { - State::WaitingForNotificationEvent => { - trace!("Waiting for notification events..."); - let mut next_signal = signal.next(); - let mut next_input = pin!(receiver.recv().fuse()); - cosmic::iced::futures::select! { - v = next_signal => { - if let Some(msg) = v { - let Ok(args) = msg.args() else { - break; - }; - let notification = Notification::new( - args.app_name, - args.id, - args.app_icon, - args.summary, - args.body, - args.actions, - args.hints, - args.expire_timeout, - ); - _ = output.send(Output::Notification(notification)).await; - } else { - tracing::error!("Signal stream closed, ending notifications subscription"); - state = State::Finished; - } - } - v = next_input => { - if let Some(Input::Activated(id, action)) = v { - if proxy.invoke_action(id, action.clone()).await.is_err() { - tracing::error!("Failed to invoke action {id} {action}"); + loop { + match &mut state { + State::WaitingForNotificationEvent => { + trace!("Waiting for notification events..."); + let mut next_signal = signal.next(); + let mut next_input = pin!(receiver.recv().fuse()); + cosmic::iced::futures::select! { + v = next_signal => { + if let Some(msg) = v { + let Ok(args) = msg.args() else { + break; + }; + let notification = Notification::new( + args.app_name, + args.id, + args.app_icon, + args.summary, + args.body, + args.actions, + args.hints, + args.expire_timeout, + ); + _ = output.send(Output::Notification(notification)).await; } else { - tracing::error!("Invoked {action} for {id}"); + tracing::error!("Signal stream closed, ending notifications subscription"); + state = State::Finished; + } + } + v = next_input => { + if let Some(Input::Activated(id, action)) = v { + if proxy.invoke_action(id, action.clone()).await.is_err() { + tracing::error!("Failed to invoke action {id} {action}"); + } else { + tracing::error!("Invoked {action} for {id}"); + } + } else { + tracing::error!("Channel closed, ending notifications subscription"); + state = State::Finished; } - } else { - tracing::error!("Channel closed, ending notifications subscription"); - state = State::Finished; } } } - } - State::Finished => { - let () = futures::future::pending().await; + State::Finished => { + let () = futures::future::pending().await; + } } } - } - }), - ) + }, + ) + }) } #[proxy( diff --git a/cosmic-applet-power/src/lib.rs b/cosmic-applet-power/src/lib.rs index 22d23ed5..67725fbc 100644 --- a/cosmic-applet-power/src/lib.rs +++ b/cosmic-applet-power/src/lib.rs @@ -16,7 +16,7 @@ use cosmic::{ window, }, surface, theme, - widget::{Space, button, divider, icon, text}, + widget::{Space, button, divider, icon, space, text}, }; use std::sync::LazyLock; @@ -227,7 +227,7 @@ impl cosmic::Application for Power { row![ text_icon("system-lock-screen-symbolic", 24), text::body(fl!("lock-screen")), - Space::with_width(Length::Fill), + space::horizontal().width(Length::Fill), text::body(fl!("lock-screen-shortcut")), ] .align_y(Alignment::Center) @@ -238,7 +238,7 @@ impl cosmic::Application for Power { row![ text_icon("system-log-out-symbolic", 24), text::body(fl!("log-out")), - Space::with_width(Length::Fill), + space::horizontal().width(Length::Fill), text::body(fl!("log-out-shortcut")), ] .align_y(Alignment::Center) @@ -285,7 +285,7 @@ impl cosmic::Application for Power { activation_token_subscription(0).map(Message::Token) } - fn style(&self) -> Option { + fn style(&self) -> Option { Some(cosmic::applet::style()) } } diff --git a/cosmic-applet-status-area/src/components/app.rs b/cosmic-applet-status-area/src/components/app.rs index c496a80d..754163a1 100644 --- a/cosmic-applet-status-area/src/components/app.rs +++ b/cosmic-applet-status-area/src/components/app.rs @@ -3,12 +3,15 @@ use cosmic::{ Element, Task, app, - applet::cosmic_panel_config::PanelAnchor, - applet::token::subscription::{TokenRequest, TokenUpdate, activation_token_subscription}, + applet::{ + cosmic_panel_config::PanelAnchor, + token::subscription::{TokenRequest, TokenUpdate, activation_token_subscription}, + }, cctk::sctk::reexports::calloop, iced::{ self, Length, Subscription, platform_specific::shell::commands::popup::{destroy_popup, get_popup}, + theme::Style, window, }, surface, @@ -146,7 +149,7 @@ impl cosmic::Application for App { &mut self.core } - fn style(&self) -> Option { + fn style(&self) -> Option { Some(cosmic::applet::style()) } diff --git a/cosmic-applet-status-area/src/components/status_menu.rs b/cosmic-applet-status-area/src/components/status_menu.rs index 32d6cbdc..fedd79e4 100644 --- a/cosmic-applet-status-area/src/components/status_menu.rs +++ b/cosmic-applet-status-area/src/components/status_menu.rs @@ -192,7 +192,7 @@ fn layout_view(layout: &Layout, expanded: Option) -> cosmic::Element<'_, Ms if !i.visible() { None } else if i.type_() == Some("separator") { - Some(iced::widget::horizontal_rule(2).into()) + Some(iced::widget::rule::horizontal(2).into()) } else if let Some(label) = i.label() { // Strip _ when not doubled // TODO: interpret as "access key"? And label with underline. diff --git a/cosmic-applet-status-area/src/subscriptions/status_notifier_item.rs b/cosmic-applet-status-area/src/subscriptions/status_notifier_item.rs index 5a67f07b..fd51390e 100644 --- a/cosmic-applet-status-area/src/subscriptions/status_notifier_item.rs +++ b/cosmic-applet-status-area/src/subscriptions/status_notifier_item.rs @@ -1,10 +1,11 @@ // Copyright 2023 System76 // SPDX-License-Identifier: GPL-3.0-only +use std::hash::Hash; + use cosmic::iced::{self, Subscription}; use futures::{FutureExt, StreamExt}; use rustc_hash::FxHashMap; -use std::path::PathBuf; use zbus::zvariant::{self, OwnedValue}; #[derive(Clone, Debug)] @@ -76,22 +77,40 @@ impl StatusNotifierItem { let Some(menu_proxy) = self.menu_proxy.clone() else { return Subscription::none(); }; - Subscription::run_with_id( - format!("status-notifier-item-layout-{}", &self.name), - async move { - let initial = futures::stream::once(get_layout(menu_proxy.clone())); - - let layout_updated = menu_proxy.receive_layout_updated().await.unwrap(); - let props_updated = menu_proxy.receive_items_properties_updated().await.unwrap(); - - // Merge both streams - any update triggers a layout refetch - let updates = - futures::stream_select!(layout_updated.map(|_| ()), props_updated.map(|_| ())) - .then(move |()| get_layout(menu_proxy.clone())); - - initial.chain(updates) + struct Wrapper { + menu_proxy: DBusMenuProxy<'static>, + name: String, + } + impl Hash for Wrapper { + fn hash(&self, state: &mut H) { + self.name.hash(state); } - .flatten_stream(), + } + Subscription::run_with( + Wrapper { + menu_proxy, + name: format!("status-notifier-item-layout-{}", &self.name), + }, + |Wrapper { menu_proxy, .. }| { + let menu_proxy = menu_proxy.clone(); + async move { + let initial = futures::stream::once(get_layout(menu_proxy.clone())); + + let layout_updated = menu_proxy.receive_layout_updated().await.unwrap(); + let props_updated = + menu_proxy.receive_items_properties_updated().await.unwrap(); + + // Merge both streams - any update triggers a layout refetch + let updates = futures::stream_select!( + layout_updated.map(|_| ()), + props_updated.map(|_| ()) + ) + .then(move |()| get_layout(menu_proxy.clone())); + + initial.chain(updates) + } + .flatten_stream() + }, ) } @@ -108,15 +127,30 @@ impl StatusNotifierItem { } let item_proxy = self.item_proxy.clone(); - Subscription::run_with_id( - format!("status-notifier-item-icon-{}", &self.name), - async move { - let new_icon_stream = item_proxy.receive_new_icon().await.unwrap(); - futures::stream::once(async {}) - .chain(new_icon_stream.map(|_| ())) - .then(move |()| icon_events(item_proxy.clone())) + struct Wrapper { + item_proxy: StatusNotifierItemProxy<'static>, + name: String, + } + impl Hash for Wrapper { + fn hash(&self, state: &mut H) { + self.name.hash(state); } - .flatten_stream(), + } + Subscription::run_with( + Wrapper { + item_proxy, + name: format!("status-notifier-item-icon-{}", &self.name), + }, + |Wrapper { item_proxy, .. }| { + let item_proxy = item_proxy.clone(); + async move { + let new_icon_stream = item_proxy.receive_new_icon().await.unwrap(); + futures::stream::once(async {}) + .chain(new_icon_stream.map(|_| ())) + .then(move |()| icon_events(item_proxy.clone())) + } + .flatten_stream() + }, ) } diff --git a/cosmic-applet-status-area/src/subscriptions/status_notifier_watcher/mod.rs b/cosmic-applet-status-area/src/subscriptions/status_notifier_watcher/mod.rs index 9f9c7d14..025d1bf6 100644 --- a/cosmic-applet-status-area/src/subscriptions/status_notifier_watcher/mod.rs +++ b/cosmic-applet-status-area/src/subscriptions/status_notifier_watcher/mod.rs @@ -3,6 +3,8 @@ // TODO: Both this and server proxy could emit same events, have way to generate stream from either? +use std::any::TypeId; + use cosmic::iced::{self, Subscription}; use futures::{StreamExt, stream}; @@ -26,8 +28,8 @@ enum State { } pub fn subscription() -> iced::Subscription { - Subscription::run_with_id( - "status-notifier-watcher", + pub struct MyID; + Subscription::run_with(TypeId::of::(), |_| { stream::unfold(State::NotConnected, |state| async move { match state { State::NotConnected => match connect().await { @@ -42,8 +44,8 @@ pub fn subscription() -> iced::Subscription { .map(|event| (event, State::Connected(stream))), State::Failed => None, } - }), - ) + }) + }) } async fn connect() -> zbus::Result<(zbus::Connection, client::EventStream)> { diff --git a/cosmic-applet-tiling/Cargo.toml b/cosmic-applet-tiling/Cargo.toml index 5e9464d3..23e689e0 100644 --- a/cosmic-applet-tiling/Cargo.toml +++ b/cosmic-applet-tiling/Cargo.toml @@ -10,7 +10,6 @@ anyhow.workspace = true cctk.workspace = true cosmic-comp-config = { git = "https://github.com/pop-os/cosmic-comp.git", rev = "5eb5af4" } cosmic-protocols.workspace = true -cosmic-time.workspace = true i18n-embed-fl.workspace = true i18n-embed.workspace = true rust-embed.workspace = true diff --git a/cosmic-applet-tiling/src/wayland_subscription.rs b/cosmic-applet-tiling/src/wayland_subscription.rs index ba69e3ca..4f22c4b8 100644 --- a/cosmic-applet-tiling/src/wayland_subscription.rs +++ b/cosmic-applet-tiling/src/wayland_subscription.rs @@ -23,16 +23,15 @@ pub enum WorkspacesUpdate { } pub fn workspaces() -> iced::Subscription { - Subscription::run_with_id( - std::any::TypeId::of::(), + Subscription::run_with(std::any::TypeId::of::(), |_| { stream::channel(50, move |mut output| async move { let mut state = State::Waiting; loop { state = start_listening(state, &mut output).await; } - }), - ) + }) + }) } async fn start_listening( diff --git a/cosmic-applet-tiling/src/window.rs b/cosmic-applet-tiling/src/window.rs index 7a081cce..0360ff48 100644 --- a/cosmic-applet-tiling/src/window.rs +++ b/cosmic-applet-tiling/src/window.rs @@ -6,8 +6,8 @@ use crate::{ }; use cctk::sctk::reexports::calloop::channel::SyncSender; use cosmic::{ - Element, Task, app, - app::Core, + Element, Task, + app::{self, Core}, applet::{menu_button, padded_control}, cosmic_config::{Config, ConfigSet, CosmicConfigEntry}, cosmic_theme::Spacing, @@ -21,12 +21,11 @@ use cosmic::{ widget::{ container, divider, segmented_button::{self, Entity, SingleSelectModel}, - segmented_control, text, + segmented_control, text, toggler, }, }; use cosmic_comp_config::{CosmicCompConfig, TileBehavior}; use cosmic_protocols::workspace::v2::client::zcosmic_workspace_handle_v2::TilingState; -use cosmic_time::{Timeline, anim, chain, id}; use std::{thread, time::Instant}; use tracing::error; @@ -37,7 +36,6 @@ const OFF: &str = "com.system76.CosmicAppletTiling.Off"; pub struct Window { core: Core, popup: Option, - timeline: Timeline, config: CosmicCompConfig, config_helper: Config, new_workspace_behavior_model: segmented_button::SingleSelectModel, @@ -45,17 +43,14 @@ pub struct Window { /// may not match the config value if behavior is per-workspace autotiled: bool, workspace_tx: Option>, - tile_windows: id::Toggler, - active_hint: id::Toggler, } #[derive(Clone, Debug)] pub enum Message { TogglePopup, PopupClosed(Id), - Frame(Instant), - ToggleTileWindows(chain::Toggler, bool), - ToggleActiveHint(chain::Toggler, bool), + ToggleTileWindows(bool), + ToggleActiveHint(bool), MyConfigUpdate(Box), WorkspaceUpdate(WorkspacesUpdate), NewWorkspace(Entity), @@ -110,15 +105,12 @@ impl cosmic::Application for Window { let window = Self { core, popup: None, - timeline: Timeline::default(), autotiled: config.autotile, config, config_helper, new_workspace_behavior_model, new_workspace_entity, workspace_tx: None, - tile_windows: id::Toggler::unique(), - active_hint: id::Toggler::unique(), }; (window, Task::none()) } @@ -128,12 +120,7 @@ impl cosmic::Application for Window { } fn subscription(&self) -> Subscription { - let timeline = self - .timeline - .as_subscription() - .map(|(_, now)| Message::Frame(now)); Subscription::batch([ - timeline, self.core .watch_config::("com.system76.CosmicComp") .map(|u| Message::MyConfigUpdate(Box::new(u.config))), @@ -146,15 +133,7 @@ impl cosmic::Application for Window { Message::WorkspaceUpdate(msg) => match msg { WorkspacesUpdate::State(state) => { self.autotiled = matches!(state, TilingState::TilingEnabled); - if self.popup.is_some() { - self.timeline - .set_chain(if self.autotiled { - cosmic_time::chain::Toggler::on(self.tile_windows.clone(), 1.0) - } else { - cosmic_time::chain::Toggler::off(self.tile_windows.clone(), 1.0) - }) - .start(); - } + if self.popup.is_some() {} } WorkspacesUpdate::Started(tx) => { self.workspace_tx = Some(tx); @@ -167,9 +146,6 @@ impl cosmic::Application for Window { return if let Some(p) = self.popup.take() { destroy_popup(p) } else { - self.timeline = Timeline::default(); - self.tile_windows = id::Toggler::unique(); - self.active_hint = id::Toggler::unique(); let new_id = Id::unique(); self.popup = Some(new_id); let popup_settings = self.core.applet.get_popup_settings( @@ -188,9 +164,7 @@ impl cosmic::Application for Window { self.popup = None; } } - Message::Frame(now) => self.timeline.now(now), - Message::ToggleTileWindows(chain, toggled) => { - self.timeline.set_chain(chain).start(); + Message::ToggleTileWindows(toggled) => { self.autotiled = toggled; // set via protocol @@ -206,8 +180,7 @@ impl cosmic::Application for Window { } } } - Message::ToggleActiveHint(chain, toggled) => { - self.timeline.set_chain(chain).start(); + Message::ToggleActiveHint(toggled) => { self.config.active_hint = toggled; let helper = self.config_helper.clone(); @@ -223,16 +196,6 @@ impl cosmic::Application for Window { .activate_position(if c.autotile { 0 } else { 1 }); } - if c.active_hint != self.config.active_hint && self.popup.is_some() { - self.timeline - .set_chain(if c.active_hint { - cosmic_time::chain::Toggler::on(self.active_hint.clone(), 1.0) - } else { - cosmic_time::chain::Toggler::off(self.active_hint.clone(), 1.0) - }) - .start(); - } - self.config = *c; } Message::NewWorkspace(e) => { @@ -295,17 +258,12 @@ impl cosmic::Application for Window { .on_activate(Message::NewWorkspace); let content_list = column![ padded_control(container( - anim!( - self.tile_windows, - &self.timeline, - fl!("tile-current"), - self.autotiled, - |chain, enable| { Message::ToggleTileWindows(chain, enable) }, - ) - .text_size(14) - .width(Length::Fill), - )) - .width(Length::Fill), + toggler(self.autotiled) + .on_toggle(Message::ToggleTileWindows) + .text_size(14) + .width(Length::Fill) + .label(fl!("tile-current")) + )), padded_control(divider::horizontal::default()).padding([space_xxs, space_s]), padded_control( column![ @@ -334,15 +292,11 @@ impl cosmic::Application for Window { )), padded_control(divider::horizontal::default()).padding([space_xxs, space_s]), padded_control( - anim!( - self.active_hint, - &self.timeline, - fl!("active-hint"), - self.config.active_hint, - |chain, enable| { Message::ToggleActiveHint(chain, enable) }, - ) - .text_size(14) - .width(Length::Fill), + toggler(self.config.active_hint) + .on_toggle(Message::ToggleActiveHint) + .label(fl!("active-hint")) + .text_size(14) + .width(Length::Fill), ), padded_control(divider::horizontal::default()).padding([space_xxs, space_s]), menu_button(text::body(fl!("window-management-settings"))) @@ -353,7 +307,7 @@ impl cosmic::Application for Window { self.core.applet.popup_container(content_list).into() } - fn style(&self) -> Option { + fn style(&self) -> Option { Some(cosmic::applet::style()) } } diff --git a/cosmic-applet-time/src/window.rs b/cosmic-applet-time/src/window.rs index c7d466be..0fe87878 100644 --- a/cosmic-applet-time/src/window.rs +++ b/cosmic-applet-time/src/window.rs @@ -10,15 +10,15 @@ use cosmic::{ Alignment, Length, Rectangle, Subscription, futures::{SinkExt, StreamExt, channel::mpsc}, platform_specific::shell::wayland::commands::popup::{destroy_popup, get_popup}, - widget::{column, row, vertical_space}, + widget::{column, row, rule}, window, }, iced_futures::stream, - iced_widget::{Column, horizontal_rule}, + iced_widget::Column, surface, theme, widget::{ - Button, Grid, Id, Space, autosize, button, container, divider, grid, horizontal_space, - icon, rectangle_tracker::*, text, + Button, Grid, Id, autosize, button, container, divider, grid, icon, rectangle_tracker::*, + space, text, }, }; use jiff::{ @@ -28,6 +28,7 @@ use jiff::{ tz::TimeZone, }; use logind_zbus::manager::ManagerProxy; +use std::hash::Hash; use std::sync::LazyLock; use timedate_zbus::TimeDateProxy; use tokio::{sync::watch, time}; @@ -215,7 +216,7 @@ impl Window { elements.push(self.core.applet.text(p.to_owned()).into()); } elements.push( - horizontal_rule(2) + rule::horizontal(2) .width(self.core.applet.suggested_size(true).0) .into(), ); @@ -245,7 +246,7 @@ impl Window { Element::from( column!( date_time_col, - horizontal_space().width(Length::Fixed( + space::horizontal().width(Length::Fixed( (self.core.applet.suggested_size(true).0 + 2 * self.core.applet.suggested_padding(true).1) as f32 @@ -302,7 +303,7 @@ impl Window { Element::from( row!( self.core.applet.text(formatted_date), - container(vertical_space().height(Length::Fixed( + container(space::vertical().height(Length::Fixed( (self.core.applet.suggested_size(true).1 + 2 * self.core.applet.suggested_padding(true).1) as f32 @@ -355,64 +356,79 @@ impl cosmic::Application for Window { &mut self.core } - fn style(&self) -> Option { + fn style(&self) -> Option { Some(cosmic::applet::style()) } fn subscription(&self) -> Subscription { fn time_subscription(mut show_seconds: watch::Receiver) -> Subscription { - Subscription::run_with_id( - "time-sub", - stream::channel(1, |mut output| async move { - // Mark this receiver's state as changed so that it always receives an initial - // update during the loop below - // This allows us to avoid duplicating code from the loop - show_seconds.mark_changed(); - let mut period = 1; - let mut timer = time::interval(time::Duration::from_secs(period)); - timer.set_missed_tick_behavior(time::MissedTickBehavior::Skip); + struct Wrapper { + inner: watch::Receiver, + id: &'static str, + } + impl Hash for Wrapper { + fn hash(&self, state: &mut H) { + self.id.hash(state); + } + } + Subscription::run_with( + Wrapper { + inner: show_seconds, + id: "time-sub", + }, + |Wrapper { inner, id }| { + let mut show_seconds = inner.clone(); + stream::channel(1, move |mut output: mpsc::Sender| async move { + // Mark this receiver's state as changed so that it always receives an initial + // update during the loop below + // This allows us to avoid duplicating code from the loop + show_seconds.mark_changed(); + let mut period = 1; + let mut timer = time::interval(time::Duration::from_secs(period)); + timer.set_missed_tick_behavior(time::MissedTickBehavior::Skip); - loop { - tokio::select! { - _ = timer.tick() => { - #[cfg(debug_assertions)] - if let Err(err) = output.send(Message::Tick).await { - tracing::error!(?err, "Failed sending tick request to applet"); - } - #[cfg(not(debug_assertions))] - let _ = output.send(Message::Tick).await; + loop { + tokio::select! { + _ = timer.tick() => { + #[cfg(debug_assertions)] + if let Err(err) = output.send(Message::Tick).await { + tracing::error!(?err, "Failed sending tick request to applet"); + } + #[cfg(not(debug_assertions))] + let _ = output.send(Message::Tick).await; - // Calculate a delta if we're ticking per minute to keep ticks stable - // Based on i3status-rust - let current = Timestamp::now().as_second() as u64 % period; - if current != 0 { - timer.reset_after(time::Duration::from_secs(period - current)); - } - }, - // Update timer if the user toggles show_seconds - Ok(()) = show_seconds.changed() => { - let seconds = *show_seconds.borrow_and_update(); - if seconds { - period = 1; - // Subsecond precision isn't needed; skip calculating offset - let period = time::Duration::from_secs(period); - let start = time::Instant::now() + period; - timer = time::interval_at(start, period); - } else { - period = 60; - let delta = time::Duration::from_secs(period - Timestamp::now().as_second() as u64 % period); - let now = time::Instant::now(); - // Start ticking from the next minute to update the time properly - let start = now + delta; - let period = time::Duration::from_secs(period); - timer = time::interval_at(start, period); - } + // Calculate a delta if we're ticking per minute to keep ticks stable + // Based on i3status-rust + let current = Timestamp::now().as_second() as u64 % period; + if current != 0 { + timer.reset_after(time::Duration::from_secs(period - current)); + } + }, + // Update timer if the user toggles show_seconds + Ok(()) = show_seconds.changed() => { + let seconds = *show_seconds.borrow_and_update(); + if seconds { + period = 1; + // Subsecond precision isn't needed; skip calculating offset + let period = time::Duration::from_secs(period); + let start = time::Instant::now() + period; + timer = time::interval_at(start, period); + } else { + period = 60; + let delta = time::Duration::from_secs(period - Timestamp::now().as_second() as u64 % period); + let now = time::Instant::now(); + // Start ticking from the next minute to update the time properly + let start = now + delta; + let period = time::Duration::from_secs(period); + timer = time::interval_at(start, period); - timer.set_missed_tick_behavior(time::MissedTickBehavior::Skip); + timer.set_missed_tick_behavior(time::MissedTickBehavior::Skip); + } + } } } - } - }), + }) + }, ) } @@ -438,8 +454,7 @@ impl cosmic::Application for Window { } fn timezone_subscription() -> Subscription { - Subscription::run_with_id( - "timezone-sub", + Subscription::run_with("timezone-sub", |_| { stream::channel(1, |mut output| async move { 'retry: loop { match timezone_update(&mut output).await { @@ -455,8 +470,8 @@ impl cosmic::Application for Window { } std::future::pending().await - }), - ) + }) + }) } // Update the time when waking from sleep @@ -474,14 +489,13 @@ impl cosmic::Application for Window { } fn wake_from_sleep_subscription() -> Subscription { - Subscription::run_with_id( - "wake-from-suspend-sub", + Subscription::run_with("wake-from-suspend-sub", |_| { stream::channel(1, |mut output| async move { if let Err(err) = wake_from_sleep(&mut output).await { tracing::error!(?err, "Failed to subscribe to wake-from-sleep signal"); } - }), - ) + }) + }) } let show_seconds_rx = self.show_seconds_tx.subscribe(); @@ -728,7 +742,7 @@ impl cosmic::Application for Window { let content_list = column![ row![ column![date, day_of_week], - Space::with_width(Length::Fill), + space::horizontal().width(Length::Fill), month_controls, ] .align_y(Alignment::Center) diff --git a/cosmic-applet-workspaces/src/components/app.rs b/cosmic-applet-workspaces/src/components/app.rs index 07f4c13e..26de9ad6 100644 --- a/cosmic-applet-workspaces/src/components/app.rs +++ b/cosmic-applet-workspaces/src/components/app.rs @@ -23,7 +23,7 @@ use cosmic::{ iced_core::{Background, Border}, scroll::DiscreteScrollState, surface, - widget::{Id, autosize, container, horizontal_space, vertical_space}, + widget::{Id, autosize, container, space}, }; use crate::{ @@ -196,10 +196,10 @@ impl cosmic::Application for IcedWorkspacesApplet { (suggested_window_size.0.get() as f32, suggested_total as f32) }; - let content = row!(content, vertical_space().height(Length::Fixed(height))) + let content = row!(content, space::vertical().height(Length::Fixed(height))) .align_y(Alignment::Center); - let content = column!(content, horizontal_space().width(Length::Fixed(width))) + let content = column!(content, space::horizontal().width(Length::Fixed(width))) .align_x(Alignment::Center); let btn = button( @@ -323,7 +323,7 @@ impl cosmic::Application for IcedWorkspacesApplet { ]) } - fn style(&self) -> Option { + fn style(&self) -> Option { Some(cosmic::applet::style()) } } diff --git a/cosmic-applet-workspaces/src/wayland_subscription.rs b/cosmic-applet-workspaces/src/wayland_subscription.rs index 332c2a41..c8cb1c6c 100644 --- a/cosmic-applet-workspaces/src/wayland_subscription.rs +++ b/cosmic-applet-workspaces/src/wayland_subscription.rs @@ -22,16 +22,15 @@ pub enum WorkspacesUpdate { } pub fn workspaces() -> iced::Subscription { - Subscription::run_with_id( - std::any::TypeId::of::(), + Subscription::run_with(std::any::TypeId::of::(), |_| { stream::channel(50, move |mut output| async move { let mut state = State::Waiting; loop { state = start_listening(state, &mut output).await; } - }), - ) + }) + }) } async fn start_listening( diff --git a/cosmic-panel-button/src/lib.rs b/cosmic-panel-button/src/lib.rs index 8b94c8aa..0b2d70b1 100644 --- a/cosmic-panel-button/src/lib.rs +++ b/cosmic-panel-button/src/lib.rs @@ -3,6 +3,7 @@ use config::{CosmicPanelButtonConfig, IndividualConfig, Override}; use cosmic::desktop::fde::{self, DesktopEntry, get_languages_from_env}; +use cosmic::widget::space; use cosmic::{ Task, app, applet::{ @@ -12,7 +13,7 @@ use cosmic::{ iced::{self, Length}, iced_widget::row, surface, - widget::{Id, autosize, vertical_space}, + widget::{Id, autosize}, }; use cosmic_config::{Config, CosmicConfigEntry}; use std::{env, fs, process::Command, sync::LazyLock}; @@ -115,7 +116,7 @@ impl cosmic::Application for Button { &mut self.core } - fn style(&self) -> Option { + fn style(&self) -> Option { Some(cosmic::applet::style()) } @@ -179,7 +180,7 @@ impl cosmic::Application for Button { } else { let content = row!( self.core.applet.text(&self.desktop.name), - vertical_space().height(Length::Fixed( + space::vertical().height(Length::Fixed( (self.core.applet.suggested_size(true).1 + 2 * self.core.applet.suggested_padding(true).1) as f32