diff --git a/Cargo.lock b/Cargo.lock index 10c67be..31f8fac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -158,7 +158,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46319972e74179d707445f64aaa2893bbf6a111de3a9af29b7eb382f8b39e282" dependencies = [ "base64", - "bitflags 2.11.1", + "bitflags 2.13.0", "home", "libc", "log", @@ -208,9 +208,9 @@ checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" [[package]] name = "alloc-stdlib" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +checksum = "0e76a019e91224d279006ff972f1e984179a6e9feb050adba6ce8274aef23195" dependencies = [ "alloc-no-stdlib", ] @@ -234,7 +234,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f2a1bb052857d5dd49572219344a7332b31b76405648eabac5bc68978251bcd" dependencies = [ "android-properties", - "bitflags 2.11.1", + "bitflags 2.13.0", "cc", "jni", "libc", @@ -263,9 +263,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.102" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" [[package]] name = "apply" @@ -290,9 +290,9 @@ checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" [[package]] name = "arc-swap" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a3a1fd6f75306b68087b831f025c712524bcb19aad54e557b1129cfa0a2b207" +checksum = "c049c0be4daef0b145cb3555416b3b8ef5b7888a38aea1a3a155801fe7b0810b" dependencies = [ "rustversion", ] @@ -316,9 +316,9 @@ checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "f02882884d3e1bc524fb12c79f107f6ad0e1cfd498c536ffb494301740995dfe" [[package]] name = "as-slice" @@ -568,9 +568,9 @@ dependencies = [ [[package]] name = "auto_enums" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65398a2893f41bce5c9259f6e1a4f03fbae40637c1bdc755b4f387f48c613b03" +checksum = "2e4487600931c9a89f8db7ffbdf3fbdd45bb7bd85e26861f659a463cd0dff966" dependencies = [ "derive_utils", "proc-macro2", @@ -671,9 +671,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.1" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -704,9 +704,9 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ "hybrid-array", "zeroize", @@ -754,9 +754,9 @@ dependencies = [ [[package]] name = "borsh" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a" +checksum = "2f3f6da4992df95bbcd9af42a6c7dcb994498fc9048230405f3b36ff7cd3f145" dependencies = [ "bytes", "cfg_aliases", @@ -764,9 +764,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "5.0.1" +version = "5.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5962523e1b92ce1b5e793d9169b9943eece10d39f62550bc04bb605d75b94924" +checksum = "3a32acac15fe1967bc3986b2a6347dffc965602354ea6f450ad07e8bfd253583" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -774,13 +774,13 @@ dependencies = [ [[package]] name = "bstr" -version = "1.12.1" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" +checksum = "5cee35f73844aa3014bb606320a6c1f010249dbdf43342fe54b5a4f6a8ed4b79" dependencies = [ "memchr", "regex-automata", - "serde", + "serde_core", ] [[package]] @@ -844,9 +844,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "bytes" -version = "1.11.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593" [[package]] name = "bzip2" @@ -873,7 +873,7 @@ version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dbf9978365bac10f54d1d4b04f7ce4427e51f71d61f2fe15e3fed5166474df7" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "polling", "rustix 1.1.4", "slab", @@ -903,14 +903,14 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.62" +version = "1.2.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98" +checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96" dependencies = [ "find-msvc-tools", "jobserver", "libc", - "shlex", + "shlex 2.0.1", ] [[package]] @@ -938,9 +938,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ "iana-time-zone", "js-sys", @@ -1082,9 +1082,9 @@ dependencies = [ [[package]] name = "compio-buf" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a00d719dbd8c602ab0d25d219cbc6b517008858de7a8d6c51b4dc95aefff4dce" +checksum = "b51a2c35873865376ed4cdb6cfeb602b6cf569815f017ddd7bd8f86ad49b34c7" dependencies = [ "arrayvec", "bytes", @@ -1201,9 +1201,9 @@ dependencies = [ [[package]] name = "configparser" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57e3272f0190c3f1584272d613719ba5fc7df7f4942fe542e63d949cf3a649b" +checksum = "b46dec724fd22199ebde05033a0cbae453bc3b1ecff11eb6a6bb3eec4b90c6a4" [[package]] name = "const-oid" @@ -1273,7 +1273,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "core-foundation 0.10.1", "libc", ] @@ -1302,7 +1302,7 @@ dependencies = [ name = "cosmic-client-toolkit" version = "0.2.0" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "cosmic-protocols", "libc", "smithay-client-toolkit", @@ -1322,7 +1322,7 @@ dependencies = [ "iced_futures", "known-folders", "notify", - "ron 0.12.1", + "ron 0.12.2", "serde", "tokio", "tracing", @@ -1340,7 +1340,7 @@ dependencies = [ [[package]] name = "cosmic-files" -version = "1.0.14" +version = "1.2.0" dependencies = [ "anyhow", "atomic_float", @@ -1378,7 +1378,8 @@ dependencies = [ "rust-embed", "rustc-hash 2.1.2", "serde", - "shlex", + "sha2 0.10.9", + "shlex 1.3.0", "slotmap", "tar", "tempfile", @@ -1403,7 +1404,7 @@ dependencies = [ "bstr", "btoi", "memchr", - "memmap2 0.9.10", + "memmap2 0.9.11", "thiserror 2.0.18", "tracing", "xdg", @@ -1413,7 +1414,7 @@ dependencies = [ name = "cosmic-protocols" version = "0.2.0" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -1431,7 +1432,7 @@ dependencies = [ [[package]] name = "cosmic-term" -version = "1.0.14" +version = "1.2.0" dependencies = [ "alacritty_terminal", "clap_lex", @@ -1455,7 +1456,7 @@ dependencies = [ "secstr", "serde", "serde_json", - "shlex", + "shlex 1.3.0", "thiserror 2.0.18", "tokio", "url", @@ -1466,7 +1467,7 @@ dependencies = [ name = "cosmic-text" version = "0.19.0" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "fontdb", "harfrust", "linebender_resource_handle", @@ -1474,7 +1475,7 @@ dependencies = [ "rangemap", "rustc-hash 2.1.2", "self_cell", - "skrifa", + "skrifa 0.40.0", "smol_str", "swash", "sys-locale", @@ -1496,7 +1497,7 @@ dependencies = [ "dirs 6.0.0", "hex_color", "palette", - "ron 0.12.1", + "ron 0.12.2", "serde", "serde_json", "thiserror 2.0.18", @@ -1685,14 +1686,43 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac6b926516df9c60bfa16e107b21086399f8285a44ca9711344b9e553c5146e2" +[[package]] +name = "defmt" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6e524506490a1953d237cb87b1cfc1e46f88c18f10a22dfe0f507dc6bfc7f7f" +dependencies = [ + "bitflags 1.3.2", + "defmt-macros", +] + +[[package]] +name = "defmt-macros" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0a27770e9c8f719a79d8b638281f4d828f77d8fd61e0bd94451b9b85e576a0b" +dependencies = [ + "defmt-parser", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "defmt-parser" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" +dependencies = [ + "thiserror 2.0.18", +] + [[package]] name = "deranged" version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" -dependencies = [ - "powerfmt", -] [[package]] name = "derive_setters" @@ -1734,7 +1764,7 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ - "block-buffer 0.12.0", + "block-buffer 0.12.1", "const-oid", "crypto-common 0.2.2", "ctutils", @@ -1810,7 +1840,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.6.2", "libc", "objc2 0.6.4", @@ -1840,7 +1870,7 @@ dependencies = [ name = "dnd" version = "0.1.0" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "mime 0.1.0", "raw-window-handle", "smithay-client-toolkit", @@ -2207,7 +2237,7 @@ checksum = "457e789b3d1202543297a350643cf459f836cade38934e7a4cf6a39e7cde2905" dependencies = [ "fontconfig-parser", "log", - "memmap2 0.9.10", + "memmap2 0.9.11", "slotmap", "tinyvec", "ttf-parser", @@ -2404,9 +2434,9 @@ dependencies = [ [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -2452,16 +2482,14 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", "js-sys", "libc", "r-efi 6.0.0", - "wasip2", - "wasip3", "wasm-bindgen", ] @@ -2553,7 +2581,7 @@ dependencies = [ "log", "presser", "thiserror 2.0.18", - "windows 0.61.3", + "windows 0.62.2", ] [[package]] @@ -2562,7 +2590,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "gpu-descriptor-types", "hashbrown 0.15.5", ] @@ -2573,7 +2601,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", ] [[package]] @@ -2629,10 +2657,10 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9da2e5ae821f6e96664977bf974d6d6a2d6682f9ccee23e62ec1d134246845f9" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "bytemuck", "core_maths", - "read-fonts", + "read-fonts 0.37.0", "smallvec", ] @@ -2668,12 +2696,6 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - [[package]] name = "hermit-abi" version = "0.5.2" @@ -2780,9 +2802,9 @@ checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "hybrid-array" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9155a582abd142abc056962c29e3ce5ff2ad5469f4246b537ed42c5deba857da" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" dependencies = [ "typenum", ] @@ -2987,7 +3009,7 @@ dependencies = [ name = "iced_core" version = "0.14.0" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "bytes", "cosmic-client-toolkit", "dnd", @@ -3033,7 +3055,7 @@ dependencies = [ name = "iced_graphics" version = "0.14.0" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "bytemuck", "cosmic-text", "half", @@ -3102,7 +3124,7 @@ dependencies = [ name = "iced_wgpu" version = "0.14.0" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "bytemuck", "cosmic-client-toolkit", "cryoglyph", @@ -3245,9 +3267,9 @@ checksum = "846b0857ca091204be3c874bc93daaf89d4777e8d2d20b0d3ffe8f671d98014b" [[package]] name = "icu_collator" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b521b92a2666061ddda902769d8a4cf730b5c9529a845cc1b69770b12a6c9a71" +checksum = "8bbdf98e5e0aa827770acee171ebb568aaab975a36b56afdb5fd0e2f525750bb" dependencies = [ "icu_collator_data", "icu_collections", @@ -3572,12 +3594,6 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f2f8aeca682d874a5247084aa4fb7d1cef9ba45d889c21209a8818dcaaa0ec9" -[[package]] -name = "id-arena" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" - [[package]] name = "ident_case" version = "1.0.1" @@ -3607,9 +3623,9 @@ dependencies = [ [[package]] name = "ignore" -version = "0.4.25" +version = "0.4.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3d782a365a015e0f5c04902246139249abf769125006fbe7649e2ee88169b4a" +checksum = "b915661dd01db3f05050265b2477bcc6527b3792388e2749b41623cc592be67d" dependencies = [ "crossbeam-deque", "globset", @@ -3663,9 +3679,9 @@ checksum = "edcd27d72f2f071c64249075f42e205ff93c9a4c5f6c6da53e79ed9f9832c285" [[package]] name = "imgref" -version = "1.12.1" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40fac9d56ed6437b198fddba683305e8e2d651aa42647f00f5ae542e7f5c94a2" +checksum = "89194689a993ab15268672e99e7b0e19da2da3268ac682e8f02d29d4d1434cd7" [[package]] name = "indexmap" @@ -3690,11 +3706,11 @@ dependencies = [ [[package]] name = "inotify" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd5b3eaf1a28b758ac0faa5a4254e8ab2705605496f1b1f3fbbc3988ad73d199" +checksum = "533e68a5842e734946fe159fb03fc9bbbb254f590dd0d8ad321ae5ff7beca2c1" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "inotify-sys", "libc", ] @@ -3805,10 +3821,11 @@ checksum = "2ceaf4c6c48465bead8cb6a0b7c4ee0c86ecbb31239032b9c66ab9a08d2f3ee1" [[package]] name = "jiff" -version = "0.2.28" +version = "0.2.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4603d3033e49e2b0e31229fcab20a5d40089c607d975cd9c80551dc69eed9102" +checksum = "ccfe6121cbe750cf81efa362d85c0bde7ea298ec43092d3a193baca59cdbd634" dependencies = [ + "defmt", "jiff-static", "jiff-tzdb-platform", "log", @@ -3831,9 +3848,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.28" +version = "0.2.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "782d32378dddf207193ac91cefb848ad41abb58195c95168e1291227a0832b47" +checksum = "e165e897f662d428f3cd3828a919dbe067c2d42bb1031eede74ef9d27ecdedd2" dependencies = [ "proc-macro2", "quote", @@ -3925,13 +3942,12 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.99" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", "futures-util", - "once_cell", "wasm-bindgen", ] @@ -3988,9 +4004,9 @@ dependencies = [ [[package]] name = "jxl-grid" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0e0ef92d5d60e76bf41098e57e985f523185e08fad54268da448637feca6989" +checksum = "01671307879a033bfa52e6e8784b941aca770b3f3a7d33830b455b6844f793fb" dependencies = [ "tracing", ] @@ -4027,9 +4043,9 @@ dependencies = [ [[package]] name = "jxl-modular" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da758b2f989aafd9eeb39489fe43d7be5a3a0d2ad61cf1bad705eb6990a6053c" +checksum = "2a2f045b24c738dd91d482be385512b512721ae08a671bd4b27bf1c47f215235" dependencies = [ "jxl-bitstream", "jxl-coding", @@ -4041,9 +4057,9 @@ dependencies = [ [[package]] name = "jxl-oxide" -version = "0.12.5" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee8ecd2678ed70c1eda42b811ccb2e25ab836edeb18e7f1178c1f917ed36b772" +checksum = "d36c662923f47586880211f3bc7c0d83fb3a9b410d278c7bde93450748abeef3" dependencies = [ "brotli-decompressor", "bytemuck", @@ -4071,9 +4087,9 @@ dependencies = [ [[package]] name = "jxl-render" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa0c3100918bd3c41bb0f8ce1f4f1664e48f3032ff8eeab0d6a2cfc3276f462d" +checksum = "d34386bfdb6a19b5a30cc9beb4d475d537422c31ae8c39bb69640fcce3fcaf19" dependencies = [ "bytemuck", "jxl-bitstream", @@ -4130,7 +4146,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fbe853b403ae61a04233030ae8a79d94975281ed9770a1f9e246732b534b28d" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "serde", ] @@ -4162,9 +4178,9 @@ dependencies = [ [[package]] name = "kqueue" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" +checksum = "273c0752728918e0ac4976f2b275b6fefb9ecd400585dec929419f3844cd87b5" dependencies = [ "kqueue-sys", "libc", @@ -4176,7 +4192,7 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07293a4e297ac234359b510362495713f75ea345d5307140414f20c69ffeb087" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "libc", ] @@ -4207,12 +4223,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -[[package]] -name = "leb128fmt" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" - [[package]] name = "lebe" version = "0.5.3" @@ -4279,9 +4289,9 @@ dependencies = [ [[package]] name = "libfuzzer-sys" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f12a681b7dd8ce12bff52488013ba614b869148d54dd79836ab85aafdd53f08d" +checksum = "a9fd2f41a1cba099f79a0b6b6c35656cf7c03351a7bae8ff0f28f25270f929d2" dependencies = [ "arbitrary", "cc", @@ -4309,10 +4319,10 @@ version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "libc", "plain", - "redox_syscall 0.8.0", + "redox_syscall 0.8.1", ] [[package]] @@ -4365,9 +4375,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.30" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616ec5685824bcc94416c6d4a7a446eea774a31efd7062c8480ba6fd06d7a6e5" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -4452,9 +4462,9 @@ dependencies = [ [[package]] name = "lzma-rust2" -version = "0.16.3" +version = "0.16.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e9ceaec84b54518262de7cf06b8b43e83c808349960f1610b21b0bfc9640f20" +checksum = "ce716bf1a316f47a280fc76295f6495b5bea4752bca01c3b3885e101b1c23c02" dependencies = [ "sha2 0.11.0", ] @@ -4499,9 +4509,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.1" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8" +checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" [[package]] name = "memmap2" @@ -4514,9 +4524,9 @@ dependencies = [ [[package]] name = "memmap2" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" +checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" dependencies = [ "libc", ] @@ -4536,7 +4546,7 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7047791b5bc903b8cd963014b355f71dc9864a9a0b727057676c1dcae5cbc15" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block", "core-graphics-types 0.2.0", "foreign-types 0.5.0", @@ -4629,7 +4639,7 @@ checksum = "618f667225063219ddfc61251087db8a9aec3c3f0950c916b614e403486f1135" dependencies = [ "arrayvec", "bit-set", - "bitflags 2.11.1", + "bitflags 2.13.0", "cfg-if", "cfg_aliases", "codespan-reporting", @@ -4670,7 +4680,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "jni-sys 0.3.1", "log", "ndk-sys", @@ -4740,7 +4750,7 @@ version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "fsevent-sys", "inotify", "kqueue", @@ -4771,7 +4781,7 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42b8cfee0e339a0337359f3c88165702ac6e600dc01c0cc9579a92d62b08477a" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", ] [[package]] @@ -4957,7 +4967,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.5.1", "libc", "objc2 0.5.2", @@ -4973,7 +4983,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.6.2", "objc2 0.6.4", "objc2-core-foundation", @@ -4986,7 +4996,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -4998,7 +5008,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.6.2", "dispatch2", "objc2 0.6.4", @@ -5010,7 +5020,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "libc", "objc2-core-foundation", ] @@ -5033,7 +5043,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "objc2-core-foundation", "objc2-core-graphics", ] @@ -5050,7 +5060,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.5.1", "libc", "objc2 0.5.2", @@ -5062,7 +5072,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.6.2", "objc2 0.6.4", "objc2-core-foundation", @@ -5074,7 +5084,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -5086,7 +5096,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -5099,7 +5109,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "objc2 0.6.4", "objc2-core-foundation", "objc2-foundation 0.3.2", @@ -5122,13 +5132,12 @@ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "open" -version = "5.3.5" +version = "5.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fbaa89d2ddc8473c78a3adf69eea8cffa28c483b8e02a971ef31527cd0fc92c" +checksum = "cd8d3b65c44123a56e0133d2cd06ce4361bd3ca99d41198b2f25e3c3db9b8b4a" dependencies = [ "is-wsl", "libc", - "pathdiff", ] [[package]] @@ -5137,7 +5146,7 @@ version = "0.10.81" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "cfg-if", "foreign-types 0.3.2", "libc", @@ -5247,7 +5256,7 @@ version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c7028bdd3d43083f6d8d4d5187680d0d3560d54df4cc9d752005268b41e64d0" dependencies = [ - "heck 0.4.1", + "heck", "proc-macro2", "proc-macro2-diagnostics", "quote", @@ -5329,12 +5338,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" -[[package]] -name = "pathdiff" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" - [[package]] name = "pbkdf2" version = "0.13.0" @@ -5518,7 +5521,7 @@ version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "crc32fast", "fdeflate", "flate2", @@ -5598,16 +5601,6 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" -[[package]] -name = "prettyplease" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" -dependencies = [ - "proc-macro2", - "syn", -] - [[package]] name = "proc-macro-crate" version = "3.5.0" @@ -5667,7 +5660,7 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25485360a54d6861439d60facef26de713b1e126bf015ec8f98239467a2b82f7" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "chrono", "flate2", "procfs-core", @@ -5680,7 +5673,7 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6401bf7b6af22f78b563665d15a22e9aef27775b79b149a66ca022468a4e405" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "chrono", "hex", ] @@ -5747,9 +5740,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.45" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] @@ -5924,6 +5917,16 @@ dependencies = [ "font-types", ] +[[package]] +name = "read-fonts" +version = "0.39.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4ed38b89c2c77ff968c524145ad65fb010f38af5c7a224b53b81d47ac2daa81" +dependencies = [ + "bytemuck", + "font-types", +] + [[package]] name = "recently-used-xbel" version = "1.2.0" @@ -5946,7 +5949,7 @@ version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c07d0d6d291e3a951bd847b1cd4af32fc6243d64116cf7702838c02797688b7" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "libredox", ] @@ -5956,16 +5959,16 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", ] [[package]] name = "redox_syscall" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c7591fa2c6b601dfcfe5f043f65a1c39fcdf50efefcd7f1572e538c1f4b398d" +checksum = "5b44b894f2a6e36457d665d1e08c3866add6ed5e70050c1b4ba8a8ddedb02ce7" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", ] [[package]] @@ -5992,9 +5995,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.12.3" +version = "1.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba" dependencies = [ "aho-corasick", "memchr", @@ -6015,9 +6018,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "renderdoc-sys" @@ -6139,7 +6142,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db09040cc89e461f1a265139777a2bde7f8d8c67c4936f700c63ce3e2904d468" dependencies = [ "base64", - "bitflags 2.11.1", + "bitflags 2.13.0", "serde", "serde_derive", "unicode-ident", @@ -6147,11 +6150,11 @@ dependencies = [ [[package]] name = "ron" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4147b952f3f819eca0e99527022f7d6a8d05f111aeb0a62960c74eb283bec8fc" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -6226,7 +6229,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "errno", "libc", "linux-raw-sys 0.4.15", @@ -6239,7 +6242,7 @@ version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "errno", "libc", "linux-raw-sys 0.12.1", @@ -6302,7 +6305,7 @@ version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd3c7c96f8a08ee34eff8857b11b49b07d71d1c3f4e88f8a88d4c9e9f90b1702" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "bytemuck", "core_maths", "log", @@ -6358,7 +6361,7 @@ checksum = "1dd3accc0f3f4bbaf2c9e1957a030dc582028130c67660d44c0a0345a22ca69b" dependencies = [ "ab_glyph", "log", - "memmap2 0.9.10", + "memmap2 0.9.11", "smithay-client-toolkit", "tiny-skia", ] @@ -6397,7 +6400,7 @@ version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -6541,6 +6544,12 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + [[package]] name = "signal-hook" version = "0.3.18" @@ -6614,7 +6623,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fbdfe3d2475fbd7ddd1f3e5cf8288a30eb3e5f95832829570cd88115a7434ac" dependencies = [ "bytemuck", - "read-fonts", + "read-fonts 0.37.0", +] + +[[package]] +name = "skrifa" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c34617370ae968efb7161bb2beb517d9084659aae19e24b89e3db25b46e4564" +dependencies = [ + "bytemuck", + "read-fonts 0.39.2", ] [[package]] @@ -6634,9 +6653,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "smithay-client-toolkit" @@ -6644,14 +6663,14 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "bytemuck", "calloop", "calloop-wayland-source", "cursor-icon", "libc", "log", - "memmap2 0.9.10", + "memmap2 0.9.11", "pkg-config", "rustix 1.1.4", "thiserror 2.0.18", @@ -6710,7 +6729,7 @@ dependencies = [ "foreign-types 0.5.0", "js-sys", "log", - "memmap2 0.9.10", + "memmap2 0.9.11", "objc", "raw-window-handle", "redox_syscall 0.5.18", @@ -6738,7 +6757,7 @@ version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", ] [[package]] @@ -6792,20 +6811,20 @@ dependencies = [ [[package]] name = "swash" -version = "0.2.7" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "842f3cd369c2ba38966204f983eaa5e54a8e84a7d7159ed36ade2b6c335aae64" +checksum = "0811b01ca2c4e8718760713911feaf4675c24f94e50530a015ec646cfb622f7c" dependencies = [ - "skrifa", + "skrifa 0.42.1", "yazi", "zeno", ] [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -6857,7 +6876,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -6902,7 +6921,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.4.2", + "getrandom 0.4.3", "once_cell", "rustix 1.1.4", "windows-sys 0.61.2", @@ -6988,9 +7007,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.47" +version = "0.3.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" +checksum = "0e48db7b415311b615f910b3dcaa4557bcd4bf1982379c95c223fd8c2a20e210" dependencies = [ "deranged", "js-sys", @@ -7002,9 +7021,9 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" [[package]] name = "tiny-skia" @@ -7190,7 +7209,7 @@ version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "bytes", "futures-util", "http", @@ -7278,14 +7297,15 @@ dependencies = [ [[package]] name = "trash" -version = "5.2.2" -source = "git+https://github.com/jackpot51/trash-rs.git?branch=cosmic#a225f753a88e722aeeb27bb2fb00144739911035" +version = "5.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7602e0c7d66ec2d92a8c917219fbc7894039efa2063b9064260110828a356f46" dependencies = [ "chrono", "libc", "log", - "objc2 0.5.2", - "objc2-foundation 0.2.2", + "objc2 0.6.4", + "objc2-foundation 0.3.2", "once_cell", "percent-encoding", "scopeguard", @@ -7331,9 +7351,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.20.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "uds_windows" @@ -7424,9 +7444,9 @@ checksum = "383ad40bb927465ec0ce7720e033cb4ca06912855fc35db31b5755d0de75b1ee" [[package]] name = "unicode-segmentation" -version = "1.13.2" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "unicode-vo" @@ -7440,12 +7460,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - [[package]] name = "untrusted" version = "0.9.0" @@ -7512,9 +7526,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] name = "uuid" -version = "1.23.1" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "serde_core", @@ -7567,7 +7581,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5924018406ce0063cd67f8e008104968b74b563ee1b85dde3ed1f7cb87d3dbd" dependencies = [ "arrayvec", - "bitflags 2.11.1", + "bitflags 2.13.0", "cursor-icon", "log", "memchr", @@ -7601,27 +7615,18 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.3+wasi-0.2.9" +version = "1.0.4+wasi-0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" dependencies = [ - "wit-bindgen 0.57.1", -] - -[[package]] -name = "wasip3" -version = "0.4.0+wasi-0.3.0-rc-2026-01-06" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" -dependencies = [ - "wit-bindgen 0.51.0", + "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.122" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -7632,9 +7637,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.72" +version = "0.4.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9473dbd2991ae90b6291c3c32c30c6187ac49aa32f9905d1cce280ec1e110b0f" +checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d" dependencies = [ "js-sys", "wasm-bindgen", @@ -7642,9 +7647,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.122" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7652,9 +7657,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.122" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", @@ -7665,35 +7670,13 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.122" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] -[[package]] -name = "wasm-encoder" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" -dependencies = [ - "leb128fmt", - "wasmparser", -] - -[[package]] -name = "wasm-metadata" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" -dependencies = [ - "anyhow", - "indexmap", - "wasm-encoder", - "wasmparser", -] - [[package]] name = "wasm-streams" version = "0.4.2" @@ -7707,18 +7690,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "wasmparser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" -dependencies = [ - "bitflags 2.11.1", - "hashbrown 0.15.5", - "indexmap", - "semver", -] - [[package]] name = "wasmtimer" version = "0.4.3" @@ -7753,7 +7724,7 @@ version = "0.31.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "645c7c96bb74690c3189b5c9cb4ca1627062bb23693a4fad9d8c3de958260144" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "rustix 1.1.4", "wayland-backend", "wayland-scanner", @@ -7765,7 +7736,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "cursor-icon", "wayland-backend", ] @@ -7783,11 +7754,11 @@ dependencies = [ [[package]] name = "wayland-protocols" -version = "0.32.12" +version = "0.32.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "563a85523cade2429938e790815fd7319062103b9f4a2dc806e9b53b95982d8f" +checksum = "23d0c813de3daa2ed6520af85a3bd49b0e722a3078506899aa9686fea58dc4b6" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "wayland-backend", "wayland-client", "wayland-scanner", @@ -7800,7 +7771,7 @@ version = "20250721.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -7813,7 +7784,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e9567599ef23e09b8dad6e429e5738d4509dfc46b3b21f32841a304d16b29c8" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -7826,7 +7797,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b6d8cf1eb2c1c31ed1f5643c88a6e53538129d4af80030c8cabd1f9fa884d91" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -7839,7 +7810,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -7864,7 +7835,7 @@ version = "0.31.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc1846eb04c49182e04f4a099e2a830a2b745610bbc1d61246e206f29c7000a0" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "downcast-rs", "rustix 1.1.4", "wayland-backend", @@ -7885,9 +7856,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.99" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621441cfc37b84979402712047321980c178f299193a3589d05b99e8763436" +checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141" dependencies = [ "js-sys", "wasm-bindgen", @@ -7916,7 +7887,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9cb534d5ffd109c7d1135f34cdae29e60eab94855a625dcfe1705f8bc7ad79f" dependencies = [ "arrayvec", - "bitflags 2.11.1", + "bitflags 2.13.0", "bytemuck", "cfg-if", "cfg_aliases", @@ -7948,7 +7919,7 @@ dependencies = [ "arrayvec", "bit-set", "bit-vec", - "bitflags 2.11.1", + "bitflags 2.13.0", "bytemuck", "cfg_aliases", "document-features", @@ -8008,7 +7979,7 @@ dependencies = [ "arrayvec", "ash", "bit-set", - "bitflags 2.11.1", + "bitflags 2.13.0", "block", "bytemuck", "cfg-if", @@ -8052,7 +8023,7 @@ version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e18308757e594ed2cd27dddbb16a139c42a683819d32a2e0b1b0167552f5840c" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "bytemuck", "js-sys", "log", @@ -8607,7 +8578,7 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" name = "winit" version = "0.31.0-beta.2" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "cfg_aliases", "cursor-icon", "dpi", @@ -8632,7 +8603,7 @@ name = "winit-android" version = "0.31.0-beta.2" dependencies = [ "android-activity", - "bitflags 2.11.1", + "bitflags 2.13.0", "dpi", "ndk", "raw-window-handle", @@ -8645,7 +8616,7 @@ dependencies = [ name = "winit-appkit" version = "0.31.0-beta.2" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.6.2", "dispatch2", "dpi", @@ -8666,7 +8637,7 @@ dependencies = [ name = "winit-common" version = "0.31.0-beta.2" dependencies = [ - "memmap2 0.9.10", + "memmap2 0.9.11", "objc2 0.6.4", "objc2-core-foundation", "smol_str", @@ -8679,7 +8650,7 @@ dependencies = [ name = "winit-core" version = "0.31.0-beta.2" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "cursor-icon", "dpi", "keyboard-types", @@ -8692,7 +8663,7 @@ dependencies = [ name = "winit-orbital" version = "0.31.0-beta.2" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "dpi", "libredox", "orbclient", @@ -8707,7 +8678,7 @@ dependencies = [ name = "winit-uikit" version = "0.31.0-beta.2" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.6.2", "dispatch2", "dpi", @@ -8727,12 +8698,12 @@ name = "winit-wayland" version = "0.31.0-beta.2" dependencies = [ "ahash", - "bitflags 2.11.1", + "bitflags 2.13.0", "calloop", "cursor-icon", "dpi", "libc", - "memmap2 0.9.10", + "memmap2 0.9.11", "raw-window-handle", "rustix 1.1.4", "sctk-adwaita", @@ -8752,7 +8723,7 @@ name = "winit-web" version = "0.31.0-beta.2" dependencies = [ "atomic-waker", - "bitflags 2.11.1", + "bitflags 2.13.0", "concurrent-queue", "cursor-icon", "dpi", @@ -8772,7 +8743,7 @@ dependencies = [ name = "winit-win32" version = "0.31.0-beta.2" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "cursor-icon", "dpi", "raw-window-handle", @@ -8792,100 +8763,12 @@ dependencies = [ "memchr", ] -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" -dependencies = [ - "wit-bindgen-rust-macro", -] - [[package]] name = "wit-bindgen" version = "0.57.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" -[[package]] -name = "wit-bindgen-core" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" -dependencies = [ - "anyhow", - "heck 0.5.0", - "wit-parser", -] - -[[package]] -name = "wit-bindgen-rust" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" -dependencies = [ - "anyhow", - "heck 0.5.0", - "indexmap", - "prettyplease", - "syn", - "wasm-metadata", - "wit-bindgen-core", - "wit-component", -] - -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" -dependencies = [ - "anyhow", - "prettyplease", - "proc-macro2", - "quote", - "syn", - "wit-bindgen-core", - "wit-bindgen-rust", -] - -[[package]] -name = "wit-component" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" -dependencies = [ - "anyhow", - "bitflags 2.11.1", - "indexmap", - "log", - "serde", - "serde_derive", - "serde_json", - "wasm-encoder", - "wasm-metadata", - "wasmparser", - "wit-parser", -] - -[[package]] -name = "wit-parser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" -dependencies = [ - "anyhow", - "id-arena", - "indexmap", - "log", - "semver", - "serde", - "serde_derive", - "serde_json", - "unicode-xid", - "wasmparser", -] - [[package]] name = "write16" version = "1.0.0" @@ -8965,7 +8848,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d66ca9352cbd4eecbbc40871d8a11b4ac8107cfc528a6e14d7c19c69d0e1ac9" dependencies = [ "libc", - "memmap2 0.9.10", + "memmap2 0.9.11", "xkeysym", ] @@ -8975,7 +8858,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "dlib", "log", "once_cell", @@ -9038,9 +8921,9 @@ checksum = "e01738255b5a16e78bbb83e7fbba0a1e7dd506905cfc53f4622d89015a03fbb5" [[package]] name = "yoke" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" dependencies = [ "stable_deref_trait", "yoke-derive", @@ -9061,9 +8944,9 @@ dependencies = [ [[package]] name = "zbus" -version = "5.15.0" +version = "5.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3bcbf15c8708d7fc1be0c993622e0a5cbd5e8b52bfa40afa4c3e0cd8d724ac1" +checksum = "eee682d202a77e4a9f3b2c2bdf48a7b28af5c08c34ddf66f98c93e5e39464285" dependencies = [ "async-broadcast", "async-executor", @@ -9121,9 +9004,9 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "5.15.0" +version = "5.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51fa5406ad9175a8c825a931f8cf347116b531b3634fcb0b627c290f1f2516ff" +checksum = "adf1bd45a81a103745b1757754762a26e8cd01e4532e4d6c8ec431624b80d1d6" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9165,18 +9048,18 @@ checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524" [[package]] name = "zerocopy" -version = "0.8.49" +version = "0.8.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bce33a6288fa3f072a8c2c7d0f2fdbb90e28298f0135c1f99b96c3db2efcc60b" +checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.49" +version = "0.8.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd425244944f4ab65ccff928e7323354c5a018c75838362fdce749dfad2ee1e" +checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" dependencies = [ "proc-macro2", "quote", @@ -9206,9 +9089,9 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zerotrie" @@ -9257,7 +9140,7 @@ dependencies = [ "crc32fast", "deflate64", "flate2", - "getrandom 0.4.2", + "getrandom 0.4.3", "hmac 0.13.0", "indexmap", "lzma-rust2", @@ -9274,9 +9157,9 @@ dependencies = [ [[package]] name = "zlib-rs" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be3d40e40a133f9c916ee3f9f4fa2d9d63435b5fbe1bfc6d9dae0aa0ada1513" +checksum = "977347db8caa080403f6b6b7c1cda9479a8e869316f7e13a59b19076a40f94e3" [[package]] name = "zmij" @@ -9365,9 +9248,9 @@ dependencies = [ [[package]] name = "zvariant" -version = "5.11.0" +version = "5.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c1567a6ec68df868cbbfde844cfc6d81649fe5109a62b116b19fabd53e618ee" +checksum = "a192a0bde63360d77a7523c833d4b4ce6070a927e2c53246e4c540b1a3e27be0" dependencies = [ "endi", "enumflags2", @@ -9380,9 +9263,9 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "5.11.0" +version = "5.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d5b780599bbde114e39d9a0799577fad1ced5105d38515745f7b3099d8ceda" +checksum = "90bc6cde9c01c511074be97f7ccb6c19d0da89e3f8662e812e999dcfd4638737" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9393,9 +9276,9 @@ dependencies = [ [[package]] name = "zvariant_utils" -version = "3.3.1" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d464f5733ffa07a3164d656f18533caace9d0638596721355d73256a410d691" +checksum = "1e8535915cfa75547e559d8c68e8139909a4aeee076831e4ef7fc59d8172c4d6" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 32f9848..9f6950a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmic-term" -version = "1.0.14" +version = "1.2.0" authors = ["Jeremy Soller "] edition = "2024" license = "GPL-3.0-only" diff --git a/debian/changelog b/debian/changelog index f0a454d..35524cc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,27 @@ +cosmic-term (1.2.0) noble; urgency=medium + + * Epoch 1.2.0 version update + + -- Jeremy Soller Tue, 30 Jun 2026 12:21:56 -0600 + +cosmic-term (1.1.0) noble; urgency=medium + + * Epoch 1.1.0 version update + + -- Jeremy Soller Tue, 23 Jun 2026 08:49:37 -0600 + +cosmic-term (1.0.16) noble; urgency=medium + + * Epoch 1.0.16 version update + + -- Jeremy Soller Tue, 09 Jun 2026 10:26:45 -0600 + +cosmic-term (1.0.15) noble; urgency=medium + + * Epoch 1.0.15 version update + + -- Jeremy Soller Tue, 02 Jun 2026 11:03:25 -0600 + cosmic-term (1.0.14) noble; urgency=medium * Epoch 1.0.14 version update diff --git a/i18n/ar/cosmic_term.ftl b/i18n/ar/cosmic_term.ftl index f7284d6..4ce536a 100644 --- a/i18n/ar/cosmic_term.ftl +++ b/i18n/ar/cosmic_term.ftl @@ -145,5 +145,5 @@ tab-activate = نشّط لسان { $number } toggle-fullscreen = بدّل ملء الشاشة type-to-search = اكتب للبحث... copy-link = انسخ الرابط -tab-new-inherit-working-directory = الألسنة الجديدة تستخدم المجلد الحالي -tab-new-inherit-working-directory-description = افتح ألسنة جديدة في مجلد العمل الخاص باللسان النشط +tab-new-inherit-working-directory = الألسنة الجديدة والنوافذ تستخدم المجلد الحالي +tab-new-inherit-working-directory-description = افتح الألسنة الجديدة والنوافذ في مجلد العمل الخاص باللسان النشط diff --git a/i18n/cs/cosmic_term.ftl b/i18n/cs/cosmic_term.ftl index dcedece..93d357d 100644 --- a/i18n/cs/cosmic_term.ftl +++ b/i18n/cs/cosmic_term.ftl @@ -107,5 +107,5 @@ shortcut-replace-body = { $binding } je již přiřazena k „{ $existing }“. shortcut-capture-hint = Stiskněte kombinaci kláves paste-primary = Vložit primární copy-link = Kopírovat odkaz -tab-new-inherit-working-directory = Nové karty používají aktuální adresář -tab-new-inherit-working-directory-description = Otevírat nové karty v pracovním adresáři aktivní karty +tab-new-inherit-working-directory = Nové karty a okna používají aktuální adresář +tab-new-inherit-working-directory-description = Otevírat nové karty a okna v pracovním adresáři aktivní karty diff --git a/i18n/de/cosmic_term.ftl b/i18n/de/cosmic_term.ftl index 381a685..247c08f 100644 --- a/i18n/de/cosmic_term.ftl +++ b/i18n/de/cosmic_term.ftl @@ -147,5 +147,5 @@ paste-primary = Primär einfügen add-another-keybinding = Weitere Tastenbelegung hinzufügen shortcut-replace-body = { $binding } ist bereits { $existing } zugeordnet. Durch { $new_action } ersetzen? keywords = Befehl;Shell;Terminal;CLI; -tab-new-inherit-working-directory = Neue Tabs verwenden das aktuelle Verzeichnis -tab-new-inherit-working-directory-description = Neue Tabs im Arbeitsverzeichnis des aktiven Tabs öffnen +tab-new-inherit-working-directory = Neue Tabs und Fenster verwenden das aktuelle Verzeichnis +tab-new-inherit-working-directory-description = Neue Tabs und Fenster im Arbeitsverzeichnis des aktiven Tabs öffnen diff --git a/i18n/el/cosmic_term.ftl b/i18n/el/cosmic_term.ftl index 99f844a..aea4409 100644 --- a/i18n/el/cosmic_term.ftl +++ b/i18n/el/cosmic_term.ftl @@ -150,5 +150,5 @@ paste-primary = Πρωτεύουσα επικόλληση shortcut-group-other = Άλλες shortcut-group-zoom = Ζουμ shortcut-replace-body = Ο συνδυασμός { $binding } έχει ήδη αντιστοιχιστεί στην ενέργεια «{ $existing }». Θέλετε να αντικατασταθεί με την ενέργεια «{ $new_action }»; -tab-new-inherit-working-directory = Οι νέες καρτέλες χρησιμοποιούν τον τρέχοντα κατάλογο -tab-new-inherit-working-directory-description = Άνοιγμα νέων καρτελών στον τρέχοντα κατάλογο της ενεργής καρτέλας +tab-new-inherit-working-directory = Οι νέες καρτέλες και παράθυρα χρησιμοποιούν τον τρέχοντα κατάλογο +tab-new-inherit-working-directory-description = Άνοιγμα νέων καρτελών και παραθύρων στον τρέχοντα κατάλογο της ενεργής καρτέλας diff --git a/i18n/fr/cosmic_term.ftl b/i18n/fr/cosmic_term.ftl index 8a80609..8351497 100644 --- a/i18n/fr/cosmic_term.ftl +++ b/i18n/fr/cosmic_term.ftl @@ -152,5 +152,5 @@ tab-name-placeholder = Nom de l'onglet tab-rename-title = Renommer l'onglet comment = Émulateur de terminal pour le bureau COSMIC keywords = Commande;Shell;Terminal;CLI; -tab-new-inherit-working-directory = Les nouveaux onglets utilisent le répertoire actuel -tab-new-inherit-working-directory-description = Ouvrir les nouveaux onglets dans le répertoire de travail de l'onglet actif +tab-new-inherit-working-directory = Les nouveaux onglets et fenêtres utilisent le répertoire actuel +tab-new-inherit-working-directory-description = Ouvrir les nouveaux onglets et fenêtres dans le répertoire de travail de l'onglet actif diff --git a/i18n/hu/cosmic_term.ftl b/i18n/hu/cosmic_term.ftl index 144fdff..aeac109 100644 --- a/i18n/hu/cosmic_term.ftl +++ b/i18n/hu/cosmic_term.ftl @@ -147,5 +147,5 @@ tab-activate = { $number }. lap aktiválása toggle-fullscreen = Teljes képernyő váltása type-to-search = Gépelj a kereséshez… copy-link = Hivatkozás másolása -tab-new-inherit-working-directory = Az új lapok az aktuális könyvtárat használják -tab-new-inherit-working-directory-description = Az új lapok az aktív lap munkakönyvtárában nyílnak meg +tab-new-inherit-working-directory = Az új lapok és ablakok az aktuális könyvtárat használják +tab-new-inherit-working-directory-description = Az új lapok és ablakok az aktív lap munkakönyvtárában nyílnak meg diff --git a/i18n/id/cosmic_term.ftl b/i18n/id/cosmic_term.ftl index cea54ef..659630b 100644 --- a/i18n/id/cosmic_term.ftl +++ b/i18n/id/cosmic_term.ftl @@ -107,5 +107,5 @@ focus-pane-up = Fokuskan panel ke atas comment = Emulator terminal untuk desktop COSMIC keywords = Perintah;Shell;Terminal;CLI; copy-link = Salin Tautan -tab-new-inherit-working-directory = Tab baru menggunakan direktori saat ini -tab-new-inherit-working-directory-description = Buka tab baru di direktori pekerjaan tab aktif +tab-new-inherit-working-directory = Tab dan jendela baru menggunakan direktori saat ini +tab-new-inherit-working-directory-description = Buka tab dan jendela baru di direktori pekerjaan tab aktif diff --git a/i18n/kmr/cosmic_term.ftl b/i18n/kmr/cosmic_term.ftl index e69de29..550abb0 100644 --- a/i18n/kmr/cosmic_term.ftl +++ b/i18n/kmr/cosmic_term.ftl @@ -0,0 +1,111 @@ +rename = Navê biguhêrîne +cancel = Têk bibe +name = Nav +delete = Jê bibe +add-profile = Profîlê tevlî bike +find-next = Yê pêş bibîne +splits = Beşkirin +import-errors = Şaşetiyan têxîne +select-all = Hemûyan hilbijêre +new-window = Çarçoveya nû +menu-profiles = Profîl... +new-terminal = Termînala nû +tab-title-description = Sernavê rûgerê yê berdest biguhêrîne +remain-open = Piştî derketina pêvajoyê vekirî bimîne. +working-directory = Rêgeha xebatê +import = Têxîne +profiles = Profîl +tab-title = Sernavê rûgerê +quit = Biqedîne +edit = Biguhêrîne +copy = Jê bigire +export = Derxîne +theme = Rûkar +appearance = Xuyang +close-tab = Rûgerê bigire +light = Ronî +advanced = Pêşketî +support = Piştgirî +default-font = Cûrenivîs +paste = Pêve bike +menu-settings = Sazkarî... +command-line = Rêza fermanê +view = Dîtin +dark = Tarî +hold = Ragire +match-desktop = Li gorî sermaseyê +find-previous = Yê paş bibîne +cosmic-terminal = Termînalê COSMIC +find-placeholder = Bibîne... +advanced-font-settings = Sazkariyên pêşketî yên cûrenivîsê +settings = Sazkarî +font = Cûrenivîs +default-zoom-step = Gavên nêzîkbûnê +clear-scrollback = Dîroka şemitandinê pak bike +open-link = Girêdanê veke +file = Pel +make-default = Bike berdest +new-profile = Profîla nû +profile = Profîl +new-tab = Rûgera nû +comment = Emûlatorê termînalê ji bo sermaseya COSMIC +keywords = Ferman;Shell;Termînal;CLI; +close-window = Çarçoveyê bigire +keyboard-shortcuts = Kurteriyên kilîtdankê +menu-keyboard-shortcuts = Kurteriyên kilîtdankê... +no-shortcuts = Kurterê tune ne +shortcut-group-clipboard = Jêgirtdank +shortcut-group-other = Ên din +shortcut-group-tabs = Rûger +shortcut-group-window = Çarçove +shortcut-group-zoom = Nêzîkbûn +repository = Embar +find = Bibîne +replace = Biguhêrîne +syntax-light = Şêwaza rengê ronî +default-font-weight = Giraniya cûrenivîsê ya normal +zoom-in = Nivîsa mezintir +previous-tab = Rûgera paş +show-headerbar = Sernavê nîşan bide +zoom-out = Nivîsa biçûktir +split-vertical = Stûnî dabeş bike +syntax-dark = Şêwaza rengê tarî +menu-about = Derbarê termînala COSMIC... +menu-color-schemes = Şêwazên rengê... +opacity = Zelaliya paşrûyê +zoom-reset = Mezinahiya nivîsê ya berdest +passwords-title = Borînpeyv +pane-toggle-maximize = Mezinkirinê biguhêrîne +password-input = Borînpeyv +color-schemes = Şêwazên rengê +default-dim-font-weight = Giraniya cûrenivîsê ya sivik +use-bright-bold = Nivîsa qalind ronîtir bike +default-bold-font-weight = Giraniya cûrenivîsê ya qalind +password-input-description = Danasîn +add-password = Borînpeyvê tevlî bike +default-font-stretch = Dirêjahiya cûrenivîsê +menu-password-manager = Borînpeyv... +default-font-size = Mezinahiya cûrenivîsê +split-horizontal = Asoyî dabeş bike +focus-follow-mouse = Balkişandinê nivîsê mişkê dişopîne +next-tab = Rûgera pêş +show-header-description = Sernavê ji menuya rast-tikandin nîşan bide +tab-new-inherit-working-directory = Rûger û çarçoveyên nû peldanka heyî bi kar bîne +tab-new-inherit-working-directory-description = Rûger û çarçoveyên nû di peldanka xebatê ya çalak de veke +add-another-keybinding = Kurteriyeke din tevlî bike +copy-or-sigint = Jê bigire yan jî SIGINT +disable = Neçalak bike +focus-pane-down = Balê bikişîne ser destgeha jêrîn +focus-pane-left = Balê bikişîne ser destgeha çepê +focus-pane-right = Balê bikişîne ser destgeha rastê +focus-pane-up = Balê bikişîne ser destgeha jorîn +password-manager = Rêveberê borînpeyvê +paste-primary = A sereke pêve bike +reset-to-default = Vegere rewşa berdest +shortcut-capture-hint = Kombînasyona kilîtan bitikîne +shortcut-replace-body = { $binding } berê ji bo { $existing } hatiye destnîşankirin. Tu dixwazî bi { $new_action } re biguherînî? +shortcut-replace-title = Kurterê biguhêrînî? +tab-activate = Rûgera { $number } çalak bike +toggle-fullscreen = Dîmendera tijî biguhêrîne +type-to-search = Ji bo lêgerînê binivîse... +copy-link = Girêdanê jê bigire diff --git a/i18n/pl/cosmic_term.ftl b/i18n/pl/cosmic_term.ftl index 69111bb..c1db944 100644 --- a/i18n/pl/cosmic_term.ftl +++ b/i18n/pl/cosmic_term.ftl @@ -147,5 +147,5 @@ focus-pane-left = Aktywuj lewy panel focus-pane-right = Aktywuj prawy panel focus-pane-up = Aktywuj panel wyżej copy-link = Skopiuj Odnośnik -tab-new-inherit-working-directory = Nowe karty użyją obecnego katalogu -tab-new-inherit-working-directory-description = Otwieraj nowe karty w katalogu roboczym aktywnej karty +tab-new-inherit-working-directory = Nowe karty i okna użyją obecnego katalogu +tab-new-inherit-working-directory-description = Otwieraj nowe karty i okna w katalogu roboczym aktywnej karty diff --git a/i18n/pt-BR/cosmic_term.ftl b/i18n/pt-BR/cosmic_term.ftl index 3307289..570bc48 100644 --- a/i18n/pt-BR/cosmic_term.ftl +++ b/i18n/pt-BR/cosmic_term.ftl @@ -147,5 +147,5 @@ tab-activate = Ativar aba { $number } toggle-fullscreen = Alternar para tela cheia type-to-search = Digite para pesquisar... copy-link = Copiar link -tab-new-inherit-working-directory = Novas abas usam o diretório atual -tab-new-inherit-working-directory-description = Abrir novas abas no diretório de trabalho da aba ativa +tab-new-inherit-working-directory = Novas abas e janelas usam o diretório atual +tab-new-inherit-working-directory-description = Abrir novas abas e janelas no diretório de trabalho da aba ativa diff --git a/i18n/sv-SE/cosmic_term.ftl b/i18n/sv-SE/cosmic_term.ftl index 489c19f..5e888ab 100644 --- a/i18n/sv-SE/cosmic_term.ftl +++ b/i18n/sv-SE/cosmic_term.ftl @@ -151,5 +151,5 @@ shortcut-group-other = Andra shortcut-group-tabs = Flikar shortcut-group-zoom = Zooma copy-link = Kopiera länk -tab-new-inherit-working-directory-description = Öppna nya flikar i den aktiva flikens arbetskatalog -tab-new-inherit-working-directory = Nya flikar använder aktuell katalog +tab-new-inherit-working-directory-description = Öppna nya flikar och fönster i den aktiva flikens arbetskatalog +tab-new-inherit-working-directory = Nya flikar och fönster använder aktuell katalog diff --git a/i18n/zh-CN/cosmic_term.ftl b/i18n/zh-CN/cosmic_term.ftl index 3542be5..7806bcf 100644 --- a/i18n/zh-CN/cosmic_term.ftl +++ b/i18n/zh-CN/cosmic_term.ftl @@ -147,5 +147,5 @@ toggle-fullscreen = 切换全屏 comment = COSMIC 桌面的终端模拟器 keywords = 指令;外壳;终端;命令行界面; copy-link = 复制链接 -tab-new-inherit-working-directory = 新标签使用当前目录 -tab-new-inherit-working-directory-description = 在活动标签的工作目录中打开新标签 +tab-new-inherit-working-directory = 新标签和窗口使用当前目录 +tab-new-inherit-working-directory-description = 在活动标签的工作目录中打开新标签和窗口 diff --git a/i18n/zh-TW/cosmic_term.ftl b/i18n/zh-TW/cosmic_term.ftl index 59cc0bf..9f686c7 100644 --- a/i18n/zh-TW/cosmic_term.ftl +++ b/i18n/zh-TW/cosmic_term.ftl @@ -147,5 +147,5 @@ copy-link = 複製連結 shortcut-replace-body = { $binding } 已經分配至 { $existing }。 要取代它為 { $new_action }? clear-scrollback = 清除捲動回朔 comment = COSMIC 桌面終端機模擬器 -tab-new-inherit-working-directory = 新分頁使用目前目錄 -tab-new-inherit-working-directory-description = 在作用中分頁的工作目錄開啟新分頁 +tab-new-inherit-working-directory = 新分頁和視窗使用目前目錄 +tab-new-inherit-working-directory-description = 在作用中分頁的工作目錄開啟新分頁和視窗 diff --git a/src/config.rs b/src/config.rs index 49eb079..350842c 100644 --- a/src/config.rs +++ b/src/config.rs @@ -290,11 +290,17 @@ impl Config { } } - pub fn color_scheme_kind(&self) -> ColorSchemeKind { - if self.app_theme.theme().theme_type.is_dark() { - ColorSchemeKind::Dark - } else { - ColorSchemeKind::Light + pub fn color_scheme_kind(&self, system_theme: &theme::Theme) -> ColorSchemeKind { + match self.app_theme { + AppTheme::Dark => ColorSchemeKind::Dark, + AppTheme::Light => ColorSchemeKind::Light, + AppTheme::System => { + if system_theme.theme_type.is_dark() { + ColorSchemeKind::Dark + } else { + ColorSchemeKind::Light + } + } } } @@ -358,8 +364,11 @@ impl Config { } // Get current syntax theme based on dark mode - pub fn syntax_theme(&self, profile_id_opt: Option) -> (String, ColorSchemeKind) { - let color_scheme_kind = self.color_scheme_kind(); + pub fn syntax_theme( + &self, + color_scheme_kind: ColorSchemeKind, + profile_id_opt: Option, + ) -> (String, ColorSchemeKind) { let theme_name = match profile_id_opt.and_then(|profile_id| self.profiles.get(&profile_id)) { Some(profile) => match color_scheme_kind { diff --git a/src/main.rs b/src/main.rs index 0d9dfe1..005cbc3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -186,7 +186,10 @@ fn main() -> Result<(), Box> { }); // Terminal config setup - let term_config = term::Config::default(); + let term_config = term::Config { + scrolling_history: 100_000, + ..term::Config::default() + }; // Set up environmental variables for terminal tty::setup_env(); // Override TERM for better compatibility @@ -695,11 +698,12 @@ impl App { } // Set config of all tabs + let color_scheme_kind = self.config.color_scheme_kind(&theme); for (_pane, tab_model) in self.pane_model.panes.iter() { for entity in tab_model.iter() { if let Some(terminal) = tab_model.data::>(entity) { let mut terminal = terminal.lock().unwrap(); - terminal.set_config(&self.config, &self.themes); + terminal.set_config(&self.config, color_scheme_kind, &self.themes); } } } @@ -715,6 +719,7 @@ impl App { // skip writing config to fs when zoom in/ out // recalculate the pane due to the changes of zoom_adj value // but only for the active pane/tab + let color_scheme_kind = self.config.color_scheme_kind(self.core.system_theme()); if let Some(tab_model) = self.pane_model.active() { for entity in tab_model.iter() { if tab_model.is_active(entity) @@ -731,7 +736,7 @@ impl App { } _ => {} } - terminal.set_config(&self.config, &self.themes); + terminal.set_config(&self.config, color_scheme_kind, &self.themes); } } } @@ -1561,10 +1566,11 @@ impl App { self.pane_model.set_focus(pane); match &self.term_event_tx_opt { Some(term_event_tx) => { + let color_scheme_kind = self.config.color_scheme_kind(self.core.system_theme()); let colors = self .themes - .get(&self.config.syntax_theme(profile_id_opt)) - .or_else(|| match self.config.color_scheme_kind() { + .get(&self.config.syntax_theme(color_scheme_kind, profile_id_opt)) + .or_else(|| match color_scheme_kind { ColorSchemeKind::Dark => self .themes .get(&(config::COSMIC_THEME_DARK.to_string(), ColorSchemeKind::Dark)), @@ -1641,7 +1647,11 @@ impl App { tab_title_override, ) { Ok(mut terminal) => { - terminal.set_config(&self.config, &self.themes); + terminal.set_config( + &self.config, + color_scheme_kind, + &self.themes, + ); tab_model .data_set::>(entity, Mutex::new(terminal)); } @@ -1680,7 +1690,7 @@ impl App { None => { log::error!( "failed to find terminal theme {:?}", - self.config.syntax_theme(profile_id_opt) + self.config.syntax_theme(color_scheme_kind, profile_id_opt) ); //TODO: fall back to known good theme } @@ -2475,7 +2485,7 @@ impl Application for App { // Handle configurable keys for (key_bind, action) in &self.key_binds { - if key_bind.matches(modifiers, &key, None) { + if key_bind.matches(modifiers, &key, Some(&physical)) { return self.update(action.message(None)); } } @@ -3130,7 +3140,7 @@ impl Application for App { && let Some(terminal) = tab_model.data::>(entity) { let terminal = terminal.lock().unwrap(); - let rgb = terminal.colors()[index].unwrap_or_default(); + let rgb = terminal.effective_color(index); let text = f(rgb); terminal.input_no_scroll(text.into_bytes()); } diff --git a/src/menu.rs b/src/menu.rs index e952fc2..57c03ca 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -208,6 +208,8 @@ pub fn menu_bar<'a>( //TODO: what to do if there are no profiles? + let color_scheme_kind = config.color_scheme_kind(core.system_theme()); + responsive_menu_bar() .item_height(ItemHeight::Dynamic(40)) .item_width(ItemWidth::Uniform(320)) @@ -270,7 +272,7 @@ pub fn menu_bar<'a>( MenuItem::Button( fl!("menu-color-schemes"), None, - Action::ColorSchemes(config.color_scheme_kind()), + Action::ColorSchemes(color_scheme_kind), ), MenuItem::Button( fl!("menu-keyboard-shortcuts"), diff --git a/src/mouse_reporter.rs b/src/mouse_reporter.rs index 3d32b70..e426a19 100644 --- a/src/mouse_reporter.rs +++ b/src/mouse_reporter.rs @@ -3,10 +3,6 @@ use cosmic::{ iced::{Event, keyboard::Modifiers, mouse::Button}, }; -use crate::terminal::Terminal; - -const SCROLL_SPEED: u32 = 3; - #[derive(Default)] pub struct MouseReporter { last_movment_x: Option, @@ -17,6 +13,30 @@ pub struct MouseReporter { } impl MouseReporter { + pub fn accumulate_scroll( + &mut self, + delta: ScrollDelta, + cell_width: f32, + cell_height: f32, + ) -> (i32, i32) { + match delta { + ScrollDelta::Lines { x, y } => { + self.accumulated_scroll_x += x; + self.accumulated_scroll_y += y; + } + ScrollDelta::Pixels { x, y } => { + self.accumulated_scroll_x += x / cell_width; + self.accumulated_scroll_y += y / cell_height; + } + } + + let lines_x = self.accumulated_scroll_x as i32; + let lines_y = self.accumulated_scroll_y as i32; + self.accumulated_scroll_x -= lines_x as f32; + self.accumulated_scroll_y -= lines_y as f32; + (lines_x, lines_y) + } + fn button_number(button: Button) -> Option { match button { Button::Left => Some(0), @@ -178,24 +198,7 @@ impl MouseReporter { x: u32, y: u32, ) -> impl Iterator> { - let (lines_x, lines_y) = match delta { - ScrollDelta::Lines { x, y } => (x as i32, y as i32), - ScrollDelta::Pixels { x, y } => { - //Accumulate change - self.accumulated_scroll_x += x / term_cell_width; - self.accumulated_scroll_y += y / term_cell_height; - - //Resolve lines crossed - let lines_x = self.accumulated_scroll_x as i32; - let lines_y = self.accumulated_scroll_y as i32; - - //Subtract accounted lines from accumulators - self.accumulated_scroll_x -= lines_x as f32; - self.accumulated_scroll_y -= lines_y as f32; - - (lines_x, lines_y) - } - }; + let (lines_x, lines_y) = self.accumulate_scroll(delta, term_cell_width, term_cell_height); //Resolve modifier flags let mut modifier_flags = 0; @@ -235,26 +238,4 @@ impl MouseReporter { term_code.as_bytes().to_vec() }) } - - //Emulate mouse wheel scroll with up/down arrows. Using mouse spec uses - //scroll-back and scroll-forw actions, which moves whole windows like page up/page down. - pub fn report_mouse_wheel_as_arrows( - terminal: &Terminal, - term_cell_width: f32, - term_cell_height: f32, - delta: ScrollDelta, - ) { - let (_delta_x, delta_y) = match delta { - ScrollDelta::Lines { x, y } => (x, y), - ScrollDelta::Pixels { x, y } => (x / term_cell_width, y / term_cell_height), - }; - //Send delta_y * SCROLL_SPEED number of Up/Down arrows - for _ in 0..(delta_y.abs() as u32 * SCROLL_SPEED) { - if delta_y > 0.0 { - terminal.input_no_scroll(b"\x1B[A".as_slice()) - } else if delta_y < 0.0 { - terminal.input_no_scroll(b"\x1B[B".as_slice()) - } - } - } } diff --git a/src/terminal.rs b/src/terminal.rs index ae4f9ca..99ea621 100644 --- a/src/terminal.rs +++ b/src/terminal.rs @@ -21,8 +21,7 @@ use cosmic::{ widget::{pane_grid, segmented_button}, }; use cosmic_text::{ - Attrs, AttrsList, Buffer, BufferLine, CacheKeyFlags, Family, LineEnding, Metrics, Shaping, - Weight, Wrap, + Attrs, AttrsList, Buffer, BufferLine, CacheKeyFlags, Family, LineEnding, Shaping, Weight, Wrap, }; use indexmap::IndexSet; use std::{ @@ -191,7 +190,7 @@ impl TerminalPaneGrid { let entity = tab_model.active(); if let Some(terminal) = tab_model.data::>(entity) { let mut terminal = terminal.lock().unwrap(); - terminal.is_focused = self.focus == *pane; + terminal.set_focused(self.focus == *pane); terminal.update(); } } @@ -201,7 +200,7 @@ impl TerminalPaneGrid { for entity in tab_model.iter() { if let Some(terminal) = tab_model.data::>(entity) { let mut terminal = terminal.lock().unwrap(); - terminal.is_focused = false; + terminal.set_focused(false); terminal.update(); } } @@ -285,7 +284,7 @@ impl Terminal { let bold_font_weight = app_config.bold_font_weight; let use_bright_bold = app_config.use_bright_bold; - let metrics = Metrics::new(14.0, 21.0); + let metrics = app_config.metrics(0); let default_bg = convert_color(&colors, Color::Named(NamedColor::Background)); let default_fg = convert_color(&colors, Color::Named(NamedColor::Foreground)); @@ -388,6 +387,19 @@ impl Terminal { &self.colors } + pub fn effective_color(&self, index: usize) -> Rgb { + if index == NamedColor::Background as usize { + self.colors[index].unwrap_or_else(|| { + // Allow using an unset background + let [r, g, b, _] = + cosmic_text::Color(WINDOW_BG_COLOR.load(Ordering::SeqCst)).as_rgba(); + Rgb { r, g, b } + }) + } else { + self.colors[index].unwrap_or_default() + } + } + pub fn default_attrs(&self) -> &Attrs<'static> { &self.default_attrs } @@ -404,6 +416,22 @@ impl Terminal { self.zoom_adj = value; } + fn set_focused(&mut self, is_focused: bool) { + let focus_changed = self.is_focused != is_focused; + self.is_focused = is_focused; + + if focus_changed { + let report_focus = self.term.lock().mode().contains(TermMode::FOCUS_IN_OUT); + if report_focus { + const FOCUS_IN: &[u8] = b"\x1b[I"; + const FOCUS_OUT: &[u8] = b"\x1b[O"; + + let input = if is_focused { FOCUS_IN } else { FOCUS_OUT }; + self.input_no_scroll(input); + } + } + } + pub fn redraw(&self) -> bool { self.buffer.redraw() } @@ -615,6 +643,7 @@ impl Terminal { pub fn set_config( &mut self, config: &AppConfig, + color_scheme_kind: ColorSchemeKind, themes: &HashMap<(String, ColorSchemeKind), Colors>, ) { let mut update_cell_size = false; @@ -641,7 +670,7 @@ impl Terminal { update_cell_size = true; } - if self.bold_font_weight.0 != config.font_weight { + if self.bold_font_weight.0 != config.bold_font_weight { self.bold_font_weight = Weight(config.bold_font_weight); update_cell_size = true; } @@ -657,7 +686,9 @@ impl Terminal { update_cell_size = true; } - if let Some(colors) = themes.get(&config.syntax_theme(self.profile_id_opt)) { + if let Some(colors) = + themes.get(&config.syntax_theme(color_scheme_kind, self.profile_id_opt)) + { let mut changed = false; for i in 0..color::COUNT { if self.colors[i] != colors[i] { @@ -1026,10 +1057,9 @@ impl Terminal { x: u32, y: u32, ) { - let term_lock = self.term.lock(); - let mode = term_lock.mode(); + let is_sgr = self.term.lock().mode().contains(TermMode::SGR_MOUSE); - if mode.contains(TermMode::SGR_MOUSE) { + if is_sgr { let codes = self.mouse_reporter.sgr_mouse_wheel_scroll( self.size().cell_width, self.size().cell_height, @@ -1043,12 +1073,29 @@ impl Terminal { self.notifier.notify(code); } } else { - MouseReporter::report_mouse_wheel_as_arrows( - self, - self.size().cell_width, - self.size().cell_height, - delta, - ); + self.scroll_as_arrows(delta); + } + } + + pub fn scroll_as_arrows(&mut self, delta: ScrollDelta) { + let cell_width = self.size().cell_width; + let cell_height = self.size().cell_height; + let (_, lines_y) = self + .mouse_reporter + .accumulate_scroll(delta, cell_width, cell_height); + let is_app_cursor = self.term.lock().mode().contains(TermMode::APP_CURSOR); + let (up, down) = if is_app_cursor { + (&b"\x1BOA"[..], &b"\x1BOB"[..]) + } else { + (&b"\x1B[A"[..], &b"\x1B[B"[..]) + }; + const SCROLL_SPEED: u32 = 3; + for _ in 0..(lines_y.unsigned_abs() * SCROLL_SPEED) { + if lines_y > 0 { + self.input_no_scroll(up) + } else if lines_y < 0 { + self.input_no_scroll(down) + } } } } diff --git a/src/terminal_box.rs b/src/terminal_box.rs index caa2c2a..1b00e31 100644 --- a/src/terminal_box.rs +++ b/src/terminal_box.rs @@ -45,10 +45,7 @@ use std::{ time::{Duration, Instant}, }; -use crate::{ - Action, Terminal, TerminalScroll, menu::MenuState, mouse_reporter::MouseReporter, - terminal::Metadata, -}; +use crate::{Action, Terminal, TerminalScroll, menu::MenuState, terminal::Metadata}; const AUTOSCROLL_INTERVAL: Duration = Duration::from_millis(100); @@ -943,7 +940,7 @@ where .. }) if state.is_focused && named == modified_named => { for key_bind in self.key_binds.keys() { - if key_bind.matches(*modifiers, &Key::Named(*named), None) { + if key_bind.matches(*modifiers, &Key::Named(*named), Some(physical_key)) { shell.capture_event(); return; } @@ -1130,10 +1127,11 @@ where modifiers, key, physical_key, + modified_key, .. }) if state.is_focused => { for key_bind in self.key_binds.keys() { - if key_bind.matches(*modifiers, key, None) { + if key_bind.matches(*modifiers, key, Some(physical_key)) { shell.capture_event(); return; @@ -1176,11 +1174,10 @@ where } } (false, true, _, true) => { - //This is normally Ctrl+Minus, but since that - //is taken by zoom, we send that code for - //Ctrl+Underline instead, like xterm and - //gnome-terminal - if *key == Key::Character("_".into()) { + // Ctrl+Shift+: send 0x1F (C-_) on '_', matching xterm/gnome-terminal. + // Use `modified_key` so this works regardless of which physical key + // produces '_' on the user's layout. + if *modified_key == Key::Character("_".into()) { terminal.input_scroll(b"\x1F".as_slice()); shell.capture_event(); } @@ -1551,26 +1548,27 @@ where let row = y / terminal.size().cell_height; terminal.scroll_mouse(*delta, &state.modifiers, col as u32, row as u32); } else if terminal.term.lock().mode().contains(TermMode::ALT_SCREEN) { - MouseReporter::report_mouse_wheel_as_arrows( - &terminal, - terminal.size().cell_width, - terminal.size().cell_height, - *delta, - ); + terminal.scroll_as_arrows(*delta); shell.capture_event(); } else { match delta { ScrollDelta::Lines { x: _, y } => { - //TODO: this adjustment is just a guess! + // High-resolution wheels deliver a notch as many + // fractional deltas; accumulate them so nothing + // below one whole line is lost (see + // accumulate_wheel_lines). state.scroll_pixels = 0.0; - let lines = (-y * 6.0) as i32; + let (lines, remainder) = + accumulate_wheel_lines(*y, state.scroll_lines); + state.scroll_lines = remainder; if lines != 0 { - terminal.scroll(TerminalScroll::Delta(-lines)); + terminal.scroll(TerminalScroll::Delta(lines)); } shell.capture_event(); } ScrollDelta::Pixels { x: _, y } => { //TODO: this adjustment is just a guess! + state.scroll_lines = 0.0; state.scroll_pixels -= y * 6.0; let mut lines = 0; let metrics = terminal.with_buffer(|buffer| buffer.metrics()); @@ -1736,6 +1734,26 @@ fn update_active_regex_match( } } +/// Whole lines scrolled per unit of wheel `Lines` delta. +//TODO: this adjustment is just a guess! +const SCROLL_LINE_MULTIPLIER: f32 = 6.0; + +/// Convert a wheel `Lines` delta into whole lines to scroll, accumulating the +/// fractional remainder across events. +/// +/// High-resolution wheels deliver a single physical notch as many fractional +/// deltas (e.g. `y = 0.125`). Scaling by [`SCROLL_LINE_MULTIPLIER`] and +/// truncating per event discards anything below one whole line, so most of +/// those events would scroll nothing. Carrying the remainder forward means the +/// fractions add up and a full notch scrolls the intended amount. +/// +/// Returns `(whole_lines, new_accumulator)`. +fn accumulate_wheel_lines(y: f32, accumulator: f32) -> (i32, f32) { + let total = accumulator + y * SCROLL_LINE_MULTIPLIER; + let lines = total.trunc() as i32; + (lines, total - lines as f32) +} + fn shade(color: cosmic_text::Color, is_focused: bool) -> cosmic_text::Color { if is_focused { color @@ -1937,6 +1955,7 @@ pub struct State { dragging: Option, is_focused: bool, scroll_pixels: f32, + scroll_lines: f32, scrollbar_rect: Cell>, autoscroll: DragAutoscroll, preedit: Option, @@ -1951,6 +1970,7 @@ impl State { dragging: None, is_focused: false, scroll_pixels: 0.0, + scroll_lines: 0.0, scrollbar_rect: Cell::new(Rectangle::default()), autoscroll: DragAutoscroll::new(AUTOSCROLL_INTERVAL), preedit: None, @@ -2030,7 +2050,38 @@ fn ss3(code: &str, modifiers: u8) -> Option> { #[cfg(test)] mod tests { - use super::{EdgeScrollDirection, edge_scroll_adjustment}; + use super::{EdgeScrollDirection, accumulate_wheel_lines, edge_scroll_adjustment}; + + #[test] + fn wheel_lines_single_fractional_event_keeps_remainder() { + // A high-res wheel notch arrives as fractional deltas. A lone 0.125 + // event is less than one whole line, but must not be discarded. + let (lines, remainder) = accumulate_wheel_lines(0.125, 0.0); + assert_eq!(lines, 0); + assert!((remainder - 0.75).abs() < f32::EPSILON); + } + + #[test] + fn wheel_lines_accumulate_into_whole_lines() { + // Eight 0.125 deltas make up one physical notch and must scroll the + // full SCROLL_LINE_MULTIPLIER (6) lines, not be lost to truncation. + let mut accumulator = 0.0; + let mut total = 0; + for _ in 0..8 { + let (lines, remainder) = accumulate_wheel_lines(0.125, accumulator); + accumulator = remainder; + total += lines; + } + assert_eq!(total, 6); + } + + #[test] + fn wheel_lines_preserve_direction() { + let (down, _) = accumulate_wheel_lines(0.25, 0.0); + let (up, _) = accumulate_wheel_lines(-0.25, 0.0); + assert_eq!(down, 1); + assert_eq!(up, -1); + } const BUFFER_HEIGHT: f32 = 200.0; const CELL_HEIGHT: f32 = 20.0;