diff --git a/Cargo.lock b/Cargo.lock index 33e01b51..6deffdab 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -43,17 +43,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" -[[package]] -name = "ahash" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" -dependencies = [ - "getrandom", - "once_cell", - "version_check", -] - [[package]] name = "ahash" version = "0.8.7" @@ -122,6 +111,12 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + [[package]] name = "android_system_properties" version = "0.1.5" @@ -602,6 +597,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" +[[package]] +name = "cfg_aliases" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e53693616d3075149f4ead59bdeecd204ac6b8192d8969757601b74bddf00f" + [[package]] name = "cgmath" version = "0.18.0" @@ -612,6 +613,57 @@ dependencies = [ "num-traits", ] +[[package]] +name = "chrono" +version = "0.4.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "wasm-bindgen", + "windows-targets 0.52.0", +] + +[[package]] +name = "clipboard-win" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d517d4b86184dbb111d3556a10f1c8a04da7428d2987bf1081602bf11c3aa9ee" +dependencies = [ + "error-code", +] + +[[package]] +name = "clipboard_macos" +version = "0.1.0" +source = "git+https://github.com/pop-os/window_clipboard.git?tag=pop-mime-types#f65a6c303bbbd6c7bf88f9bc34421ec06d893bea" +dependencies = [ + "objc", + "objc-foundation", + "objc_id", +] + +[[package]] +name = "clipboard_wayland" +version = "0.2.2" +source = "git+https://github.com/pop-os/window_clipboard.git?tag=pop-mime-types#f65a6c303bbbd6c7bf88f9bc34421ec06d893bea" +dependencies = [ + "mime 0.1.0", + "smithay-clipboard", +] + +[[package]] +name = "clipboard_x11" +version = "0.4.2" +source = "git+https://github.com/pop-os/window_clipboard.git?tag=pop-mime-types#f65a6c303bbbd6c7bf88f9bc34421ec06d893bea" +dependencies = [ + "thiserror", + "x11rb", +] + [[package]] name = "cocoa" version = "0.25.0" @@ -659,10 +711,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] -name = "com-rs" -version = "0.2.1" +name = "com" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf43edc576402991846b093a7ca18a3477e0ef9c588cde84964b5d3e43016642" +checksum = "7e17887fd17353b65b1b2ef1c526c83e26cd72e74f598a8dc1bee13a48f3d9f6" +dependencies = [ + "com_macros", +] + +[[package]] +name = "com_macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d375883580a668c7481ea6631fc1a8863e33cc335bf56bfad8d7e6d4b04b13a5" +dependencies = [ + "com_macros_support", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "com_macros_support" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] [[package]] name = "combine" @@ -683,6 +760,26 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom", + "once_cell", + "tiny-keccak", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -790,23 +887,25 @@ dependencies = [ [[package]] name = "cosmic-config" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic/#efe4ce2f5b514e4d553ab82c0c873dca7585c028" +source = "git+https://github.com/pop-os/libcosmic/#d02a4fefff319a3bd20936f9be30c4913bf49bab" dependencies = [ "atomicwrites", "calloop", "cosmic-config-derive", - "dirs 5.0.1", + "dirs", "iced_futures", + "known-folders", "notify", "once_cell", "ron", "serde", + "xdg", ] [[package]] name = "cosmic-config-derive" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic/#efe4ce2f5b514e4d553ab82c0c873dca7585c028" +source = "git+https://github.com/pop-os/libcosmic/#d02a4fefff319a3bd20936f9be30c4913bf49bab" dependencies = [ "quote", "syn 1.0.109", @@ -826,8 +925,8 @@ dependencies = [ [[package]] name = "cosmic-text" -version = "0.10.0" -source = "git+https://github.com/pop-os/cosmic-text.git#db1530c4ec14bcbb290f9c971d8a6197c90e189a" +version = "0.11.2" +source = "git+https://github.com/pop-os/cosmic-text.git#b08676909f882f553ab574601b35b58276a52458" dependencies = [ "bitflags 2.4.2", "fontdb", @@ -849,15 +948,17 @@ dependencies = [ [[package]] name = "cosmic-theme" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic/#efe4ce2f5b514e4d553ab82c0c873dca7585c028" +source = "git+https://github.com/pop-os/libcosmic/#d02a4fefff319a3bd20936f9be30c4913bf49bab" dependencies = [ "almost", "cosmic-config", "csscolorparser", + "dirs", "lazy_static", "palette", "ron", "serde", + "thiserror", ] [[package]] @@ -962,12 +1063,11 @@ checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" [[package]] name = "d3d12" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16e44ab292b1dddfdaf7be62cfd8877df52f2f3fde5858d95bab606be259f20" +version = "0.19.0" +source = "git+https://github.com/gfx-rs/wgpu?rev=20fda69#20fda698341efbdc870b8027d6d49f5bf3f36109" dependencies = [ "bitflags 2.4.2", - "libloading 0.7.4", + "libloading 0.8.1", "winapi", ] @@ -1013,7 +1113,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.14.3", + "hashbrown", "lock_api", "once_cell", "parking_lot_core 0.9.9", @@ -1074,33 +1174,13 @@ dependencies = [ "subtle", ] -[[package]] -name = "dirs" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" -dependencies = [ - "dirs-sys 0.3.7", -] - [[package]] name = "dirs" version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" dependencies = [ - "dirs-sys 0.4.1", -] - -[[package]] -name = "dirs-sys" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" -dependencies = [ - "libc", - "redox_users", - "winapi", + "dirs-sys", ] [[package]] @@ -1138,14 +1218,17 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading 0.7.4", + "libloading 0.8.1", ] [[package]] name = "dlv-list" -version = "0.3.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0688c2a7f92e427f44895cd63841bff7b29f8d7a1648b9e7e07a4a365b2e1257" +checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f" +dependencies = [ + "const-random", +] [[package]] name = "downcast-rs" @@ -1153,19 +1236,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" -[[package]] -name = "drm" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb1b703ffbc7ebd216eba7900008049a56ace55580ecb2ee7fa801e8d8be87" -dependencies = [ - "bitflags 2.4.2", - "bytemuck", - "drm-ffi 0.6.0", - "drm-fourcc", - "nix 0.27.1", -] - [[package]] name = "drm" version = "0.11.1" @@ -1174,28 +1244,18 @@ checksum = "a0f8a69e60d75ae7dab4ef26a59ca99f2a89d4c142089b537775ae0c198bdcde" dependencies = [ "bitflags 2.4.2", "bytemuck", - "drm-ffi 0.7.1", + "drm-ffi", "drm-fourcc", "rustix 0.38.30", ] -[[package]] -name = "drm-ffi" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba7d1c19c4b6270e89d59fb27dc6d02a317c658a8a54e54781e1db9b5947595d" -dependencies = [ - "drm-sys 0.5.0", - "nix 0.27.1", -] - [[package]] name = "drm-ffi" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41334f8405792483e32ad05fbb9c5680ff4e84491883d2947a4757dc54cb2ac6" dependencies = [ - "drm-sys 0.6.1", + "drm-sys", "rustix 0.38.30", ] @@ -1205,12 +1265,6 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4" -[[package]] -name = "drm-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a4f1c0468062a56cd5705f1e3b5409eb286d5596a2028ec8e947595d7e715ae" - [[package]] name = "drm-sys" version = "0.6.1" @@ -1244,7 +1298,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8bd69fed5fcf4fbb8225b24e80ea6193b61e17a625db105ef0c4d71dde6eb8b7" dependencies = [ "accesskit", - "ahash 0.8.7", + "ahash", "epaint", "nohash-hasher", "serde", @@ -1375,7 +1429,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58067b840d009143934d91d8dcb8ded054d8301d7c11a517ace0a99bb1e1595e" dependencies = [ "ab_glyph", - "ahash 0.8.7", + "ahash", "bytemuck", "ecolor", "emath", @@ -1400,6 +1454,12 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "error-code" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0474425d51df81997e2f90a21591180b38eccf27292d755f3e30750225c175b" + [[package]] name = "etagere" version = "0.2.10" @@ -1485,7 +1545,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "279d3efcc55e19917fff7ab3ddd6c14afb6a90881a0078465196fe2f99d08c56" dependencies = [ "bit_field", - "flume 0.10.14", + "flume", "half", "lebe", "miniz_oxide", @@ -1627,24 +1687,18 @@ dependencies = [ "spin", ] -[[package]] -name = "flume" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" -dependencies = [ - "futures-core", - "futures-sink", - "nanorand", - "spin", -] - [[package]] name = "fnv" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "font-types" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b7f6040d337bd44434ab21fc6509154edf2cece88b23758d9d64654c4e7730b" + [[package]] name = "fontconfig-parser" version = "0.5.3" @@ -1716,11 +1770,11 @@ dependencies = [ [[package]] name = "freedesktop-icons" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9d46a9ae065c46efb83854bb10315de6d333bb6f4526ebe320c004dab7857e" +checksum = "a8ef34245e0540c9a3ce7a28340b98d2c12b75da0d446da4e8224923fcaa0c16" dependencies = [ - "dirs 4.0.0", + "dirs", "once_cell", "rust-ini", "thiserror", @@ -1861,7 +1915,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "313702b30cdeb83ddc72bc14dcee67803cd0ae2d12282ea06e368c25a900c844" dependencies = [ "bitflags 1.3.2", - "drm 0.11.1", + "drm", "drm-fourcc", "gbm-sys", "libc", @@ -1901,16 +1955,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "gethostname" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb65d4ba3173c56a500b555b532f72c42e8d1fe64962b518897f8959fae2c177" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "gethostname" version = "0.4.3" @@ -2002,8 +2046,8 @@ dependencies = [ [[package]] name = "glyphon" -version = "0.4.1" -source = "git+https://github.com/jackpot51/glyphon.git#abb70c0fda8cf1a5dfc314c1c778103d7ba951e6" +version = "0.5.0" +source = "git+https://github.com/pop-os/glyphon.git?tag=v0.5.0#1b0646ff8f74da92d3be704dfc2257d7f4d7eed8" dependencies = [ "cosmic-text", "etagere", @@ -2032,11 +2076,10 @@ dependencies = [ [[package]] name = "gpu-allocator" -version = "0.23.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40fe17c8a05d60c38c0a4e5a3c802f2f1ceb66b76c67d96ffb34bef0475a7fad" +checksum = "6f56f6318968d03c18e1bcf4857ff88c61157e9da8e47c5f29055d60e1228884" dependencies = [ - "backtrace", "log", "presser", "thiserror", @@ -2052,7 +2095,7 @@ checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" dependencies = [ "bitflags 2.4.2", "gpu-descriptor-types", - "hashbrown 0.14.3", + "hashbrown", ] [[package]] @@ -2090,35 +2133,26 @@ dependencies = [ "crunchy", ] -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -dependencies = [ - "ahash 0.7.7", -] - [[package]] name = "hashbrown" version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" dependencies = [ - "ahash 0.8.7", + "ahash", "allocator-api2", ] [[package]] name = "hassle-rs" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1397650ee315e8891a0df210707f0fc61771b0cc518c3023896064c5407cb3b0" +checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" dependencies = [ - "bitflags 1.3.2", - "com-rs", + "bitflags 2.4.2", + "com", "libc", - "libloading 0.7.4", + "libloading 0.8.1", "thiserror", "widestring", "winapi", @@ -2236,10 +2270,33 @@ dependencies = [ "syn 2.0.48", ] +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + [[package]] name = "iced" version = "0.12.0" -source = "git+https://github.com/pop-os/libcosmic/#efe4ce2f5b514e4d553ab82c0c873dca7585c028" +source = "git+https://github.com/pop-os/libcosmic/#d02a4fefff319a3bd20936f9be30c4913bf49bab" dependencies = [ "iced_core", "iced_futures", @@ -2247,28 +2304,31 @@ dependencies = [ "iced_widget", "image", "thiserror", + "window_clipboard", ] [[package]] name = "iced_core" version = "0.12.0" -source = "git+https://github.com/pop-os/libcosmic/#efe4ce2f5b514e4d553ab82c0c873dca7585c028" +source = "git+https://github.com/pop-os/libcosmic/#d02a4fefff319a3bd20936f9be30c4913bf49bab" dependencies = [ "bitflags 1.3.2", - "instant", "log", "num-traits", "palette", - "raw-window-handle 0.5.2", + "raw-window-handle", "serde", + "smol_str", "thiserror", + "web-time", + "window_clipboard", "xxhash-rust", ] [[package]] name = "iced_futures" version = "0.12.0" -source = "git+https://github.com/pop-os/libcosmic/#efe4ce2f5b514e4d553ab82c0c873dca7585c028" +source = "git+https://github.com/pop-os/libcosmic/#d02a4fefff319a3bd20936f9be30c4913bf49bab" dependencies = [ "futures", "iced_core", @@ -2280,7 +2340,7 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.12.0" -source = "git+https://github.com/pop-os/libcosmic/#efe4ce2f5b514e4d553ab82c0c873dca7585c028" +source = "git+https://github.com/pop-os/libcosmic/#d02a4fefff319a3bd20936f9be30c4913bf49bab" dependencies = [ "bitflags 1.3.2", "bytemuck", @@ -2288,12 +2348,13 @@ dependencies = [ "glam", "half", "iced_core", + "iced_futures", "image", "kamadak-exif", "log", "lyon_path", "once_cell", - "raw-window-handle 0.5.2", + "raw-window-handle", "rustc-hash", "thiserror", "unicode-segmentation", @@ -2303,30 +2364,30 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.12.0" -source = "git+https://github.com/pop-os/libcosmic/#efe4ce2f5b514e4d553ab82c0c873dca7585c028" +source = "git+https://github.com/pop-os/libcosmic/#d02a4fefff319a3bd20936f9be30c4913bf49bab" dependencies = [ "iced_graphics", "iced_tiny_skia", "iced_wgpu", "log", - "raw-window-handle 0.5.2", "thiserror", ] [[package]] name = "iced_runtime" version = "0.12.0" -source = "git+https://github.com/pop-os/libcosmic/#efe4ce2f5b514e4d553ab82c0c873dca7585c028" +source = "git+https://github.com/pop-os/libcosmic/#d02a4fefff319a3bd20936f9be30c4913bf49bab" dependencies = [ "iced_core", "iced_futures", "thiserror", + "window_clipboard", ] [[package]] name = "iced_style" version = "0.12.0" -source = "git+https://github.com/pop-os/libcosmic/#efe4ce2f5b514e4d553ab82c0c873dca7585c028" +source = "git+https://github.com/pop-os/libcosmic/#d02a4fefff319a3bd20936f9be30c4913bf49bab" dependencies = [ "iced_core", "once_cell", @@ -2336,14 +2397,13 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.12.0" -source = "git+https://github.com/pop-os/libcosmic/#efe4ce2f5b514e4d553ab82c0c873dca7585c028" +source = "git+https://github.com/pop-os/libcosmic/#d02a4fefff319a3bd20936f9be30c4913bf49bab" dependencies = [ "bytemuck", "cosmic-text", "iced_graphics", "kurbo 0.9.5", "log", - "raw-window-handle 0.5.2", "resvg 0.37.0", "rustc-hash", "softbuffer", @@ -2354,7 +2414,7 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.12.0" -source = "git+https://github.com/pop-os/libcosmic/#efe4ce2f5b514e4d553ab82c0c873dca7585c028" +source = "git+https://github.com/pop-os/libcosmic/#d02a4fefff319a3bd20936f9be30c4913bf49bab" dependencies = [ "bitflags 1.3.2", "bytemuck", @@ -2366,7 +2426,6 @@ dependencies = [ "log", "lyon", "once_cell", - "raw-window-handle 0.5.2", "resvg 0.37.0", "wgpu", ] @@ -2374,7 +2433,7 @@ dependencies = [ [[package]] name = "iced_widget" version = "0.12.0" -source = "git+https://github.com/pop-os/libcosmic/#efe4ce2f5b514e4d553ab82c0c873dca7585c028" +source = "git+https://github.com/pop-os/libcosmic/#d02a4fefff319a3bd20936f9be30c4913bf49bab" dependencies = [ "iced_renderer", "iced_runtime", @@ -2457,7 +2516,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown", ] [[package]] @@ -2636,6 +2695,15 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" +[[package]] +name = "known-folders" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4397c789f2709d23cfcb703b316e0766a8d4b17db2d47b0ab096ef6047cae1d8" +dependencies = [ + "windows-sys 0.52.0", +] + [[package]] name = "kqueue" version = "1.0.8" @@ -2695,9 +2763,10 @@ checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" [[package]] name = "libcosmic" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic/#efe4ce2f5b514e4d553ab82c0c873dca7585c028" +source = "git+https://github.com/pop-os/libcosmic/#d02a4fefff319a3bd20936f9be30c4913bf49bab" dependencies = [ "apply", + "chrono", "cosmic-config", "cosmic-theme", "css-color", @@ -2894,7 +2963,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2994eeba8ed550fd9b47a0b38f0242bc3344e496483c6180b69139cc2fa5d1d7" dependencies = [ - "hashbrown 0.14.3", + "hashbrown", ] [[package]] @@ -3033,6 +3102,14 @@ dependencies = [ "paste", ] +[[package]] +name = "mime" +version = "0.1.0" +source = "git+https://github.com/pop-os/window_clipboard.git?tag=pop-mime-types#f65a6c303bbbd6c7bf88f9bc34421ec06d893bea" +dependencies = [ + "smithay-clipboard", +] + [[package]] name = "mime" version = "0.3.17" @@ -3045,7 +3122,7 @@ version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" dependencies = [ - "mime", + "mime 0.3.17", "unicase", ] @@ -3091,10 +3168,10 @@ checksum = "16cf681a23b4d0a43fc35024c176437f9dcd818db34e0f42ab456a0ee5ad497b" [[package]] name = "naga" -version = "0.14.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae585df4b6514cf8842ac0f1ab4992edc975892704835b549cf818dc0191249e" +version = "0.19.0" +source = "git+https://github.com/gfx-rs/wgpu?rev=20fda69#20fda698341efbdc870b8027d6d49f5bf3f36109" dependencies = [ + "arrayvec", "bit-set", "bitflags 2.4.2", "codespan-reporting", @@ -3129,7 +3206,7 @@ dependencies = [ "log", "ndk-sys", "num_enum", - "raw-window-handle 0.6.0", + "raw-window-handle", "thiserror", ] @@ -3436,12 +3513,12 @@ dependencies = [ [[package]] name = "ordered-multimap" -version = "0.4.3" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccd746e37177e1711c20dd619a1620f34f5c8b569c53590a72dedd5344d8924a" +checksum = "a4d6a8c22fc714f0c2373e6091bf6f5e9b37b1bc0b1184874b7e0a4e303d318f" dependencies = [ "dlv-list", - "hashbrown 0.12.3", + "hashbrown", ] [[package]] @@ -3882,12 +3959,6 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "977b1e897f9d764566891689e642653e5ed90c6895106acd005eb4c1d0203991" -[[package]] -name = "raw-window-handle" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" - [[package]] name = "raw-window-handle" version = "0.6.0" @@ -3920,6 +3991,15 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b42e27ef78c35d3998403c1d26f3efd9e135d3e5121b0a4845cc5cc27547f4f" +[[package]] +name = "read-fonts" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81c524658d3b77930a391f559756d91dbe829ab6cf4687083f615d395df99722" +dependencies = [ + "font-types", +] + [[package]] name = "redox_syscall" version = "0.2.16" @@ -4135,9 +4215,9 @@ dependencies = [ [[package]] name = "rust-ini" -version = "0.18.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6d5f2436026b4f6e79dc829837d467cc7e9a55ee40e750d716713540715a2df" +checksum = "3e0698206bcb8882bf2a9ecb4c1e7785db57ff052297085a6efd4fe42302068a" dependencies = [ "cfg-if", "ordered-multimap", @@ -4421,8 +4501,8 @@ dependencies = [ "cgmath", "cursor-icon", "downcast-rs", - "drm 0.11.1", - "drm-ffi 0.7.1", + "drm", + "drm-ffi", "drm-fourcc", "encoding_rs", "errno", @@ -4455,7 +4535,7 @@ dependencies = [ "wayland-server", "wayland-sys", "winit", - "x11rb 0.13.0", + "x11rb", "xkbcommon", ] @@ -4484,6 +4564,16 @@ dependencies = [ "xkeysym", ] +[[package]] +name = "smithay-clipboard" +version = "0.8.0" +source = "git+https://github.com/pop-os/smithay-clipboard?tag=pop-mime-types#cc0101c1f9ccc937a413bd3af3c0f6217f27e935" +dependencies = [ + "libc", + "smithay-client-toolkit", + "wayland-backend", +] + [[package]] name = "smithay-egui" version = "0.1.0" @@ -4527,22 +4617,22 @@ dependencies = [ [[package]] name = "softbuffer" -version = "0.3.3" -source = "git+https://github.com/pop-os/softbuffer?tag=v0.3-cosmic#6f0371ccece51d124c6c5d37082189df0dc5f9ba" +version = "0.4.1" +source = "git+https://github.com/pop-os/softbuffer?tag=cosmic-4.0#6e75b1ad7e98397d37cb187886d05969bc480995" dependencies = [ "as-raw-xcb-connection", "bytemuck", - "cfg_aliases", + "cfg_aliases 0.2.0", "cocoa", "core-graphics", - "drm 0.10.0", + "drm", "fastrand 2.0.1", "foreign-types", "js-sys", "log", "memmap2 0.9.3", "objc", - "raw-window-handle 0.5.2", + "raw-window-handle", "redox_syscall 0.4.1", "rustix 0.38.30", "tiny-xlib", @@ -4551,8 +4641,8 @@ dependencies = [ "wayland-client", "wayland-sys", "web-sys", - "windows-sys 0.48.0", - "x11rb 0.12.0", + "windows-sys 0.52.0", + "x11rb", ] [[package]] @@ -4566,12 +4656,11 @@ dependencies = [ [[package]] name = "spirv" -version = "0.2.0+1.5.4" +version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830" +checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "bitflags 1.3.2", - "num-traits", + "bitflags 2.4.2", ] [[package]] @@ -4628,10 +4717,11 @@ dependencies = [ [[package]] name = "swash" -version = "0.1.8" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b7c73c813353c347272919aa1af2885068b05e625e5532b43049e4f641ae77f" +checksum = "9af636fb90d39858650cae1088a37e2862dab4e874a0bb49d6dfb5b2dacf0e24" dependencies = [ + "read-fonts", "yazi", "zeno", ] @@ -4772,6 +4862,15 @@ dependencies = [ "time-core", ] +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + [[package]] name = "tiny-skia" version = "0.8.4" @@ -5520,9 +5619,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" dependencies = [ "js-sys", "wasm-bindgen", @@ -5546,19 +5645,18 @@ checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" [[package]] name = "wgpu" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30e7d227c9f961f2061c26f4cb0fbd4df0ef37e056edd0931783599d6c94ef24" +version = "0.19.0" +source = "git+https://github.com/gfx-rs/wgpu?rev=20fda69#20fda698341efbdc870b8027d6d49f5bf3f36109" dependencies = [ "arrayvec", "cfg-if", - "flume 0.11.0", + "cfg_aliases 0.1.1", "js-sys", "log", "naga", "parking_lot 0.12.1", "profiling", - "raw-window-handle 0.5.2", + "raw-window-handle", "smallvec", "static_assertions", "wasm-bindgen", @@ -5571,19 +5669,21 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef91c1d62d1e9e81c79e600131a258edf75c9531cbdbde09c44a011a47312726" +version = "0.19.0" +source = "git+https://github.com/gfx-rs/wgpu?rev=20fda69#20fda698341efbdc870b8027d6d49f5bf3f36109" dependencies = [ "arrayvec", "bit-vec", "bitflags 2.4.2", + "cfg_aliases 0.1.1", "codespan-reporting", + "indexmap", "log", "naga", + "once_cell", "parking_lot 0.12.1", "profiling", - "raw-window-handle 0.5.2", + "raw-window-handle", "rustc-hash", "smallvec", "thiserror", @@ -5594,9 +5694,8 @@ dependencies = [ [[package]] name = "wgpu-hal" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b84ecc802da3eb67b4cf3dd9ea6fe45bbb47ef13e6c49c5c3240868a9cc6cdd9" +version = "0.19.0" +source = "git+https://github.com/gfx-rs/wgpu?rev=20fda69#20fda698341efbdc870b8027d6d49f5bf3f36109" dependencies = [ "android_system_properties", "arrayvec", @@ -5604,6 +5703,7 @@ dependencies = [ "bit-set", "bitflags 2.4.2", "block", + "cfg_aliases 0.1.1", "core-graphics-types", "d3d12", "glow 0.13.1", @@ -5615,7 +5715,7 @@ dependencies = [ "js-sys", "khronos-egl", "libc", - "libloading 0.7.4", + "libloading 0.8.1", "log", "metal", "naga", @@ -5624,7 +5724,7 @@ dependencies = [ "parking_lot 0.12.1", "profiling", "range-alloc", - "raw-window-handle 0.5.2", + "raw-window-handle", "renderdoc-sys", "rustc-hash", "smallvec", @@ -5637,9 +5737,8 @@ dependencies = [ [[package]] name = "wgpu-types" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d5ed5f0edf0de351fe311c53304986315ce866f394a2e6df0c4b3c70774bcdd" +version = "0.19.0" +source = "git+https://github.com/gfx-rs/wgpu?rev=20fda69#20fda698341efbdc870b8027d6d49f5bf3f36109" dependencies = [ "bitflags 2.4.2", "js-sys", @@ -5677,21 +5776,26 @@ dependencies = [ "winapi", ] -[[package]] -name = "winapi-wsapoll" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e" -dependencies = [ - "winapi", -] - [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "window_clipboard" +version = "0.4.1" +source = "git+https://github.com/pop-os/window_clipboard.git?tag=pop-mime-types#f65a6c303bbbd6c7bf88f9bc34421ec06d893bea" +dependencies = [ + "clipboard-win", + "clipboard_macos", + "clipboard_wayland", + "clipboard_x11", + "mime 0.1.0", + "raw-window-handle", + "thiserror", +] + [[package]] name = "windows" version = "0.48.0" @@ -5924,13 +6028,13 @@ version = "0.29.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c824f11941eeae66ec71111cc2674373c772f482b58939bb4066b642aa2ffcf" dependencies = [ - "ahash 0.8.7", + "ahash", "android-activity", "atomic-waker", "bitflags 2.4.2", "bytemuck", "calloop", - "cfg_aliases", + "cfg_aliases 0.1.1", "core-foundation", "core-graphics", "cursor-icon", @@ -5945,7 +6049,7 @@ dependencies = [ "once_cell", "orbclient", "percent-encoding", - "raw-window-handle 0.6.0", + "raw-window-handle", "redox_syscall 0.3.5", "rustix 0.38.30", "smithay-client-toolkit", @@ -5961,7 +6065,7 @@ dependencies = [ "web-time", "windows-sys 0.48.0", "x11-dl", - "x11rb 0.13.0", + "x11rb", "xkbcommon-dl", ] @@ -5994,23 +6098,6 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "x11rb" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1641b26d4dec61337c35a1b1aaf9e3cba8f46f0b43636c609ab0291a648040a" -dependencies = [ - "as-raw-xcb-connection", - "gethostname 0.3.0", - "libc", - "libloading 0.7.4", - "nix 0.26.4", - "once_cell", - "winapi", - "winapi-wsapoll", - "x11rb-protocol 0.12.0", -] - [[package]] name = "x11rb" version = "0.13.0" @@ -6018,21 +6105,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a" dependencies = [ "as-raw-xcb-connection", - "gethostname 0.4.3", + "gethostname", "libc", "libloading 0.8.1", "once_cell", "rustix 0.38.30", - "x11rb-protocol 0.13.0", -] - -[[package]] -name = "x11rb-protocol" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d6c3f9a0fb6701fab8f6cea9b0c0bd5d6876f1f89f7fada07e558077c344bc" -dependencies = [ - "nix 0.26.4", + "x11rb-protocol", ] [[package]] diff --git a/src/shell/element/resize_indicator.rs b/src/shell/element/resize_indicator.rs index e16cff25..370da865 100644 --- a/src/shell/element/resize_indicator.rs +++ b/src/shell/element/resize_indicator.rs @@ -10,7 +10,7 @@ use crate::{ use calloop::LoopHandle; use cosmic::{ iced::widget::{column, container, horizontal_space, row, vertical_space}, - iced_core::{Background, Color, Length}, + iced_core::{Background, Border, Color, Length}, theme, widget::{icon::from_name, text}, Apply, @@ -64,16 +64,19 @@ pub struct ResizeIndicatorInternal { impl Program for ResizeIndicatorInternal { type Message = (); - fn view(&self) -> crate::utils::iced::Element<'_, Self::Message> { + fn view(&self) -> cosmic::Element<'_, Self::Message> { let edges = self.edges.lock().unwrap(); let icon_container_style = || { theme::Container::custom(|theme| container::Appearance { icon_color: Some(Color::from(theme.cosmic().accent.on)), text_color: Some(Color::from(theme.cosmic().accent.on)), background: Some(Background::Color(theme.cosmic().accent_color().into())), - border_radius: 18.0.into(), - border_width: 0.0, - border_color: Color::TRANSPARENT, + border: Border { + radius: 18.0.into(), + width: 0.0, + color: Color::TRANSPARENT, + }, + shadow: Default::default(), }) }; diff --git a/src/shell/element/stack.rs b/src/shell/element/stack.rs index f5ec6eae..361102a9 100644 --- a/src/shell/element/stack.rs +++ b/src/shell/element/stack.rs @@ -17,7 +17,7 @@ use crate::{ use calloop::LoopHandle; use cosmic::{ iced::{id::Id, widget as iced_widget}, - iced_core::{Background, BorderRadius, Color, Length}, + iced_core::{border::Radius, Background, Border, Color, Length}, iced_runtime::Command, iced_widget::scrollable::AbsoluteOffset, theme, widget as cosmic_widget, Apply, Element as CosmicElement, @@ -866,9 +866,12 @@ impl Program for CosmicStackInternal { icon_color: Some(Color::from(theme.cosmic().background.on)), text_color: Some(Color::from(theme.cosmic().background.on)), background: Some(Background::Color(theme.cosmic().accent_color().into())), - border_radius: BorderRadius::from([8.0, 8.0, 0.0, 0.0]), - border_width: 0.0, - border_color: Color::TRANSPARENT, + border: Border { + radius: Radius::from([8.0, 8.0, 0.0, 0.0]), + width: 0.0, + color: Color::TRANSPARENT, + }, + shadow: Default::default(), }) } else { theme::Container::custom(|theme| iced_widget::container::Appearance { @@ -877,9 +880,12 @@ impl Program for CosmicStackInternal { background: Some(Background::Color(tab::primary_container_color( theme.cosmic(), ))), - border_radius: BorderRadius::from([8.0, 8.0, 0.0, 0.0]), - border_width: 0.0, - border_color: Color::TRANSPARENT, + border: Border { + radius: Radius::from([8.0, 8.0, 0.0, 0.0]), + width: 0.0, + color: Color::TRANSPARENT, + }, + shadow: Default::default(), }) }) .into() diff --git a/src/shell/element/stack/tab.rs b/src/shell/element/stack/tab.rs index 0fd522be..6f214125 100644 --- a/src/shell/element/stack/tab.rs +++ b/src/shell/element/stack/tab.rs @@ -10,7 +10,7 @@ use cosmic::{ tree::Tree, Id, Widget, }, - Clipboard, Color, Length, Rectangle, Shell, Size, + Border, Clipboard, Color, Length, Rectangle, Shell, Size, }, iced_widget::scrollable::AbsoluteOffset, theme, @@ -104,9 +104,12 @@ impl From for theme::Container { icon_color: Some(Color::from(theme.cosmic().accent_text_color())), text_color: Some(Color::from(theme.cosmic().accent_text_color())), background: Some(background_theme.background_color(theme).into()), - border_radius: 0.0.into(), - border_width: 0.0, - border_color: Color::TRANSPARENT, + border: Border { + radius: 0.0.into(), + width: 0.0, + color: Color::TRANSPARENT, + }, + shadow: Default::default(), }) } TabBackgroundTheme::ActiveDeactivated => { @@ -114,9 +117,12 @@ impl From for theme::Container { icon_color: None, text_color: None, background: Some(background_theme.background_color(theme).into()), - border_radius: 0.0.into(), - border_width: 0.0, - border_color: Color::TRANSPARENT, + border: Border { + radius: 0.0.into(), + width: 0.0, + color: Color::TRANSPARENT, + }, + shadow: Default::default(), }) } TabBackgroundTheme::Default => Self::Transparent, @@ -203,7 +209,7 @@ impl Tab { self } - pub(super) fn internal(self, idx: usize) -> TabInternal<'static, Message> { + pub(super) fn internal<'a>(self, idx: usize) -> TabInternal<'a, Message> { let mut close_button = from_name("window-close-symbolic") .size(16) .prefer_svg(true) @@ -270,7 +276,10 @@ pub(super) struct TabInternal<'a, Message: TabMessage> { right_click_message: Option, } -impl<'a, Message: TabMessage> Widget for TabInternal<'a, Message> { +impl<'a, Message> Widget for TabInternal<'a, Message> +where + Message: TabMessage, +{ fn id(&self) -> Option { Some(self.id.clone()) } @@ -283,12 +292,8 @@ impl<'a, Message: TabMessage> Widget for TabInternal< tree.diff_children(&mut self.elements); } - fn width(&self) -> Length { - Length::Fill - } - - fn height(&self) -> Length { - Length::Fill + fn size(&self) -> Size { + Size::new(Length::Fill, Length::Fill) } fn layout(&self, tree: &mut Tree, renderer: &cosmic::Renderer, limits: &Limits) -> Node { @@ -305,7 +310,9 @@ impl<'a, Message: TabMessage> Widget for TabInternal< .min_height(min_size.height) .width(Length::Fill) .height(Length::Fill); - let size = limits.resolve(min_size).max(min_size); + let size = limits + .resolve(Length::Shrink, Length::Shrink, min_size) + .max(min_size); let limits = Limits::new(size, size) .min_width(size.width) @@ -316,6 +323,8 @@ impl<'a, Message: TabMessage> Widget for TabInternal< cosmic::iced_core::layout::flex::Axis::Horizontal, renderer, &limits, + Length::Fill, + Length::Fill, 0.into(), 8., cosmic::iced::Alignment::Center, @@ -474,7 +483,7 @@ impl<'a, Message: TabMessage> Widget for TabInternal< tree: &'b mut Tree, layout: Layout<'_>, renderer: &cosmic::Renderer, - ) -> Option> { + ) -> Option> { overlay::from_children(&mut self.elements, tree, layout, renderer) } } diff --git a/src/shell/element/stack/tab_text.rs b/src/shell/element/stack/tab_text.rs index d2132831..c2f06900 100644 --- a/src/shell/element/stack/tab_text.rs +++ b/src/shell/element/stack/tab_text.rs @@ -9,7 +9,7 @@ use cosmic::{ renderer::{self, Renderer as IcedRenderer}, text::{LineHeight, Paragraph, Renderer as TextRenderer, Shaping}, widget::{tree, Tree, Widget}, - Background, Color, Degrees, Gradient, Length, Rectangle, Size, Text, + Background, Border, Color, Degrees, Gradient, Length, Rectangle, Size, Text, }, }; @@ -86,7 +86,7 @@ impl TabText { } } -impl Widget for TabText { +impl Widget for TabText { fn tag(&self) -> tree::Tag { tree::Tag::of::() } @@ -99,20 +99,15 @@ impl Widget for TabText { }) } - fn width(&self) -> Length { - self.width - } - fn height(&self) -> Length { - self.height + fn size(&self) -> Size { + Size::new(self.width, self.height) } fn layout(&self, tree: &mut Tree, _renderer: &cosmic::Renderer, limits: &Limits) -> Node { - let limits = limits.width(self.width).height(self.height); - let state = tree.state.downcast_mut::(); let text_bounds = state.paragraph.min_bounds(); state.overflowed = limits.max().width < text_bounds.width; - let actual_size = limits.resolve(text_bounds); + let actual_size = limits.resolve(self.width, self.height, text_bounds); Node::new(actual_size) } @@ -163,9 +158,12 @@ impl Widget for TabText { width: 24.0_f32.min(bounds.width), ..bounds }, - border_radius: 0.0.into(), - border_width: 0.0, - border_color: Color::TRANSPARENT, + border: Border { + radius: 0.0.into(), + width: 0.0, + color: Color::TRANSPARENT, + }, + shadow: Default::default(), }, Background::Gradient(Gradient::Linear( gradient::Linear::new(Degrees(90.)) diff --git a/src/shell/element/stack/tabs.rs b/src/shell/element/stack/tabs.rs index 9044aac5..95e2a2b0 100644 --- a/src/shell/element/stack/tabs.rs +++ b/src/shell/element/stack/tabs.rs @@ -13,7 +13,8 @@ use cosmic::{ tree::{self, Tree}, Widget, }, - Background, Clipboard, Color, Length, Point, Rectangle, Renderer, Shell, Size, Vector, + Background, Border, Clipboard, Color, Length, Point, Rectangle, Renderer, Shell, Size, + Vector, }, iced_style::container::StyleSheet as ContainerStyleSheet, iced_widget::container::draw_background, @@ -291,15 +292,12 @@ impl State { } } -impl<'a, Message> Widget for Tabs<'a, Message> +impl<'a, Message> Widget for Tabs<'a, Message> where Message: TabMessage, { - fn width(&self) -> Length { - self.width - } - fn height(&self) -> Length { - self.height + fn size(&self) -> Size { + Size::new(self.width, self.height) } fn id(&self) -> Option { @@ -352,7 +350,7 @@ where width: a.width + b.width, height: a.height.max(b.height), }); - let size = limits.resolve(min_size); + let size = limits.resolve(self.width, self.height, min_size); if min_size.width <= size.width { // we don't need to scroll @@ -366,6 +364,8 @@ where cosmic::iced_core::layout::flex::Axis::Horizontal, renderer, &limits, + self.width, + self.height, 0.into(), 0., cosmic::iced::Alignment::Center, @@ -392,15 +392,14 @@ where .height(Length::Shrink); let mut node = tab.as_widget().layout(tab_tree, renderer, &child_limits); - node.move_to(Point::new(offset, 0.)); + node = node.move_to(Point::new(offset, 0.)); offset += node.bounds().width; node }) .collect::>(); nodes.push({ - let mut node = Node::new(Size::new(4., limits.max().height)); - node.move_to(Point::new(offset, 0.)); - node + let node = Node::new(Size::new(4., limits.max().height)); + node.move_to(Point::new(offset, 0.)) }); nodes }; @@ -424,7 +423,7 @@ where // we scroll, so use the computed min size, but add scroll buttons. let mut offset = 30.; for node in &mut nodes { - node.move_to(Point::new(offset, 0.)); + *node = node.clone().move_to(Point::new(offset, 0.)); offset += node.bounds().width; } let last_position = Point::new(size.width - 34., 0.); @@ -437,7 +436,7 @@ where Size::new(16., 16.), vec![Node::new(Size::new(16., 16.))], ); - node.move_to(Point::new(9., (size.height - 16.) / 2.)); + node = node.move_to(Point::new(9., (size.height - 16.) / 2.)); node }] .into_iter() @@ -445,7 +444,7 @@ where .chain(vec![ { let mut node = Node::new(Size::new(4., size.height)); - node.move_to(last_position); + node = node.move_to(last_position); node }, { @@ -453,12 +452,13 @@ where Size::new(16., 16.), vec![Node::new(Size::new(16., 16.))], ); - node.move_to(last_position + Vector::new(9., (size.height - 16.) / 2.)); + node = + node.move_to(last_position + Vector::new(9., (size.height - 16.) / 2.)); node }, { let mut node = Node::new(Size::new(4., size.height)); - node.move_to(last_position + Vector::new(30., 0.)); + node = node.move_to(last_position + Vector::new(30., 0.)); node }, ]) @@ -498,9 +498,12 @@ where background: Some(Background::Color(super::tab::primary_container_color( theme.cosmic(), ))), - border_radius: 0.0.into(), - border_width: 0.0, - border_color: Color::TRANSPARENT, + border: Border { + radius: 0.0.into(), + width: 0.0, + color: Color::TRANSPARENT, + }, + shadow: Default::default(), }), ); draw_background(renderer, &background_style, bounds); @@ -990,7 +993,7 @@ where tree: &'b mut Tree, layout: Layout<'_>, renderer: &cosmic::Renderer, - ) -> Option> { + ) -> Option> { overlay::from_children(&mut self.elements, tree, layout, renderer) } } diff --git a/src/shell/element/stack_hover.rs b/src/shell/element/stack_hover.rs index 1877d123..43d26561 100644 --- a/src/shell/element/stack_hover.rs +++ b/src/shell/element/stack_hover.rs @@ -6,7 +6,7 @@ use crate::{ use calloop::LoopHandle; use cosmic::{ iced::widget::{container, row}, - iced_core::{Background, Color, Length}, + iced_core::{Background, Border, Color, Length}, theme, widget::{icon::from_name, text}, Apply, @@ -28,7 +28,7 @@ pub struct StackHoverInternal; impl Program for StackHoverInternal { type Message = (); - fn view(&self) -> crate::utils::iced::Element<'_, Self::Message> { + fn view(&self) -> cosmic::Element<'_, Self::Message> { row(vec![ from_name("window-stack-symbolic") .size(24) @@ -60,9 +60,12 @@ impl Program for StackHoverInternal { icon_color: Some(Color::from(theme.cosmic().accent.on)), text_color: Some(Color::from(theme.cosmic().accent.on)), background: Some(Background::Color(theme.cosmic().accent_color().into())), - border_radius: 24.0.into(), - border_width: 0.0, - border_color: Color::TRANSPARENT, + border: Border { + radius: 24.0.into(), + width: 0.0, + color: Color::TRANSPARENT, + }, + shadow: Default::default(), })) .width(Length::Shrink) .height(Length::Fixed(48.)) diff --git a/src/shell/element/swap_indicator.rs b/src/shell/element/swap_indicator.rs index 380bf2e6..480ce9b8 100644 --- a/src/shell/element/swap_indicator.rs +++ b/src/shell/element/swap_indicator.rs @@ -6,7 +6,7 @@ use crate::{ use calloop::LoopHandle; use cosmic::{ iced::widget::{container, horizontal_space, row}, - iced_core::{Alignment, Background, Color, Length}, + iced_core::{Alignment, Background, Border, Color, Length}, theme, widget::{icon::from_name, text}, Apply, @@ -27,7 +27,7 @@ pub struct SwapIndicatorInternal; impl Program for SwapIndicatorInternal { type Message = (); - fn view(&self) -> crate::utils::iced::Element<'_, Self::Message> { + fn view(&self) -> cosmic::Element<'_, Self::Message> { row(vec![ from_name("window-swap-symbolic") .size(32) @@ -50,9 +50,12 @@ impl Program for SwapIndicatorInternal { icon_color: Some(Color::from(theme.cosmic().accent.on)), text_color: Some(Color::from(theme.cosmic().accent.on)), background: Some(Background::Color(theme.cosmic().accent_color().into())), - border_radius: 18.0.into(), - border_width: 0.0, - border_color: Color::TRANSPARENT, + border: Border { + radius: 18.0.into(), + width: 0.0, + color: Color::TRANSPARENT, + }, + shadow: Default::default(), })) .width(Length::Shrink) .height(Length::Shrink) diff --git a/src/shell/grabs/menu/item.rs b/src/shell/grabs/menu/item.rs index 3dc32343..b6aa0227 100644 --- a/src/shell/grabs/menu/item.rs +++ b/src/shell/grabs/menu/item.rs @@ -4,28 +4,20 @@ use cosmic::{ event, layout, mouse, overlay, renderer::{Quad, Style}, widget::{tree, Id, OperationOutputWrapper, Tree, Widget}, - Background, Clipboard, Color, Event, Layout, Length, Rectangle, Renderer as IcedRenderer, - Shell, + Background, Border, Clipboard, Color, Event, Layout, Length, Rectangle, + Renderer as IcedRenderer, Shell, Size, }, widget::button::StyleSheet, }; -pub struct SubmenuItem<'a, Message, Renderer> -where - Renderer: IcedRenderer, - Renderer::Theme: StyleSheet, -{ - elem: Element<'a, Message, Renderer>, +pub struct SubmenuItem<'a, Message> { + elem: cosmic::Element<'a, Message>, idx: usize, - styling: ::Style, + styling: ::Style, } -impl<'a, Message, Renderer> SubmenuItem<'a, Message, Renderer> -where - Renderer: IcedRenderer, - Renderer::Theme: StyleSheet, -{ - pub fn new(elem: impl Into>, idx: usize) -> Self { +impl<'a, Message> SubmenuItem<'a, Message> { + pub fn new(elem: impl Into>, idx: usize) -> Self { Self { elem: elem.into(), idx, @@ -33,7 +25,7 @@ where } } - pub fn style(mut self, style: ::Style) -> Self { + pub fn style(mut self, style: ::Style) -> Self { self.styling = style; self } @@ -48,28 +40,22 @@ struct State { cursor_over: bool, } -impl<'a, Message, Renderer> Widget for SubmenuItem<'a, Message, Renderer> +impl<'a, Message> Widget for SubmenuItem<'a, Message> where - Renderer: IcedRenderer, - Renderer::Theme: StyleSheet, Message: CursorEvents, { fn id(&self) -> Option { None } - fn width(&self) -> Length { - self.elem.as_widget().width() - } - - fn height(&self) -> Length { - self.elem.as_widget().height() + fn size(&self) -> Size { + self.elem.as_widget().size() } fn layout( &self, state: &mut Tree, - renderer: &Renderer, + renderer: &cosmic::Renderer, limits: &layout::Limits, ) -> layout::Node { let state = &mut state.children[0]; @@ -80,8 +66,8 @@ where fn draw( &self, state: &Tree, - renderer: &mut Renderer, - theme: &::Theme, + renderer: &mut cosmic::Renderer, + theme: &cosmic::Theme, style: &Style, layout: Layout<'_>, cursor: mouse::Cursor, @@ -89,17 +75,20 @@ where ) { let widget_state = state.state.downcast_ref::(); let styling = if widget_state.cursor_over { - theme.hovered(true, &self.styling) + theme.hovered(true, false, &self.styling) } else { - theme.active(true, &self.styling) + theme.active(true, false, &self.styling) }; renderer.fill_quad( Quad { bounds: layout.bounds(), - border_radius: styling.border_radius, - border_width: styling.border_width, - border_color: styling.border_color, + border: Border { + radius: styling.border_radius, + width: styling.border_width, + color: styling.border_color, + }, + shadow: Default::default(), }, styling .background @@ -143,7 +132,7 @@ where &self, state: &mut Tree, layout: Layout<'_>, - renderer: &Renderer, + renderer: &cosmic::Renderer, operation: &mut dyn cosmic::widget::Operation>, ) { let state = &mut state.children[0]; @@ -159,7 +148,7 @@ where event: Event, layout: Layout<'_>, cursor: mouse::Cursor, - renderer: &Renderer, + renderer: &cosmic::Renderer, clipboard: &mut dyn Clipboard, shell: &mut Shell<'_, Message>, viewport: &Rectangle, @@ -203,7 +192,7 @@ where layout: Layout<'_>, cursor: mouse::Cursor, viewport: &Rectangle, - renderer: &Renderer, + renderer: &cosmic::Renderer, ) -> mouse::Interaction { let state = &state.children[0]; let layout = layout.children().next().unwrap(); @@ -216,22 +205,19 @@ where &'b mut self, state: &'b mut Tree, layout: Layout<'_>, - renderer: &Renderer, - ) -> Option> { + renderer: &cosmic::Renderer, + ) -> Option> { let state = &mut state.children[0]; let layout = layout.children().next().unwrap(); self.elem.as_widget_mut().overlay(state, layout, renderer) } } -impl<'a, Message, Renderer> Into> - for SubmenuItem<'a, Message, Renderer> +impl<'a, Message> Into> for SubmenuItem<'a, Message> where - Renderer: IcedRenderer + 'a, - Renderer::Theme: StyleSheet, Message: CursorEvents + 'a, { - fn into(self) -> Element<'a, Message, Renderer> { + fn into(self) -> cosmic::Element<'a, Message> { Element::new(self) } } diff --git a/src/shell/grabs/menu/mod.rs b/src/shell/grabs/menu/mod.rs index 91475579..86f46f67 100644 --- a/src/shell/grabs/menu/mod.rs +++ b/src/shell/grabs/menu/mod.rs @@ -9,7 +9,7 @@ use std::{ use calloop::LoopHandle; use cosmic::{ iced::Background, - iced_core::{alignment::Horizontal, Length, Pixels, Rectangle as IcedRectangle}, + iced_core::{alignment::Horizontal, Border, Length, Pixels, Rectangle as IcedRectangle}, iced_widget::{self, horizontal_rule, text::Appearance as TextAppearance, Column, Row}, theme, widget::{button, horizontal_space, icon::from_name, text}, @@ -319,7 +319,7 @@ impl Program for ContextMenu { Command::none() } - fn view(&self) -> crate::utils::iced::Element<'_, Self::Message> { + fn view(&self) -> cosmic::Element<'_, Self::Message> { let width = self .row_width .lock() @@ -331,99 +331,93 @@ impl Program for ContextMenu { _ => Length::Fill, }; - Column::with_children( - self.items - .iter() - .enumerate() - .map(|(idx, item)| match item { - Item::Separator => horizontal_rule(1) - .style(theme::Rule::LightDivider) - .width(mode) - .into(), - Item::Submenu { title, .. } => Row::with_children(vec![ - horizontal_space(16).into(), - text(title).width(mode).into(), - from_name("go-next-symbolic") - .size(16) - .prefer_svg(true) - .icon() - .into(), - ]) - .spacing(8) - .width(width) - .padding([8, 24]) - .apply(|row| item::SubmenuItem::new(row, idx)) - .style(theme::Button::MenuItem) + Column::with_children(self.items.iter().enumerate().map(|(idx, item)| { + match item { + Item::Separator => horizontal_rule(1) + .style(theme::Rule::LightDivider) + .width(mode) .into(), - Item::Entry { - title, - shortcut, - toggled, - disabled, - .. - } => { - let mut components = vec![ - if *toggled { - from_name("object-select-symbolic") - .size(16) - .prefer_svg(true) - .icon() - .style(theme::Svg::custom(|theme| { - iced_widget::svg::Appearance { - color: Some(theme.cosmic().accent.base.into()), - } - })) - .into() - } else { - horizontal_space(16).into() - }, - text(title) - .width(mode) - .style(if *disabled { - theme::Text::Custom(|theme| { - let mut color = theme.cosmic().background.component.on; - color.alpha *= 0.5; - TextAppearance { - color: Some(color.into()), - } - }) - } else { - theme::Text::Default - }) - .into(), - ]; - if let Some(shortcut) = shortcut.as_ref() { - components.push( - text(shortcut) - .line_height(Pixels(20.)) - .size(14) - .horizontal_alignment(Horizontal::Right) - .width(Length::Shrink) - .style(theme::Text::Custom(|theme| { - let mut color = theme.cosmic().background.component.on; - color.alpha *= 0.75; - TextAppearance { - color: Some(color.into()), - } - })) - .into(), - ); - } - components.push(horizontal_space(16).into()); - - Row::with_children(components) - .spacing(8) + Item::Submenu { title, .. } => Row::with_children(vec![ + horizontal_space(16).into(), + text(title).width(mode).into(), + from_name("go-next-symbolic") + .size(16) + .prefer_svg(true) + .icon() + .into(), + ]) + .spacing(8) + .width(width) + .padding([8, 24]) + .apply(|row| item::SubmenuItem::new(row, idx)) + .style(theme::Button::MenuItem) + .into(), + Item::Entry { + title, + shortcut, + toggled, + disabled, + .. + } => { + let mut components = vec![ + if *toggled { + from_name("object-select-symbolic") + .size(16) + .prefer_svg(true) + .icon() + .style(theme::Svg::custom(|theme| iced_widget::svg::Appearance { + color: Some(theme.cosmic().accent.base.into()), + })) + .into() + } else { + horizontal_space(16).into() + }, + text(title) .width(mode) - .apply(button) - .width(width) - .padding([8, 24]) - .on_press_maybe((!disabled).then_some(Message::ItemPressed(idx))) - .style(theme::Button::MenuItem) - .into() + .style(if *disabled { + theme::Text::Custom(|theme| { + let mut color = theme.cosmic().background.component.on; + color.alpha *= 0.5; + TextAppearance { + color: Some(color.into()), + } + }) + } else { + theme::Text::Default + }) + .into(), + ]; + if let Some(shortcut) = shortcut.as_ref() { + components.push( + text(shortcut) + .line_height(Pixels(20.)) + .size(14) + .horizontal_alignment(Horizontal::Right) + .width(Length::Shrink) + .style(theme::Text::Custom(|theme| { + let mut color = theme.cosmic().background.component.on; + color.alpha *= 0.75; + TextAppearance { + color: Some(color.into()), + } + })) + .into(), + ); } - }) - .collect(), - ) + components.push(horizontal_space(16).into()); + + Row::with_children(components) + .spacing(8) + .width(mode) + .apply(button) + .width(width) + .padding([8, 24]) + .on_press_maybe((!disabled).then_some(Message::ItemPressed(idx))) + .style(theme::Button::MenuItem) + .into() + } + } + })) .width(Length::Shrink) .apply(iced_widget::container) .padding(1) @@ -434,9 +428,12 @@ impl Program for ContextMenu { icon_color: Some(cosmic.accent.base.into()), text_color: Some(component.on.into()), background: Some(Background::Color(component.base.into())), - border_radius: 8.0.into(), - border_width: 1.0, - border_color: component.divider.into(), + border: Border { + radius: 8.0.into(), + width: 1.0, + color: component.divider.into(), + }, + shadow: Default::default(), } })) .width(Length::Shrink) diff --git a/src/utils/iced.rs b/src/utils/iced.rs index 23fb2bb2..71e66e51 100644 --- a/src/utils/iced.rs +++ b/src/utils/iced.rs @@ -16,7 +16,7 @@ use cosmic::{ Command, Limits, Point as IcedPoint, Rectangle as IcedRectangle, Size as IcedSize, }, iced_core::{clipboard::Null as NullClipboard, renderer::Style, Color, Font, Length, Pixels}, - iced_renderer::{graphics::Renderer as IcedGraphicsRenderer, Renderer as IcedRenderer}, + iced_renderer::graphics::Renderer as IcedGraphicsRenderer, iced_runtime::{ command::Action, program::{Program as IcedProgram, State}, @@ -28,7 +28,6 @@ use iced_tiny_skia::{ graphics::{damage, Viewport}, Backend, Primitive, }; -pub type Element<'a, Message> = cosmic::iced::Element<'a, Message, IcedRenderer>; use ordered_float::OrderedFloat; use smithay::{ @@ -104,7 +103,7 @@ pub trait Program { let _ = (message, loop_handle); Command::none() } - fn view(&self) -> Element<'_, Self::Message>; + fn view(&self) -> cosmic::Element<'_, Self::Message>; fn background_color(&self) -> Color { Color::TRANSPARENT @@ -123,13 +122,14 @@ pub trait Program { struct ProgramWrapper(P, LoopHandle<'static, crate::state::State>); impl IcedProgram for ProgramWrapper

{ type Message =

::Message; - type Renderer = IcedRenderer; + type Renderer = cosmic::Renderer; + type Theme = cosmic::Theme; fn update(&mut self, message: Self::Message) -> Command { self.0.update(message, &self.1) } - fn view(&self) -> Element<'_, Self::Message> { + fn view(&self) -> cosmic::Element<'_, Self::Message> { self.0.view() } } @@ -146,7 +146,7 @@ struct IcedElementInternal { // iced theme: Theme, - renderer: IcedRenderer, + renderer: cosmic::Renderer, state: State>, debug: Debug, @@ -171,7 +171,7 @@ impl Clone for IcedElementInternal

{ if !self.state.is_queue_empty() { tracing::warn!("Missing force_update call"); } - let mut renderer = IcedRenderer::TinySkia(IcedGraphicsRenderer::new( + let mut renderer = cosmic::Renderer::TinySkia(IcedGraphicsRenderer::new( Backend::new(), Font::default(), Pixels(16.0), @@ -236,7 +236,7 @@ impl IcedElement

{ theme: cosmic::Theme, ) -> IcedElement

{ let size = size.into(); - let mut renderer = IcedRenderer::TinySkia(IcedGraphicsRenderer::new( + let mut renderer = cosmic::Renderer::TinySkia(IcedGraphicsRenderer::new( Backend::new(), Font::default(), Pixels(16.0), @@ -772,7 +772,7 @@ where .to_i32_round(); if size.w > 0 && size.h > 0 { - let IcedRenderer::TinySkia(renderer) = &mut internal_ref.renderer; + let cosmic::Renderer::TinySkia(renderer) = &mut internal_ref.renderer; let state_ref = &internal_ref.state; let mut clip_mask = tiny_skia::Mask::new(size.w as u32, size.h as u32).unwrap(); let overlay = internal_ref.debug.overlay();