diff --git a/Cargo.lock b/Cargo.lock index a8eed3d..cd866b8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -21,7 +21,7 @@ checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" [[package]] name = "accesskit" version = "0.22.0" -source = "git+https://github.com/wash2/accesskit?rev=6c20249#6c20249d3b9fd45e7002efad9f6b6171a9257912" +source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" dependencies = [ "uuid", ] @@ -29,7 +29,7 @@ dependencies = [ [[package]] name = "accesskit_atspi_common" version = "0.15.0" -source = "git+https://github.com/wash2/accesskit?rev=6c20249#6c20249d3b9fd45e7002efad9f6b6171a9257912" +source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" dependencies = [ "accesskit", "accesskit_consumer", @@ -41,7 +41,7 @@ dependencies = [ [[package]] name = "accesskit_consumer" version = "0.32.0" -source = "git+https://github.com/wash2/accesskit?rev=6c20249#6c20249d3b9fd45e7002efad9f6b6171a9257912" +source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" dependencies = [ "accesskit", "hashbrown 0.16.1", @@ -50,7 +50,7 @@ dependencies = [ [[package]] name = "accesskit_macos" version = "0.23.0" -source = "git+https://github.com/wash2/accesskit?rev=6c20249#6c20249d3b9fd45e7002efad9f6b6171a9257912" +source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" dependencies = [ "accesskit", "accesskit_consumer", @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "accesskit_unix" version = "0.18.0" -source = "git+https://github.com/wash2/accesskit?rev=6c20249#6c20249d3b9fd45e7002efad9f6b6171a9257912" +source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" dependencies = [ "accesskit", "accesskit_atspi_common", @@ -78,7 +78,7 @@ dependencies = [ [[package]] name = "accesskit_windows" version = "0.30.0" -source = "git+https://github.com/wash2/accesskit?rev=6c20249#6c20249d3b9fd45e7002efad9f6b6171a9257912" +source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" dependencies = [ "accesskit", "accesskit_consumer", @@ -91,7 +91,7 @@ dependencies = [ [[package]] name = "accesskit_winit" version = "0.30.0" -source = "git+https://github.com/wash2/accesskit?rev=6c20249#6c20249d3b9fd45e7002efad9f6b6171a9257912" +source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" dependencies = [ "accesskit", "accesskit_macos", @@ -146,8 +146,8 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46319972e74179d707445f64aaa2893bbf6a111de3a9af29b7eb382f8b39e282" dependencies = [ - "base64 0.22.1", - "bitflags 2.13.2", + "base64", + "bitflags 2.13.1", "home", "libc", "log", @@ -223,7 +223,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f2a1bb052857d5dd49572219344a7332b31b76405648eabac5bc68978251bcd" dependencies = [ "android-properties", - "bitflags 2.13.2", + "bitflags 2.13.1", "cc", "jni", "libc", @@ -493,7 +493,7 @@ checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667" dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.4", ] [[package]] @@ -564,7 +564,7 @@ dependencies = [ "derive_utils", "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.4", ] [[package]] @@ -622,12 +622,6 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" -[[package]] -name = "base64" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5" - [[package]] name = "basic-toml" version = "0.1.10" @@ -666,9 +660,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.13.2" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" dependencies = [ "serde_core", ] @@ -823,13 +817,13 @@ dependencies = [ [[package]] name = "bytemuck_derive" -version = "1.12.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a1f896587b6f2c069c73d2f0913e2d590c3990285cd2f0b6aa02b786b4c679c" +checksum = "fc0e56a716f1e132ff6bf4bdac1c944a3fcdc1cae65f70a4a2a1ac3b401d2d1f" dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.4", ] [[package]] @@ -875,7 +869,7 @@ version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dbf9978365bac10f54d1d4b04f7ce4427e51f71d61f2fe15e3fed5166474df7" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "polling", "rustix 1.1.4", "slab", @@ -905,9 +899,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.4.6" +version = "1.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3eb0f42d6c360dc3f8a821f6bf2fdea7f72bfd36b3076eb0e6d1e9e0752fff4" +checksum = "0ad534f4357a5264cce5019c989cf66a4f0dc4e0d1b1d15f8aacec0ff7360273" dependencies = [ "find-msvc-tools", "jobserver", @@ -1193,9 +1187,9 @@ dependencies = [ [[package]] name = "configparser" -version = "3.3.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "031ad3d167622974ed636505ae4556267ed4aa2aea0464122fa6bc9698a32825" +checksum = "b46dec724fd22199ebde05033a0cbae453bc3b1ecff11eb6a6bb3eec4b90c6a4" [[package]] name = "const-oid" @@ -1265,7 +1259,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "core-foundation 0.10.1", "libc", ] @@ -1300,7 +1294,7 @@ dependencies = [ name = "cosmic-client-toolkit" version = "0.2.0" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "cosmic-protocols", "libc", "smithay-client-toolkit", @@ -1338,7 +1332,7 @@ dependencies = [ [[package]] name = "cosmic-files" -version = "1.9.0" +version = "1.8.0" dependencies = [ "anyhow", "atomic_float", @@ -1412,7 +1406,7 @@ dependencies = [ name = "cosmic-protocols" version = "0.2.0" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -1430,7 +1424,7 @@ dependencies = [ [[package]] name = "cosmic-term" -version = "1.9.0" +version = "1.8.0" dependencies = [ "alacritty_terminal", "clap_lex", @@ -1465,7 +1459,7 @@ dependencies = [ name = "cosmic-text" version = "0.19.0" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "fontdb", "harfrust", "linebender_resource_handle", @@ -1527,18 +1521,18 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.5.2" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01a7799fd6b852db0e61728dde9a204c423b44d689dbd432522543614b490e78" +checksum = "8498c871161e1742aaa9d52551b2d6ebdd4c3d45a3be423e3728f33b955be550" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-deque" -version = "0.8.8" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622f3fc73690be383c7214310406f28a90e6edeadc3cea882f9d71e495b9711a" +checksum = "5181e0de7b61eb03a81e347d6dd8797bae9da5146707b51077e2d71a54ec0ceb" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -1546,27 +1540,27 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.21" +version = "0.9.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc74980687109a3b14c72fd458107bf0baa1da1a1a805e178d15501ba9b86d9d" +checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-queue" -version = "0.3.14" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03e8bd762f7479489c70ed6c768ddca99d7296857de437a68dcb2a94365b3fae" +checksum = "803d13fb3b09d88be9f4dbc29062c66b19bf7170867ceb746d2a8689bf6c7a26" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.23" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31eee39dddec8330830986fcd7625edb5a24ec90ea038215273bbc3adb08ac6" +checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" [[package]] name = "crunchy" @@ -1741,7 +1735,7 @@ checksum = "dc05a5d33db20c784f873e84934ad94bb209a090987ac5f62fede2c178234f23" dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.4", ] [[package]] @@ -1836,7 +1830,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "block2 0.6.2", "libc", "objc2 0.6.4", @@ -1850,7 +1844,7 @@ checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.4", ] [[package]] @@ -1866,7 +1860,7 @@ dependencies = [ name = "dnd" version = "0.1.0" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "mime 0.1.0", "raw-window-handle", "smithay-client-toolkit", @@ -1900,12 +1894,13 @@ checksum = "252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34" [[package]] name = "encoding_rs" -version = "0.8.42" +version = "0.8.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e985e0451871ad22fb8d2b6b076e2028a502a0d3950998c2c5c0a4f9b5d9679" +checksum = "7b5ef0006ac9ab233c38522f5ae99cae3625151de8f706cacee1cba4b8e2832a" dependencies = [ "cfg-if", "core_detect", + "multiversion", "multiversion_no_op", "rustversion", "scopeguard", @@ -2088,9 +2083,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.12" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e0f1c7c3a72c66fd80abe965175f7523475c0489a87d3ff9d6e8c87d87a9d2d" +checksum = "d45db016d36b838f563236e9193d0ee6ce38f3f68b6c94e914b4929c96bbb890" [[package]] name = "fixed_decimal" @@ -2218,9 +2213,9 @@ dependencies = [ [[package]] name = "font-types" -version = "0.12.5" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8eb065f3251655b3c90e22e5e363f310fc5332fb3402e37bbc94752283248f6" +checksum = "e64eb721ca85a34323425f4041adc5d82704d3782d5f8f03793bc012419dce23" dependencies = [ "bytemuck", ] @@ -2275,7 +2270,7 @@ checksum = "ea5190182e6915eb873ddbc16e23b711b6eb1f9c00a0d0a3a91b5f6228475225" dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.4", ] [[package]] @@ -2405,7 +2400,7 @@ checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44" dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.4", ] [[package]] @@ -2595,7 +2590,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "gpu-descriptor-types", "hashbrown 0.15.5", ] @@ -2606,7 +2601,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", ] [[package]] @@ -2662,7 +2657,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9da2e5ae821f6e96664977bf974d6d6a2d6682f9ccee23e62ec1d134246845f9" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "bytemuck", "core_maths", "read-fonts 0.37.0", @@ -2798,9 +2793,9 @@ checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "hybrid-array" -version = "0.4.15" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27f864f10dfb56725ce5ce5472bc52252c8f93a4ab86327122cebf62c5f59a17" +checksum = "707114b52a152fa7bdb290cd7cd5912d9467273b6d74e21b8d81aca1f8533f6b" dependencies = [ "typenum", ] @@ -2828,9 +2823,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.10" +version = "0.27.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfa8e654703247911e29c23fbeaa261834bd9bb74efba2f9acddc37bfb127f53" +checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" dependencies = [ "http", "hyper", @@ -2859,17 +2854,16 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.21" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc03d96684f9226b8a787cdb71488417b53ab5ea8fdb1dac946cb9431cc8bff" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" dependencies = [ - "base64 0.23.1", + "base64", "bytes", "futures-channel", "futures-util", "http", "http-body", - "httparse", "hyper", "ipnet", "libc", @@ -3007,7 +3001,7 @@ dependencies = [ name = "iced_core" version = "0.14.0" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "build_helpers", "bytes", "cosmic-client-toolkit", @@ -3054,7 +3048,7 @@ dependencies = [ name = "iced_graphics" version = "0.14.0" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "bytemuck", "cosmic-text", "half", @@ -3124,7 +3118,7 @@ dependencies = [ name = "iced_wgpu" version = "0.14.0" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "build_helpers", "bytemuck", "cosmic-client-toolkit", @@ -3711,9 +3705,9 @@ checksum = "6e44b0a4eaa4c82f441d50a963f2d5f05a787240aeee097597033e72accfd22f" [[package]] name = "indexmap" -version = "2.14.2" +version = "2.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc4e190f5d26ca7051642629da2c52fc03bde85a03197c99408dcd291734c855" +checksum = "07aa2048142242915a31d35844fb311e0e53fcca590c3a0a40dcf1b841fa09eb" dependencies = [ "equivalent", "hashbrown 0.17.1", @@ -3736,7 +3730,7 @@ version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cc00ea907cab49550b7da656f80ebb97be1b997d931fbcd28d39734e17ce592" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "inotify-sys", "libc", ] @@ -3838,9 +3832,9 @@ checksum = "4d3667095d64c3ecffc96463a21157b04bf3e252f6e8d5750b20c02e33c194e3" [[package]] name = "jiff" -version = "0.2.37" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab1baf72f08796de0260609515130699b890ac25f30e610ad894bc5856cafdb" +checksum = "668b7183bd07af9a4885f5c35b0cc5c83c4607a913c16b7e17291832910d2dcc" dependencies = [ "defmt", "jiff-core", @@ -3855,12 +3849,11 @@ dependencies = [ [[package]] name = "jiff-core" -version = "0.1.1" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e52fe76043ccecc9005d2305ebaadf7d7fc0cc89ca6baa10a94d6bc68c7128c" +checksum = "7feca88439efe53da3754500c1851dedf3cb36c524dd5cf8225cc0794de95d09" dependencies = [ "defmt", - "log", ] [[package]] @@ -3876,9 +3869,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.37" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "378268a1116ad67ae6228701118ac9f491d78fda38a40a1f1a9e1348de6f7212" +checksum = "3a69dcb3a21cfb32ce1cd056169337ca284af0766dd766e7878819b251a49204" dependencies = [ "jiff-core", "proc-macro2", @@ -3971,9 +3964,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.105" +version = "0.3.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce57d20d1ea864ce2ac172ab472d409214f4fd359f0b2a2775abdf522e2af99e" +checksum = "0e0c1080212aad755ea003d18543e8768dd432c48819efd73a7bf1e39b7a5a3a" dependencies = [ "cfg-if", "futures-util", @@ -4175,7 +4168,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fbe853b403ae61a04233030ae8a79d94975281ed9770a1f9e246732b534b28d" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "serde", ] @@ -4221,7 +4214,7 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07293a4e297ac234359b510362495713f75ea345d5307140414f20c69ffeb087" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "libc", ] @@ -4305,7 +4298,6 @@ dependencies = [ "palette", "phf", "rfd", - "roxmltree", "rust-embed", "serde", "slotmap", @@ -4346,14 +4338,14 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.24" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6480ccc157a1389bb2e4891b24751b0f798ba640d22386f23143fbcc89da195a" +checksum = "8d8f1ea3f21fd3405dcaf6c9b5c1630af9afc422d9073ea39c5f6d6c772e08ed" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "libc", "plain", - "redox_syscall 0.9.4", + "redox_syscall 0.9.3", ] [[package]] @@ -4482,9 +4474,9 @@ dependencies = [ [[package]] name = "lyon_tessellation" -version = "1.0.22" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43b8dcf906637ecef61b3c0740c7a4e7f27caeb31257cfac0cc579ce15be6005" +checksum = "dabea159dc6eea9171a541b458134b70ca95e3162d068132b2b3b9bc01aad06e" dependencies = [ "float_next_after", "lyon_path", @@ -4577,7 +4569,7 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7047791b5bc903b8cd963014b355f71dc9864a9a0b727057676c1dcae5cbc15" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "block", "core-graphics-types 0.2.0", "foreign-types 0.5.0", @@ -4666,6 +4658,27 @@ dependencies = [ "pxfm", ] +[[package]] +name = "multiversion" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ca4bea16ffc3f443cf7d866912118196bfef4c6a1556ca00f9f9b00bb43f7c" +dependencies = [ + "multiversion-macros", +] + +[[package]] +name = "multiversion-macros" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d416831a7317ef4b08bee00b69cbbb9c8763da7959a7026244d6266869f9c83" +dependencies = [ + "proc-macro2", + "quote", + "rustversion", + "syn 3.0.4", +] + [[package]] name = "multiversion_no_op" version = "1.0.0" @@ -4686,7 +4699,7 @@ checksum = "618f667225063219ddfc61251087db8a9aec3c3f0950c916b614e403486f1135" dependencies = [ "arrayvec", "bit-set", - "bitflags 2.13.2", + "bitflags 2.13.1", "cfg-if", "cfg_aliases", "codespan-reporting", @@ -4727,7 +4740,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "jni-sys 0.3.1", "log", "ndk-sys", @@ -4797,7 +4810,7 @@ version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "fsevent-sys", "inotify", "kqueue", @@ -4828,7 +4841,7 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42b8cfee0e339a0337359f3c88165702ac6e600dc01c0cc9579a92d62b08477a" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", ] [[package]] @@ -5014,7 +5027,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "block2 0.5.1", "libc", "objc2 0.5.2", @@ -5030,7 +5043,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "block2 0.6.2", "objc2 0.6.4", "objc2-core-foundation", @@ -5043,7 +5056,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -5055,7 +5068,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "block2 0.6.2", "dispatch2", "objc2 0.6.4", @@ -5067,7 +5080,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "libc", "objc2-core-foundation", ] @@ -5090,7 +5103,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "objc2-core-foundation", "objc2-core-graphics", ] @@ -5107,7 +5120,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "block2 0.5.1", "libc", "objc2 0.5.2", @@ -5119,7 +5132,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "block2 0.6.2", "objc2 0.6.4", "objc2-core-foundation", @@ -5131,7 +5144,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -5143,7 +5156,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -5156,7 +5169,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "objc2 0.6.4", "objc2-core-foundation", "objc2-foundation 0.3.2", @@ -5179,9 +5192,9 @@ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "open" -version = "5.4.4" +version = "5.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa576c76302b7b808eecc68061e67336c47833ef9d22caa74dda10fa9675eebc" +checksum = "7c603ab8300cf18bc3b14146b19fe3dfcc4843ae5a400cd0e7a30b95aa366634" dependencies = [ "is-wsl", "libc", @@ -5193,7 +5206,7 @@ version = "0.10.81" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "cfg-if", "foreign-types 0.3.2", "libc", @@ -5267,9 +5280,9 @@ dependencies = [ [[package]] name = "ordermap" -version = "1.2.2" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16a756ddcdeb6c0efc8927bdf0ed112885815a35ba350472a467be5104f01ca1" +checksum = "b1288aecc871a8edf4d48083fb911efe2716700ba47bee1854c03466ff3627de" dependencies = [ "indexmap", "serde", @@ -5532,7 +5545,7 @@ version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "crc32fast", "fdeflate", "flate2", @@ -5567,9 +5580,9 @@ checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85" [[package]] name = "portable-atomic-util" -version = "0.2.8" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10ab3eb7f3becc3a1cbc4f2c6f20267996cfc1a6467a873763411b136a122715" +checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618" dependencies = [ "portable-atomic", ] @@ -5593,9 +5606,9 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppmd-rust" -version = "1.5.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196a7c80b9a7652aba7cc070827516c2abe4ccdf53d128e1944003cf5726cff1" +checksum = "9e9219bcb9d7aca6b2f63c83cf100cf78bcd619ac46e6ecbd0dd90869a39345d" [[package]] name = "ppv-lite86" @@ -5640,7 +5653,7 @@ dependencies = [ "proc-macro-error-attr3", "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.4", ] [[package]] @@ -5671,7 +5684,7 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25485360a54d6861439d60facef26de713b1e126bf015ec8f98239467a2b82f7" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "chrono", "flate2", "procfs-core", @@ -5684,7 +5697,7 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6401bf7b6af22f78b563665d15a22e9aef27775b79b149a66ca022468a4e405" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "chrono", "hex", ] @@ -5919,7 +5932,7 @@ version = "11.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", ] [[package]] @@ -5966,7 +5979,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "046a7d674daf459825b32f5062056d6882db0d2f5a479fbd76ccfc870ac18709" dependencies = [ "bytemuck", - "font-types 0.12.5", + "font-types 0.12.4", "once_cell", ] @@ -5998,7 +6011,7 @@ version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5018d583d6d2f5499352aea8d177e9067d1eb03ab17c78169d5ba7a30001b15" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "libredox", ] @@ -6008,16 +6021,16 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", ] [[package]] name = "redox_syscall" -version = "0.9.4" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "737970939a87c6fa31e7acad13307bccbb017a073b695b6089a2c484f929e20e" +checksum = "d678d17679829e73d371e96880897e98fee2ded7acc0a50bdf8af2affa4b2fe5" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", ] [[package]] @@ -6083,7 +6096,7 @@ version = "0.12.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" dependencies = [ - "base64 0.22.1", + "base64", "bytes", "encoding_rs", "futures-core", @@ -6190,8 +6203,8 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db09040cc89e461f1a265139777a2bde7f8d8c67c4936f700c63ce3e2904d468" dependencies = [ - "base64 0.22.1", - "bitflags 2.13.2", + "base64", + "bitflags 2.13.1", "serde", "serde_derive", "unicode-ident", @@ -6203,7 +6216,7 @@ version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "once_cell", "serde", "serde_derive", @@ -6279,7 +6292,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "errno", "libc", "linux-raw-sys 0.4.15", @@ -6292,7 +6305,7 @@ version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "errno", "libc", "linux-raw-sys 0.12.1", @@ -6312,9 +6325,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.45" +version = "0.23.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d41d731c7d2f962d1ccc364cec258de3c0e93b38c2fb3ba97ac74513048d634" +checksum = "6725596c3f2c3a0aef021139e145d4eafe314a6623e4680ca83852b2c67ab2ba" dependencies = [ "once_cell", "rustls-pki-types", @@ -6355,7 +6368,7 @@ version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd3c7c96f8a08ee34eff8857b11b49b07d71d1c3f4e88f8a88d4c9e9f90b1702" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "bytemuck", "core_maths", "log", @@ -6450,7 +6463,7 @@ version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -6506,7 +6519,7 @@ checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.4", ] [[package]] @@ -6531,7 +6544,7 @@ checksum = "8d3b1629de253c70a0508c3899572da79ca359fdab27c7920ff00406df418906" dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.4", ] [[package]] @@ -6703,9 +6716,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.16.1" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba467056f1b547ed52077911161fc86985becbc60e8e1857c8a144dab0def891" +checksum = "b9be42f50aa861c555654aa3a37f52f4b1074bacf4e48fe0ef7fa584e80f1f0f" [[package]] name = "smithay-client-toolkit" @@ -6713,7 +6726,7 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "bytemuck", "calloop", "calloop-wayland-source", @@ -6807,7 +6820,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.13.2", + "bitflags 2.13.1", ] [[package]] @@ -6883,9 +6896,9 @@ dependencies = [ [[package]] name = "syn" -version = "3.0.5" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12df2e0110f65b775f769bb17ef989067a1d931b2eb822bd4346631eeada89f9" +checksum = "e6275cddf4610d1775e6d1fe9469b2e77d0f39fd98fb7450901b821e0c53649f" dependencies = [ "proc-macro2", "quote", @@ -6937,7 +6950,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -7040,7 +7053,7 @@ checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.4", ] [[package]] @@ -7150,9 +7163,18 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.13.3" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3ca314f692efd6c868f8408f53fe444634a845f96c028b97d35f6a1f79f0ee" +checksum = "bb4ebadaa0af04fab11ae01eb5f9fdb5f9c5b875506e210e71c07873528baa7f" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" @@ -7179,7 +7201,7 @@ checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e" dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.4", ] [[package]] @@ -7247,9 +7269,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.25.15+spec-1.1.0" +version = "0.25.13+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1340ea94a5856333492c9064b02c778b191dd2c853778d9609debdcdfea3a614" +checksum = "6975367e4d2ef766d86af01ffad14b622fecc8d4357a998fbc4deb6e9bacaf9b" dependencies = [ "indexmap", "toml_datetime", @@ -7287,7 +7309,7 @@ version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "bytes", "futures-util", "http", @@ -7375,9 +7397,9 @@ dependencies = [ [[package]] name = "trash" -version = "5.2.9" +version = "5.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be89b3fe156965d29ac4f8522f3a640c655affdd9f21cb4f36857f0c92c00317" +checksum = "7602e0c7d66ec2d92a8c917219fbc7894039efa2063b9064260110828a356f46" dependencies = [ "chrono", "libc", @@ -7388,7 +7410,7 @@ dependencies = [ "percent-encoding", "scopeguard", "urlencoding", - "windows 0.62.2", + "windows 0.56.0", ] [[package]] @@ -7569,7 +7591,7 @@ version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80be9b06fbae3b8b303400ab20778c80bbaf338f563afe567cf3c9eea17b47ef" dependencies = [ - "base64 0.22.1", + "base64", "data-url", "flate2", "fontdb", @@ -7604,9 +7626,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] name = "uuid" -version = "1.26.1" +version = "1.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ef6dac1e96601b4fb3acccccff2139741fcb757cb9a36089bf5be91cfb285ce" +checksum = "b5772d71c9be8a8a6ac2117d949c5b224c1b72241bb611d9a3012edcf8af7812" dependencies = [ "js-sys", "serde_core", @@ -7659,7 +7681,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5924018406ce0063cd67f8e008104968b74b563ee1b85dde3ed1f7cb87d3dbd" dependencies = [ "arrayvec", - "bitflags 2.13.2", + "bitflags 2.13.1", "cursor-icon", "log", "memchr", @@ -7702,9 +7724,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.128" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aecb87a33d3b0c5e3b7aa46336eaf486cffafbd281b195e4c8b80d50df2351bf" +checksum = "1b70935747edd64d89de3efa29d73789b806c15798f8e7dca4d8ac356b50ce70" dependencies = [ "cfg-if", "once_cell", @@ -7715,9 +7737,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.78" +version = "0.4.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ef4c5d3d2cdf5c54f4231181768f5510842e350db025faf1f7163b1030ed928" +checksum = "6b7777d5cc23d0e91404e53ce2d5e8ec7acae3026b16233dba62cd3246457950" dependencies = [ "js-sys", "wasm-bindgen", @@ -7725,9 +7747,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.128" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a690d511e3c1a8b3a55e33511e3c2c00c78415cd23650f32b808627f5696b9ed" +checksum = "77775f8f3f7217702089053b94958f8f54061a3f663417df76e19cbdcca29bc1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7735,22 +7757,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.128" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "411e4887f0071ef2d2164a9d5fdf2d20efbef78fccd3a78b0c10a1dc5295e48a" +checksum = "e11d33f857dc2fb11b8bc75aee111aa9cbeb12cd9f25efd3d4c2a3dd4e235284" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 3.0.5", + "syn 2.0.119", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.128" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81941cd78d0c92026c33e5e01312845a4cb1e9af3407f9134b100dd03144103e" +checksum = "7ef64dbcc55df09c7e5a46182d181c2cfa3e925f3da937ea764728b4bbb9dcbf" dependencies = [ "unicode-ident", ] @@ -7802,7 +7824,7 @@ version = "0.31.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3c36a0f861ad76d0901f2800b46321410d9f73f2ea88aac0650d86c32688073" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "rustix 1.1.4", "wayland-backend", "wayland-scanner", @@ -7814,7 +7836,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "cursor-icon", "wayland-backend", ] @@ -7836,7 +7858,7 @@ version = "0.32.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23d0c813de3daa2ed6520af85a3bd49b0e722a3078506899aa9686fea58dc4b6" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "wayland-backend", "wayland-client", "wayland-scanner", @@ -7849,7 +7871,7 @@ version = "20250721.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -7862,7 +7884,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e9567599ef23e09b8dad6e429e5738d4509dfc46b3b21f32841a304d16b29c8" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -7875,7 +7897,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b6d8cf1eb2c1c31ed1f5643c88a6e53538129d4af80030c8cabd1f9fa884d91" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -7888,7 +7910,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -7913,7 +7935,7 @@ version = "0.31.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dde9c29be0f723a573977de51ee455bf3dfa03652730a74f9dd3b337e374d75" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "downcast-rs", "rustix 1.1.4", "wayland-backend", @@ -7934,9 +7956,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.105" +version = "0.3.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fbddc4a036f00ec4f18c83445bd3115cb306a91da554919a099d9222fe4a7f8" +checksum = "c435338968042f4f59a557f690a253676d47ce13ceb55d70100e7facf6620a30" dependencies = [ "js-sys", "wasm-bindgen", @@ -7965,7 +7987,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9cb534d5ffd109c7d1135f34cdae29e60eab94855a625dcfe1705f8bc7ad79f" dependencies = [ "arrayvec", - "bitflags 2.13.2", + "bitflags 2.13.1", "bytemuck", "cfg-if", "cfg_aliases", @@ -7997,7 +8019,7 @@ dependencies = [ "arrayvec", "bit-set", "bit-vec", - "bitflags 2.13.2", + "bitflags 2.13.1", "bytemuck", "cfg_aliases", "document-features", @@ -8057,7 +8079,7 @@ dependencies = [ "arrayvec", "ash", "bit-set", - "bitflags 2.13.2", + "bitflags 2.13.1", "block", "bytemuck", "cfg-if", @@ -8101,7 +8123,7 @@ version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e18308757e594ed2cd27dddbb16a139c42a683819d32a2e0b1b0167552f5840c" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "bytemuck", "js-sys", "log", @@ -8158,6 +8180,16 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "windows" +version = "0.56.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1de69df01bdf1ead2f4ac895dc77c9351aefff65b2f3db429a343f9cbf05e132" +dependencies = [ + "windows-core 0.56.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows" version = "0.61.3" @@ -8201,14 +8233,26 @@ dependencies = [ "windows-core 0.62.2", ] +[[package]] +name = "windows-core" +version = "0.56.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4698e52ed2d08f8658ab0c39512a7c00ee5fe2688c65f8c0a4f06750d729f2a6" +dependencies = [ + "windows-implement 0.56.0", + "windows-interface 0.56.0", + "windows-result 0.1.2", + "windows-targets 0.52.6", +] + [[package]] name = "windows-core" version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ - "windows-implement", - "windows-interface", + "windows-implement 0.60.2", + "windows-interface 0.59.3", "windows-link 0.1.3", "windows-result 0.3.4", "windows-strings 0.4.2", @@ -8220,8 +8264,8 @@ version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ - "windows-implement", - "windows-interface", + "windows-implement 0.60.2", + "windows-interface 0.59.3", "windows-link 0.2.1", "windows-result 0.4.1", "windows-strings 0.5.1", @@ -8249,6 +8293,17 @@ dependencies = [ "windows-threading 0.2.1", ] +[[package]] +name = "windows-implement" +version = "0.56.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + [[package]] name = "windows-implement" version = "0.60.2" @@ -8260,6 +8315,17 @@ dependencies = [ "syn 2.0.119", ] +[[package]] +name = "windows-interface" +version = "0.56.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + [[package]] name = "windows-interface" version = "0.59.3" @@ -8314,6 +8380,15 @@ dependencies = [ "windows-strings 0.5.1", ] +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-result" version = "0.3.4" @@ -8603,7 +8678,7 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" name = "winit" version = "0.31.0-beta.2" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "cfg_aliases", "cursor-icon", "dpi", @@ -8628,7 +8703,7 @@ name = "winit-android" version = "0.31.0-beta.2" dependencies = [ "android-activity", - "bitflags 2.13.2", + "bitflags 2.13.1", "dpi", "ndk", "raw-window-handle", @@ -8641,7 +8716,7 @@ dependencies = [ name = "winit-appkit" version = "0.31.0-beta.2" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "block2 0.6.2", "dispatch2", "dpi", @@ -8675,7 +8750,7 @@ dependencies = [ name = "winit-core" version = "0.31.0-beta.2" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "cursor-icon", "dpi", "keyboard-types", @@ -8688,7 +8763,7 @@ dependencies = [ name = "winit-orbital" version = "0.31.0-beta.2" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "dpi", "libredox", "orbclient", @@ -8703,7 +8778,7 @@ dependencies = [ name = "winit-uikit" version = "0.31.0-beta.2" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "block2 0.6.2", "dispatch2", "dpi", @@ -8723,7 +8798,7 @@ name = "winit-wayland" version = "0.31.0-beta.2" dependencies = [ "ahash", - "bitflags 2.13.2", + "bitflags 2.13.1", "calloop", "cursor-icon", "dpi", @@ -8748,7 +8823,7 @@ name = "winit-web" version = "0.31.0-beta.2" dependencies = [ "atomic-waker", - "bitflags 2.13.2", + "bitflags 2.13.1", "concurrent-queue", "cursor-icon", "dpi", @@ -8768,7 +8843,7 @@ dependencies = [ name = "winit-win32" version = "0.31.0-beta.2" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "cursor-icon", "dpi", "raw-window-handle", @@ -8883,7 +8958,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.13.2", + "bitflags 2.13.1", "dlib", "log", "once_cell", @@ -9036,7 +9111,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.4", "zbus_names", "zvariant", "zvariant_utils", @@ -9082,18 +9157,18 @@ checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524" [[package]] name = "zerocopy" -version = "0.8.57" +version = "0.8.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d35102a9f36d089ccae9e4c6802bc118be4487b80aaffc0ab4e0cf5ce92d2873" +checksum = "556764e583adb45a9f8d413c2a147fa7e8d821e48e12b14fd560b607998b75eb" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.57" +version = "0.8.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c01f5ab44258da43cf276c74a2763db2ff3969c9c652c3f2de07041d0b2bc" +checksum = "f2ab42fc20575779bd240faa45f94a74256f755c0fa9e89f0ede20d91d0cdfc1" dependencies = [ "proc-macro2", "quote", @@ -9159,7 +9234,7 @@ checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da" dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.4", ] [[package]] @@ -9191,9 +9266,9 @@ dependencies = [ [[package]] name = "zlib-rs" -version = "0.6.8" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b268e58e7c693d7c271f93ffc4ba3b380412554231c85bf61ca7af91042a4112" +checksum = "34b31d188d9d685a4f9c7b46d6e36631b07058d2cfe190267adce54dc230bf12" [[package]] name = "zmij" @@ -9224,18 +9299,18 @@ dependencies = [ [[package]] name = "zstd-safe" -version = "7.3.0" +version = "7.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d80649ab6db9d9f6f9c80a40becd948eda4714a0a5ac8c4d157a32231c7882" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" dependencies = [ "zstd-sys", ] [[package]] name = "zstd-sys" -version = "2.1.0+zstd.1.5.7" +version = "2.0.16+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ef0a8027ec3ee71300ab3bcbcd0393f434aa72b91ca6d635a39941deae8eea0" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" dependencies = [ "cc", "pkg-config", @@ -9305,7 +9380,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.4", "zvariant_utils", ] @@ -9318,7 +9393,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 3.0.5", + "syn 3.0.4", "winnow", ] diff --git a/Cargo.toml b/Cargo.toml index b796364..37c49ca 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmic-term" -version = "1.9.0" +version = "1.8.0" authors = ["Jeremy Soller "] edition = "2024" license = "GPL-3.0-only" diff --git a/debian/changelog b/debian/changelog index 0da2a95..dae75ae 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,3 @@ -cosmic-term (1.9.0) noble; urgency=medium - - * Epoch 1.9.0 version update - - -- Michael Murphy Mon, 14 Sep 2026 19:50:47 +0200 - cosmic-term (1.8.0) noble; urgency=medium * Epoch 1.8.0 version update diff --git a/debian/source/options b/debian/source/options index 2f8c4a1..5d4ff73 100644 --- a/debian/source/options +++ b/debian/source/options @@ -1,6 +1,4 @@ tar-ignore=.github -tar-ignore=target/.rustc_info.json -tar-ignore=target/CACHEDIR.TAG -tar-ignore=target/debug -tar-ignore=target/release +tar-ignore=.vscode tar-ignore=vendor +tar-ignore=target \ No newline at end of file diff --git a/i18n/en/cosmic_term.ftl b/i18n/en/cosmic_term.ftl index 2ff6c3c..8d282d4 100644 --- a/i18n/en/cosmic_term.ftl +++ b/i18n/en/cosmic_term.ftl @@ -63,7 +63,6 @@ show-pane-borders = Show pane borders ### Advanced advanced = Advanced show-headerbar = Show header -window-header = Window header show-header-description = Reveal the header from the right-click menu tab-new-inherit-working-directory = New tabs and windows use current directory tab-new-inherit-working-directory-description = Open new tabs and windows in the active tab's working directory @@ -153,7 +152,7 @@ next-tab = Next tab previous-tab = Previous tab split-horizontal = Split horizontal split-vertical = Split vertical -pane-toggle-maximize = Maximize or restore pane +pane-toggle-maximize = Toggle maximized menu-color-schemes = Color schemes... menu-settings = Settings... menu-about = About COSMIC Terminal... diff --git a/i18n/fil/cosmic_term.ftl b/i18n/fil/cosmic_term.ftl deleted file mode 100644 index e69de29..0000000 diff --git a/i18n/id/cosmic_term.ftl b/i18n/id/cosmic_term.ftl index 6b139ad..a17d82d 100644 --- a/i18n/id/cosmic_term.ftl +++ b/i18n/id/cosmic_term.ftl @@ -4,7 +4,7 @@ repository = Repositori support = Dukungan color-schemes = Skema warna cosmic-terminal = Terminal COSMIC -rename = Ganti Nama +rename = Ganti nama export = Ekspor delete = Hapus import = Impor diff --git a/i18n/kab/cosmic_term.ftl b/i18n/kab/cosmic_term.ftl index 368b6f2..1761fee 100644 --- a/i18n/kab/cosmic_term.ftl +++ b/i18n/kab/cosmic_term.ftl @@ -1,9 +1,9 @@ -cancel = Semmet +cancel = Sefsex name = Isem delete = kkes rename = Snifel isem -quit = Ffeɣ -support = Tallelt +quit = Tuffɣa +support = Tallalt repository = Asarsay settings = Iɣewwaṛen appearance = Timeẓri @@ -14,7 +14,7 @@ paste = Senteḍ select-all = Fren akk view = Wali menu-settings = Iɣewwaṛen… -match-desktop = Semṣada akked tnarit +match-desktop = Amṣada d tnarit file = Afaylu new-window = Asfaylu amaynut edit = Ẓreg diff --git a/i18n/kmr/cosmic_term.ftl b/i18n/kmr/cosmic_term.ftl index 4348691..8cfa2dc 100644 --- a/i18n/kmr/cosmic_term.ftl +++ b/i18n/kmr/cosmic_term.ftl @@ -27,7 +27,7 @@ light = Ronî advanced = Pêşketî support = Piştgirî default-font = Cûrenivîs -paste = Pê ve bike +paste = Pêve bike menu-settings = Sazkarî... command-line = Rêza fermanê view = Dîtin @@ -100,7 +100,7 @@ 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 +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î? diff --git a/i18n/oc/cosmic_term.ftl b/i18n/oc/cosmic_term.ftl index 50030da..0f74e05 100644 --- a/i18n/oc/cosmic_term.ftl +++ b/i18n/oc/cosmic_term.ftl @@ -1,14 +1,7 @@ -settings = Configuracion +settings = Paramètres appearance = Aparéncia theme = Tèma match-desktop = Assortir al burèu -dark = Escur +dark = Fosc light = Clar file = Fichièr -name = Nom -repository = Depaus -cancel = Anullar -menu-settings = Configuracion... -quit = Quitar -delete = Suprimir -replace = Remplaçar diff --git a/i18n/pl/cosmic_term.ftl b/i18n/pl/cosmic_term.ftl index 25c3027..6af669e 100644 --- a/i18n/pl/cosmic_term.ftl +++ b/i18n/pl/cosmic_term.ftl @@ -1,5 +1,5 @@ cosmic-terminal = Terminal COSMIC -comment = Emulator terminala dla środowiska COSMIC +comment = Emulator terminala dla pulpitu COSMIC keywords = Cli;WierszPoleceń;Powłoka;Terminal; new-terminal = Nowy terminal @@ -73,7 +73,7 @@ advanced = Zaawansowane show-headerbar = Pokaż pasek nagłówka show-header-description = Ukazuje pasek nagłówka z menu wybieranego prawym przyciskiem myszki # Find -find-placeholder = Wyszukaj… +find-placeholder = Szukaj… find-previous = Znajdź poprzedni find-next = Znajdź następny @@ -96,7 +96,7 @@ edit = Edytuj copy = Kopiuj paste = Wklej select-all = Zaznacz wszystko -find = Wyszukaj +find = Szukaj clear-scrollback = Wyczyść przewijanie ## View diff --git a/i18n/th/cosmic_term.ftl b/i18n/th/cosmic_term.ftl index f95e682..32ec77d 100644 --- a/i18n/th/cosmic_term.ftl +++ b/i18n/th/cosmic_term.ftl @@ -39,8 +39,8 @@ settings = การตั้งค่า appearance = ลักษณะ theme = ธีม match-desktop = ใช้ตามธีมหน้าจอหลัก -dark = มืด -light = สว่าง +dark = ธีมมืด +light = ธีมสว่าง syntax-dark = โทนสีมืด syntax-light = โทนสีสว่าง default-zoom-step = ระยะซูม @@ -109,8 +109,3 @@ pane-toggle-maximize = ขยายให้ใหญ่สุด menu-color-schemes = โทนสี... menu-settings = การตั้งค่า... menu-about = เกี่ยวกับ เทอร์มินัล COSMIC... -cancel = ยกเลิก -reset-to-default = รีเซ็ตเป็นค่าเริ่มต้น -type-to-search = พิมพ์เพื่อค้นหา -add-another-keybinding = เพิ่มคีย์ลัดเพิ่มเติม -replace = แทนที่ diff --git a/i18n/zh-TW/cosmic_term.ftl b/i18n/zh-TW/cosmic_term.ftl index 7cebc95..3fa61a6 100644 --- a/i18n/zh-TW/cosmic_term.ftl +++ b/i18n/zh-TW/cosmic_term.ftl @@ -10,7 +10,7 @@ new-terminal = 新建終端機 ## Color schemes color-schemes = 配色方案 -rename = 重新命名 +rename = 重命名 export = 匯出 delete = 刪除 import = 匯入 diff --git a/src/main.rs b/src/main.rs index 1a72235..0c69e38 100644 --- a/src/main.rs +++ b/src/main.rs @@ -566,7 +566,7 @@ pub enum Message { ReorderTab(Pane, ReorderEvent), SaveOutput(Option), SaveOutputResult(pane_grid::Pane, segmented_button::Entity, DialogResult), - Surface(surface::Action), + Surface(surface::Action), SelectAll(Option), ShowAdvancedFontSettings(bool), ShowHeaderBar(bool), @@ -604,6 +604,7 @@ pub enum Message { ZoomIn, ZoomOut, ZoomReset, + ContextMenuPopupClosed(window::Id), } #[derive(Clone, Copy, Debug, Eq, PartialEq)] @@ -681,6 +682,14 @@ pub struct App { shortcut_search_regex: Option, shortcut_search_value: String, modifiers: Modifiers, + context_menu_popup: Option<( + window::Id, + pane_grid::Pane, + segmented_button::Entity, + Option, + widget::Id, + cosmic::iced::Point, + )>, #[cfg(feature = "password_manager")] password_mgr: password_manager::PasswordManager, } @@ -2204,6 +2213,7 @@ impl Application for App { shortcut_search_regex: None, shortcut_search_value: String::new(), modifiers: Modifiers::empty(), + context_menu_popup: None, #[cfg(feature = "password_manager")] password_mgr: Default::default(), }; @@ -3423,7 +3433,16 @@ impl Application for App { return self.update_title(None); } Message::TabContextAction(entity, action) => { + // Close context menu popup let mut tasks = Vec::new(); + if let Some((_popup_id, _, _, _, _, _)) = self.context_menu_popup.take() { + #[cfg(feature = "wayland")] + if is_wayland() { + tasks.push(cosmic::task::message(Message::Surface( + cosmic::surface::action::destroy_popup(_popup_id), + ))); + } + } // Close terminal context menu state if let Some(tab_model) = self.pane_model.active() && let Some(terminal) = tab_model.data::>(entity) @@ -3432,8 +3451,11 @@ impl Application for App { //Some actions need the menu_state, //so only clear the position for them. match action { - // these read the link from the menu state and clear it themselves - Action::LaunchUrlByMenu | Action::CopyUrlByMenu => {} + Action::LaunchUrlByMenu | Action::CopyUrlByMenu => { + if let Some(context_menu) = terminal.context_menu.as_mut() { + context_menu.position = None; + } + } _ => { terminal.context_menu = None; } @@ -3443,29 +3465,94 @@ impl Application for App { return cosmic::Task::batch(tasks); } Message::TabContextMenu(pane, menu_state) => { + #[allow(unused_mut)] + let mut tasks = Vec::new(); + + // Close existing context menu popup if any + if let Some((_popup_id, _, _, _, _, _)) = self.context_menu_popup.take() { + #[cfg(feature = "wayland")] + if is_wayland() { + tasks.push(cosmic::task::message(Message::Surface( + cosmic::surface::action::destroy_popup(_popup_id), + ))); + } + } + // Clear all terminal context_menu state for (_, 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(); - if terminal.context_menu.take().is_some() { - terminal.active_regex_match = None; - terminal.needs_update = true; - } + terminal.context_menu = None; } } } - // A right press records what is under the cursor - if let Some(menu_state) = menu_state - && let Some(tab_model) = self.pane_model.panes.get(pane) - { - let entity = tab_model.active(); - if let Some(terminal) = tab_model.data::>(entity) { - terminal.lock().unwrap().context_menu = Some(menu_state); + if let Some(menu_state) = menu_state { + if let Some(_position) = menu_state.position { + let local_position = menu_state.local_position.unwrap_or(_position); + if let Some(tab_model) = self.pane_model.panes.get(pane) { + let entity = tab_model.active(); + let link = menu_state.link.clone(); + let popup_id = window::Id::unique(); + + if let Some(terminal) = tab_model.data::>(entity) { + let mut terminal = terminal.lock().unwrap(); + terminal.context_menu = Some(menu_state); + } + + self.context_menu_popup = Some(( + popup_id, + pane, + entity, + link, + widget::Id::unique(), + local_position, + )); + + #[cfg(feature = "wayland")] + if is_wayland() { + let main_window = self.core.main_window_id().unwrap(); + let pos_x = _position.x as i32; + let pos_y = _position.y as i32; + + tasks.push(cosmic::task::message(Message::Surface( + cosmic::surface::action::app_popup( + |_| Default::default(), + move |_app: &mut Self| { + use cosmic::cctk::wayland_protocols::xdg::shell::client::xdg_positioner::{Anchor, Gravity}; + use cosmic::iced::runtime::platform_specific::wayland::popup::{SctkPopupSettings, SctkPositioner}; + + SctkPopupSettings { + parent: main_window, + id: popup_id, + positioner: SctkPositioner { + size: None, + anchor_rect: cosmic::iced::Rectangle { + x: pos_x, + y: pos_y, + width: 1, + height: 1, + }, + anchor: Anchor::None, + gravity: Gravity::BottomRight, + reactive: true, + ..Default::default() + }, + parent_size: None, + grab: true, + close_with_children: false, + input_zone: None, + } + }, None), + ))); + } + } } self.pane_model.set_focus(pane); } + + return cosmic::Task::batch(tasks); } Message::TabNew => { // The profile from `--profile` only applies to the first tab @@ -3857,8 +3944,26 @@ impl Application for App { self.reset_active_pane_zoom(); return self.update_config(); } + Message::ContextMenuPopupClosed(id) => { + if let Some((popup_id, pane, entity, _, _, _)) = &self.context_menu_popup + && id == *popup_id + { + // Clear link underline on the terminal + if let Some(tab_model) = self.pane_model.panes.get(*pane) + && let Some(terminal) = tab_model.data::>(*entity) + { + let mut terminal = terminal.lock().unwrap(); + terminal.context_menu = None; + terminal.active_regex_match = None; + terminal.needs_update = true; + } + self.context_menu_popup = None; + } + } Message::Surface(a) => { - return cosmic::task::message(cosmic::Action::Surface(a)); + return cosmic::task::message(cosmic::Action::Cosmic( + cosmic::app::Action::Surface(a), + )); } Message::ReorderTab( pane, @@ -4007,7 +4112,32 @@ impl Application for App { ] } + fn on_close_requested(&self, id: window::Id) -> Option { + if let Some((popup_id, _, _, _, _, _)) = &self.context_menu_popup + && id == *popup_id + { + return Some(Message::ContextMenuPopupClosed(id)); + } + None + } + fn view_window(&self, window_id: window::Id) -> Element<'_, Message> { + if let Some((popup_id, pane, entity, ref link, ref autosize_id, _)) = + self.context_menu_popup + && window_id == popup_id + { + return widget::autosize::autosize( + menu::context_menu( + &self.config, + &self.key_binds, + entity, + link.clone(), + self.terminal_monitors(pane, entity), + ), + autosize_id.clone(), + ) + .into(); + } match &self.dialog_opt { Some(dialog) => dialog.view(window_id), None => widget::text("Unknown window ID").into(), @@ -4096,36 +4226,51 @@ impl Application for App { terminal_box = terminal_box.on_mouse_enter(move || Message::MouseEnter(pane)); } - // The terminal records what was under the right press; the widget opens the - // menu on release, so build it from that state - let context_link = terminal - .lock() - .unwrap() - .context_menu - .as_ref() - .map(|menu_state| menu_state.link.clone()); - if context_link.is_some() { - terminal_box = terminal_box.context_menu_open(true); + // If a context menu popup is active for this pane, inform the + // terminal_box so it will emit on_context_menu(None) on click + // to dismiss the popup. + if self.context_menu_popup.is_some() { + terminal_box = terminal_box.context_menu(cosmic::iced::Point::ORIGIN); } - let mut context_menu = widget::context_menu( - terminal_box, - context_link.map(|link| { - menu::context_menu( - &self.config, - &self.key_binds, - entity, - link, - self.terminal_monitors(pane, entity), - ) - }), - ) - .item_width(widget::menu::ItemWidth::Uniform(360)) - .on_close(Message::TabContextMenu(pane, None)) - .on_surface_action(Message::Surface); - if let Some(window_id) = self.core.main_window_id() { - context_menu = context_menu.window_id(window_id); - } - tab_column = tab_column.push(context_menu); + + let use_wayland_popup = { + #[cfg(feature = "wayland")] + { + is_wayland() + } + #[cfg(not(feature = "wayland"))] + { + false + } + }; + + let tab_element: Element<'_, Message> = if !use_wayland_popup { + // Fallback: render context menu as an inline popover + if let Some((_, popup_pane, popup_entity, ref link, _, point)) = + self.context_menu_popup + { + if pane == popup_pane { + let mut popover = widget::popover(terminal_box.context_menu(point)); + popover = popover + .popup(menu::context_menu( + &self.config, + &self.key_binds, + popup_entity, + link.clone(), + self.terminal_monitors(popup_pane, popup_entity), + )) + .position(widget::popover::Position::Point(point)); + popover.into() + } else { + terminal_box.into() + } + } else { + terminal_box.into() + } + } else { + terminal_box.into() + }; + tab_column = tab_column.push(tab_element); } //Only draw find in the currently focused pane @@ -4306,6 +4451,14 @@ impl Application for App { } } +#[cfg(feature = "wayland")] +fn is_wayland() -> bool { + matches!( + cosmic::app::cosmic::windowing_system(), + Some(cosmic::app::cosmic::WindowingSystem::Wayland) + ) +} + /// Divider color painted behind the pane grid to form pane borders. /// /// When blur is active the transparent container must be used, otherwise the diff --git a/src/menu.rs b/src/menu.rs index 4ffb397..e75046b 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -1,15 +1,17 @@ // SPDX-License-Identifier: GPL-3.0-only -use cosmic::widget::menu::action::MenuAction; +use cosmic::iced::Point; use cosmic::widget::menu::key_bind::KeyBind; use cosmic::widget::menu::{Item as MenuItem, menu_button}; +use cosmic::widget::space; use cosmic::{ Element, app::Core, iced::core::Border, - iced::{Background, Length}, + iced::{Background, Length, advanced::widget::text::Style as TextStyle}, + theme, widget::{ - self, + self, divider, menu::{ItemHeight, ItemWidth}, responsive_menu_bar, segmented_button, }, @@ -21,92 +23,147 @@ use crate::{Action, ColorSchemeId, ColorSchemeKind, Config, Message, fl, termina static MENU_ID: LazyLock = LazyLock::new(|| cosmic::widget::Id::new("responsive-menu")); -/// What the terminal found under the right-click #[derive(Debug, Clone)] pub struct MenuState { + pub position: Option, + pub local_position: Option, pub link: Option, } -/// A context menu action dispatched to the tab the menu was opened on. -#[derive(Clone, Copy, Debug, Eq, PartialEq)] -pub struct TabAction(pub segmented_button::Entity, pub Action); - -impl MenuAction for TabAction { - type Message = Message; - - fn message(&self) -> Message { - Message::TabContextAction(self.0, self.1) - } -} - -pub fn context_menu( +pub fn context_menu<'a>( config: &Config, key_binds: &HashMap, entity: segmented_button::Entity, link: Option, monitors: (bool, bool, bool), -) -> Vec> { - let item = - |label: String, action: Action| MenuItem::Button(label, None, TabAction(entity, action)); - let check = |label: String, value: bool, action: Action| { - MenuItem::CheckBox(label, None, value, TabAction(entity, action)) +) -> Element<'a, Message> { + let find_key = |action: &Action| -> String { + for (key_bind, key_action) in key_binds { + if action == key_action { + return key_bind.to_string(); + } + } + String::new() + }; + fn key_style(theme: &cosmic::Theme) -> TextStyle { + let mut color = theme.cosmic().background(theme.transparent).component.on; + color.alpha *= 0.75; + TextStyle { + color: Some(color.into()), + ..Default::default() + } + } + + let menu_item = |label, action| { + let key = find_key(&action); + menu_button(vec![ + widget::text(label).into(), + space::horizontal().into(), + widget::text(key) + .class(theme::Text::Custom(key_style)) + .into(), + ]) + .on_press(Message::TabContextAction(entity, action)) }; - let mut items = vec![ - item(fl!("new-tab"), Action::TabNew), - item(fl!("rename-tab"), Action::TabRename), - MenuItem::Divider, - item(fl!("copy"), Action::Copy), - item(fl!("paste"), Action::Paste), - item(fl!("select-all"), Action::SelectAll), - MenuItem::Divider, - item(fl!("clear-scrollback"), Action::ClearScrollback), - item(fl!("save-output"), Action::SaveOutput), - MenuItem::Divider, - check( + let menu_checkbox = |label, value, action| { + menu_button(vec![ + widget::text(label).into(), + widget::space::horizontal().into(), + widget::toggler(value) + .on_toggle(move |_| Message::TabContextAction(entity, action)) + .size(16.0) + .into(), + ]) + .on_press(Message::TabContextAction(entity, action)) + }; + + let mut rows = vec![ + Element::from(menu_item(fl!("copy"), Action::Copy)), + Element::from(menu_item(fl!("paste"), Action::Paste)), + Element::from(menu_item(fl!("select-all"), Action::SelectAll)), + Element::from(divider::horizontal::light()), + Element::from(menu_item(fl!("clear-scrollback"), Action::ClearScrollback)), + Element::from(menu_item(fl!("save-output"), Action::SaveOutput)), + Element::from(divider::horizontal::light()), + Element::from(menu_checkbox( fl!("monitor-activity"), monitors.0, Action::Monitor(MonitorKind::Activity), - ), - check( + )), + Element::from(menu_checkbox( fl!("monitor-silence"), monitors.1, Action::Monitor(MonitorKind::Silence), - ), - check( + )), + Element::from(menu_checkbox( fl!("monitor-process-finished"), monitors.2, Action::Monitor(MonitorKind::ProcessFinished), - ), - MenuItem::Divider, - item(fl!("split-horizontal"), Action::PaneSplitHorizontal), - item(fl!("split-vertical"), Action::PaneSplitVertical), - item(fl!("pane-toggle-maximize"), Action::PaneToggleMaximized), - MenuItem::Divider, - MenuItem::CheckBox( - fl!("window-header"), - None, - config.show_headerbar, - TabAction(entity, Action::ShowHeaderBar(!config.show_headerbar)), - ), - MenuItem::Divider, + )), + Element::from(divider::horizontal::light()), + Element::from(menu_item( + fl!("split-horizontal"), + Action::PaneSplitHorizontal, + )), + Element::from(menu_item(fl!("split-vertical"), Action::PaneSplitVertical)), + Element::from(menu_item( + fl!("pane-toggle-maximize"), + Action::PaneToggleMaximized, + )), + Element::from(divider::horizontal::light()), + Element::from(menu_item(fl!("new-tab"), Action::TabNew)), + Element::from(menu_item(fl!("rename-tab"), Action::TabRename)), + Element::from(menu_item(fl!("menu-settings"), Action::Settings)), + Element::from(menu_item(fl!("menu-about"), Action::About)), ]; #[cfg(feature = "password_manager")] - items.push(item(fl!("menu-password-manager"), Action::PasswordManager)); - items.push(item(fl!("menu-settings"), Action::Settings)); - items.push(item(fl!("menu-about"), Action::About)); - // If we have a link, prepend the link items - if link.is_some() { - items.insert(0, item(fl!("open-link"), Action::LaunchUrlByMenu)); - items.insert(1, item(fl!("copy-link"), Action::CopyUrlByMenu)); - items.insert(2, MenuItem::Divider); + { + rows.push(Element::from(menu_item( + fl!("menu-password-manager"), + Action::PasswordManager, + ))); } + rows.push(Element::from(menu_checkbox( + fl!("show-headerbar"), + config.show_headerbar, + Action::ShowHeaderBar(!config.show_headerbar), + ))); - let key_binds: HashMap = key_binds - .iter() - .map(|(key_bind, action)| (key_bind.clone(), TabAction(entity, *action))) - .collect(); - widget::menu::items(&key_binds, items) + //If we have a link + //prepend the Open Link item + if link.is_some() { + rows.insert( + 0, + Element::from(menu_item(fl!("open-link"), Action::LaunchUrlByMenu)), + ); + rows.insert( + 1, + Element::from(menu_item(fl!("copy-link"), Action::CopyUrlByMenu)), + ); + rows.insert(2, Element::from(divider::horizontal::light())); + } + let content = widget::menu::menu_column::MenuColumn::with_children(rows); + widget::container(content) + .padding(1) + //TODO: move style to libcosmic + .style(|theme| { + let cosmic = theme.cosmic(); + let component = &cosmic.background(theme.transparent).component; + widget::container::Style { + icon_color: Some(component.on.into()), + text_color: Some(component.on.into()), + background: Some(Background::Color(component.base.into())), + border: Border { + radius: cosmic.radius_s().map(|x| x + 1.0).into(), + width: 1.0, + color: component.divider.into(), + }, + ..Default::default() + } + }) + .width(Length::Fixed(360.0)) + .into() } pub fn color_scheme_menu<'a>( diff --git a/src/terminal_box.rs b/src/terminal_box.rs index 1df9ae3..6f7f2d3 100644 --- a/src/terminal_box.rs +++ b/src/terminal_box.rs @@ -116,7 +116,7 @@ pub struct TerminalBox<'a, Message> { show_headerbar: bool, pane_border_radius: Option, click_timing: Duration, - context_menu_open: bool, + context_menu: Option, on_context_menu: Option) -> Message + 'a>>, on_mouse_enter: Option Message + 'a>>, opacity: Option, @@ -143,7 +143,7 @@ where show_headerbar: true, pane_border_radius: None, click_timing: Duration::from_millis(500), - context_menu_open: false, + context_menu: None, on_context_menu: None, on_mouse_enter: None, opacity: None, @@ -188,8 +188,8 @@ where self } - pub fn context_menu_open(mut self, open: bool) -> Self { - self.context_menu_open = open; + pub fn context_menu(mut self, position: Point) -> Self { + self.context_menu = Some(position); self } @@ -253,7 +253,7 @@ where if !state.is_focused { return InputMethod::Disabled; } - if self.context_menu_open { + if self.context_menu.is_some() { return InputMethod::Disabled; } @@ -1392,11 +1392,11 @@ where } // Update context menu state if let Some(on_context_menu) = &self.on_context_menu { - match self.context_menu_open { - true => { + match self.context_menu { + Some(_) => { shell.publish(on_context_menu(None)); } - false => { + None => { if *button == Button::Right { let x = p.x - self.padding.left; let y = p.y - self.padding.top; @@ -1414,7 +1414,15 @@ where None, ); let link = get_hyperlink(&terminal, location); - shell.publish(on_context_menu(Some(MenuState { link }))); + let abs = cosmic::iced::Point::new( + layout.bounds().x + p.x, + layout.bounds().y + p.y, + ); + shell.publish(on_context_menu(Some(MenuState { + position: Some(abs), + local_position: Some(p), + link, + }))); } } }