diff --git a/Cargo.lock b/Cargo.lock index 2bc480a..ed53f4e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,31 +2,6 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "ab_glyph" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5110f1c78cf582855d895ecd0746b653db010cec6d9f5575293f27934d980a39" -dependencies = [ - "ab_glyph_rasterizer", - "owned_ttf_parser", -] - -[[package]] -name = "ab_glyph_rasterizer" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" - -[[package]] -name = "addr2line" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" -dependencies = [ - "gimli", -] - [[package]] name = "adler" version = "1.0.2" @@ -34,51 +9,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] -name = "ahash" -version = "0.7.6" +name = "anyhow" +version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" -dependencies = [ - "getrandom", - "once_cell", - "version_check", -] - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "approx" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" -dependencies = [ - "num-traits", -] - -[[package]] -name = "arrayref" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" - -[[package]] -name = "arrayvec" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" - -[[package]] -name = "arrayvec" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" [[package]] name = "ascii" @@ -87,158 +21,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16" [[package]] -name = "ash" -version = "0.37.3+1.3.251" +name = "async-trait" +version = "0.1.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a" +checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" dependencies = [ - "libloading", + "proc-macro2", + "quote", + "syn 2.0.18", ] -[[package]] -name = "async-channel" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833" -dependencies = [ - "concurrent-queue", - "event-listener", - "futures-core", -] - -[[package]] -name = "async-executor" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fa3dc5f2a8564f07759c008b9109dc0d39de92a88d5588b8a5036d286383afb" -dependencies = [ - "async-lock", - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "slab", -] - -[[package]] -name = "async-fs" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" -dependencies = [ - "async-lock", - "autocfg", - "blocking", - "futures-lite", -] - -[[package]] -name = "async-io" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" -dependencies = [ - "async-lock", - "autocfg", - "cfg-if", - "concurrent-queue", - "futures-lite", - "log", - "parking", - "polling", - "rustix", - "slab", - "socket2", - "waker-fn", -] - -[[package]] -name = "async-lock" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7" -dependencies = [ - "event-listener", -] - -[[package]] -name = "async-net" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4051e67316bc7eff608fe723df5d32ed639946adcd69e07df41fd42a7b411f1f" -dependencies = [ - "async-io", - "autocfg", - "blocking", - "futures-lite", -] - -[[package]] -name = "async-process" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a9d28b1d97e08915212e2e45310d47854eafa69600756fc735fb788f75199c9" -dependencies = [ - "async-io", - "async-lock", - "autocfg", - "blocking", - "cfg-if", - "event-listener", - "futures-lite", - "rustix", - "signal-hook", - "windows-sys 0.48.0", -] - -[[package]] -name = "async-task" -version = "4.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc7ab41815b3c653ccd2978ec3255c81349336702dfdf62ee6f7069b12a3aae" - -[[package]] -name = "atomic-waker" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3" - [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" -[[package]] -name = "backtrace" -version = "0.3.67" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" -dependencies = [ - "addr2line", - "cc", - "cfg-if", - "libc", - "miniz_oxide 0.6.2", - "object", - "rustc-demangle", -] - -[[package]] -name = "bit-set" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - [[package]] name = "bitflags" version = "1.3.2" @@ -251,47 +49,12 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" -[[package]] -name = "blocking" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77231a1c8f801696fc0123ec6150ce92cffb8e164a02afb9c8ddee0e9b65ad65" -dependencies = [ - "async-channel", - "async-lock", - "async-task", - "atomic-waker", - "fastrand", - "futures-lite", - "log", -] - [[package]] name = "bumpalo" version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" -[[package]] -name = "bytemuck" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" -dependencies = [ - "bytemuck_derive", -] - -[[package]] -name = "bytemuck_derive" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdde5c9cd29ebd706ce1b35600920a33550e402fc998a2e53ad3b42c3c47a192" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.18", -] - [[package]] name = "byteorder" version = "1.4.3" @@ -299,23 +62,39 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] -name = "calloop" -version = "0.10.5" +name = "cairo-rs" +version = "0.17.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a59225be45a478d772ce015d9743e49e92798ece9e34eda9a6aa2a6a7f40192" +checksum = "ab3603c4028a5e368d09b51c8b624b9a46edcd7c3778284077a6125af73c9f0a" dependencies = [ - "log", - "nix 0.25.1", - "slotmap", + "bitflags", + "cairo-sys-rs", + "glib", + "libc", + "once_cell", "thiserror", - "vec_map", ] [[package]] -name = "cc" -version = "1.0.79" +name = "cairo-sys-rs" +version = "0.17.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "691d0c66b1fb4881be80a760cb8fe76ea97218312f9dfe2c9cc0f496ca279cb1" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "cfg-expr" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e70d3ad08698a0568b0562f22710fe6bfc1f4a61a367c77d0398c562eadd453a" +dependencies = [ + "smallvec", + "target-lexicon", +] [[package]] name = "cfg-if" @@ -323,56 +102,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "clipboard-win" -version = "4.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362" -dependencies = [ - "error-code", - "str-buf", - "winapi", -] - -[[package]] -name = "clipboard_macos" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145a7f9e9b89453bc0a5e32d166456405d389cea5b578f57f1274b1397588a95" -dependencies = [ - "objc", - "objc-foundation", - "objc_id", -] - -[[package]] -name = "clipboard_wayland" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f6364a9f7a66f2ac1a1a098aa1c7f6b686f2496c6ac5e5c0d773445df912747" -dependencies = [ - "smithay-clipboard", -] - -[[package]] -name = "clipboard_x11" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "983a7010836ecd04dde2c6d27a0cb56ec5d21572177e782bdcb24a600124e921" -dependencies = [ - "thiserror", - "x11rb", -] - -[[package]] -name = "cmake" -version = "0.1.50" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" -dependencies = [ - "cc", -] - [[package]] name = "cocoa" version = "0.24.1" @@ -384,7 +113,7 @@ dependencies = [ "cocoa-foundation", "core-foundation", "core-graphics", - "foreign-types 0.3.2", + "foreign-types", "libc", "objc", ] @@ -399,42 +128,11 @@ dependencies = [ "block", "core-foundation", "core-graphics-types", - "foreign-types 0.3.2", + "foreign-types", "libc", "objc", ] -[[package]] -name = "codespan-reporting" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" -dependencies = [ - "termcolor", - "unicode-width", -] - -[[package]] -name = "com-rs" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf43edc576402991846b093a7ca18a3477e0ef9c588cde84964b5d3e43016642" - -[[package]] -name = "concurrent-queue" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "const_panic" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6051f239ecec86fde3410901ab7860d458d160371533842974fc61f96d15879b" - [[package]] name = "core-foundation" version = "0.9.3" @@ -460,7 +158,7 @@ dependencies = [ "bitflags", "core-foundation", "core-graphics-types", - "foreign-types 0.3.2", + "foreign-types", "libc", ] @@ -472,19 +170,7 @@ checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" dependencies = [ "bitflags", "core-foundation", - "foreign-types 0.3.2", - "libc", -] - -[[package]] -name = "core-text" -version = "19.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d74ada66e07c1cefa18f8abfba765b486f250de2e4a999e5727fc0dd4b4a25" -dependencies = [ - "core-foundation", - "core-graphics", - "foreign-types 0.3.2", + "foreign-types", "libc", ] @@ -497,124 +183,12 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "crossbeam-channel" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" -dependencies = [ - "cfg-if", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" -dependencies = [ - "cfg-if", - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" -dependencies = [ - "autocfg", - "cfg-if", - "crossbeam-utils", - "memoffset 0.8.0", - "scopeguard", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossfont" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21fd3add36ea31aba1520aa5288714dd63be506106753226d0eb387a93bc9c45" -dependencies = [ - "cocoa", - "core-foundation", - "core-foundation-sys", - "core-graphics", - "core-text", - "dwrote", - "foreign-types 0.5.0", - "freetype-rs", - "libc", - "log", - "objc", - "once_cell", - "pkg-config", - "servo-fontconfig", - "winapi", -] - [[package]] name = "cty" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" -[[package]] -name = "d3d12" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8f0de2f5a8e7bd4a9eec0e3c781992a4ce1724f68aec7d7a3715344de8b39da" -dependencies = [ - "bitflags", - "libloading", - "winapi", -] - -[[package]] -name = "darling" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 1.0.109", -] - -[[package]] -name = "darling_macro" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" -dependencies = [ - "darling_core", - "quote", - "syn 1.0.109", -] - [[package]] name = "dirs-next" version = "2.0.0" @@ -636,135 +210,12 @@ dependencies = [ "winapi", ] -[[package]] -name = "dispatch" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" - -[[package]] -name = "dlib" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1b7517328c04c2aa68422fc60a41b92208182142ed04a25879c26c8f878794" -dependencies = [ - "libloading", -] - -[[package]] -name = "downcast-rs" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" - -[[package]] -name = "dwrote" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439a1c2ba5611ad3ed731280541d36d2e9c4ac5e7fb818a27b604bdc5a6aa65b" -dependencies = [ - "lazy_static", - "libc", - "serde", - "serde_derive", - "winapi", - "wio", -] - [[package]] name = "either" version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" -[[package]] -name = "encase" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a516181e9a36e8982cb37933c5e7dba638c42938cacde46ee4e5b4156f881b9" -dependencies = [ - "const_panic", - "encase_derive", - "glam", - "thiserror", -] - -[[package]] -name = "encase_derive" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5b802412eea315f29f2bb2da3a5963cd6121f56eaa06aebcdc0c54eea578f22" -dependencies = [ - "encase_derive_impl", -] - -[[package]] -name = "encase_derive_impl" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f2f4de457d974f548d2c2a16f709ebd81013579e543bd1a9b19ced88132c2cf" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "errno" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "error-code" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21" -dependencies = [ - "libc", - "str-buf", -] - -[[package]] -name = "euclid" -version = "0.22.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f253bc5c813ca05792837a0ff4b3a580336b224512d48f7eda1d7dd9210787" -dependencies = [ - "num-traits", -] - -[[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - -[[package]] -name = "expat-sys" -version = "2.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658f19728920138342f68408b7cf7644d90d4784353d8ebc32e7e8663dbe45fa" -dependencies = [ - "cmake", - "pkg-config", -] - [[package]] name = "expect-dialog" version = "1.0.0" @@ -775,30 +226,13 @@ dependencies = [ ] [[package]] -name = "fastrand" -version = "1.9.0" +name = "field-offset" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" dependencies = [ - "instant", -] - -[[package]] -name = "fdeflate" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" -dependencies = [ - "simd-adler32", -] - -[[package]] -name = "find-crate" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59a98bbaacea1c0eb6a0876280051b892eb73594fd90cf3b20e9c817029c57d2" -dependencies = [ - "toml", + "memoffset 0.9.0", + "rustc_version", ] [[package]] @@ -808,14 +242,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" dependencies = [ "crc32fast", - "miniz_oxide 0.7.1", + "miniz_oxide", ] [[package]] -name = "fnv" -version = "1.0.7" +name = "flume" +version = "0.10.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" +dependencies = [ + "futures-core", + "futures-sink", + "nanorand", + "pin-project", + "spin", +] [[package]] name = "foreign-types" @@ -823,28 +264,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" dependencies = [ - "foreign-types-shared 0.1.1", -] - -[[package]] -name = "foreign-types" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" -dependencies = [ - "foreign-types-macros", - "foreign-types-shared 0.3.1", -] - -[[package]] -name = "foreign-types-macros" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.18", + "foreign-types-shared", ] [[package]] @@ -854,32 +274,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] -name = "foreign-types-shared" -version = "0.3.1" +name = "fragile" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" - -[[package]] -name = "freetype-rs" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74eadec9d0a5c28c54bb9882e54787275152a4e36ce206b45d7451384e5bf5fb" -dependencies = [ - "bitflags", - "freetype-sys", - "libc", -] - -[[package]] -name = "freetype-sys" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a37d4011c0cc628dfa766fcc195454f4b068d7afdc2adfd28861191d866e731a" -dependencies = [ - "cmake", - "libc", - "pkg-config", -] +checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] name = "futures" @@ -921,7 +319,6 @@ dependencies = [ "futures-core", "futures-task", "futures-util", - "num_cpus", ] [[package]] @@ -930,21 +327,6 @@ version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" -[[package]] -name = "futures-lite" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" -dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "memchr", - "parking", - "pin-project-lite", - "waker-fn", -] - [[package]] name = "futures-macro" version = "0.3.28" @@ -987,22 +369,63 @@ dependencies = [ ] [[package]] -name = "fxhash" -version = "0.2.1" +name = "gdk-pixbuf" +version = "0.17.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +checksum = "695d6bc846438c5708b07007537b9274d883373dd30858ca881d7d71b5540717" dependencies = [ - "byteorder", + "bitflags", + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", + "once_cell", ] [[package]] -name = "gethostname" -version = "0.2.3" +name = "gdk-pixbuf-sys" +version = "0.17.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +checksum = "9285ec3c113c66d7d0ab5676599176f1f42f4944ca1b581852215bf5694870cb" dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", "libc", - "winapi", + "system-deps", +] + +[[package]] +name = "gdk4" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3abf96408a26e3eddf881a7f893a1e111767137136e347745e8ea6ed12731ff" +dependencies = [ + "bitflags", + "cairo-rs", + "gdk-pixbuf", + "gdk4-sys", + "gio", + "glib", + "libc", + "pango", +] + +[[package]] +name = "gdk4-sys" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc92aa1608c089c49393d014c38ac0390d01e4841e1fedaa75dbcef77aaed64" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps", ] [[package]] @@ -1012,132 +435,231 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi", -] - -[[package]] -name = "gimli" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" - -[[package]] -name = "glam" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "518faa5064866338b013ff9b2350dc318e14cc4fcd6cb8206d7e7c9886c98815" - -[[package]] -name = "glow" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "807edf58b70c0b5b2181dd39fe1839dbdb3ba02645630dc5f753e23da307f762" -dependencies = [ - "js-sys", - "slotmap", "wasm-bindgen", - "web-sys", ] [[package]] -name = "glyph_brush" -version = "0.7.7" +name = "gio" +version = "0.17.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4edefd123f28a0b1d41ec4a489c2b43020b369180800977801611084f342978d" -dependencies = [ - "glyph_brush_draw_cache", - "glyph_brush_layout", - "ordered-float", - "rustc-hash", - "twox-hash", -] - -[[package]] -name = "glyph_brush_draw_cache" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6010675390f6889e09a21e2c8b575b3ee25667ea8237a8d59423f73cb8c28610" -dependencies = [ - "ab_glyph", - "crossbeam-channel", - "crossbeam-deque", - "linked-hash-map", - "rayon", - "rustc-hash", -] - -[[package]] -name = "glyph_brush_layout" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc32c2334f00ca5ac3695c5009ae35da21da8c62d255b5b96d56e2597a637a38" -dependencies = [ - "ab_glyph", - "approx", - "xi-unicode", -] - -[[package]] -name = "gpu-alloc" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22beaafc29b38204457ea030f6fb7a84c9e4dd1b86e311ba0542533453d87f62" +checksum = "a6973e92937cf98689b6a054a9e56c657ed4ff76de925e36fc331a15f0c5d30a" dependencies = [ "bitflags", - "gpu-alloc-types", -] - -[[package]] -name = "gpu-alloc-types" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54804d0d6bc9d7f26db4eaec1ad10def69b599315f487d32c334a80d1efe67a5" -dependencies = [ - "bitflags", -] - -[[package]] -name = "gpu-allocator" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce95f9e2e11c2c6fadfce42b5af60005db06576f231f5c92550fdded43c423e8" -dependencies = [ - "backtrace", - "log", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "gio-sys", + "glib", + "libc", + "once_cell", + "pin-project-lite", + "smallvec", "thiserror", +] + +[[package]] +name = "gio-sys" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ccf87c30a12c469b6d958950f6a9c09f2be20b7773f7e70d20b867fdf2628c3" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", "winapi", - "windows", ] [[package]] -name = "gpu-descriptor" -version = "0.2.3" +name = "glib" +version = "0.17.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b0c02e1ba0bdb14e965058ca34e09c020f8e507a760df1121728e0aef68d57a" +checksum = "d3fad45ba8d4d2cea612b432717e834f48031cd8853c8aaf43b2c79fec8d144b" dependencies = [ "bitflags", - "gpu-descriptor-types", - "hashbrown", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "futures-util", + "gio-sys", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "memchr", + "once_cell", + "smallvec", + "thiserror", ] [[package]] -name = "gpu-descriptor-types" -version = "0.1.1" +name = "glib-macros" +version = "0.17.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "363e3677e55ad168fef68cf9de3a4a310b53124c5e784c53a1d70e92d23f2126" +checksum = "eca5c79337338391f1ab8058d6698125034ce8ef31b72a442437fa6c8580de26" +dependencies = [ + "anyhow", + "heck", + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "glib-sys" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d80aa6ea7bba0baac79222204aa786a6293078c210abe69ef1336911d4bdc4f0" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "gobject-sys" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd34c3317740a6358ec04572c1bcfd3ac0b5b6529275fae255b237b314bb8062" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "graphene-rs" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "def4bb01265b59ed548b05455040d272d989b3012c42d4c1bbd39083cb9b40d9" +dependencies = [ + "glib", + "graphene-sys", + "libc", +] + +[[package]] +name = "graphene-sys" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1856fc817e6a6675e36cea0bd9a3afe296f5d9709d1e2d3182803ac77f0ab21d" +dependencies = [ + "glib-sys", + "libc", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gsk4" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f01ef44fa7cac15e2da9978529383e6bee03e570ba5bf7036b4c10a15cc3a3c" dependencies = [ "bitflags", + "cairo-rs", + "gdk4", + "glib", + "graphene-rs", + "gsk4-sys", + "libc", + "pango", ] [[package]] -name = "guillotiere" -version = "0.6.2" +name = "gsk4-sys" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782" +checksum = "c07a84fb4dcf1323d29435aa85e2f5f58bef564342bef06775ec7bd0da1f01b0" dependencies = [ - "euclid", - "svg_fmt", + "cairo-sys-rs", + "gdk4-sys", + "glib-sys", + "gobject-sys", + "graphene-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "gtk4" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b28a32a04cd75cef14a0983f8b0c669e0fe152a0a7725accdeb594e2c764c88b" +dependencies = [ + "bitflags", + "cairo-rs", + "field-offset", + "futures-channel", + "gdk-pixbuf", + "gdk4", + "gio", + "glib", + "graphene-rs", + "gsk4", + "gtk4-macros", + "gtk4-sys", + "libc", + "once_cell", + "pango", +] + +[[package]] +name = "gtk4-macros" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a4d6b61570f76d3ee542d984da443b1cd69b6105264c61afec3abed08c2500f" +dependencies = [ + "anyhow", + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "gtk4-sys" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f8283f707b07e019e76c7f2934bdd4180c277e08aa93f4c0d8dd07b7a34e22f" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk4-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "graphene-sys", + "gsk4-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "gvdb" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00421b382029e13501f36b7243dd05c3e7caa92d252790c3492e5fc7caca165b" +dependencies = [ + "byteorder", + "flate2", + "lazy_static", + "memmap2", + "quick-xml", + "safe-transmute", + "serde", + "serde_json", + "walkdir", + "zvariant", ] [[package]] @@ -1145,24 +667,12 @@ name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -dependencies = [ - "ahash", -] [[package]] -name = "hassle-rs" -version = "0.9.0" +name = "heck" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90601c6189668c7345fc53842cb3f3a3d872203d523be1b3cb44a36a3e62fb85" -dependencies = [ - "bitflags", - "com-rs", - "libc", - "libloading", - "thiserror", - "widestring", - "winapi", -] +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" @@ -1173,154 +683,6 @@ dependencies = [ "libc", ] -[[package]] -name = "hermit-abi" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" - -[[package]] -name = "hexf-parse" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" - -[[package]] -name = "iced" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efbddf356d01e9d41cd394a9d04d62bfd89650a30f12fda5839cabb8c4591c88" -dependencies = [ - "iced_core", - "iced_futures", - "iced_graphics", - "iced_native", - "iced_wgpu", - "iced_winit", - "thiserror", -] - -[[package]] -name = "iced_aw" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0068dfea60d5767a8e15d691c425c550a8e9e06b8d9cea559a26a3ccb4b6d77" -dependencies = [ - "iced_graphics", - "iced_native", - "iced_style", -] - -[[package]] -name = "iced_core" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11e1942e28dedee756cc27e67e7a838cdc1e59fb6bf9627ec9f709ab3b135782" -dependencies = [ - "bitflags", - "instant", - "palette", -] - -[[package]] -name = "iced_futures" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "215d51fa4f70dbb63775d7141243c4d98d4d525d8949695601f8fbac7dcbc04e" -dependencies = [ - "futures", - "log", - "smol", - "wasm-bindgen-futures", - "wasm-timer", -] - -[[package]] -name = "iced_graphics" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "338a6aff7db906537074ad0fe8b720cfdb9512cdfea43c628c76bd1cf50fdcc0" -dependencies = [ - "bitflags", - "bytemuck", - "glam", - "iced_native", - "iced_style", - "log", - "raw-window-handle 0.5.2", - "thiserror", -] - -[[package]] -name = "iced_native" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d012eb06da490fe46a695b39721c20da9643f35cf2ecb9d30618fdeb96170616" -dependencies = [ - "iced_core", - "iced_futures", - "iced_style", - "num-traits", - "thiserror", - "twox-hash", - "unicode-segmentation", -] - -[[package]] -name = "iced_style" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e37333dc2991201140302cd0d4cea051bd37ca3671d5008ec85df86d232ff30" -dependencies = [ - "iced_core", - "once_cell", - "palette", -] - -[[package]] -name = "iced_wgpu" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478803c56061f567ce5ddf223b20d11d3c118cc46bb0d0552370dc65cdc4cb9c" -dependencies = [ - "bitflags", - "bytemuck", - "encase", - "futures", - "glam", - "glyph_brush", - "guillotiere", - "iced_graphics", - "iced_native", - "log", - "raw-window-handle 0.5.2", - "wgpu", - "wgpu_glyph", -] - -[[package]] -name = "iced_winit" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a59ea3a85149a6a1f9e92b6c740ce90f04e5c7d848cfd05742336863fceb955" -dependencies = [ - "iced_futures", - "iced_graphics", - "iced_native", - "log", - "thiserror", - "web-sys", - "winapi", - "window_clipboard", - "winit", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - [[package]] name = "indexmap" version = "1.9.3" @@ -1331,41 +693,12 @@ dependencies = [ "hashbrown", ] -[[package]] -name = "instant" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi 0.3.1", - "libc", - "windows-sys 0.48.0", -] - [[package]] name = "itoa" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" -[[package]] -name = "jni-sys" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" - [[package]] name = "js-sys" version = "0.3.63" @@ -1375,51 +708,51 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "khronos-egl" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c2352bd1d0bceb871cb9d40f24360c8133c11d7486b68b5381c1dd1a32015e3" -dependencies = [ - "libc", - "libloading", - "pkg-config", -] - [[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +[[package]] +name = "libadwaita" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ab9c0843f9f23ff25634df2743690c3a1faffe0a190e60c490878517eb81abf" +dependencies = [ + "bitflags", + "gdk-pixbuf", + "gdk4", + "gio", + "glib", + "gtk4", + "libadwaita-sys", + "libc", + "pango", +] + +[[package]] +name = "libadwaita-sys" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4231cb2499a9f0c4cdfa4885414b33e39901ddcac61150bc0bb4ff8a57ede404" +dependencies = [ + "gdk4-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk4-sys", + "libc", + "pango-sys", + "system-deps", +] + [[package]] name = "libc" version = "0.2.145" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc86cde3ff845662b8f4ef6cb50ea0e20c524eb3d29ae048287e06a1b3fa6a81" -[[package]] -name = "libloading" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" -dependencies = [ - "cfg-if", - "winapi", -] - -[[package]] -name = "linked-hash-map" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" - -[[package]] -name = "linux-raw-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" - [[package]] name = "lock_api" version = "0.4.9" @@ -1460,15 +793,6 @@ dependencies = [ "libc", ] -[[package]] -name = "memoffset" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" -dependencies = [ - "autocfg", -] - [[package]] name = "memoffset" version = "0.7.1" @@ -1480,42 +804,13 @@ dependencies = [ [[package]] name = "memoffset" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] -[[package]] -name = "metal" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de11355d1f6781482d027a3b4d4de7825dcedb197bf573e0596d00008402d060" -dependencies = [ - "bitflags", - "block", - "core-graphics-types", - "foreign-types 0.3.2", - "log", - "objc", -] - -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - -[[package]] -name = "miniz_oxide" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" -dependencies = [ - "adler", -] - [[package]] name = "miniz_oxide" version = "0.7.1" @@ -1523,39 +818,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" dependencies = [ "adler", - "simd-adler32", ] [[package]] -name = "mio" -version = "0.8.8" +name = "nanorand" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" dependencies = [ - "libc", - "log", - "wasi", - "windows-sys 0.48.0", -] - -[[package]] -name = "naga" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c3d4269bcb7d50121097702fde1afb75f4ea8083aeb7a55688dcf289a853271" -dependencies = [ - "bit-set", - "bitflags", - "codespan-reporting", - "hexf-parse", - "indexmap", - "log", - "num-traits", - "rustc-hash", - "spirv", - "termcolor", - "thiserror", - "unicode-xid", + "getrandom", ] [[package]] @@ -1572,109 +843,13 @@ dependencies = [ "objc-foundation", "objc_id", "once_cell", - "raw-window-handle 0.4.3", + "raw-window-handle", "thiserror", "wfd", "which", "winapi", ] -[[package]] -name = "ndk" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" -dependencies = [ - "bitflags", - "jni-sys", - "ndk-sys", - "num_enum", - "raw-window-handle 0.5.2", - "thiserror", -] - -[[package]] -name = "ndk-context" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" - -[[package]] -name = "ndk-glue" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0434fabdd2c15e0aab768ca31d5b7b333717f03cf02037d5a0a3ff3c278ed67f" -dependencies = [ - "libc", - "log", - "ndk", - "ndk-context", - "ndk-macro", - "ndk-sys", - "once_cell", - "parking_lot 0.12.1", -] - -[[package]] -name = "ndk-macro" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0df7ac00c4672f9d5aece54ee3347520b7e20f158656c7db2e6de01902eb7a6c" -dependencies = [ - "darling", - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ndk-sys" -version = "0.4.1+23.1.7779620" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" -dependencies = [ - "jni-sys", -] - -[[package]] -name = "nix" -version = "0.22.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624faf" -dependencies = [ - "bitflags", - "cc", - "cfg-if", - "libc", - "memoffset 0.6.5", -] - -[[package]] -name = "nix" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" -dependencies = [ - "bitflags", - "cfg-if", - "libc", - "memoffset 0.6.5", -] - -[[package]] -name = "nix" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" -dependencies = [ - "autocfg", - "bitflags", - "cfg-if", - "libc", - "memoffset 0.6.5", -] - [[package]] name = "nix" version = "0.26.2" @@ -1689,56 +864,16 @@ dependencies = [ "static_assertions", ] -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - -[[package]] -name = "num-traits" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" -dependencies = [ - "autocfg", -] - [[package]] name = "num_cpus" version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi", "libc", ] -[[package]] -name = "num_enum" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" -dependencies = [ - "num_enum_derive", -] - -[[package]] -name = "num_enum_derive" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "objc" version = "0.2.7" @@ -1746,7 +881,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" dependencies = [ "malloc_buf", - "objc_exception", ] [[package]] @@ -1760,15 +894,6 @@ dependencies = [ "objc_id", ] -[[package]] -name = "objc_exception" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" -dependencies = [ - "cc", -] - [[package]] name = "objc_id" version = "0.1.1" @@ -1778,15 +903,6 @@ dependencies = [ "objc", ] -[[package]] -name = "object" -version = "0.30.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439" -dependencies = [ - "memchr", -] - [[package]] name = "once_cell" version = "1.17.2" @@ -1794,147 +910,49 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9670a07f94779e00908f3e686eab508878ebb390ba6e604d3a284c00e8d0487b" [[package]] -name = "ordered-float" -version = "3.7.0" +name = "pango" +version = "0.17.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fc2dbde8f8a79f2102cc474ceb0ad68e3b80b85289ea62389b60e66777e4213" +checksum = "35be456fc620e61f62dff7ff70fbd54dcbaf0a4b920c0f16de1107c47d921d48" dependencies = [ - "num-traits", + "bitflags", + "gio", + "glib", + "libc", + "once_cell", + "pango-sys", ] [[package]] -name = "owned_ttf_parser" -version = "0.19.0" +name = "pango-sys" +version = "0.17.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "706de7e2214113d63a8238d1910463cfce781129a6f263d13fdb09ff64355ba4" +checksum = "3da69f9f3850b0d8990d462f8c709561975e95f689c1cdf0fecdebde78b35195" dependencies = [ - "ttf-parser", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", ] [[package]] -name = "palette" -version = "0.6.1" +name = "pin-project" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f9cd68f7112581033f157e56c77ac4a5538ec5836a2e39284e65bd7d7275e49" +checksum = "c95a7476719eab1e366eaf73d0260af3021184f18177925b07f54b30089ceead" dependencies = [ - "approx", - "num-traits", - "palette_derive", - "phf", + "pin-project-internal", ] [[package]] -name = "palette_derive" -version = "0.6.1" +name = "pin-project-internal" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05eedf46a8e7c27f74af0c9cfcdb004ceca158cb1b918c6f68f8d7a549b3e427" +checksum = "39407670928234ebc5e6e580247dd567ad73a3578460c5990f9503df207e8f07" dependencies = [ - "find-crate", "proc-macro2", "quote", - "syn 1.0.109", -] - -[[package]] -name = "parking" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e" - -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.6", -] - -[[package]] -name = "parking_lot" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" -dependencies = [ - "lock_api", - "parking_lot_core 0.9.7", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" -dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall", - "smallvec", - "winapi", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-sys 0.45.0", -] - -[[package]] -name = "percent-encoding" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" - -[[package]] -name = "phf" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928c6535de93548188ef63bb7c4036bd415cd8f36ad25af44b9789b2ee72a48c" -dependencies = [ - "phf_macros", - "phf_shared", -] - -[[package]] -name = "phf_generator" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1181c94580fa345f50f19d738aaa39c0ed30a600d95cb2d3e23f94266f14fbf" -dependencies = [ - "phf_shared", - "rand", -] - -[[package]] -name = "phf_macros" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92aacdc5f16768709a569e913f7451034034178b05bdc8acda226659a3dccc66" -dependencies = [ - "phf_generator", - "phf_shared", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "phf_shared" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fb5f6f826b772a8d4c0394209441e7d37cbbb967ae9c7e0e8134365c9ee676" -dependencies = [ - "siphasher", + "syn 2.0.18", ] [[package]] @@ -1955,41 +973,6 @@ version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" -[[package]] -name = "png" -version = "0.17.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaeebc51f9e7d2c150d3f3bfeb667f2aa985db5ef1e3d212847bdedb488beeaa" -dependencies = [ - "bitflags", - "crc32fast", - "fdeflate", - "flate2", - "miniz_oxide 0.7.1", -] - -[[package]] -name = "polling" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" -dependencies = [ - "autocfg", - "bitflags", - "cfg-if", - "concurrent-queue", - "libc", - "log", - "pin-project-lite", - "windows-sys 0.48.0", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - [[package]] name = "proc-macro-crate" version = "1.3.1" @@ -2000,6 +983,30 @@ dependencies = [ "toml_edit", ] +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + [[package]] name = "proc-macro2" version = "1.0.59" @@ -2010,10 +1017,14 @@ dependencies = [ ] [[package]] -name = "profiling" -version = "1.0.8" +name = "quick-xml" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "332cd62e95873ea4f41f3dfd6bbbfc5b52aec892d7e8d534197c4720a0bbbab2" +checksum = "ffc053f057dd768a56f62cd7e434c42c831d296968997e9ac1f76ea7c2d14c41" +dependencies = [ + "memchr", + "serde", +] [[package]] name = "quote" @@ -2024,52 +1035,6 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "range-alloc" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8a99fddc9f0ba0a85884b8d14e3592853e787d581ca1816c91349b10e4eeab" - -[[package]] -name = "raw-window-handle" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28f55143d0548dad60bb4fbdc835a3d7ac6acc3324506450c5fdd6e42903a76" -dependencies = [ - "libc", - "raw-window-handle 0.4.3", -] - [[package]] name = "raw-window-handle" version = "0.4.3" @@ -2079,34 +1044,6 @@ dependencies = [ "cty", ] -[[package]] -name = "raw-window-handle" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" - -[[package]] -name = "rayon" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" -dependencies = [ - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-utils", - "num_cpus", -] - [[package]] name = "redox_syscall" version = "0.2.16" @@ -2128,47 +1065,76 @@ dependencies = [ ] [[package]] -name = "renderdoc-sys" -version = "0.7.1" +name = "relm4" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1382d1f0a252c4bf97dc20d979a2fdd05b024acd7c2ed0f7595d7817666a157" +checksum = "c80ef6bb7a142b6aaa01b96961c33127fffcda4741eb0ad82f07e18c9186681d" +dependencies = [ + "async-trait", + "flume", + "fragile", + "futures", + "gtk4", + "libadwaita", + "once_cell", + "relm4-macros", + "tokio", + "tracing", +] + +[[package]] +name = "relm4-components" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29a7265580b2a185254b9f129bff5fdca11a00730a6e075628c93502a4eced81" +dependencies = [ + "once_cell", + "relm4", + "tracker", +] + +[[package]] +name = "relm4-icons" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e28bcc718a587bcfa31b034e0b8f4efe5b70e945b7de9d7d154b45357a0dadc" +dependencies = [ + "gtk4", + "gvdb", +] + +[[package]] +name = "relm4-macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "848a6e1b4954b7aa8155d4a234516d46ed543a614666adc1ea73a922bc841e2a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.18", +] [[package]] name = "rex2" version = "0.1.0" dependencies = [ "expect-dialog", - "iced", - "iced_aw", - "nix 0.26.2", + "nix", + "relm4", + "relm4-components", + "relm4-icons", "serde", "serde_json", + "tracker", ] [[package]] -name = "rustc-demangle" -version = "0.1.23" +name = "rustc_version" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" - -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustix" -version = "0.37.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acf8729d8542766f1b2cf77eb034d52f40d375bb8b615d0b147089946e16613d" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "bitflags", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys", - "windows-sys 0.48.0", + "semver", ] [[package]] @@ -2178,19 +1144,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" [[package]] -name = "safe_arch" -version = "0.5.2" +name = "safe-transmute" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ff3d6d9696af502cc3110dacce942840fb06ff4514cad92236ecc455f2ce05" -dependencies = [ - "bytemuck", -] +checksum = "98a01dab6acf992653be49205bdd549f32f17cb2803e8eacf1560bf97259aae8" [[package]] -name = "scoped-tls" -version = "1.0.1" +name = "same-file" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] [[package]] name = "scopeguard" @@ -2199,16 +1165,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] -name = "sctk-adwaita" -version = "0.4.3" +name = "semver" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61270629cc6b4d77ec1907db1033d5c2e1a404c412743621981a871dc9c12339" -dependencies = [ - "crossfont", - "log", - "smithay-client-toolkit", - "tiny-skia", -] +checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" [[package]] name = "serde" @@ -2242,57 +1202,14 @@ dependencies = [ ] [[package]] -name = "servo-fontconfig" -version = "0.5.1" +name = "serde_spanned" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e3e22fe5fd73d04ebf0daa049d3efe3eae55369ce38ab16d07ddd9ac5c217c" +checksum = "93107647184f6027e3b7dcb2e11034cf95ffa1e3a682c67951963ac69c1c007d" dependencies = [ - "libc", - "servo-fontconfig-sys", + "serde", ] -[[package]] -name = "servo-fontconfig-sys" -version = "5.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36b879db9892dfa40f95da1c38a835d41634b825fbd8c4c418093d53c24b388" -dependencies = [ - "expat-sys", - "freetype-sys", - "pkg-config", -] - -[[package]] -name = "signal-hook" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "732768f1176d21d09e076c23a93123d40bba92d50c4058da34d45c8de8e682b9" -dependencies = [ - "libc", - "signal-hook-registry", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" -dependencies = [ - "libc", -] - -[[package]] -name = "simd-adler32" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f" - -[[package]] -name = "siphasher" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" - [[package]] name = "slab" version = "0.4.8" @@ -2302,15 +1219,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "slotmap" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" -dependencies = [ - "version_check", -] - [[package]] name = "smallvec" version = "1.10.0" @@ -2318,69 +1226,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] -name = "smithay-client-toolkit" -version = "0.16.0" +name = "spin" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f307c47d32d2715eb2e0ece5589057820e0e5e70d07c247d1063e844e107f454" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" dependencies = [ - "bitflags", - "calloop", - "dlib", - "lazy_static", - "log", - "memmap2", - "nix 0.24.3", - "pkg-config", - "wayland-client", - "wayland-cursor", - "wayland-protocols", -] - -[[package]] -name = "smithay-clipboard" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a345c870a1fae0b1b779085e81b51e614767c239e93503588e54c5b17f4b0e8" -dependencies = [ - "smithay-client-toolkit", - "wayland-client", -] - -[[package]] -name = "smol" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13f2b548cd8447f8de0fdf1c592929f70f4fc7039a05e47404b0d096ec6987a1" -dependencies = [ - "async-channel", - "async-executor", - "async-fs", - "async-io", - "async-lock", - "async-net", - "async-process", - "blocking", - "futures-lite", -] - -[[package]] -name = "socket2" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "spirv" -version = "0.2.0+1.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830" -dependencies = [ - "bitflags", - "num-traits", + "lock_api", ] [[package]] @@ -2389,24 +1240,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" -[[package]] -name = "str-buf" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0" - -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "svg_fmt" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb1df15f412ee2e9dfc1c504260fa695c1c3f10fe9f4a6ee2d2184d7d6450e2" - [[package]] name = "syn" version = "1.0.109" @@ -2430,14 +1263,24 @@ dependencies = [ ] [[package]] -name = "termcolor" -version = "1.2.0" +name = "system-deps" +version = "6.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "e5fa6fb9ee296c0dc2df41a656ca7948546d061958115ddb0bcaae43ad0d17d2" dependencies = [ - "winapi-util", + "cfg-expr", + "heck", + "pkg-config", + "toml", + "version-compare", ] +[[package]] +name = "target-lexicon" +version = "0.12.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd1ba337640d60c3e96bc6f0638a939b9c9a7f2c316a1598c279828b3d1dc8c5" + [[package]] name = "thiserror" version = "1.0.40" @@ -2459,37 +1302,27 @@ dependencies = [ ] [[package]] -name = "tiny-skia" -version = "0.7.0" +name = "tokio" +version = "1.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "642680569bb895b16e4b9d181c60be1ed136fa0c9c7f11d004daf053ba89bf82" +checksum = "94d7b1cfd2aa4011f2de74c2c4c63665e27a71006b0a192dcd2710272e73dfa2" dependencies = [ - "arrayref", - "arrayvec 0.5.2", - "bytemuck", - "cfg-if", - "png", - "safe_arch", - "tiny-skia-path", -] - -[[package]] -name = "tiny-skia-path" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c114d32f0c2ee43d585367cb013dfaba967ab9f62b90d9af0d696e955e70fa6c" -dependencies = [ - "arrayref", - "bytemuck", + "autocfg", + "num_cpus", + "pin-project-lite", + "windows-sys", ] [[package]] name = "toml" -version = "0.5.11" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +checksum = "d6135d499e69981f9ff0ef2167955a5333c35e36f6937d382974566b3d5b94ec" dependencies = [ "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", ] [[package]] @@ -2497,6 +1330,9 @@ name = "toml_datetime" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a76a9312f5ba4c2dec6b9161fdf25d87ad8a09256ccea5a556fef03c706a10f" +dependencies = [ + "serde", +] [[package]] name = "toml_edit" @@ -2505,25 +1341,62 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2380d56e8670370eee6566b0bfd4265f65b3f432e8c6d85623f728d4fa31f739" dependencies = [ "indexmap", + "serde", + "serde_spanned", "toml_datetime", "winnow", ] [[package]] -name = "ttf-parser" -version = "0.19.0" +name = "tracing" +version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44dcf002ae3b32cd25400d6df128c5babec3927cd1eb7ce813cfff20eb6c3746" - -[[package]] -name = "twox-hash" -version = "1.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ "cfg-if", - "rand", - "static_assertions", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.18", +] + +[[package]] +name = "tracing-core" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tracker" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff9636d15e370187f6bf55b79ce62ebf4221998bc0ba1774d7fa208b007f6bf8" +dependencies = [ + "tracker-macros", +] + +[[package]] +name = "tracker-macros" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca029746fbe0efda3298205de77bf759d7fef23ac97902641e0b49a623b0455f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.18", ] [[package]] @@ -2533,28 +1406,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" [[package]] -name = "unicode-segmentation" -version = "1.10.1" +name = "version-compare" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" - -[[package]] -name = "unicode-width" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" - -[[package]] -name = "unicode-xid" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" - -[[package]] -name = "vec_map" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" +checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29" [[package]] name = "version_check" @@ -2563,10 +1418,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] -name = "waker-fn" -version = "1.1.0" +name = "walkdir" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" +checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +dependencies = [ + "same-file", + "winapi-util", +] [[package]] name = "wasi" @@ -2599,18 +1458,6 @@ dependencies = [ "wasm-bindgen-shared", ] -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d1985d03709c53167ce907ff394f5316aa22cb4e12761295c5dc57dacb6297e" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - [[package]] name = "wasm-bindgen-macro" version = "0.2.86" @@ -2640,104 +1487,6 @@ version = "0.2.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed9d5b4305409d1fc9482fee2d7f9bcbf24b3972bf59817ef757e23982242a93" -[[package]] -name = "wasm-timer" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" -dependencies = [ - "futures", - "js-sys", - "parking_lot 0.11.2", - "pin-utils", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "wayland-client" -version = "0.29.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f3b068c05a039c9f755f881dc50f01732214f5685e379829759088967c46715" -dependencies = [ - "bitflags", - "downcast-rs", - "libc", - "nix 0.24.3", - "scoped-tls", - "wayland-commons", - "wayland-scanner", - "wayland-sys", -] - -[[package]] -name = "wayland-commons" -version = "0.29.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8691f134d584a33a6606d9d717b95c4fa20065605f798a3f350d78dced02a902" -dependencies = [ - "nix 0.24.3", - "once_cell", - "smallvec", - "wayland-sys", -] - -[[package]] -name = "wayland-cursor" -version = "0.29.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6865c6b66f13d6257bef1cd40cbfe8ef2f150fb8ebbdb1e8e873455931377661" -dependencies = [ - "nix 0.24.3", - "wayland-client", - "xcursor", -] - -[[package]] -name = "wayland-protocols" -version = "0.29.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6" -dependencies = [ - "bitflags", - "wayland-client", - "wayland-commons", - "wayland-scanner", -] - -[[package]] -name = "wayland-scanner" -version = "0.29.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f4303d8fa22ab852f789e75a967f0a2cdc430a607751c0499bada3e451cbd53" -dependencies = [ - "proc-macro2", - "quote", - "xml-rs", -] - -[[package]] -name = "wayland-sys" -version = "0.29.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be12ce1a3c39ec7dba25594b97b42cb3195d54953ddb9d3d95a7c3902bc6e9d4" -dependencies = [ - "dlib", - "lazy_static", - "pkg-config", -] - -[[package]] -name = "web-sys" -version = "0.3.63" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bdd9ef4e984da1187bf8110c5cf5b845fbc87a23602cdf912386a76fcd3a7c2" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - [[package]] name = "wfd" version = "0.1.7" @@ -2748,118 +1497,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "wgpu" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d745a1b6d91d85c33defbb29f0eee0450e1d2614d987e14bf6baf26009d132d7" -dependencies = [ - "arrayvec 0.7.2", - "cfg-if", - "js-sys", - "log", - "naga", - "parking_lot 0.12.1", - "profiling", - "raw-window-handle 0.5.2", - "smallvec", - "static_assertions", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "wgpu-core", - "wgpu-hal", - "wgpu-types", -] - -[[package]] -name = "wgpu-core" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7131408d940e335792645a98f03639573b0480e9e2e7cddbbab74f7c6d9f3fff" -dependencies = [ - "arrayvec 0.7.2", - "bit-vec", - "bitflags", - "codespan-reporting", - "fxhash", - "log", - "naga", - "parking_lot 0.12.1", - "profiling", - "raw-window-handle 0.5.2", - "smallvec", - "thiserror", - "web-sys", - "wgpu-hal", - "wgpu-types", -] - -[[package]] -name = "wgpu-hal" -version = "0.15.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdcf61a283adc744bb5453dd88ea91f3f86d5ca6b027661c6c73c7734ae0288b" -dependencies = [ - "android_system_properties", - "arrayvec 0.7.2", - "ash", - "bit-set", - "bitflags", - "block", - "core-graphics-types", - "d3d12", - "foreign-types 0.3.2", - "fxhash", - "glow", - "gpu-alloc", - "gpu-allocator", - "gpu-descriptor", - "hassle-rs", - "js-sys", - "khronos-egl", - "libc", - "libloading", - "log", - "metal", - "naga", - "objc", - "parking_lot 0.12.1", - "profiling", - "range-alloc", - "raw-window-handle 0.5.2", - "renderdoc-sys", - "smallvec", - "thiserror", - "wasm-bindgen", - "web-sys", - "wgpu-types", - "winapi", -] - -[[package]] -name = "wgpu-types" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32444e121b0bd00cb02c0de32fde457a9491bd44e03e7a5db6df9b1da2f6f110" -dependencies = [ - "bitflags", - "js-sys", - "web-sys", -] - -[[package]] -name = "wgpu_glyph" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e25440d5f32ec39de49c57c15c2d3f9133a7939b069b5ad07e5afd8b78fb8adc" -dependencies = [ - "bytemuck", - "glyph_brush", - "log", - "wgpu", -] - [[package]] name = "which" version = "4.4.0" @@ -2871,12 +1508,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "widestring" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" - [[package]] name = "winapi" version = "0.3.9" @@ -2902,88 +1533,19 @@ 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.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "015dd4474dc6aa96fe19aae3a24587a088bd90331dba5a5cc60fb3a180234c4d" -dependencies = [ - "clipboard-win", - "clipboard_macos", - "clipboard_wayland", - "clipboard_x11", - "raw-window-handle 0.3.4", - "thiserror", -] - -[[package]] -name = "windows" -version = "0.44.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e745dab35a0c4c77aa3ce42d595e13d2003d6902d6b08c9ef5fc326d08da12b" -dependencies = [ - "windows-targets 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" -dependencies = [ - "windows_aarch64_msvc 0.36.1", - "windows_i686_gnu 0.36.1", - "windows_i686_msvc 0.36.1", - "windows_x86_64_gnu 0.36.1", - "windows_x86_64_msvc 0.36.1", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - [[package]] name = "windows-sys" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.0", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", + "windows-targets", ] [[package]] @@ -2992,162 +1554,57 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" -[[package]] -name = "windows_aarch64_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - [[package]] name = "windows_aarch64_msvc" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" -[[package]] -name = "windows_i686_gnu" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" - -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - [[package]] name = "windows_i686_gnu" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" -[[package]] -name = "windows_i686_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" - -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - [[package]] name = "windows_i686_msvc" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" -[[package]] -name = "windows_x86_64_gnu" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - [[package]] name = "windows_x86_64_gnu" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - [[package]] name = "windows_x86_64_gnullvm" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" -[[package]] -name = "windows_x86_64_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - [[package]] name = "windows_x86_64_msvc" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" -[[package]] -name = "winit" -version = "0.27.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb796d6fbd86b2fd896c9471e6f04d39d750076ebe5680a3958f00f5ab97657c" -dependencies = [ - "bitflags", - "cocoa", - "core-foundation", - "core-graphics", - "dispatch", - "instant", - "libc", - "log", - "mio", - "ndk", - "ndk-glue", - "objc", - "once_cell", - "parking_lot 0.12.1", - "percent-encoding", - "raw-window-handle 0.4.3", - "raw-window-handle 0.5.2", - "sctk-adwaita", - "smithay-client-toolkit", - "wasm-bindgen", - "wayland-client", - "wayland-protocols", - "web-sys", - "windows-sys 0.36.1", - "x11-dl", -] - [[package]] name = "winnow" version = "0.4.6" @@ -3158,54 +1615,38 @@ dependencies = [ ] [[package]] -name = "wio" -version = "0.2.2" +name = "zvariant" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5" -dependencies = [ - "winapi", -] - -[[package]] -name = "x11-dl" -version = "2.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +checksum = "622cc473f10cef1b0d73b7b34a266be30ebdcfaea40ec297dd8cbda088f9f93c" dependencies = [ + "byteorder", "libc", - "once_cell", - "pkg-config", + "serde", + "static_assertions", + "zvariant_derive", ] [[package]] -name = "x11rb" -version = "0.9.0" +name = "zvariant_derive" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e99be55648b3ae2a52342f9a870c0e138709a3493261ce9b469afe6e4df6d8a" +checksum = "5d9c1b57352c25b778257c661f3c4744b7cefb7fc09dd46909a153cce7773da2" dependencies = [ - "gethostname", - "nix 0.22.3", - "winapi", - "winapi-wsapoll", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", + "zvariant_utils", ] [[package]] -name = "xcursor" -version = "0.3.4" +name = "zvariant_utils" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "463705a63313cd4301184381c5e8042f0a7e9b4bb63653f216311d4ae74690b7" +checksum = "7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200" dependencies = [ - "nom", + "proc-macro2", + "quote", + "syn 1.0.109", ] - -[[package]] -name = "xi-unicode" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a" - -[[package]] -name = "xml-rs" -version = "0.8.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d8f380ae16a37b30e6a2cf67040608071384b1450c189e61bea3ff57cde922d" diff --git a/Cargo.toml b/Cargo.toml index 1ba6a45..9f888e8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,14 +7,16 @@ edition = "2021" [dependencies] expect-dialog = "1.0.0" -iced = { version = "0.9.0", features = [ - "smol" -] } -iced_aw = { version = "0.5.2", default-features = false, features = [ - "tab_bar", "tabs", "quad", "modal", "card" -] } nix = "0.26.2" +relm4 = { version = "0.6.0", features = [ + "libadwaita" +] } +relm4-components = "0.6.0" +relm4-icons = { version = "0.6.0", features = [ + "menu", "loupe" +] } serde = { version = "1.0.163", features = [ "derive" ] } serde_json = "1.0.96" +tracker = "0.2.1" diff --git a/src/config.rs b/src/config.rs index e79c36a..bedb552 100644 --- a/src/config.rs +++ b/src/config.rs @@ -2,6 +2,7 @@ use crate::{ constants::CMD_NAME, file_utils::{get_config_dir, get_writer}, }; +use expect_dialog::ExpectDialog; use serde::{Deserialize, Serialize}; use std::{fs::File, io::BufReader}; @@ -49,8 +50,8 @@ fn save_config_to_path(config: &Config, path_s: &String) -> Result<(), serde_jso serde_json::to_writer_pretty(writer, config) } -pub fn save_config(config: &Config) -> Result<(), serde_json::Error> { - save_config_to_path(config, &config_file_path()) +pub fn save_config(config: &Config) { + save_config_to_path(config, &config_file_path()).expect_dialog("Failed to save config"); } #[cfg(test)] diff --git a/src/constants.rs b/src/constants.rs index eddc6e1..cb4a792 100644 --- a/src/constants.rs +++ b/src/constants.rs @@ -1,3 +1,10 @@ pub const APP_NAME: &str = "Rex2"; pub const APP_ID: &str = "org.gabmus.rex2"; pub const CMD_NAME: &str = "rex2"; +pub const VERSION: &str = "0.1"; +pub const REPO_URL: &str = "https://gitlab.com/gabmus/rex2"; +pub const SINGLE_DEVELOPER: &str = "The Rex2 Team"; + +pub fn get_developers() -> Vec { + vec!["Gabriele Musco ".to_string()] +} diff --git a/src/main.rs b/src/main.rs index a2307e1..85ab14d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,6 @@ -use expect_dialog::ExpectDialog; -use iced::{Application, Settings}; -use ui::main_win::MainWin; +use constants::APP_ID; +use relm4::RelmApp; +use ui::app::App; pub mod builders; pub mod config; @@ -15,5 +15,7 @@ pub mod runner; pub mod ui; fn main() { - MainWin::run(Settings::default()).expect_dialog("Application encountered an error"); + let app = RelmApp::new(APP_ID); + relm4_icons::initialize_icons(); + app.run::(()) } diff --git a/src/runner.rs b/src/runner.rs index c9fcde8..30fe330 100644 --- a/src/runner.rs +++ b/src/runner.rs @@ -148,16 +148,25 @@ impl Runner { } } - pub fn get_output(&mut self) -> String { + fn receive_output(&mut self) { loop { match self.receiver.try_recv() { Ok(data) => self.output.push(data), Err(_) => break, }; } + } + + pub fn get_output(&mut self) -> String { + self.receive_output(); self.output.concat() } + pub fn get_rows(&mut self) -> Vec { + self.receive_output(); + self.output.clone() + } + fn save_log(path_s: String, log: &Vec) -> Result<(), std::io::Error> { let mut writer = get_writer(&path_s); let log_s = log.concat(); diff --git a/src/ui/about_dialog.rs b/src/ui/about_dialog.rs new file mode 100644 index 0000000..1b0aac0 --- /dev/null +++ b/src/ui/about_dialog.rs @@ -0,0 +1,42 @@ +use relm4::gtk::traits::GtkWindowExt; +use relm4::prelude::*; +use relm4::{ComponentParts, SimpleComponent}; + +use crate::constants::{APP_NAME, REPO_URL, SINGLE_DEVELOPER, VERSION, get_developers}; + +pub struct AboutDialog {} + +impl SimpleComponent for AboutDialog { + type Init = (); + type Input = (); + type Output = (); + type Root = adw::AboutWindow; + type Widgets = adw::AboutWindow; + + fn init_root() -> Self::Root { + adw::AboutWindow::builder() + .application_name(APP_NAME) + .license_type(gtk::License::Agpl30) + .version(VERSION) + .website(REPO_URL) + .developer_name(SINGLE_DEVELOPER) + .developers(get_developers()) + .modal(true) + .hide_on_close(true) + .build() + } + + fn init( + init: Self::Init, + root: &Self::Root, + sender: relm4::ComponentSender, + ) -> relm4::ComponentParts { + let model = AboutDialog {}; + let widgets = root.clone(); + ComponentParts { model, widgets } + } + + fn update_view(&self, dialog: &mut Self::Widgets, _sender: ComponentSender) { + dialog.present(); + } +} diff --git a/src/ui/app.rs b/src/ui/app.rs new file mode 100644 index 0000000..41db876 --- /dev/null +++ b/src/ui/app.rs @@ -0,0 +1,299 @@ +use std::time::Duration; + +use crate::builders::build_monado::get_build_monado_runner; +use crate::config::{get_config, save_config, Config}; +use crate::constants::APP_NAME; +use crate::profile::Profile; +use crate::profiles::valve_index::valve_index_profile; +use crate::runner::{Runner, RunnerStatus}; +use crate::ui::build_window::BuildWindowMsg; +use crate::ui::debug_view::DebugViewInit; +use crate::ui::main_view::{MainView, MainViewInit, MainViewOutMsg}; +use expect_dialog::ExpectDialog; +use gtk::prelude::*; +use relm4::actions::{ActionGroupName, RelmAction, RelmActionGroup}; +use relm4::gtk::glib; +use relm4::{new_action_group, new_stateful_action, new_stateless_action, prelude::*}; +use relm4::{ComponentParts, ComponentSender, SimpleComponent}; + +use super::about_dialog::AboutDialog; +use super::build_window::BuildWindow; +use super::debug_view::{DebugView, DebugViewMsg}; +use super::main_view::MainViewMsg; + +#[tracker::track] +pub struct App { + enable_debug_view: bool, + + #[tracker::do_not_track] + main_view: Controller, + #[tracker::do_not_track] + debug_view: Controller, + #[tracker::do_not_track] + about_dialog: Controller, + #[tracker::do_not_track] + build_window: Controller, + + #[tracker::do_not_track] + config: Config, + #[tracker::do_not_track] + monado_runner: Option, + #[tracker::do_not_track] + build_runner: Option, + #[tracker::do_not_track] + profiles: Vec, +} + +#[derive(Debug)] +pub enum Msg { + UpdateView, + BuildProfile, + EnableDebugViewChanged(bool), + DoStartStopMonado, + ProfileSelected(String), +} + +impl App { + fn get_profile_by_name(&self, name: &String) -> Option<&Profile> { + for profile in &self.profiles { + if &profile.name == name { + return Some(profile); + } + } + return None; + } + + pub fn get_selected_profile(&self) -> Option<&Profile> { + self.get_profile_by_name(&self.config.selected_profile_name) + } + + pub fn start_monado(&mut self) { + let mut runner = Runner::monado_runner_from_profile( + self.get_selected_profile() + .expect_dialog("Could not find selected profile") + .clone(), + ); + runner.start(); + self.monado_runner = Some(runner); + } +} + +#[relm4::component(pub)] +impl SimpleComponent for App { + type Init = (); + type Input = Msg; + type Output = (); + + view! { + #[root] + adw::ApplicationWindow { + set_title: Some(APP_NAME), + set_default_size: (400, 300), + gtk::Box { + set_orientation: gtk::Orientation::Vertical, + set_hexpand: true, + set_vexpand: true, + gtk::Box { + set_orientation: gtk::Orientation::Horizontal, + set_hexpand: true, + set_vexpand: true, + append: model.main_view.widget(), + append: sep = >k::Separator { + set_orientation: gtk::Orientation::Vertical, + #[track = "model.changed(App::enable_debug_view())"] + set_visible: model.enable_debug_view, + }, + append: model.debug_view.widget(), + // append: model.debug_view.widget(), + } + } + } + } + + fn shutdown(&mut self, widgets: &mut Self::Widgets, output: relm4::Sender) { + match &mut self.monado_runner { + None => {} + Some(runner) => { + runner.terminate(); + } + } + } + + fn update(&mut self, message: Self::Input, sender: ComponentSender) { + self.reset(); + + match message { + Msg::UpdateView => { + match &mut self.monado_runner { + None => {} + Some(runner) => match runner.status() { + RunnerStatus::Running => { + self.debug_view + .sender() + .emit(DebugViewMsg::LogUpdated(runner.get_rows())); + } + _ => {} + }, + }; + match &mut self.build_runner { + None => {} + Some(runner) => match runner.status() { + RunnerStatus::Running => { + self.build_window.sender().emit(BuildWindowMsg::UpdateContent(runner.get_output())); + } + RunnerStatus::Stopped => { + self.build_window.sender().emit(BuildWindowMsg::UpdateCanClose(true)); + } + } + }; + } + Msg::EnableDebugViewChanged(val) => { + self.set_enable_debug_view(val); + self.config.debug_view_enabled = val; + save_config(&self.config); + self.debug_view + .sender() + .emit(DebugViewMsg::EnableDebugViewChanged(val)); + self.main_view + .sender() + .emit(MainViewMsg::EnableDebugViewChanged(val)); + } + Msg::DoStartStopMonado => match &mut self.monado_runner { + None => { + self.debug_view + .sender() + .emit(DebugViewMsg::LogUpdated(vec![])); + self.start_monado(); + self.main_view + .sender() + .emit(MainViewMsg::MonadoActiveChanged(true)); + } + Some(runner) => match runner.status() { + RunnerStatus::Running => { + runner.terminate(); + self.main_view + .sender() + .emit(MainViewMsg::MonadoActiveChanged(false)); + } + RunnerStatus::Stopped => { + self.debug_view + .sender() + .emit(DebugViewMsg::LogUpdated(vec![])); + self.start_monado(); + self.main_view + .sender() + .emit(MainViewMsg::MonadoActiveChanged(true)); + } + }, + }, + Msg::BuildProfile => { + let profile = self + .get_selected_profile() + .expect_dialog("Could not find selected profile"); + let mut runner = get_build_monado_runner(profile.clone()); + runner.start(); + self.build_window.sender().emit(BuildWindowMsg::UpdateTitle("Building Monado".into())); + self.build_window.sender().emit(BuildWindowMsg::UpdateCanClose(false)); + self.build_runner = Some(runner); + }, + Msg::ProfileSelected(prof_name) => { + self.config.selected_profile_name = prof_name; + save_config(&self.config); + } + } + } + + fn init( + _params: Self::Init, + root: &Self::Root, + sender: ComponentSender, + ) -> ComponentParts { + let config = get_config(); + let profiles = vec![valve_index_profile()]; + let model = App { + main_view: MainView::builder() + .launch(MainViewInit { + config: config.clone(), + }) + .forward(sender.input_sender(), |message| match message { + MainViewOutMsg::UpdateView => Msg::UpdateView, + MainViewOutMsg::EnableDebugViewChanged(val) => Msg::EnableDebugViewChanged(val), + MainViewOutMsg::DoStartStopMonado => Msg::DoStartStopMonado, + MainViewOutMsg::ProfileSelected(name) => Msg::ProfileSelected(name), + }), + debug_view: DebugView::builder() + .launch(DebugViewInit { + enable_debug_view: config.debug_view_enabled, + }) + .forward(sender.input_sender(), |message| match message { + _ => Msg::UpdateView, + }), + about_dialog: AboutDialog::builder() + .transient_for(root) + .launch(()) + .detach(), + build_window: BuildWindow::builder() + .transient_for(root) + .launch(()) + .detach(), + enable_debug_view: config.debug_view_enabled, + config, + tracker: 0, + profiles, + monado_runner: None, + build_runner: None, + }; + let widgets = view_output!(); + + let mut actions = RelmActionGroup::::new(); + + let buildprofile_action = { + let buildprofile_sender = model.build_window.sender().clone(); + let this_sender = sender.clone(); + RelmAction::::new_stateless(move |_| { + buildprofile_sender.send(BuildWindowMsg::Present).unwrap(); + this_sender.input_sender().emit(Msg::BuildProfile); + }) + }; + + let about_action = { + let abd_sender = model.about_dialog.sender().clone(); + RelmAction::::new_stateless(move |_| { + abd_sender.send(()).unwrap(); + }) + }; + + let debug_view_toggle_action: RelmAction = { + let debugtoggle_sender = sender.clone(); + RelmAction::::new_stateful( + &model.enable_debug_view, + move |_, state| { + let s = *state; + *state = !s; + debugtoggle_sender.input(Msg::EnableDebugViewChanged(*state)); + }, + ) + }; + + actions.add_action(about_action); + actions.add_action(buildprofile_action); + actions.add_action(debug_view_toggle_action); + + root.insert_action_group(AppActionGroup::NAME, Some(&actions.into_action_group())); + + model.main_view.sender().emit(MainViewMsg::UpdateProfileNames(model.profiles.iter().map(|p| p.clone().name).collect())); + + let timer_sender = sender.clone(); + glib::timeout_add_local(Duration::from_millis(1000), move || { + timer_sender.input(Msg::UpdateView); + return glib::Continue(true); + }); + + ComponentParts { model, widgets } + } +} + +new_action_group!(pub AppActionGroup, "win"); +new_stateless_action!(pub AboutAction, AppActionGroup, "about"); +new_stateless_action!(pub BuildProfileAction, AppActionGroup, "buildprofile"); +new_stateful_action!(pub DebugViewToggleAction, AppActionGroup, "debugviewtoggle", (), bool); diff --git a/src/ui/build_window.rs b/src/ui/build_window.rs new file mode 100644 index 0000000..dfa5552 --- /dev/null +++ b/src/ui/build_window.rs @@ -0,0 +1,130 @@ +use gtk::prelude::*; +use relm4::prelude::*; + +#[tracker::track] +pub struct BuildWindow { + title: String, + content: String, + can_close: bool, + + #[tracker::do_not_track] + pub textbuf: gtk::TextBuffer, + #[tracker::do_not_track] + pub win: Option, + #[tracker::do_not_track] + pub scrolled_win: Option, +} + +#[derive(Debug)] +pub enum BuildWindowMsg { + Present, + UpdateTitle(String), + UpdateContent(String), + UpdateCanClose(bool), +} + +#[relm4::component(pub)] +impl SimpleComponent for BuildWindow { + type Init = (); + type Input = BuildWindowMsg; + type Output = (); + + view! { + #[name(win)] + adw::Window { + set_modal: true, + set_default_size: (520, 400), + gtk::Box { + set_vexpand: true, + set_hexpand: true, + set_orientation: gtk::Orientation::Vertical, + gtk::WindowHandle { + set_vexpand: false, + set_hexpand: true, + adw::HeaderBar { + set_show_end_title_buttons: false, + set_show_start_title_buttons: false, + add_css_class: "flat", + #[wrap(Some)] + set_title_widget: title_label = >k::Label { + #[track = "model.changed(BuildWindow::title())"] + set_label: &model.title, + add_css_class: "title", + }, + } + }, + #[name(scrolled_win)] + gtk::ScrolledWindow { + set_hexpand: true, + set_vexpand: true, + set_margin_all: 12, + add_css_class: "card", + set_overflow: gtk::Overflow::Hidden, + gtk::TextView { + set_hexpand: true, + set_vexpand: true, + set_editable: false, + set_monospace: true, + set_buffer: Some(&model.textbuf), + }, + }, + gtk::Button { + add_css_class: "pill", + set_halign: gtk::Align::Center, + set_label: "Close", + set_margin_all: 12, + #[track = "model.changed(BuildWindow::can_close())"] + set_sensitive: model.can_close, + connect_clicked[win] => move |_| { + win.hide(); + }, + } + } + } + } + + fn update(&mut self, message: Self::Input, sender: ComponentSender) { + self.reset(); + + match message { + BuildWindowMsg::Present => { + self.win.as_ref().unwrap().present(); + }, + BuildWindowMsg::UpdateTitle(t) => { + self.set_title(t); + }, + BuildWindowMsg::UpdateContent(c) => { + self.set_content(c); + self.textbuf.set_text(&self.content); + let sw = self.scrolled_win.as_ref().unwrap().clone(); + let adj = sw.vadjustment(); + // upper means highest value = lowest point in the sw + adj.set_value(adj.upper()); + sw.set_vadjustment(Some(&adj)); + }, + BuildWindowMsg::UpdateCanClose(val) => { + self.set_can_close(val); + } + }; + } + + fn init( + init: Self::Init, + root: &Self::Root, + sender: ComponentSender, + ) -> ComponentParts { + let mut model = BuildWindow { + tracker: 0, + title: "".into(), + content: "".into(), + can_close: false, + textbuf: gtk::TextBuffer::builder().build(), + win: None, + scrolled_win: None, + }; + let widgets = view_output!(); + model.scrolled_win = Some(widgets.scrolled_win.clone()); + model.win = Some(widgets.win.clone()); + ComponentParts { model, widgets } + } +} diff --git a/src/ui/debug_view.rs b/src/ui/debug_view.rs new file mode 100644 index 0000000..5708ef2 --- /dev/null +++ b/src/ui/debug_view.rs @@ -0,0 +1,172 @@ +use gtk::prelude::*; +use relm4::prelude::*; +use relm4::{ComponentSender, SimpleComponent}; +use relm4_icons::icon_name; + +#[derive(Debug)] +pub enum DebugLevel { + Debug, + Info, + Warning, + Error, +} + +impl DebugLevel { + pub fn from_string(s: String) -> Self { + match s.to_lowercase().as_str() { + "debug" => Self::Debug, + "info" => Self::Info, + "warning" => Self::Warning, + "error" => Self::Error, + _ => Self::Debug, + } + } +} + +pub const DEBUG_LEVEL_STRINGS: [&str; 4] = ["Debug", "Info", "Warning", "Error"]; + +#[derive(Debug)] +pub enum DebugViewMsg { + DebugLevelChanged(DebugLevel), + SearchTermChanged(String), + LogUpdated(Vec), + EnableDebugViewChanged(bool), +} + +#[tracker::track] +pub struct DebugView { + #[tracker::do_not_track] + pub debug_level: DebugLevel, + #[tracker::do_not_track] + pub search_term: String, + #[tracker::do_not_track] + pub log: String, + #[tracker::do_not_track] + pub textbuf: gtk::TextBuffer, + #[tracker::do_not_track] + pub scrolled_win: Option, + #[tracker::do_not_track] + pub searchbar: Option, + #[tracker::do_not_track] + pub search_entry: Option, + + pub enable_debug_view: bool, +} + +pub struct DebugViewInit { + pub enable_debug_view: bool, +} + +#[relm4::component(pub)] +impl SimpleComponent for DebugView { + type Init = DebugViewInit; + type Input = DebugViewMsg; + type Output = (); + + view! { + gtk::Box { + set_orientation: gtk::Orientation::Vertical, + set_hexpand: true, + set_vexpand: true, + #[track = "model.changed(DebugView::enable_debug_view())"] + set_visible: model.enable_debug_view, + gtk::WindowHandle { + set_hexpand: true, + set_vexpand: false, + adw::HeaderBar { + #[wrap(Some)] + set_title_widget: title_label = >k::Label { + set_label: "Debug View", + add_css_class: "title", + }, + pack_end: search_toggle = >k::ToggleButton { + set_icon_name: icon_name::LOUPE, + set_tooltip_text: Some("Filter Log"), + }, + pack_start: log_level_dropdown = >k::DropDown::from_strings(&DEBUG_LEVEL_STRINGS) { + }, + }, + }, + #[name(searchbar)] + gtk::SearchBar { + set_hexpand: true, + #[chain(flags(gtk::glib::BindingFlags::BIDIRECTIONAL).build())] + bind_property: ("search-mode-enabled", &search_toggle, "active"), + #[wrap(Some)] + set_child: search_entry = >k::SearchEntry { + set_hexpand: true, + }, + connect_entry: &search_entry, + }, + #[name(scrolled_win)] + gtk::ScrolledWindow { + set_hexpand: true, + set_vexpand: true, + gtk::TextView { + set_hexpand: true, + set_vexpand: true, + set_editable: false, + set_monospace: true, + set_buffer: Some(&model.textbuf) + }, + } + } + } + + fn update(&mut self, message: Self::Input, _sender: ComponentSender) { + self.reset(); + + match message { + DebugViewMsg::DebugLevelChanged(level) => {} + DebugViewMsg::SearchTermChanged(term) => {} + DebugViewMsg::LogUpdated(n_log) => { + let searchbar = self.searchbar.as_ref().unwrap().clone(); + let search_entry = self.search_entry.as_ref().unwrap().clone(); + let mut search_text: String = search_entry.text().into(); + search_text = search_text.trim().to_lowercase(); + if searchbar.is_search_mode() && !search_text.is_empty() { + self.log = n_log + .iter() + .filter(|row| row.to_lowercase().contains(&search_text)) + .map(|s| s.to_string()) + .collect::>() + .concat(); + } else { + self.log = n_log.concat(); + } + self.textbuf.set_text(&self.log); + let sw = self.scrolled_win.as_ref().unwrap().clone(); + let adj = sw.vadjustment(); + // upper means highest value = lowest point in the sw + adj.set_value(adj.upper()); + sw.set_vadjustment(Some(&adj)); + } + DebugViewMsg::EnableDebugViewChanged(val) => self.set_enable_debug_view(val), + } + } + + fn init( + init: Self::Init, + root: &Self::Root, + sender: ComponentSender, + ) -> ComponentParts { + let mut model = DebugView { + tracker: 0, + debug_level: DebugLevel::Debug, + search_term: "".into(), + log: "".into(), + textbuf: gtk::TextBuffer::builder().build(), + enable_debug_view: init.enable_debug_view, + scrolled_win: None, + searchbar: None, + search_entry: None, + }; + + let widgets = view_output!(); + model.scrolled_win = Some(widgets.scrolled_win.clone()); + model.searchbar = Some(widgets.searchbar.clone()); + model.search_entry = Some(widgets.search_entry.clone()); + + ComponentParts { model, widgets } + } +} diff --git a/src/ui/main_view.rs b/src/ui/main_view.rs new file mode 100644 index 0000000..5816404 --- /dev/null +++ b/src/ui/main_view.rs @@ -0,0 +1,141 @@ +use gtk::prelude::*; +use relm4::prelude::*; +use relm4::{SimpleComponent, ComponentSender, ComponentParts}; +use relm4_icons::icon_name; +use crate::config::Config; +use crate::constants::APP_NAME; +use crate::ui::app::{AboutAction, DebugViewToggleAction, BuildProfileAction}; + +#[tracker::track] +pub struct MainView { + monado_active: bool, + enable_debug_view: bool, + profile_names: Vec, +} + +#[derive(Debug)] +pub enum MainViewMsg { + StartStopClicked, + MonadoActiveChanged(bool), + EnableDebugViewChanged(bool), + UpdateProfileNames(Vec), +} + +#[derive(Debug)] +pub enum MainViewOutMsg { + UpdateView, + EnableDebugViewChanged(bool), + DoStartStopMonado, + ProfileSelected(String), +} + +pub struct MainViewInit { + pub config: Config, +} + +#[relm4::component(pub)] +impl SimpleComponent for MainView { + type Init = MainViewInit; + type Input = MainViewMsg; + type Output = MainViewOutMsg; + + menu! { + app_menu: { + section! { + // value inside action is ignored + "_Debug View" => DebugViewToggleAction, + "_Build Profile" => BuildProfileAction, + }, + section! { + "_About" => AboutAction, + } + } + } + + view! { + gtk::Box { + set_orientation: gtk::Orientation::Vertical, + #[track = "model.changed(MainView::enable_debug_view())"] + set_hexpand: !model.enable_debug_view, + set_vexpand: true, + set_size_request: (270, 350), + gtk::WindowHandle { + set_hexpand: true, + set_vexpand: false, + adw::HeaderBar { + #[wrap(Some)] + set_title_widget: title_label = >k::Label { + set_label: APP_NAME, + add_css_class: "title", + }, + pack_end: menu_btn = >k::MenuButton { + set_icon_name: icon_name::MENU, + set_menu_model: Some(&app_menu), + }, + pack_start: profiles_dropdown = >k::DropDown { + set_tooltip_text: Some("Profiles"), + #[track = "model.changed(MainView::profile_names())"] + set_model: Some(&{ + let names: Vec<_> = model.profile_names.iter().map(String::as_str).collect(); + gtk::StringList::new(&names) + }), + }, + #[track = "model.changed(MainView::enable_debug_view())"] + set_show_end_title_buttons: !model.enable_debug_view, + }, + }, + gtk::Box { + set_spacing: 12, + set_margin_all: 12, + gtk::Button { + add_css_class: "pill", + add_css_class: "suggested-action", + add_css_class: "destructive-action", + set_hexpand: true, + set_halign: gtk::Align::Center, + #[track = "model.changed(MainView::monado_active())"] + set_class_active: ("suggested-action", !model.monado_active), + #[track = "model.changed(MainView::monado_active())"] + set_label: match model.monado_active { + true => "Stop", + false => "Start", + }, + connect_clicked[sender] => move |_| { + sender.input(MainViewMsg::StartStopClicked) + } + }, + } + } + } + + fn update(&mut self, message: Self::Input, sender: ComponentSender) { + self.reset(); + + match message { + MainViewMsg::StartStopClicked => { + sender.output(MainViewOutMsg::DoStartStopMonado); + }, + MainViewMsg::MonadoActiveChanged(active) => { + self.set_monado_active(active); + } + MainViewMsg::EnableDebugViewChanged(val) => { + self.set_enable_debug_view(val); + } + MainViewMsg::UpdateProfileNames(names) => { + self.set_profile_names(names); + } + } + } + + fn init(init: Self::Init, root: &Self::Root, sender: ComponentSender) -> ComponentParts { + let model = MainView { + monado_active: false, + enable_debug_view: init.config.debug_view_enabled, + profile_names: vec![], + tracker: 0, + }; + let widgets = view_output!(); + + ComponentParts { model, widgets } + } +} diff --git a/src/ui/main_win.rs b/src/ui/main_win.rs deleted file mode 100644 index faa96d0..0000000 --- a/src/ui/main_win.rs +++ /dev/null @@ -1,300 +0,0 @@ -use super::styles::bordered_container::BorderedContainer; -use crate::{ - builders::build_monado::get_build_monado_runner, - config::{get_config, save_config, Config}, - constants::APP_NAME, - profile::Profile, - profiles::valve_index::valve_index_profile, - runner::{Runner, RunnerStatus}, - ui::widgets::widgets::vseparator, -}; -use expect_dialog::ExpectDialog; -use iced::{ - executor, - theme::{Button, Container}, - time, - widget::{ - button, checkbox, column, container, pick_list, row, scrollable, text, text_input, Space, - }, - Alignment, Application, Command, Element, Length, Padding, Subscription, Theme, -}; -use iced_aw::{Card, Modal}; -use std::{ - cell::Cell, - time::{Duration, Instant}, -}; - -pub struct MainWin { - profiles: Vec, - config: Config, - debug_search_term: String, - monado_runner: Cell, - monado_active: bool, - monado_log: String, - build_monado_runner: Option, - show_build_monado_modal: bool, - build_monado_log: String, -} - -#[derive(Debug, Clone)] -pub enum Message { - Start, - Stop, - Tick, - ProfileChanged(Profile), - EditProfile, - DebugViewChanged(bool), - LogLevelChanged(String), - DebugSearchChanged(String), - LogUpdate(Instant), - InstallMonado, - CloseBuildMonadoModal, -} - -impl MainWin { - fn get_profile_by_name(&self, name: &String) -> Option<&Profile> { - for profile in &self.profiles { - if &profile.name == name { - return Some(profile); - } - } - return None; - } - - fn get_selected_profile(&self) -> Option<&Profile> { - self.get_profile_by_name(&self.config.selected_profile_name) - } - - fn start_monado(&mut self) { - self.monado_runner.get_mut().terminate(); - - let profile = self.get_selected_profile().unwrap(); - - self.monado_runner - .set(Runner::monado_runner_from_profile(profile.clone())); - - self.monado_runner.get_mut().start(); - } - - fn get_monado_log(&mut self) { - self.monado_log = match self.monado_runner.get_mut().status() { - RunnerStatus::Running => self.monado_runner.get_mut().get_output(), - RunnerStatus::Stopped => "Monado service inactive".into(), - } - } - - fn install_monado(&mut self) { - self.build_monado_log = String::new(); - let profile = match self.get_selected_profile() { - None => { - return; - } - Some(p) => p, - }; - self.build_monado_runner = Some(get_build_monado_runner(profile.clone())); - self.build_monado_runner.as_mut().unwrap().start(); - self.show_build_monado_modal = true; - self.build_monado_log = self.build_monado_runner.as_mut().unwrap().get_output(); - } -} - -impl Application for MainWin { - type Message = Message; - type Flags = (); - type Executor = executor::Default; - type Theme = Theme; - - fn new(_flags: Self::Flags) -> (Self, Command) { - let profiles = vec![valve_index_profile()]; - let monado_runner = Cell::new(Runner::monado_runner_from_profile( - profiles.get(0).cloned().unwrap(), - )); - ( - Self { - // TODO: load profiles from disk somehow - profiles, - config: get_config(), - debug_search_term: "".into(), - monado_runner, - monado_active: false, - monado_log: "".into(), - build_monado_runner: None, - show_build_monado_modal: false, - build_monado_log: String::new(), - }, - Command::none(), - ) - } - - fn title(&self) -> String { - return APP_NAME.into(); - } - - fn update(&mut self, msg: Message) -> Command { - match msg { - Message::Start => { - self.start_monado(); - } - Message::Stop => { - self.monado_runner.get_mut().terminate(); - } - Message::ProfileChanged(profile) => { - if self.config.selected_profile_name != profile.name { - self.config.selected_profile_name = profile.name; - save_config(&self.config).expect_dialog("Failed to save config"); - } - } - Message::EditProfile => { - println!("Edit {}", self.get_selected_profile().unwrap()) - } - Message::DebugViewChanged(nval) => { - self.config.debug_view_enabled = nval; - save_config(&self.config).expect_dialog("Failed to save config"); - } - Message::DebugSearchChanged(term) => self.debug_search_term = term, - Message::InstallMonado => { - self.install_monado(); - } - Message::CloseBuildMonadoModal => match &mut self.build_monado_runner { - None => { - self.show_build_monado_modal = false; - } - Some(runner) => match runner.status() { - RunnerStatus::Running => {} - RunnerStatus::Stopped => { - self.show_build_monado_modal = false; - } - }, - }, - Message::LogUpdate(_) => { - self.monado_active = match self.monado_runner.get_mut().status() { - RunnerStatus::Running => true, - RunnerStatus::Stopped => false, - }; - self.get_monado_log(); - if self.show_build_monado_modal { - match &mut self.build_monado_runner { - None => {} - Some(runner) => match runner.status() { - RunnerStatus::Running => { - self.build_monado_log = runner.get_output(); - } - RunnerStatus::Stopped => {} - }, - } - } - } - _ => println!("unhandled"), - }; - Command::none() - } - - fn subscription(&self) -> Subscription { - time::every(Duration::from_millis(500)).map(Message::LogUpdate) - } - - fn view(&self) -> Element { - let debug_view: Element = match self.config.debug_view_enabled { - false => Space::new(Length::Shrink, Length::Shrink).into(), - true => { - let debug_toolbar = container(row![ - pick_list( - vec![ - "Debug".to_string(), - "Info".into(), - "Warning".into(), - "Error".into(), - ], - Some("Debug".into()), - Message::LogLevelChanged - ), - Space::new(Length::Fill, Length::Shrink), - text_input("Search...", self.debug_search_term.as_str()) - .on_input(Message::DebugSearchChanged), - ]) - .style(Container::Custom(Box::new(BorderedContainer))) - .padding(12); - - let view = column![ - // TODO: tab bar - container( - scrollable(text(self.monado_log.clone())) - .height(Length::Fill) - .width(Length::Fill) - ) - // .style(Container::Custom(Box::new(RoundedBorderedContainer))) - .padding(6) - .height(Length::Fill), - debug_toolbar, - ]; - - row![vseparator(), view] - .width(Length::FillPortion(3)) - .into() - } - }; - - let toolbar = container( - row![ - pick_list( - self.profiles.to_vec(), - self.get_selected_profile().cloned(), - Message::ProfileChanged - ), - button("Edit").on_press(Message::EditProfile), - Space::new(Length::Fill, Length::Shrink), - checkbox( - "Debug View", - self.config.debug_view_enabled, - Message::DebugViewChanged - ), - ] - .align_items(Alignment::Center) - .spacing(3), - ) - .padding(12) - .style(Container::Custom(Box::new(BorderedContainer))); - - let monado_view = column![ - match self.monado_active { - true => button("Stop") - .on_press(Message::Stop) - .style(Button::Destructive), - false => button("Start").on_press(Message::Start), - } - .padding(Padding::from([6, 24])), - scrollable( - column![button("DEBUG: install monado").on_press(Message::InstallMonado),] - .spacing(6) - ) // device info goes here - ] - .spacing(12) - .height(Length::Fill) - .padding(12) - .align_items(Alignment::Center); - - let main_view = column![monado_view, toolbar,] - .width(Length::FillPortion(2)) - .height(Length::Fill); - - let win_content = row![main_view, debug_view,]; - - Modal::new(self.show_build_monado_modal, win_content, || { - Card::new( - text("Installing Monado..."), - column![scrollable(text(self.build_monado_log.clone())),].spacing(12), - ) - .foot(row![ - button("Close").on_press(Message::CloseBuildMonadoModal), - ]) - .max_width(600.0) - .max_height(400.0) - .into() - }) - .into() - } - - fn theme(&self) -> Self::Theme { - Theme::Dark - } -} diff --git a/src/ui/mod.rs b/src/ui/mod.rs index b76f701..174fed0 100644 --- a/src/ui/mod.rs +++ b/src/ui/mod.rs @@ -1,3 +1,5 @@ -pub mod main_win; -pub mod widgets; -pub mod styles; +pub mod app; +pub mod main_view; +pub mod about_dialog; +pub mod debug_view; +pub mod build_window;