diff --git a/.zed/settings.json b/.zed/settings.json new file mode 100644 index 0000000..2cc7b98 --- /dev/null +++ b/.zed/settings.json @@ -0,0 +1,15 @@ +{ + "format_on_save": "on", + "lsp": { + "rust-analyzer": { + "initialization_options": { + "check": { + "command": "clippy", + }, + "rustfmt": { + "extraArgs": ["+nightly"], + }, + }, + }, + }, +} diff --git a/Cargo.lock b/Cargo.lock index 3c25f5b..d509984 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -175,7 +175,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f2a1bb052857d5dd49572219344a7332b31b76405648eabac5bc68978251bcd" dependencies = [ "android-properties", - "bitflags 2.11.0", + "bitflags 2.11.1", "cc", "jni", "libc", @@ -261,12 +261,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" -[[package]] -name = "as-raw-xcb-connection" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" - [[package]] name = "as-slice" version = "0.2.1" @@ -294,7 +288,7 @@ dependencies = [ "enumflags2", "futures-channel", "futures-util", - "rand 0.9.2", + "rand 0.9.4", "raw-window-handle", "serde", "serde_repr", @@ -312,7 +306,7 @@ dependencies = [ "enumflags2", "futures-channel", "futures-util", - "rand 0.9.2", + "rand 0.9.4", "serde", "serde_repr", "tokio", @@ -572,9 +566,9 @@ dependencies = [ [[package]] name = "avif-serialize" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "375082f007bd67184fb9c0374614b29f9aaa604ec301635f72338bb65386a53d" +checksum = "e7178fe5f7d460b13895ebb9dcb28a3a6216d2df2574a0806cb51b555d297f38" dependencies = [ "arrayvec", ] @@ -615,7 +609,7 @@ version = "0.69.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "cexpr", "clang-sys", "itertools 0.12.1", @@ -658,20 +652,20 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" dependencies = [ "serde_core", ] [[package]] name = "bitstream-io" -version = "4.9.0" +version = "4.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60d4bd9d1db2c6bdf285e223a7fa369d5ce98ec767dec949c6ca62863ce61757" +checksum = "7eff00be299a18769011411c9def0d827e8f2d7bf0c3dbf53633147a8867fd1f" dependencies = [ - "core2", + "no_std_io2", ] [[package]] @@ -816,7 +810,7 @@ version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dbf9978365bac10f54d1d4b04f7ce4427e51f71d61f2fe15e3fed5166474df7" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "polling", "rustix 1.1.4", "slab", @@ -837,9 +831,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.59" +version = "1.2.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7a4d3ec6524d28a329fc53654bbadc9bdd7b0431f5d65f1a56ffb28a1ee5283" +checksum = "d16d90359e986641506914ba71350897565610e87ce0ad9e6f28569db3dd5c6d" dependencies = [ "find-msvc-tools", "jobserver", @@ -875,24 +869,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" dependencies = [ "iana-time-zone", - "js-sys", "num-traits", - "pure-rust-locales", "serde", - "wasm-bindgen", "windows-link 0.2.1", ] -[[package]] -name = "chrono-tz" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6139a8597ed92cf816dfb33f5dd6cf0bb93a6adc938f11039f371bc5bcd26c3" -dependencies = [ - "chrono", - "phf 0.12.1", -] - [[package]] name = "clang-sys" version = "1.8.1" @@ -905,9 +886,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.7" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3e64b0cc0439b12df2fa678eae89a1c56a529fd067a9115f7827f1fffd22b32" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" [[package]] name = "clipboard-win" @@ -921,7 +902,6 @@ dependencies = [ [[package]] name = "clipboard_macos" version = "0.1.0" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "objc", "objc-foundation", @@ -931,22 +911,12 @@ dependencies = [ [[package]] name = "clipboard_wayland" version = "0.2.2" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "dnd", "mime 0.1.0", "smithay-clipboard", ] -[[package]] -name = "clipboard_x11" -version = "0.4.2" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" -dependencies = [ - "thiserror 1.0.69", - "x11rb", -] - [[package]] name = "cocoa" version = "0.25.0" @@ -1102,20 +1072,11 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "core-foundation 0.10.1", "libc", ] -[[package]] -name = "core2" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" -dependencies = [ - "memchr", -] - [[package]] name = "core_maths" version = "0.1.1" @@ -1128,7 +1089,6 @@ dependencies = [ [[package]] name = "cosmic-applets-config" version = "1.0.2" -source = "git+https://github.com/pop-os/cosmic-applets#f140e80bf94fc633fbcd6b3162171c8f131c3b28" dependencies = [ "cosmic-config", "serde", @@ -1137,7 +1097,6 @@ dependencies = [ [[package]] name = "cosmic-bg-config" version = "1.0.3" -source = "git+https://github.com/pop-os/cosmic-bg#644993abd84bf04d7b3f2211e3656002c2a6f00b" dependencies = [ "cosmic-config", "derive_setters", @@ -1149,9 +1108,8 @@ dependencies = [ [[package]] name = "cosmic-client-toolkit" version = "0.2.0" -source = "git+https://github.com/pop-os/cosmic-protocols//#160b086abe03cd34a8a375d7fbe47b24308d1f38" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "cosmic-protocols", "libc", "smithay-client-toolkit", @@ -1162,7 +1120,6 @@ dependencies = [ [[package]] name = "cosmic-comp-config" version = "1.0.0" -source = "git+https://github.com/pop-os/cosmic-comp#3e84968dacb6a50a82ef5e35c0ac373c38172681" dependencies = [ "cosmic-config", "cosmic-randr-shell", @@ -1175,7 +1132,6 @@ dependencies = [ [[package]] name = "cosmic-config" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#a44cff8011d81209e18de86f24da248c88b5a28d" dependencies = [ "atomicwrites", "calloop", @@ -1197,7 +1153,6 @@ dependencies = [ [[package]] name = "cosmic-config-derive" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#a44cff8011d81209e18de86f24da248c88b5a28d" dependencies = [ "quote", "syn 2.0.117", @@ -1216,7 +1171,7 @@ name = "cosmic-dbus-networkmanager" version = "0.1.0" source = "git+https://github.com/pop-os/dbus-settings-bindings#507e342c21d3ce6ae41b1d4f3fa2f0ad5ee23e75" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "derive_builder", "jiff", "procfs", @@ -1227,7 +1182,7 @@ dependencies = [ [[package]] name = "cosmic-freedesktop-icons" version = "0.4.0" -source = "git+https://github.com/pop-os/freedesktop-icons#7a61a704f6d1ec41f71cbe766e3cc484858523fa" +source = "git+https://github.com/pop-os/freedesktop-icons#9c562fe3ecf03241a46a60c0078cd6ea10bd75ce" dependencies = [ "bstr", "btoi", @@ -1244,8 +1199,6 @@ version = "0.1.0" dependencies = [ "anyhow", "async-fn-stream", - "chrono", - "chrono-tz", "clap_lex", "color-eyre", "cosmic-applets-config", @@ -1268,13 +1221,14 @@ dependencies = [ "i18n-embed-fl", "icu", "image", + "jiff", + "jiff-icu", "kdl", - "libcosmic", + "libcosmic-yoda", "logind-zbus", - "nix", "pam-client", "pwd", - "ron 0.11.0", + "ron 0.12.1", "rust-embed", "shlex", "timedate-zbus", @@ -1314,7 +1268,7 @@ dependencies = [ "libc", "nix", "pwd", - "ron 0.11.0", + "ron 0.12.1", "serde", "tokio", "tracing", @@ -1328,9 +1282,8 @@ dependencies = [ [[package]] name = "cosmic-protocols" version = "0.2.0" -source = "git+https://github.com/pop-os/cosmic-protocols//#160b086abe03cd34a8a375d7fbe47b24308d1f38" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -1342,7 +1295,6 @@ dependencies = [ [[package]] name = "cosmic-randr-shell" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-randr#6e8e795970fa06d434af22775e415b517f7552d3" dependencies = [ "kdl", "slotmap", @@ -1352,7 +1304,6 @@ dependencies = [ [[package]] name = "cosmic-settings-a11y-manager-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#04da80bb904f500ea07ec6ee4ea45d3b50adb9bb" dependencies = [ "cosmic-protocols", "iced_futures", @@ -1366,7 +1317,6 @@ dependencies = [ [[package]] name = "cosmic-settings-accessibility-subscription" version = "1.0.7" -source = "git+https://github.com/pop-os/cosmic-settings#04da80bb904f500ea07ec6ee4ea45d3b50adb9bb" dependencies = [ "cosmic-dbus-a11y", "futures", @@ -1379,7 +1329,6 @@ dependencies = [ [[package]] name = "cosmic-settings-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-settings-daemon#716da6d6af0b252e2f78aba2ad72ee19ae0241e0" dependencies = [ "cosmic-config", "ron 0.11.0", @@ -1400,7 +1349,6 @@ dependencies = [ [[package]] name = "cosmic-settings-daemon-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-settings-daemon#716da6d6af0b252e2f78aba2ad72ee19ae0241e0" dependencies = [ "cosmic-config", "cosmic-theme", @@ -1409,10 +1357,10 @@ dependencies = [ [[package]] name = "cosmic-text" -version = "0.18.2" -source = "git+https://github.com/pop-os/cosmic-text.git#9a2ab09f06905e91f41d64ac6eee887726e7fd76" +version = "0.19.0" +source = "git+https://github.com/pop-os/cosmic-text.git#c24886c2471e5606587c46090cd25dbbf209186b" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "fontdb", "harfrust", "linebender_resource_handle", @@ -1433,7 +1381,6 @@ dependencies = [ [[package]] name = "cosmic-theme" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#a44cff8011d81209e18de86f24da248c88b5a28d" dependencies = [ "almost", "configparser", @@ -1536,12 +1483,6 @@ dependencies = [ "uncased", ] -[[package]] -name = "ctor-lite" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e162d0c2e2068eb736b71e5597eff0b9944e6b973cd9f37b6a288ab9bf20e300" - [[package]] name = "cursor-icon" version = "1.2.0" @@ -1759,7 +1700,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block2 0.6.2", "libc", "objc2 0.6.4", @@ -1788,9 +1729,8 @@ dependencies = [ [[package]] name = "dnd" version = "0.1.0" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "mime 0.1.0", "raw-window-handle", "smithay-client-toolkit", @@ -1815,46 +1755,7 @@ checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "dpi" version = "0.1.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" - -[[package]] -name = "drm" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0f8a69e60d75ae7dab4ef26a59ca99f2a89d4c142089b537775ae0c198bdcde" -dependencies = [ - "bitflags 2.11.0", - "bytemuck", - "drm-ffi", - "drm-fourcc", - "rustix 0.38.44", -] - -[[package]] -name = "drm-ffi" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41334f8405792483e32ad05fbb9c5680ff4e84491883d2947a4757dc54cb2ac6" -dependencies = [ - "drm-sys", - "rustix 0.38.44", -] - -[[package]] -name = "drm-fourcc" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4" - -[[package]] -name = "drm-sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d09ff881f92f118b11105ba5e34ff8f4adf27b30dae8f12e28c193af1c83176" -dependencies = [ - "libc", - "linux-raw-sys 0.6.5", -] +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" [[package]] name = "dyn-clone" @@ -2156,9 +2057,9 @@ checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "font-types" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d9237c6d82152100c691fb77ea18037b402bcc7257d2c876a4ffac81bc22a1c" +checksum = "5b38ad915f6dadd993ced50848a8291a543bd41ca62bc10740d5e64e2ab4cfd7" dependencies = [ "bytemuck", ] @@ -2357,16 +2258,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "gethostname" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" -dependencies = [ - "rustix 1.1.4", - "windows-link 0.2.1", -] - [[package]] name = "getrandom" version = "0.2.17" @@ -2489,7 +2380,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "gpu-alloc-types", ] @@ -2499,7 +2390,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", ] [[package]] @@ -2520,7 +2411,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "gpu-descriptor-types", "hashbrown 0.15.5", ] @@ -2531,7 +2422,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", ] [[package]] @@ -2549,9 +2440,9 @@ dependencies = [ [[package]] name = "grid" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9e2d4c0a8296178d8802098410ca05d86b17a10bb5ab559b3fb404c1f948220" +checksum = "b40ca9252762c466af32d0b1002e91e4e1bc5398f77455e55474deb466355ff5" [[package]] name = "guillotiere" @@ -2581,7 +2472,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9da2e5ae821f6e96664977bf974d6d6a2d6682f9ccee23e62ec1d134246845f9" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "bytemuck", "core_maths", "read-fonts", @@ -2612,6 +2503,12 @@ dependencies = [ "foldhash 0.2.0", ] +[[package]] +name = "hashbrown" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" + [[package]] name = "heck" version = "0.4.1" @@ -2742,7 +2639,6 @@ dependencies = [ [[package]] name = "iced" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#a44cff8011d81209e18de86f24da248c88b5a28d" dependencies = [ "dnd", "iced_accessibility", @@ -2763,7 +2659,6 @@ dependencies = [ [[package]] name = "iced_accessibility" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#a44cff8011d81209e18de86f24da248c88b5a28d" dependencies = [ "accesskit", "accesskit_winit", @@ -2772,9 +2667,8 @@ dependencies = [ [[package]] name = "iced_core" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#a44cff8011d81209e18de86f24da248c88b5a28d" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "bytes", "cosmic-client-toolkit", "dnd", @@ -2796,7 +2690,6 @@ dependencies = [ [[package]] name = "iced_debug" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#a44cff8011d81209e18de86f24da248c88b5a28d" dependencies = [ "iced_core", "iced_futures", @@ -2806,7 +2699,6 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#a44cff8011d81209e18de86f24da248c88b5a28d" dependencies = [ "futures", "iced_core", @@ -2820,9 +2712,8 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#a44cff8011d81209e18de86f24da248c88b5a28d" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "bytemuck", "cosmic-text", "half", @@ -2841,7 +2732,6 @@ dependencies = [ [[package]] name = "iced_program" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#a44cff8011d81209e18de86f24da248c88b5a28d" dependencies = [ "iced_graphics", "iced_runtime", @@ -2850,7 +2740,6 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#a44cff8011d81209e18de86f24da248c88b5a28d" dependencies = [ "iced_graphics", "iced_tiny_skia", @@ -2862,7 +2751,6 @@ dependencies = [ [[package]] name = "iced_runtime" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#a44cff8011d81209e18de86f24da248c88b5a28d" dependencies = [ "bytes", "cosmic-client-toolkit", @@ -2877,7 +2765,6 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#a44cff8011d81209e18de86f24da248c88b5a28d" dependencies = [ "bytemuck", "cosmic-text", @@ -2894,10 +2781,8 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#a44cff8011d81209e18de86f24da248c88b5a28d" dependencies = [ - "as-raw-xcb-connection", - "bitflags 2.11.0", + "bitflags 2.11.1", "bytemuck", "cosmic-client-toolkit", "cryoglyph", @@ -2913,19 +2798,16 @@ dependencies = [ "rustc-hash 2.1.2", "rustix 0.38.44", "thiserror 2.0.18", - "tiny-xlib", "wayland-backend", "wayland-client", "wayland-protocols", "wayland-sys", "wgpu", - "x11rb", ] [[package]] name = "iced_widget" version = "0.14.2" -source = "git+https://github.com/pop-os/libcosmic#a44cff8011d81209e18de86f24da248c88b5a28d" dependencies = [ "cosmic-client-toolkit", "dnd", @@ -2943,7 +2825,6 @@ dependencies = [ [[package]] name = "iced_winit" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic#a44cff8011d81209e18de86f24da248c88b5a28d" dependencies = [ "cosmic-client-toolkit", "cursor-icon", @@ -3396,9 +3277,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" dependencies = [ "icu_normalizer", "icu_properties", @@ -3423,6 +3304,15 @@ dependencies = [ "zune-jpeg 0.5.15", ] +[[package]] +name = "image-extras" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60d02eb2c9ccbbab470538fce34c7bc3be7b4e59268e65a3171367b296cdb842" +dependencies = [ + "image", +] + [[package]] name = "image-webp" version = "0.2.4" @@ -3441,9 +3331,9 @@ checksum = "edcd27d72f2f071c64249075f42e205ff93c9a4c5f6c6da53e79ed9f9832c285" [[package]] name = "imgref" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c5cedc30da3a610cac6b4ba17597bdf7152cf974e8aab3afb3d54455e371c8" +checksum = "40fac9d56ed6437b198fddba683305e8e2d651aa42647f00f5ae542e7f5c94a2" [[package]] name = "indenter" @@ -3464,12 +3354,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.13.1" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45a8a2b9cb3e0b0c1803dbb0758ffac5de2f425b23c28f518faabd9d805342ff" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.0", "serde", "serde_core", ] @@ -3480,7 +3370,7 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd5b3eaf1a28b758ac0faa5a4254e8ab2705605496f1b1f3fbbc3988ad73d199" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "inotify-sys", "libc", ] @@ -3496,11 +3386,11 @@ dependencies = [ [[package]] name = "input" -version = "0.9.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbdc09524a91f9cacd26f16734ff63d7dc650daffadd2b6f84d17a285bd875a9" +checksum = "f9793345a65d71317763a33066b5d8351f8760dde8d4930fe9e39b5f14a7959d" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "input-sys", "libc", "log", @@ -3586,9 +3476,9 @@ checksum = "2ceaf4c6c48465bead8cb6a0b7c4ee0c86ecbb31239032b9c66ab9a08d2f3ee1" [[package]] name = "jiff" -version = "0.2.23" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a3546dc96b6d42c5f24902af9e2538e82e39ad350b0c766eb3fbf2d8f3d8359" +checksum = "f00b5dbd620d61dfdcb6007c9c1f6054ebd75319f163d886a9055cec1155073d" dependencies = [ "jiff-static", "jiff-tzdb-platform", @@ -3600,10 +3490,21 @@ dependencies = [ ] [[package]] -name = "jiff-static" -version = "0.2.23" +name = "jiff-icu" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4" +checksum = "0e67c2beaae8b10a82d849b9aabb698a43a682f32b17bcdc035d5ecadb44d646" +dependencies = [ + "icu_calendar", + "icu_time", + "jiff", +] + +[[package]] +name = "jiff-static" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e000de030ff8022ea1da3f466fbb0f3a809f5e51ed31f6dd931c35181ad8e6d7" dependencies = [ "proc-macro2", "quote", @@ -3695,9 +3596,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.94" +version = "0.3.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e04e2ef80ce82e13552136fabeef8a5ed1f985a96805761cbb9a2c34e7664d9" +checksum = "67df7112613f8bfd9150013a0314e196f4800d3201ae742489d999db2f979f08" dependencies = [ "cfg-if", "futures-util", @@ -3731,7 +3632,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fbe853b403ae61a04233030ae8a79d94975281ed9770a1f9e246732b534b28d" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "serde", ] @@ -3773,11 +3674,11 @@ dependencies = [ [[package]] name = "kqueue-sys" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" +checksum = "a7b65860415f949f23fa882e669f2dbd4a0f0eeb1acdd56790b30494afd7da2f" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.11.1", "libc", ] @@ -3828,14 +3729,13 @@ checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8" [[package]] name = "libc" -version = "0.2.184" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48f5d2a454e16a5ea0f4ced81bd44e4cfc7bd3a507b61887c99fd3538b28e4af" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] -name = "libcosmic" -version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic#a44cff8011d81209e18de86f24da248c88b5a28d" +name = "libcosmic-yoda" +version = "0.1.0-yoda.2" dependencies = [ "apply", "ashpd 0.12.3", @@ -3863,6 +3763,7 @@ dependencies = [ "iced_widget", "iced_winit", "image", + "image-extras", "jiff", "libc", "log", @@ -3912,14 +3813,14 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ddbf48fd451246b1f8c2610bd3b4ac0cc6e149d89832867093ab69a17194f08" +checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "libc", "plain", - "redox_syscall 0.7.3", + "redox_syscall 0.7.5", ] [[package]] @@ -3953,12 +3854,6 @@ version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" -[[package]] -name = "linux-raw-sys" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a385b1be4e5c3e362ad2ffa73c392e53f031eaa5b7d648e64cd87f27f6063d7" - [[package]] name = "linux-raw-sys" version = "0.12.1" @@ -4026,9 +3921,9 @@ dependencies = [ [[package]] name = "lru" -version = "0.16.3" +version = "0.16.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1dc47f592c06f33f8e3aea9591776ec7c9f9e4124778ff8a3c3b87159f7e593" +checksum = "7f66e8d5d03f609abc3a39e6f08e4164ebf1447a732906d39eb9b99b7919ef39" [[package]] name = "lyon" @@ -4042,9 +3937,9 @@ dependencies = [ [[package]] name = "lyon_algorithms" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9815fac08e6fd96733a11dce4f9d15a3f338e96a2e2311ee21e1b738efc2bc0f" +checksum = "8575c0d003ae459399623c4def180c63b77f343b1a7fee64f249b349e7699a31" dependencies = [ "lyon_path", "num-traits", @@ -4149,7 +4044,7 @@ version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block", "core-graphics-types 0.2.0", "foreign-types", @@ -4171,7 +4066,6 @@ dependencies = [ [[package]] name = "mime" version = "0.1.0" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "smithay-clipboard", ] @@ -4234,14 +4128,14 @@ checksum = "066cf25f0e8b11ee0df221219010f213ad429855f57c494f995590c861a9a7d8" dependencies = [ "arrayvec", "bit-set", - "bitflags 2.11.0", + "bitflags 2.11.1", "cfg-if", "cfg_aliases", "codespan-reporting", "half", "hashbrown 0.16.1", "hexf-parse", - "indexmap 2.13.1", + "indexmap 2.14.0", "libm", "log", "num-traits", @@ -4258,7 +4152,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "jni-sys 0.3.1", "log", "ndk-sys", @@ -4290,16 +4184,25 @@ checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" [[package]] name = "nix" -version = "0.30.1" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +checksum = "5d6d0705320c1e6ba1d912b5e37cf18071b6c2e9b7fa8215a1e8a7651966f5d3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "cfg-if", "cfg_aliases", "libc", ] +[[package]] +name = "no_std_io2" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418abd1b6d34fbf6cae440dc874771b0525a604428704c76e48b29a5e67b8003" +dependencies = [ + "memchr", +] + [[package]] name = "nom" version = "7.1.3" @@ -4331,7 +4234,7 @@ version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "fsevent-sys", "inotify", "kqueue", @@ -4349,7 +4252,7 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42b8cfee0e339a0337359f3c88165702ac6e600dc01c0cc9579a92d62b08477a" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", ] [[package]] @@ -4534,7 +4437,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block2 0.5.1", "libc", "objc2 0.5.2", @@ -4550,7 +4453,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block2 0.6.2", "objc2 0.6.4", "objc2-core-foundation", @@ -4563,7 +4466,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -4575,7 +4478,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block2 0.6.2", "dispatch2", "objc2 0.6.4", @@ -4587,7 +4490,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "libc", "objc2-core-foundation", ] @@ -4610,7 +4513,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "objc2-core-foundation", "objc2-core-graphics", ] @@ -4627,7 +4530,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block2 0.5.1", "libc", "objc2 0.5.2", @@ -4639,7 +4542,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block2 0.6.2", "objc2 0.6.4", "objc2-core-foundation", @@ -4651,7 +4554,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -4663,7 +4566,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -4676,7 +4579,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "objc2 0.6.4", "objc2-core-foundation", "objc2-foundation 0.3.2", @@ -4714,9 +4617,9 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "orbclient" -version = "0.3.51" +version = "0.3.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59aed3b33578edcfa1bc96a321d590d31832b6ad55a26f0313362ce687e9abd6" +checksum = "a570f6bca41d29acb2139229a7c873ec99bc9a313bd10804081d89bfac8ff329" dependencies = [ "libc", "libredox", @@ -4886,15 +4789,6 @@ dependencies = [ "phf_shared 0.11.3", ] -[[package]] -name = "phf" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "913273894cec178f401a31ec4b656318d95473527be05c0752cc41cdc32be8b7" -dependencies = [ - "phf_shared 0.12.1", -] - [[package]] name = "phf" version = "0.13.1" @@ -4913,7 +4807,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ "phf_shared 0.11.3", - "rand 0.8.5", + "rand 0.8.6", ] [[package]] @@ -4962,15 +4856,6 @@ dependencies = [ "siphasher", ] -[[package]] -name = "phf_shared" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06005508882fb681fd97892ecff4b7fd0fee13ef1aa569f8695dae7ab9099981" -dependencies = [ - "siphasher", -] - [[package]] name = "phf_shared" version = "0.13.1" @@ -4989,18 +4874,18 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project" -version = "1.1.11" +version = "1.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517" +checksum = "cbf0d9e68100b3a7989b4901972f265cd542e560a3a8a724e1e20322f4d06ce9" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.11" +version = "1.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" +checksum = "a990e22f43e84855daf260dded30524ef4a9021cc7541c26540500a50b624389" dependencies = [ "proc-macro2", "quote", @@ -5032,9 +4917,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "plain" @@ -5061,7 +4946,7 @@ version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "crc32fast", "fdeflate", "flate2", @@ -5096,9 +4981,9 @@ checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" [[package]] name = "portable-atomic-util" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "091397be61a01d4be58e7841595bd4bfedb15f1cd54977d79b8271e94ed799a3" +checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618" dependencies = [ "portable-atomic", ] @@ -5204,7 +5089,7 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25485360a54d6861439d60facef26de713b1e126bf015ec8f98239467a2b82f7" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "procfs-core", "rustix 1.1.4", ] @@ -5215,35 +5100,29 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6401bf7b6af22f78b563665d15a22e9aef27775b79b149a66ca022468a4e405" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "hex", ] [[package]] name = "profiling" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" +checksum = "3d595e54a326bc53c1c197b32d295e14b169e3cfeaa8dc82b529f947fba6bcf5" dependencies = [ "profiling-procmacros", ] [[package]] name = "profiling-procmacros" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b" +checksum = "4488a4a36b9a4ba6b9334a32a39971f77c1436ec82c38707bce707699cc3bbcb" dependencies = [ "quote", "syn 2.0.117", ] -[[package]] -name = "pure-rust-locales" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "869675ad2d7541aea90c6d88c81f46a7f4ea9af8cd0395d38f11a95126998a0d" - [[package]] name = "pwd" version = "1.4.0" @@ -5256,9 +5135,9 @@ dependencies = [ [[package]] name = "pxfm" -version = "0.1.28" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a041e753da8b807c9255f28de81879c78c876392ff2469cde94799b2896b9d" +checksum = "e0c5ccf5294c6ccd63a74f1565028353830a9c2f5eb0c682c355c471726a6e3f" [[package]] name = "quick-error" @@ -5268,23 +5147,14 @@ checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" [[package]] name = "quick-xml" -version = "0.38.4" +version = "0.39.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c" +checksum = "721da970c312655cde9b4ffe0547f20a8494866a4af5ff51f18b7c633d0c870b" 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.45" @@ -5308,18 +5178,18 @@ checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "rand_core 0.6.4", ] [[package]] name = "rand" -version = "0.9.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ "rand_chacha", "rand_core 0.9.5", @@ -5389,7 +5259,7 @@ dependencies = [ "num-traits", "paste", "profiling", - "rand 0.9.2", + "rand 0.9.4", "rand_chacha", "simd_helpers", "thiserror 2.0.18", @@ -5420,9 +5290,9 @@ checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] name = "rayon" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" dependencies = [ "either", "rayon-core", @@ -5455,16 +5325,16 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", ] [[package]] name = "redox_syscall" -version = "0.7.3" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce70a74e890531977d37e532c34d45e9055d2409ed08ddba14529471ed0be16" +checksum = "4666a1a60d8412eab19d94f6d13dcc9cea0a5ef4fdf6a5db306537413c661b1b" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", ] [[package]] @@ -5590,7 +5460,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db09040cc89e461f1a265139777a2bde7f8d8c67c4936f700c63ce3e2904d468" dependencies = [ "base64", - "bitflags 2.11.0", + "bitflags 2.11.1", "serde", "serde_derive", "unicode-ident", @@ -5602,7 +5472,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4147b952f3f819eca0e99527022f7d6a8d05f111aeb0a62960c74eb283bec8fc" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "once_cell", "serde", "serde_derive", @@ -5695,7 +5565,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "errno", "libc", "linux-raw-sys 0.4.15", @@ -5708,7 +5578,7 @@ version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "errno", "libc", "linux-raw-sys 0.12.1", @@ -5727,7 +5597,7 @@ version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd3c7c96f8a08ee34eff8857b11b49b07d71d1c3f4e88f8a88d4c9e9f90b1702" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "bytemuck", "core_maths", "log", @@ -5857,7 +5727,7 @@ version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ - "indexmap 2.13.1", + "indexmap 2.14.0", "itoa", "memchr", "serde", @@ -5878,15 +5748,15 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.18.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd5414fad8e6907dbdd5bc441a50ae8d6e26151a03b1de04d89a5576de61d01f" +checksum = "f05839ce67618e14a09b286535c0d9c94e85ef25469b0e13cb4f844e5593eb19" dependencies = [ "base64", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.13.1", + "indexmap 2.14.0", "schemars 0.9.0", "schemars 1.2.1", "serde_core", @@ -5897,9 +5767,9 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.18.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3db8978e608f1fe7357e211969fd9abdcae80bac1ba7a3369bb7eb6b404eb65" +checksum = "cf2ebbe86054f9b45bc3881e865683ccfaccce97b9b4cb53f3039d67f355a334" dependencies = [ "darling 0.23.0", "proc-macro2", @@ -5985,9 +5855,9 @@ dependencies = [ [[package]] name = "siphasher" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" [[package]] name = "skrifa" @@ -6026,7 +5896,7 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "bytemuck", "calloop", "calloop-wayland-source", @@ -6084,14 +5954,12 @@ dependencies = [ [[package]] name = "softbuffer" version = "0.4.1" -source = "git+https://github.com/pop-os/softbuffer?tag=cosmic-4.0#a3f77e251e7422803f693df6e3fc313c010c4dcb" +source = "git+https://github.com/pop-os/softbuffer?tag=cosmic-4.0#c2b2c19ddb38ff17495643699f97cb1f2064a1be" dependencies = [ - "as-raw-xcb-connection", "bytemuck", "cfg_aliases", "cocoa", "core-graphics", - "drm", "fastrand", "foreign-types", "js-sys", @@ -6101,14 +5969,12 @@ dependencies = [ "raw-window-handle", "redox_syscall 0.5.18", "rustix 0.38.44", - "tiny-xlib", "wasm-bindgen", "wayland-backend", "wayland-client", "wayland-sys", "web-sys", "windows-sys 0.52.0", - "x11rb", ] [[package]] @@ -6117,7 +5983,7 @@ version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", ] [[package]] @@ -6372,19 +6238,6 @@ dependencies = [ "strict-num", ] -[[package]] -name = "tiny-xlib" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0324504befd01cab6e0c994f34b2ffa257849ee019d3fb3b64fb2c858887d89e" -dependencies = [ - "as-raw-xcb-connection", - "ctor-lite", - "libloading", - "pkg-config", - "tracing", -] - [[package]] name = "tinystr" version = "0.8.3" @@ -6413,9 +6266,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.51.1" +version = "1.52.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f66bf9585cda4b724d3e78ab34b73fb2bbaba9011b9bfdf69dc836382ea13b8c" +checksum = "110a78583f19d5cdb2c5ccf321d1290344e71313c6c37d43520d386027d18386" dependencies = [ "bytes", "libc", @@ -6475,10 +6328,10 @@ version = "0.25.11+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" dependencies = [ - "indexmap 2.13.1", + "indexmap 2.14.0", "toml_datetime", "toml_parser", - "winnow 1.0.1", + "winnow 1.0.2", ] [[package]] @@ -6487,7 +6340,7 @@ version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow 1.0.1", + "winnow 1.0.2", ] [[package]] @@ -6599,9 +6452,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de" [[package]] name = "udev" @@ -6802,9 +6655,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] name = "uuid" -version = "1.23.0" +version = "1.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ac8b6f42ead25368cf5b098aeb3dc8a1a2c05a3eee8a9a1a68c640edbfc79d9" +checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76" dependencies = [ "js-sys", "serde_core", @@ -6864,11 +6717,11 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.2+wasi-0.2.9" +version = "1.0.3+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" dependencies = [ - "wit-bindgen", + "wit-bindgen 0.57.1", ] [[package]] @@ -6877,14 +6730,14 @@ version = "0.4.0+wasi-0.3.0-rc-2026-01-06" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" dependencies = [ - "wit-bindgen", + "wit-bindgen 0.51.0", ] [[package]] name = "wasm-bindgen" -version = "0.2.117" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0551fc1bb415591e3372d0bc4780db7e587d84e2a7e79da121051c5c4b89d0b0" +checksum = "49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790" dependencies = [ "cfg-if", "once_cell", @@ -6895,9 +6748,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.67" +version = "0.4.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03623de6905b7206edd0a75f69f747f134b7f0a2323392d664448bf2d3c5d87e" +checksum = "96492d0d3ffba25305a7dc88720d250b1401d7edca02cc3bcd50633b424673b8" dependencies = [ "js-sys", "wasm-bindgen", @@ -6905,9 +6758,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.117" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fbdf9a35adf44786aecd5ff89b4563a90325f9da0923236f6104e603c7e86be" +checksum = "8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6915,9 +6768,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.117" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dca9693ef2bab6d4e6707234500350d8dad079eb508dca05530c85dc3a529ff2" +checksum = "d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2" dependencies = [ "bumpalo", "proc-macro2", @@ -6928,9 +6781,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.117" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39129a682a6d2d841b6c429d0c51e5cb0ed1a03829d8b3d1e69a011e62cb3d3b" +checksum = "c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441" dependencies = [ "unicode-ident", ] @@ -6952,7 +6805,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" dependencies = [ "anyhow", - "indexmap 2.13.1", + "indexmap 2.14.0", "wasm-encoder", "wasmparser", ] @@ -6963,9 +6816,9 @@ version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "hashbrown 0.15.5", - "indexmap 2.13.1", + "indexmap 2.14.0", "semver", ] @@ -7003,7 +6856,7 @@ version = "0.31.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "645c7c96bb74690c3189b5c9cb4ca1627062bb23693a4fad9d8c3de958260144" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "rustix 1.1.4", "wayland-backend", "wayland-scanner", @@ -7015,7 +6868,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "cursor-icon", "wayland-backend", ] @@ -7037,7 +6890,7 @@ version = "0.32.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "563a85523cade2429938e790815fd7319062103b9f4a2dc806e9b53b95982d8f" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "wayland-backend", "wayland-client", "wayland-scanner", @@ -7050,7 +6903,7 @@ version = "20250721.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -7063,7 +6916,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e9567599ef23e09b8dad6e429e5738d4509dfc46b3b21f32841a304d16b29c8" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -7076,7 +6929,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b6d8cf1eb2c1c31ed1f5643c88a6e53538129d4af80030c8cabd1f9fa884d91" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -7089,7 +6942,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -7104,7 +6957,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c324a910fd86ebdc364a3e61ec1f11737d3b1d6c273c0239ee8ff4bc0d24b4a" dependencies = [ "proc-macro2", - "quick-xml 0.39.2", + "quick-xml", "quote", ] @@ -7114,7 +6967,7 @@ version = "0.31.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc1846eb04c49182e04f4a099e2a830a2b745610bbc1d61246e206f29c7000a0" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "downcast-rs", "rustix 1.1.4", "wayland-backend", @@ -7135,9 +6988,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.94" +version = "0.3.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd70027e39b12f0849461e08ffc50b9cd7688d942c1c8e3c7b22273236b4dd0a" +checksum = "4b572dff8bcf38bad0fa19729c89bb5748b2b9b1d8be70cf90df697e3a8f32aa" dependencies = [ "js-sys", "wasm-bindgen", @@ -7166,7 +7019,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfe68bac7cde125de7a731c3400723cadaaf1703795ad3f4805f187459cd7a77" dependencies = [ "arrayvec", - "bitflags 2.11.0", + "bitflags 2.11.1", "cfg-if", "cfg_aliases", "document-features", @@ -7197,12 +7050,12 @@ dependencies = [ "arrayvec", "bit-set", "bit-vec", - "bitflags 2.11.0", + "bitflags 2.11.1", "bytemuck", "cfg_aliases", "document-features", "hashbrown 0.16.1", - "indexmap 2.13.1", + "indexmap 2.14.0", "log", "naga", "once_cell", @@ -7257,7 +7110,7 @@ dependencies = [ "arrayvec", "ash", "bit-set", - "bitflags 2.11.0", + "bitflags 2.11.1", "block", "bytemuck", "cfg-if", @@ -7302,7 +7155,7 @@ version = "27.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afdcf84c395990db737f2dd91628706cb31e86d72e53482320d368e52b5da5eb" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "bytemuck", "js-sys", "log", @@ -7350,12 +7203,10 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "window_clipboard" version = "0.4.1" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "clipboard-win", "clipboard_macos", "clipboard_wayland", - "clipboard_x11", "dnd", "mime 0.1.0", "raw-window-handle", @@ -7808,9 +7659,9 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winit" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "cfg_aliases", "cursor-icon", "dpi", @@ -7828,16 +7679,15 @@ dependencies = [ "winit-wayland", "winit-web", "winit-win32", - "winit-x11", ] [[package]] name = "winit-android" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" dependencies = [ "android-activity", - "bitflags 2.11.0", + "bitflags 2.11.1", "dpi", "ndk", "raw-window-handle", @@ -7849,9 +7699,9 @@ dependencies = [ [[package]] name = "winit-appkit" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block2 0.6.2", "dispatch2", "dpi", @@ -7871,7 +7721,7 @@ dependencies = [ [[package]] name = "winit-common" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" dependencies = [ "memmap2 0.9.10", "objc2 0.6.4", @@ -7879,16 +7729,15 @@ dependencies = [ "smol_str", "tracing", "winit-core", - "x11-dl", "xkbcommon-dl", ] [[package]] name = "winit-core" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "cursor-icon", "dpi", "keyboard-types", @@ -7900,14 +7749,14 @@ dependencies = [ [[package]] name = "winit-orbital" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "dpi", "libredox", "orbclient", "raw-window-handle", - "redox_syscall 0.7.3", + "redox_syscall 0.7.5", "smol_str", "tracing", "winit-core", @@ -7916,9 +7765,9 @@ dependencies = [ [[package]] name = "winit-uikit" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "block2 0.6.2", "dispatch2", "dpi", @@ -7936,10 +7785,10 @@ dependencies = [ [[package]] name = "winit-wayland" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" dependencies = [ "ahash", - "bitflags 2.11.0", + "bitflags 2.11.1", "calloop", "cursor-icon", "dpi", @@ -7962,10 +7811,10 @@ dependencies = [ [[package]] name = "winit-web" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" dependencies = [ "atomic-waker", - "bitflags 2.11.0", + "bitflags 2.11.1", "concurrent-queue", "cursor-icon", "dpi", @@ -7984,9 +7833,9 @@ dependencies = [ [[package]] name = "winit-win32" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "cursor-icon", "dpi", "raw-window-handle", @@ -7997,29 +7846,6 @@ dependencies = [ "winit-core", ] -[[package]] -name = "winit-x11" -version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#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", -] - [[package]] name = "winnow" version = "0.6.24" @@ -8031,18 +7857,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.15" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" -dependencies = [ - "memchr", -] - -[[package]] -name = "winnow" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09dac053f1cd375980747450bfc7250c264eaae0583872e845c0c7cd578872b5" +checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0" dependencies = [ "memchr", ] @@ -8056,6 +7873,12 @@ dependencies = [ "wit-bindgen-rust-macro", ] +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + [[package]] name = "wit-bindgen-core" version = "0.51.0" @@ -8075,7 +7898,7 @@ checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" dependencies = [ "anyhow", "heck 0.5.0", - "indexmap 2.13.1", + "indexmap 2.14.0", "prettyplease", "syn 2.0.117", "wasm-metadata", @@ -8105,8 +7928,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" dependencies = [ "anyhow", - "bitflags 2.11.0", - "indexmap 2.13.1", + "bitflags 2.11.1", + "indexmap 2.14.0", "log", "serde", "serde_derive", @@ -8125,7 +7948,7 @@ checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" dependencies = [ "anyhow", "id-arena", - "indexmap 2.13.1", + "indexmap 2.14.0", "log", "semver", "serde", @@ -8150,39 +7973,6 @@ dependencies = [ "either", ] -[[package]] -name = "x11-dl" -version = "2.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" -dependencies = [ - "libc", - "once_cell", - "pkg-config", -] - -[[package]] -name = "x11rb" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" -dependencies = [ - "as-raw-xcb-connection", - "gethostname", - "libc", - "libloading", - "once_cell", - "rustix 1.1.4", - "x11rb-protocol", - "xcursor", -] - -[[package]] -name = "x11rb-protocol" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" - [[package]] name = "xcursor" version = "0.3.10" @@ -8244,7 +8034,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.11.1", "dlib", "log", "once_cell", @@ -8315,9 +8105,9 @@ dependencies = [ [[package]] name = "zbus" -version = "5.14.0" +version = "5.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca82f95dbd3943a40a53cfded6c2d0a2ca26192011846a1810c4256ef92c60bc" +checksum = "c3bcbf15c8708d7fc1be0c993622e0a5cbd5e8b52bfa40afa4c3e0cd8d724ac1" dependencies = [ "async-broadcast", "async-executor", @@ -8343,7 +8133,7 @@ dependencies = [ "uds_windows", "uuid", "windows-sys 0.61.2", - "winnow 0.7.15", + "winnow 1.0.2", "zbus_macros", "zbus_names", "zvariant", @@ -8375,9 +8165,9 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "5.14.0" +version = "5.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897e79616e84aac4b2c46e9132a4f63b93105d54fe8c0e8f6bffc21fa8d49222" +checksum = "51fa5406ad9175a8c825a931f8cf347116b531b3634fcb0b627c290f1f2516ff" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -8390,22 +8180,22 @@ dependencies = [ [[package]] name = "zbus_names" -version = "4.3.1" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffd8af6d5b78619bab301ff3c560a5bd22426150253db278f164d6cf3b72c50f" +checksum = "7074f3e50b894eac91750142016d30d0a89be8e67dbfd9704fb875825760e52d" dependencies = [ "serde", - "winnow 0.7.15", + "winnow 1.0.2", "zvariant", ] [[package]] name = "zbus_xml" -version = "5.1.0" +version = "5.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "441a0064125265655bccc3a6af6bef56814d9277ac83fce48b1cd7e160b80eac" +checksum = "a8067892e940ed1727dea64690378601603b31d62dfde019a5335fbb7c0e0ed9" dependencies = [ - "quick-xml 0.38.4", + "quick-xml", "serde", "zbus_names", "zvariant", @@ -8540,24 +8330,24 @@ dependencies = [ [[package]] name = "zvariant" -version = "5.10.0" +version = "5.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5708299b21903bbe348e94729f22c49c55d04720a004aa350f1f9c122fd2540b" +checksum = "1c1567a6ec68df868cbbfde844cfc6d81649fe5109a62b116b19fabd53e618ee" dependencies = [ "endi", "enumflags2", "serde", "url", - "winnow 0.7.15", + "winnow 1.0.2", "zvariant_derive", "zvariant_utils", ] [[package]] name = "zvariant_derive" -version = "5.10.0" +version = "5.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b59b012ebe9c46656f9cc08d8da8b4c726510aef12559da3e5f1bf72780752c" +checksum = "c7d5b780599bbde114e39d9a0799577fad1ced5105d38515745f7b3099d8ceda" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -8568,13 +8358,13 @@ dependencies = [ [[package]] name = "zvariant_utils" -version = "3.3.0" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f75c23a64ef8f40f13a6989991e643554d9bef1d682a281160cf0c1bc389c5e9" +checksum = "6d464f5733ffa07a3164d656f18533caace9d0638596721355d73256a410d691" dependencies = [ "proc-macro2", "quote", "serde", "syn 2.0.117", - "winnow 0.7.15", + "winnow 1.0.2", ] diff --git a/Cargo.toml b/Cargo.toml index 49ba628..ff577a1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,9 +9,9 @@ vergen = { version = "8", features = ["git", "gitcl"] } [dependencies] anyhow = "1" async-fn-stream = "0.3" -icu = { version = "2.0.0", features = ["compiled_data"] } -chrono-tz = "0.10" -chrono = { version = "0.4", features = ["unstable-locales"] } +icu = { version = "2.2.0", features = ["compiled_data"] } +jiff = "0.2" +jiff-icu = "0.2" cosmic-applets-config.workspace = true cosmic-bg-config.workspace = true cosmic-comp-config.workspace = true @@ -19,7 +19,8 @@ cosmic-config = { workspace = true, features = ["calloop", "macro"] } cosmic-greeter-config.workspace = true cosmic-greeter-daemon = { path = "daemon" } dirs = "6" -libcosmic = { workspace = true, features = [ +cosmic = { package = "libcosmic-yoda", path = "../libcosmic", default-features = false, features = [ + "advanced-shaping", "autosize", "winit", "multi-window", @@ -39,23 +40,20 @@ xkb-data = "0.2" xdg = "3.0" #TODO: reduce features tokio = { workspace = true, features = ["full"] } -wayland-client = "0.31.11" +wayland-client = "0.31.14" # cosmic-settings-subscriptions = { git = "https://github.com/pop-os/cosmic-settings-subscriptions", default-features = false, features = [ # "accessibility", # "cosmic_a11y_manager", # ] } -# cosmic-settings-daemon-config = { git = "https://github.com/pop-os/cosmic-settings-daemon", default-features = false, features = [ -# "greeter", -# ] } -cosmic-settings-accessibility-subscription = { git = "https://github.com/pop-os/cosmic-settings", default-features = false } -cosmic-settings-a11y-manager-subscription = { git = "https://github.com/pop-os/cosmic-settings", default-features = false } -cosmic-settings-daemon-config = { git = "https://github.com/pop-os/cosmic-settings-daemon", default-features = false, features = [ +cosmic-settings-accessibility-subscription = { path = "../cosmic-settings/subscriptions/accessibility", default-features = false } +cosmic-settings-a11y-manager-subscription = { path = "../cosmic-settings/subscriptions/a11y-manager", default-features = false } +cosmic-settings-daemon-config = { path = "../cosmic-settings-daemon/cosmic-settings-daemon-config", default-features = false, features = [ "greeter", ] } -cctk = { git = "https://github.com/pop-os/cosmic-protocols", package = "cosmic-client-toolkit" } -cosmic-protocols = { git = "https://github.com/pop-os/cosmic-protocols", default-features = false, features = [ +cctk = { path = "../cosmic-protocols/client-toolkit", package = "cosmic-client-toolkit" } +cosmic-protocols = { path = "../cosmic-protocols", default-features = false, features = [ "client", ] } @@ -63,14 +61,12 @@ cosmic-protocols = { git = "https://github.com/pop-os/cosmic-protocols", default cosmic-dbus-networkmanager = { git = "https://github.com/pop-os/dbus-settings-bindings", optional = true } # For logind integration using logind feature logind-zbus = { version = "5", optional = true } -# Fix zbus compilation by manually adding nix with user feature -nix = { workspace = true, optional = true } # For power status with upower feature upower_dbus = { git = "https://github.com/pop-os/dbus-settings-bindings", optional = true } # Required for some features zbus = { workspace = true } # CLI arguments -clap_lex = "0.7" +clap_lex = "1.1" # Internationalization i18n-embed = { version = "0.16", features = [ "fluent-system", @@ -78,7 +74,7 @@ i18n-embed = { version = "0.16", features = [ ] } i18n-embed-fl = "0.10" rust-embed = "8" -futures-util = "0.3.31" +futures-util = "0.3.32" timedate-zbus = { git = "https://github.com/pop-os/dbus-settings-bindings" } cosmic-randr-shell = { workspace = true } kdl.workspace = true @@ -113,37 +109,34 @@ opt-level = 2 [workspace] members = ["cosmic-greeter-config", "daemon"] -resolver = "2" +resolver = "3" [workspace.package] -rust-version = "1.85.0" +rust-version = "1.93" [workspace.dependencies] tracing = "0.1" tracing-journald = { version = "0.3" } tracing-subscriber = { version = "0.3", features = ["env-filter"] } color-eyre = "0.6.5" - -# Fix zbus compilation by manually adding nix with user feature -nix = { version = "0.30", features = ["user"] } pwd = "1.4.0" -ron = "0.11" +ron = "0.12" serde = "1" -tokio = "1.47.1" +tokio = "1.52.1" zbus = "5" kdl = "6" -cosmic-randr-shell = { git = "https://github.com/pop-os/cosmic-randr", default-features = false } +cosmic-randr-shell = { path = "../cosmic-randr/shell", default-features = false } [workspace.dependencies.cosmic-applets-config] -git = "https://github.com/pop-os/cosmic-applets" +path = "../cosmic-applets/cosmic-applets-config" default-features = false [workspace.dependencies.cosmic-bg-config] -git = "https://github.com/pop-os/cosmic-bg" +path = "../cosmic-bg/config" default-features = false [workspace.dependencies.cosmic-comp-config] -git = "https://github.com/pop-os/cosmic-comp" +path = "../cosmic-comp/cosmic-comp-config" default-features = false features = ["output", "randr"] @@ -151,28 +144,40 @@ features = ["output", "randr"] path = "cosmic-greeter-config" [workspace.dependencies.cosmic-config] -git = "https://github.com/pop-os/libcosmic" +path = "../libcosmic/cosmic-config" default-features = false [workspace.dependencies.cosmic-theme] -git = "https://github.com/pop-os/libcosmic" +path = "../libcosmic/cosmic-theme" default-features = false -[workspace.dependencies.libcosmic] -git = "https://github.com/pop-os/libcosmic" -default-features = false -features = ["advanced-shaping"] - -[patch."https://github.com/smithay/client-toolkit.git"] -sctk = { package = "smithay-client-toolkit", version = "0.20.0" } +[patch."https://github.com/pop-os/libcosmic"] +cosmic-config = { path = "../libcosmic/cosmic-config" } +cosmic-config-derive = { path = "../libcosmic/cosmic-config-derive" } +cosmic-theme = { path = "../libcosmic/cosmic-theme" } +iced = { path = "../libcosmic/iced" } +iced_accessibility = { path = "../libcosmic/iced/accessibility" } +iced_core = { path = "../libcosmic/iced/core" } +iced_futures = { path = "../libcosmic/iced/futures" } +iced_graphics = { path = "../libcosmic/iced/graphics" } +iced_renderer = { path = "../libcosmic/iced/renderer" } +iced_runtime = { path = "../libcosmic/iced/runtime" } +iced_tiny_skia = { path = "../libcosmic/iced/tiny_skia" } +iced_wgpu = { path = "../libcosmic/iced/wgpu" } +iced_widget = { path = "../libcosmic/iced/widget" } +iced_winit = { path = "../libcosmic/iced/winit" } [patch."https://github.com/pop-os/cosmic-protocols"] -cosmic-protocols = { git = "https://github.com/pop-os/cosmic-protocols//" } -cctk = { git = "https://github.com/pop-os/cosmic-protocols//", package = "cosmic-client-toolkit" } +cosmic-protocols = { path = "../cosmic-protocols" } +cosmic-client-toolkit = { path = "../cosmic-protocols/client-toolkit" } -# [patch."https://github.com/pop-os/libcosmic"] -# iced_core = { git = "https://github.com/pop-os/libcosmic//" } -# iced_futures = { git = "https://github.com/pop-os/libcosmic//" } -# libcosmic = { git = "https://github.com/pop-os/libcosmic//" } -# cosmic-config = { git = "https://github.com/pop-os/libcosmic//" } -# cosmic-theme = { git = "https://github.com/pop-os/libcosmic//" } +[patch."https://github.com/pop-os/cosmic-settings-daemon"] +cosmic-settings-config = { path = "../cosmic-settings-daemon/config" } +cosmic-settings-daemon-config = { path = "../cosmic-settings-daemon/cosmic-settings-daemon-config" } + +[patch."https://forge.aditua.com/leyoda/window_clipboard.git"] +window_clipboard = { path = "../window_clipboard" } +dnd = { path = "../window_clipboard/dnd" } +mime = { path = "../window_clipboard/mime" } +clipboard_wayland = { path = "../window_clipboard/wayland" } +clipboard_macos = { path = "../window_clipboard/macos" } diff --git a/cosmic-greeter-config/src/lib.rs b/cosmic-greeter-config/src/lib.rs index 96869c5..50fff98 100644 --- a/cosmic-greeter-config/src/lib.rs +++ b/cosmic-greeter-config/src/lib.rs @@ -3,9 +3,11 @@ pub mod user; -use cosmic_config::{CosmicConfigEntry, cosmic_config_derive::CosmicConfigEntry}; +use cosmic_config::CosmicConfigEntry; +use cosmic_config::cosmic_config_derive::CosmicConfigEntry; use serde::{Deserialize, Serialize}; -use std::{collections::HashMap, num::NonZeroU32}; +use std::collections::HashMap; +use std::num::NonZeroU32; pub const APP_ID: &str = "com.system76.CosmicGreeter"; pub const CONFIG_VERSION: u64 = 1; diff --git a/daemon/Cargo.toml b/daemon/Cargo.toml index 4bf3fd5..a229b05 100644 --- a/daemon/Cargo.toml +++ b/daemon/Cargo.toml @@ -8,6 +8,7 @@ edition = "2024" [dependencies] tracing-subscriber = { workspace = true, features = ["env-filter"] } libc = "0.2" +nix = { version = "0.31", features = ["user"] } cosmic-applets-config.workspace = true cosmic-bg-config.workspace = true cosmic-comp-config.workspace = true @@ -16,7 +17,6 @@ cosmic-theme.workspace = true tracing.workspace = true tracing-journald = { workspace = true, optional = true } color-eyre.workspace = true -nix.workspace = true pwd.workspace = true ron.workspace = true serde.workspace = true diff --git a/daemon/src/lib.rs b/daemon/src/lib.rs index 71f5ee5..842aebe 100644 --- a/daemon/src/lib.rs +++ b/daemon/src/lib.rs @@ -1,16 +1,15 @@ use cosmic_comp_config::output::randr; use cosmic_config::CosmicConfigEntry; use kdl::KdlDocument; -use std::{ - collections::BTreeMap, - fs, - io::Read, - os::unix::fs::OpenOptionsExt, - path::{Path, PathBuf}, -}; +use std::collections::BTreeMap; +use std::fs; +use std::io::Read; +use std::os::unix::fs::OpenOptionsExt; +use std::path::{Path, PathBuf}; pub use cosmic_applets_config::time::TimeAppletConfig; -pub use cosmic_bg_config::{Color, Source as BgSource, state::State as BgState}; +pub use cosmic_bg_config::state::State as BgState; +pub use cosmic_bg_config::{Color, Source as BgSource}; pub use cosmic_comp_config::{CosmicCompConfig, XkbConfig, ZoomConfig}; pub use cosmic_theme::{Theme, ThemeBuilder}; @@ -19,8 +18,8 @@ pub struct UserFilter { uid_max: u32, } -impl UserFilter { - pub fn new() -> Self { +impl Default for UserFilter { + fn default() -> Self { let login_defs_data = fs::read_to_string("/etc/login.defs").unwrap_or_default(); let login_defs = whitespace_conf::parse(&login_defs_data); Self { @@ -34,6 +33,12 @@ impl UserFilter { .unwrap_or(65000), } } +} + +impl UserFilter { + pub fn new() -> Self { + Self::default() + } pub fn filter(&self, user: &pwd::Passwd) -> bool { if user.uid < self.uid_min || user.uid > self.uid_max { @@ -80,22 +85,18 @@ impl UserData { }) }); for (_, source) in self.bg_state.wallpapers.iter() { - match source { - //TODO: do not reread duplicate paths, cache data by path? - BgSource::Path(path) => { - if !self.bg_path_data.contains_key(path) { - match fs::read(path) { - Ok(bytes) => { - self.bg_path_data.insert(path.clone(), bytes); - } - Err(err) => { - tracing::error!("failed to read wallpaper {:?}: {:?}", path, err); - } - } + //TODO: do not reread duplicate paths, cache data by path? + if let BgSource::Path(path) = source + && !self.bg_path_data.contains_key(path) + { + match fs::read(path) { + Ok(bytes) => { + self.bg_path_data.insert(path.clone(), bytes); + } + Err(err) => { + tracing::error!("failed to read wallpaper {:?}: {:?}", path, err); } } - // Other types not supported - _ => {} } } } diff --git a/daemon/src/main.rs b/daemon/src/main.rs index 41bd5ed..427070a 100644 --- a/daemon/src/main.rs +++ b/daemon/src/main.rs @@ -1,10 +1,15 @@ use color_eyre::eyre::Context; use cosmic_greeter_daemon::{UserData, UserFilter}; -use std::{env, error::Error, ffi::CString, future::pending, io}; +use std::error::Error; +use std::ffi::CString; +use std::future::pending; +use std::{env, io}; use tracing::metadata::LevelFilter; use tracing::warn; -use tracing_subscriber::{EnvFilter, fmt, prelude::*}; -use zbus::{DBusError, connection::Builder}; +use tracing_subscriber::prelude::*; +use tracing_subscriber::{EnvFilter, fmt}; +use zbus::DBusError; +use zbus::connection::Builder; //IMPORTANT: this function is critical to the security of this proxy. It must ensure that the // callback is executed with the permissions of the specified user id. A good test is to see if diff --git a/examples/server.rs b/examples/server.rs index 6fbfe5f..c6f35f8 100644 --- a/examples/server.rs +++ b/examples/server.rs @@ -1,4 +1,5 @@ -use greetd_ipc::{AuthMessageType, ErrorType, Request, Response, codec::TokioCodec}; +use greetd_ipc::codec::TokioCodec; +use greetd_ipc::{AuthMessageType, ErrorType, Request, Response}; use std::{env, fs, io, thread}; use tokio::net::UnixListener; diff --git a/i18n/ca/cosmic_greeter.ftl b/i18n/ca/cosmic_greeter.ftl index e69de29..0648d8e 100644 --- a/i18n/ca/cosmic_greeter.ftl +++ b/i18n/ca/cosmic_greeter.ftl @@ -0,0 +1 @@ +cancel = Cancel·lar diff --git a/i18n/el/cosmic_greeter.ftl b/i18n/el/cosmic_greeter.ftl index 52bb907..c03b4af 100644 --- a/i18n/el/cosmic_greeter.ftl +++ b/i18n/el/cosmic_greeter.ftl @@ -1,3 +1,37 @@ cancel = Ακύρωση restart = Επανεκκίνηση suspend = Αναστολή +accessibility = Προσβασιμότητα + .screen-reader = Ανάγνωση οθόνης + .magnifier = Μεγεθυντικός φακός + .high-contrast = Υψηλή αντίθεση + .invert-colors = Αναστροφή χρωμάτων +shutdown-timeout = + Η λειτουργία του συστήματος θα τερματιστεί αυτόματα + { $seconds -> + [0] τώρα. + [1] σε 1 δευτερόλεπτο. + *[other] σε { $seconds } δευτερόλεπτα. + } +type-username = Όνομα χρήστη: +keyboard-layout = Διάταξη πληκτρολογίου +restart-now = Επανεκκίνηση τώρα; +session = Συνεδρία +shutdown = Τερματισμός +user = Χρήστης +caps-lock = Το Caps Lock είναι ενεργό. +shutdown-now = Τερματισμός τώρα; +auth-error-credentials = Μη έγκυρος κωδικός πρόσβασης. Ελέγξτε τη διάταξη πληκτρολογίου σας και δοκιμάστε ξανά. +auth-error-account = Ο λογαριασμός δεν είναι διαθέσιμος ή έχει απενεργοποιηθεί. +restart-timeout = + Το σύστημα θα επανεκκινηθεί αυτόματα + { $seconds -> + [0] τώρα. + [1] σε 1 δευτερόλεπτο. + *[other] σε { $seconds } δευτερόλεπτα. + } +enter-user = Εισαγάγετε το όνομα χειροκίνητα... +authenticating = Πιστοποίηση... +auth-error-default = Η πιστοποίηση απέτυχε. Δοκιμάστε ξανά. +auth-error-denied = Δεν επιτράπηκε η πρόσβαση. +auth-error-maxtries = Πάρα πολλές αποτυχημένες απόπειρες πιστοποίησης. diff --git a/i18n/lo/cosmic_greeter.ftl b/i18n/lo/cosmic_greeter.ftl new file mode 100644 index 0000000..e69de29 diff --git a/i18n/sr/cosmic_greeter.ftl b/i18n/sr/cosmic_greeter.ftl index e69de29..c0ab066 100644 --- a/i18n/sr/cosmic_greeter.ftl +++ b/i18n/sr/cosmic_greeter.ftl @@ -0,0 +1,37 @@ +cancel = Откажи +suspend = Обустави +restart = Поново покрени +shutdown = Угаси +accessibility = Приступачност + .screen-reader = Читач екрана + .magnifier = Лупа + .high-contrast = Велики контраст + .invert-colors = Изврни боје +authenticating = Потврђујем… +caps-lock = Закључавање слова је покренуто. +enter-user = Ручно унесите име… +type-username = Корисничко име: +keyboard-layout = Распоред тастатуре +restart-now = Поново покренути сада? +restart-timeout = + Систем ће се самостално поново покренути + { $seconds -> + [0] сада. + [1] за 1 секунду. + *[other] за { $seconds } секунди. + } +session = Сесија +shutdown-now = Угасити сада? +shutdown-timeout = + Систем ће се самостално угасити + { $seconds -> + [0] сада. + [1] за 1 секунду. + *[other] за { $seconds } секунди. + } +user = Корисник +auth-error-default = Потврђивање идентитета није успело. Покушајте поново. +auth-error-credentials = Нетачна лозинка. Проверите распоред тастатуре и покушајте поново. +auth-error-denied = Приступ је забрањен. +auth-error-maxtries = Превише неуспешних покушаја потврђивања идентитета. +auth-error-account = Налог је недоступан или онемогућен. diff --git a/i18n/uk/cosmic_greeter.ftl b/i18n/uk/cosmic_greeter.ftl index 8b2cb78..1d51b78 100644 --- a/i18n/uk/cosmic_greeter.ftl +++ b/i18n/uk/cosmic_greeter.ftl @@ -35,5 +35,5 @@ auth-error-default = Автентифікація не вдалась. Спро auth-error-credentials = Неправильний пароль. Будь ласка, перевірте розкладку клавіатури та спробуйте ще раз. auth-error-denied = Доступ відхилено. auth-error-maxtries = Забагато невдалих спроб автентифікації. -auth-error-account = Обліковий запис недоступний або відключений. +auth-error-account = Обліковий запис недоступний або вимкнений. authenticating = Автентифікація... diff --git a/rust-toolchain.toml b/rust-toolchain.toml index f35f369..bbfabdb 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "1.90.0" +channel = "1.93" components = ["clippy", "rustfmt"] diff --git a/rustfmt.toml b/rustfmt.toml new file mode 100644 index 0000000..c1578aa --- /dev/null +++ b/rustfmt.toml @@ -0,0 +1 @@ +imports_granularity = "Module" diff --git a/src/common.rs b/src/common.rs index da3d21a..6fdd371 100644 --- a/src/common.rs +++ b/src/common.rs @@ -1,20 +1,15 @@ -use cosmic::{ - app::{Core, Task}, - iced::runtime::core::window::Id as SurfaceId, - iced::{ - self, Rectangle, Size, Subscription, - core::SmolStr, - event::{ - self, - wayland::{Event as WaylandEvent, OutputEvent, SessionLockEvent}, - }, - keyboard::{Event as KeyEvent, Key, Modifiers}, - }, - widget, -}; +use cosmic::app::{Core, Task}; +use cosmic::iced::core::SmolStr; +use cosmic::iced::event::wayland::{Event as WaylandEvent, OutputEvent, SessionLockEvent}; +use cosmic::iced::event::{self}; +use cosmic::iced::keyboard::{Event as KeyEvent, Key, Modifiers}; +use cosmic::iced::runtime::core::window::Id as SurfaceId; +use cosmic::iced::{self, Rectangle, Size, Subscription}; +use cosmic::widget; use cosmic_config::{ConfigSet, CosmicConfigEntry}; use cosmic_greeter_daemon::{BgSource, CosmicCompConfig, UserData}; -use std::{collections::HashMap, sync::Arc}; +use std::collections::HashMap; +use std::sync::Arc; use wayland_client::protocol::wl_output::WlOutput; pub const DEFAULT_MENU_ITEM_HEIGHT: f32 = 36.; @@ -64,7 +59,7 @@ pub enum Message { Prompt(String, bool, Option), SessionLockEvent(SessionLockEvent), Tick, - Tz(chrono_tz::Tz), + Tz(jiff::tz::TimeZone), } impl + Send + 'static> Common { @@ -204,48 +199,48 @@ impl + Send + 'static> Common { self.update_wallpapers(user_data); // From cosmic-applet-input-sources - if let Some(keyboard_layouts) = &self.layouts_opt { - if let Some(xkb_config) = &user_data.xkb_config_opt { - self.active_layouts.clear(); - let config_layouts = xkb_config.layout.split_terminator(','); - let config_variants = xkb_config - .variant - .split_terminator(',') - .chain(std::iter::repeat("")); - 'outer: for (config_layout, config_variant) in config_layouts.zip(config_variants) { - for xkb_layout in keyboard_layouts.layouts() { - if config_layout != xkb_layout.name() { - continue; - } - if config_variant.is_empty() { - let active_layout = ActiveLayout { - description: xkb_layout.description().to_owned(), - layout: config_layout.to_owned(), - variant: config_variant.to_owned(), - }; - self.active_layouts.push(active_layout); - continue 'outer; - } - - let Some(xkb_variants) = xkb_layout.variants() else { - continue; + if let Some(keyboard_layouts) = &self.layouts_opt + && let Some(xkb_config) = &user_data.xkb_config_opt + { + self.active_layouts.clear(); + let config_layouts = xkb_config.layout.split_terminator(','); + let config_variants = xkb_config + .variant + .split_terminator(',') + .chain(std::iter::repeat("")); + 'outer: for (config_layout, config_variant) in config_layouts.zip(config_variants) { + for xkb_layout in keyboard_layouts.layouts() { + if config_layout != xkb_layout.name() { + continue; + } + if config_variant.is_empty() { + let active_layout = ActiveLayout { + description: xkb_layout.description().to_owned(), + layout: config_layout.to_owned(), + variant: config_variant.to_owned(), }; - for xkb_variant in xkb_variants { - if config_variant != xkb_variant.name() { - continue; - } - let active_layout = ActiveLayout { - description: xkb_variant.description().to_owned(), - layout: config_layout.to_owned(), - variant: config_variant.to_owned(), - }; - self.active_layouts.push(active_layout); - continue 'outer; + self.active_layouts.push(active_layout); + continue 'outer; + } + + let Some(xkb_variants) = xkb_layout.variants() else { + continue; + }; + for xkb_variant in xkb_variants { + if config_variant != xkb_variant.name() { + continue; } + let active_layout = ActiveLayout { + description: xkb_variant.description().to_owned(), + layout: config_layout.to_owned(), + variant: config_variant.to_owned(), + }; + self.active_layouts.push(active_layout); + continue 'outer; } } - tracing::info!("{:?}", self.active_layouts); } + tracing::info!("{:?}", self.active_layouts); } } @@ -271,20 +266,19 @@ impl + Send + 'static> Common { && !modifiers.alt() && matches!(key, Key::Character(_)) { - if let Some(text) = text { - if let Some((_, _, Some(value))) = &mut self.prompt_opt { - value.push_str(&text); - } + if let Some(text) = text + && let Some((_, _, Some(value))) = &mut self.prompt_opt + { + value.push_str(&text); } - if let Some(surface_id) = self.active_surface_id_opt { - if let Some(text_input_id) = self + if let Some(surface_id) = self.active_surface_id_opt + && let Some(text_input_id) = self .surface_names .get(&surface_id) .and_then(|id| self.text_input_ids.get(id)) - { - return widget::text_input::focus(text_input_id.clone()); - } + { + return widget::text_input::focus(text_input_id.clone()); } } } @@ -306,17 +300,15 @@ impl + Send + 'static> Common { Message::Prompt(prompt, secret, value_opt) => { let prompt_was_none = self.prompt_opt.is_none(); self.prompt_opt = Some((prompt, secret, value_opt)); - if prompt_was_none { - if let Some(surface_id) = self.active_surface_id_opt { - if let Some(text_input_id) = self - .surface_names - .get(&surface_id) - .and_then(|id| self.text_input_ids.get(id)) - { - tracing::info!("focus surface found id {:?}", text_input_id); - return widget::text_input::focus(text_input_id.clone()); - } - } + if prompt_was_none + && let Some(surface_id) = self.active_surface_id_opt + && let Some(text_input_id) = self + .surface_names + .get(&surface_id) + .and_then(|id| self.text_input_ids.get(id)) + { + tracing::info!("focus surface found id {:?}", text_input_id); + return widget::text_input::focus(text_input_id.clone()); } } Message::SessionLockEvent(lock_event) => { diff --git a/src/greeter.rs b/src/greeter.rs index 616ef33..51fe4b2 100644 --- a/src/greeter.rs +++ b/src/greeter.rs @@ -8,63 +8,51 @@ use cctk::sctk::reexports::calloop; use color_eyre::eyre::WrapErr; use cosmic::app::{Core, Settings, Task}; use cosmic::cctk::wayland_protocols::xdg::shell::client::xdg_positioner::Gravity; +use cosmic::cosmic_config::{self, ConfigSet}; +use cosmic::cosmic_theme::{self, CosmicPalette}; +use cosmic::desktop::fde::{DesktopEntry, get_languages_from_env}; use cosmic::iced::event::listen_with; +use cosmic::iced::event::wayland::OutputEvent; +use cosmic::iced::futures::SinkExt; +use cosmic::iced::platform_specific::runtime::wayland::layer_surface::{ + IcedMargin, IcedOutput, SctkLayerSurfaceSettings, +}; +use cosmic::iced::platform_specific::shell::wayland::commands::layer_surface::{ + Anchor, KeyboardInteractivity, Layer, destroy_layer_surface, get_layer_surface, +}; +use cosmic::iced::platform_specific::shell::wayland::commands::subsurface::reposition_subsurface; +use cosmic::iced::runtime::core::window::Id as SurfaceId; use cosmic::iced::runtime::platform_specific::wayland::subsurface::SctkSubsurfaceSettings; -use cosmic::iced::{Point, Size, window}; +use cosmic::iced::{ + self, Alignment, Background, Border, Length, Point, Size, Subscription, window, +}; use cosmic::widget::{id_container, text}; -use cosmic::{ - Element, - cosmic_config::{self, ConfigSet}, - executor, - iced::runtime::core::window::Id as SurfaceId, - iced::{ - self, Alignment, Background, Border, Length, Subscription, - event::wayland::OutputEvent, - futures::SinkExt, - platform_specific::{ - runtime::wayland::layer_surface::{IcedMargin, IcedOutput, SctkLayerSurfaceSettings}, - shell::wayland::commands::layer_surface::{ - Anchor, KeyboardInteractivity, Layer, destroy_layer_surface, get_layer_surface, - }, - shell::wayland::commands::subsurface::reposition_subsurface, - }, - }, - theme, widget, -}; -use cosmic::{ - cosmic_theme::{self, CosmicPalette}, - desktop::fde::{DesktopEntry, get_languages_from_env}, - surface, -}; +use cosmic::{Element, executor, surface, theme, widget}; use cosmic_greeter_config::Config as CosmicGreeterConfig; use cosmic_greeter_daemon::{UserData, UserFilter}; use cosmic_randr_shell::{KdlParseWithError, List}; use cosmic_settings_a11y_manager_subscription::{AccessibilityEvent, AccessibilityRequest}; use greetd_ipc::Request; use kdl::KdlDocument; +use std::collections::{HashMap, hash_map}; +use std::error::Error; +use std::num::NonZeroU32; use std::process::Stdio; -use std::sync::LazyLock; -use std::{ - collections::{HashMap, hash_map}, - error::Error, - fs, io, - num::NonZeroU32, - process, - sync::Arc, - time::{Duration, Instant}, -}; +use std::sync::{Arc, LazyLock}; +use std::time::{Duration, Instant}; +use std::{fs, io, process}; use tokio::process::Child; use tokio::time; use tracing::metadata::LevelFilter; use tracing::warn; -use tracing_subscriber::{EnvFilter, fmt, prelude::*}; -use wayland_client::{Proxy, protocol::wl_output::WlOutput}; +use tracing_subscriber::prelude::*; +use tracing_subscriber::{EnvFilter, fmt}; +use wayland_client::Proxy; +use wayland_client::protocol::wl_output::WlOutput; use zbus::{Connection, proxy}; -use crate::{ - common::{self, Common, DEFAULT_MENU_ITEM_HEIGHT}, - fl, -}; +use crate::common::{self, Common, DEFAULT_MENU_ITEM_HEIGHT}; +use crate::fl; static USERNAME_ID: LazyLock = LazyLock::new(|| iced::id::Id::new("username-id")); @@ -482,7 +470,7 @@ impl App { .discard() } - fn menu(&self, id: SurfaceId) -> Element { + fn menu(&self, id: SurfaceId) -> Element<'_, Message> { let window_width = self .common .window_size @@ -1884,12 +1872,12 @@ impl cosmic::Application for App { } // Not used for layer surface window - fn view(&self) -> Element { + fn view(&self) -> Element<'_, Self::Message> { unimplemented!() } /// Creates a view after each update. - fn view_window(&self, surface_id: SurfaceId) -> Element { + fn view_window(&self, surface_id: SurfaceId) -> Element<'_, Self::Message> { let img = self .common .surface_images diff --git a/src/localize.rs b/src/localize.rs index 30eedec..8998576 100644 --- a/src/localize.rs +++ b/src/localize.rs @@ -1,9 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-only -use i18n_embed::{ - DefaultLocalizer, LanguageLoader, Localizer, - fluent::{FluentLanguageLoader, fluent_language_loader}, -}; +use i18n_embed::fluent::{FluentLanguageLoader, fluent_language_loader}; +use i18n_embed::{DefaultLocalizer, LanguageLoader, Localizer}; use rust_embed::RustEmbed; use std::sync::OnceLock; diff --git a/src/locker.rs b/src/locker.rs index eed5f01..9098b55 100644 --- a/src/locker.rs +++ b/src/locker.rs @@ -4,45 +4,37 @@ use color_eyre::eyre::WrapErr; use cosmic::app::{Core, Settings, Task}; use cosmic::cctk::wayland_protocols::xdg::shell::client::xdg_positioner::Gravity; -use cosmic::iced::runtime::platform_specific::wayland::subsurface::SctkSubsurfaceSettings; -use cosmic::iced::{Point, Rectangle, Size}; -use cosmic::surface; -use cosmic::{ - Element, executor, - iced::runtime::core::window::Id as SurfaceId, - iced::{ - self, Alignment, Background, Border, Length, Subscription, - event::wayland::{OutputEvent, SessionLockEvent}, - futures::{self, SinkExt}, - platform_specific::shell::wayland::commands::session_lock::{ - destroy_lock_surface, get_lock_surface, lock, unlock, - }, - }, - theme, widget, +use cosmic::iced::event::wayland::{OutputEvent, SessionLockEvent}; +use cosmic::iced::futures::{self, SinkExt}; +use cosmic::iced::platform_specific::shell::wayland::commands::session_lock::{ + destroy_lock_surface, get_lock_surface, lock, unlock, }; +use cosmic::iced::runtime::core::window::Id as SurfaceId; +use cosmic::iced::runtime::platform_specific::wayland::subsurface::SctkSubsurfaceSettings; +use cosmic::iced::{ + self, Alignment, Background, Border, Length, Point, Rectangle, Size, Subscription, +}; +use cosmic::{Element, executor, surface, theme, widget}; use cosmic_config::CosmicConfigEntry; use cosmic_greeter_daemon::{TimeAppletConfig, UserData}; +use std::any::TypeId; +use std::ffi::{CStr, CString}; +use std::os::fd::OwnedFd; +use std::path::PathBuf; +use std::sync::Arc; use std::time::Duration; -use std::{ - any::TypeId, - env, - ffi::{CStr, CString}, - fs, - os::fd::OwnedFd, - path::PathBuf, - process, - sync::Arc, -}; -use tokio::{sync::mpsc, task}; +use std::{env, fs, process}; +use tokio::sync::mpsc; +use tokio::task; use tracing::level_filters::LevelFilter; use tracing::warn; -use tracing_subscriber::{EnvFilter, fmt, prelude::*}; -use wayland_client::{Proxy, protocol::wl_output::WlOutput}; +use tracing_subscriber::prelude::*; +use tracing_subscriber::{EnvFilter, fmt}; +use wayland_client::Proxy; +use wayland_client::protocol::wl_output::WlOutput; -use crate::{ - common::{self, Common, DEFAULT_MENU_ITEM_HEIGHT}, - fl, -}; +use crate::common::{self, Common, DEFAULT_MENU_ITEM_HEIGHT}; +use crate::fl; fn lockfile_opt() -> Option { let runtime_dir = dirs::runtime_dir()?; @@ -325,7 +317,7 @@ pub struct App { } impl App { - fn menu(&self, surface_id: SurfaceId) -> Element { + fn menu(&self, surface_id: SurfaceId) -> Element<'_, Message> { let window_width = self .common .window_size @@ -1132,10 +1124,10 @@ impl cosmic::Application for App { } self.spinner_rotation = 0.0; // Try to create lockfile when locking - if let Some(ref lockfile) = self.flags.lockfile_opt { - if let Err(err) = fs::File::create(lockfile) { - tracing::warn!("failed to create lockfile {:?}: {}", lockfile, err); - } + if let Some(ref lockfile) = self.flags.lockfile_opt + && let Err(err) = fs::File::create(lockfile) + { + tracing::warn!("failed to create lockfile {:?}: {}", lockfile, err); } // Tell compositor to lock return lock(); @@ -1165,10 +1157,10 @@ impl cosmic::Application for App { } self.spinner_rotation = 0.0; // Try to delete lockfile when unlocking - if let Some(ref lockfile) = self.flags.lockfile_opt { - if let Err(err) = fs::remove_file(lockfile) { - tracing::warn!("failed to remove lockfile {:?}: {}", lockfile, err); - } + if let Some(ref lockfile) = self.flags.lockfile_opt + && let Err(err) = fs::remove_file(lockfile) + { + tracing::warn!("failed to remove lockfile {:?}: {}", lockfile, err); } // Destroy lock surfaces @@ -1204,12 +1196,12 @@ impl cosmic::Application for App { } // Not used for layer surface window - fn view(&self) -> Element { + fn view(&self) -> Element<'_, Self::Message> { unimplemented!() } /// Creates a view after each update. - fn view_window(&self, surface_id: SurfaceId) -> Element { + fn view_window(&self, surface_id: SurfaceId) -> Element<'_, Self::Message> { let img = self .common .surface_images diff --git a/src/logind.rs b/src/logind.rs index 822140c..c5561f3 100644 --- a/src/logind.rs +++ b/src/logind.rs @@ -1,15 +1,17 @@ -use cosmic::iced::{ - Subscription, - futures::{SinkExt, StreamExt, channel::mpsc}, -}; -use logind_zbus::{ - manager::{InhibitType, ManagerProxy}, - session::SessionProxy, -}; -use std::{any::TypeId, error::Error, os::fd::OwnedFd, sync::Arc, time::Duration}; +use cosmic::iced::Subscription; +use cosmic::iced::futures::channel::mpsc; +use cosmic::iced::futures::{SinkExt, StreamExt}; +use logind_zbus::manager::{InhibitType, ManagerProxy}; +use logind_zbus::session::SessionProxy; +use std::any::TypeId; +use std::error::Error; +use std::os::fd::OwnedFd; +use std::sync::Arc; +use std::time::Duration; use zbus::Connection; -use crate::{common, locker::Message}; +use crate::common; +use crate::locker::Message; pub async fn power_off() -> zbus::Result<()> { let connection = Connection::system().await?; diff --git a/src/networkmanager.rs b/src/networkmanager.rs index b8b04c0..0f4ee9c 100644 --- a/src/networkmanager.rs +++ b/src/networkmanager.rs @@ -1,9 +1,11 @@ -use cosmic::iced::{ - Subscription, - futures::{SinkExt, StreamExt, channel::mpsc}, -}; -use cosmic_dbus_networkmanager::{device::SpecificDevice, nm::NetworkManager}; -use std::{any::TypeId, cmp, time::Duration}; +use cosmic::iced::Subscription; +use cosmic::iced::futures::channel::mpsc; +use cosmic::iced::futures::{SinkExt, StreamExt}; +use cosmic_dbus_networkmanager::device::SpecificDevice; +use cosmic_dbus_networkmanager::nm::NetworkManager; +use std::any::TypeId; +use std::cmp; +use std::time::Duration; use zbus::{Connection, Result}; #[derive(Clone, Copy, Debug)] @@ -77,16 +79,16 @@ pub async fn handler(msg_tx: &mut mpsc::Sender>) -> Result< }; } Some(SpecificDevice::Wireless(wireless)) => { - if let Ok(ap) = wireless.active_access_point().await { - if let Ok(strength) = ap.strength().await { - // Wireless always overrides with the highest strength - icon = match icon { - NetworkIcon::Wireless(other_strength) => { - NetworkIcon::Wireless(cmp::max(strength, other_strength)) - } - _ => NetworkIcon::Wireless(strength), - }; - } + if let Ok(ap) = wireless.active_access_point().await + && let Ok(strength) = ap.strength().await + { + // Wireless always overrides with the highest strength + icon = match icon { + NetworkIcon::Wireless(other_strength) => { + NetworkIcon::Wireless(cmp::max(strength, other_strength)) + } + _ => NetworkIcon::Wireless(strength), + }; } } _ => {} diff --git a/src/time.rs b/src/time.rs index b6c109d..bc2c22d 100644 --- a/src/time.rs +++ b/src/time.rs @@ -1,19 +1,15 @@ use anyhow::bail; use async_fn_stream::StreamEmitter; -use chrono::{Datelike, Timelike}; -use cosmic::{ - Element, Task, style, - widget::{column, text}, -}; +use cosmic::widget::{column, text}; +use cosmic::{Element, Task, style}; use futures_util::StreamExt; -use icu::{ - datetime::{ - DateTimeFormatter, DateTimeFormatterPreferences, fieldsets, - input::{Date, DateTime, Time as IcuTime}, - options::TimePrecision, - }, - locale::{Locale, preferences::extensions::unicode::keywords::HourCycle}, -}; +use icu::datetime::input::DateTime; +use icu::datetime::options::TimePrecision; +use icu::datetime::{DateTimeFormatter, DateTimeFormatterPreferences, fieldsets}; +use icu::locale::Locale; +use icu::locale::preferences::extensions::unicode::keywords::HourCycle; +use jiff::tz::TimeZone; +use jiff_icu::ConvertFrom; use std::time::Duration; use timedate_zbus::TimeDateProxy; use tokio::time; @@ -21,8 +17,8 @@ use tokio::time; #[derive(Debug, Clone)] pub struct Time { locale: Locale, - timezone: Option, - now: chrono::DateTime, + timezone: Option, + now: jiff::Zoned, } impl Time { @@ -41,10 +37,10 @@ impl Time { } // Try language-only fallback (e.g., "en" from "en-US") - if let Some(lang) = cleaned_locale.split('-').next() { - if let Ok(locale) = Locale::try_from_str(lang) { - return locale; - } + if let Some(lang) = cleaned_locale.split('-').next() + && let Ok(locale) = Locale::try_from_str(lang) + { + return locale; } } } @@ -53,7 +49,7 @@ impl Time { } let locale = get_local(); - let now = chrono::Local::now().fixed_offset(); + let now = jiff::Zoned::now(); Self { locale, @@ -62,7 +58,7 @@ impl Time { } } - pub fn set_tz(&mut self, tz: chrono_tz::Tz) { + pub fn set_tz(&mut self, tz: TimeZone) { self.timezone = Some(tz); self.tick(); } @@ -70,30 +66,19 @@ impl Time { pub fn tick(&mut self) { self.now = self .timezone - .map(|tz| chrono::Local::now().with_timezone(&tz).fixed_offset()) - .unwrap_or_else(|| chrono::Local::now().into()); + .as_ref() + .map(|tz| jiff::Timestamp::now().to_zoned(tz.clone())) + .unwrap_or_else(jiff::Zoned::now); } - pub fn format_date(&self, date: &D) -> String { + pub fn format_date(&self) -> String { let prefs = DateTimeFormatterPreferences::from(&self.locale); let dtf = DateTimeFormatter::try_new(prefs, fieldsets::MDE::long()).unwrap(); - - let datetime = DateTime { - date: Date::try_new_gregorian(date.year(), date.month() as u8, date.day() as u8) - .unwrap(), - time: IcuTime::try_new( - self.now.hour() as u8, - self.now.minute() as u8, - self.now.second() as u8, - 0, - ) - .unwrap(), - }; - - dtf.format(&datetime).to_string() + dtf.format(&DateTime::convert_from(self.now.datetime())) + .to_string() } - pub fn format_time(&self, date: &D, military_time: bool) -> String { + pub fn format_time(&self, military_time: bool) -> String { let mut prefs = DateTimeFormatterPreferences::from(&self.locale); prefs.hour_cycle = Some(if military_time { HourCycle::H23 @@ -105,30 +90,18 @@ impl Time { fieldsets::T::medium().with_time_precision(TimePrecision::Minute), ) .unwrap(); - - let datetime = DateTime { - date: Date::try_new_gregorian(date.year(), date.month() as u8, date.day() as u8) - .unwrap(), - time: IcuTime::try_new( - self.now.hour() as u8, - self.now.minute() as u8, - self.now.second() as u8, - 0, - ) - .unwrap(), - }; - - dtf.format(&datetime).to_string() + dtf.format(&DateTime::convert_from(self.now.datetime())) + .to_string() } - pub fn date_time_widget<'a, M: 'a>(&self, military_time: bool) -> cosmic::Element<'a, M> { + pub fn date_time_widget<'a, M: 'a>(&self, military_time: bool) -> Element<'a, M> { Element::from( column::with_capacity(2) .padding(16.) .spacing(12.0) - .push(text::title2(self.format_date(&self.now)).class(style::Text::Accent)) + .push(text::title2(self.format_date()).class(style::Text::Accent)) .push( - text(self.format_time(&self.now, military_time)) + text(self.format_time(military_time)) .size(if military_time { 112. } else { 75. }) .class(style::Text::Accent), ), @@ -136,7 +109,7 @@ impl Time { } } -pub fn tz_updates() -> Task { +pub fn tz_updates() -> Task { Task::stream(async_fn_stream::fn_stream(|emitter| async move { loop { if let Err(err) = tz_stream(&emitter).await { @@ -159,7 +132,7 @@ pub fn tick() -> Task<()> { // Calculate a delta if we're ticking per minute to keep ticks stable // Based on i3status-rust - let current = chrono::Local::now().second() as u64 % 60; + let current = jiff::Zoned::now().second() as u64 % 60; if current != 0 { timer.reset_after(time::Duration::from_secs(60 - current)); } @@ -167,7 +140,7 @@ pub fn tick() -> Task<()> { })) } -pub async fn tz_stream(emitter: &StreamEmitter) -> anyhow::Result<()> { +pub async fn tz_stream(emitter: &StreamEmitter) -> anyhow::Result<()> { let Ok(conn) = zbus::Connection::system().await else { bail!("No zbus system connection."); }; @@ -184,7 +157,7 @@ pub async fn tz_stream(emitter: &StreamEmitter) -> anyhow::Result let Ok(tz) = property.get().await else { bail!("Failed to get property"); }; - let Ok(tz) = tz.parse::() else { + let Ok(tz) = TimeZone::get(&tz) else { bail!("Failed to parse timezone."); }; emitter.emit(tz).await; diff --git a/src/upower.rs b/src/upower.rs index fd950a0..77bb82f 100644 --- a/src/upower.rs +++ b/src/upower.rs @@ -1,10 +1,9 @@ -use cosmic::iced::{ - Subscription, - futures::{SinkExt, StreamExt, channel::mpsc}, - stream, -}; +use cosmic::iced::futures::channel::mpsc; +use cosmic::iced::futures::{SinkExt, StreamExt}; +use cosmic::iced::{Subscription, stream}; use futures_util::select; -use std::{any::TypeId, time::Duration}; +use std::any::TypeId; +use std::time::Duration; use upower_dbus::{BatteryState, BatteryType, UPowerProxy}; use zbus::{Connection, Result}; @@ -52,26 +51,26 @@ pub async fn handler(msg_tx: &mut mpsc::Sender>) -> Re loop { let mut info_opt = None; - if let Ok(mut percent) = dev.percentage().await { - if let Ok(state) = dev.state().await { - let threshold_enabled = dev.charge_threshold_enabled().await.unwrap_or_default(); - let mut capacity = dev.capacity().await.unwrap_or(100.); - if capacity <= 1. { - capacity = 100.; - } - - // compensate for declining battery capacity - percent = percent * 100. / capacity; - if matches!(state, BatteryState::FullyCharged) || percent >= 100. { - percent = 100.; - } - - info_opt = Some(( - percent, - state == BatteryState::Discharging, - threshold_enabled, - )); + if let Ok(mut percent) = dev.percentage().await + && let Ok(state) = dev.state().await + { + let threshold_enabled = dev.charge_threshold_enabled().await.unwrap_or_default(); + let mut capacity = dev.capacity().await.unwrap_or(100.); + if capacity <= 1. { + capacity = 100.; } + + // compensate for declining battery capacity + percent = percent * 100. / capacity; + if matches!(state, BatteryState::FullyCharged) || percent >= 100. { + percent = 100.; + } + + info_opt = Some(( + percent, + state == BatteryState::Discharging, + threshold_enabled, + )); } msg_tx.send(info_opt).await.unwrap(); diff --git a/src/wayland/mod.rs b/src/wayland/mod.rs index 20acaf3..cfb6e9a 100644 --- a/src/wayland/mod.rs +++ b/src/wayland/mod.rs @@ -2,11 +2,8 @@ // SPDX-License-Identifier: GPL-3.0-only use cctk::sctk::reexports::calloop; -use cosmic::iced::{ - self, Subscription, - futures::{self, SinkExt}, - stream, -}; +use cosmic::iced::futures::{self, SinkExt}; +use cosmic::iced::{self, Subscription, stream}; use cosmic_settings_a11y_manager_subscription::{ self as thread, AccessibilityEvent, AccessibilityRequest, };