From 3341fd631630fde4321d1a1ca1b7bc653e2d1cd0 Mon Sep 17 00:00:00 2001 From: Nicola Guerrera Date: Sun, 14 May 2023 21:42:04 +0200 Subject: [PATCH] Modularized and updtaed --- Cargo.lock | 994 ++++++++++++----------------------- Cargo.toml | 9 +- examples/hexagon_launcher.rs | 235 +-------- examples/sirius.rs | 346 ++++++++++-- src/application.rs | 2 +- src/main.rs | 16 +- src/protostar.rs | 201 ------- src/xdg.rs | 10 +- 8 files changed, 656 insertions(+), 1157 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5260cb4..d302d82 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -42,9 +42,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.7.20" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" dependencies = [ "memchr", ] @@ -75,6 +75,55 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "anstream" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is-terminal", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41ed9a86bf92ae6580e0a31281f65a1b1d867c0cc68d5346e2ae128dddfa6a7d" + +[[package]] +name = "anstyle-parse" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e765fd216e48e067936442276d1d57399e37bce53c264d6fefbe298080cb57ee" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "anstyle-wincon" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" +dependencies = [ + "anstyle", + "windows-sys 0.48.0", +] + [[package]] name = "arrayref" version = "0.3.7" @@ -89,13 +138,13 @@ checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" [[package]] name = "async-trait" -version = "0.1.66" +version = "0.1.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b84f9ebcc6c1f5b8cb160f6990096a5c127f423fcb6e1ccc46c370cbdfb75dfc" +checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.16", ] [[package]] @@ -120,7 +169,7 @@ dependencies = [ "cc", "cfg-if", "libc", - "miniz_oxide", + "miniz_oxide 0.6.2", "object", "rustc-demangle", ] @@ -131,12 +180,6 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - [[package]] name = "base64" version = "0.21.0" @@ -146,10 +189,8 @@ checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" [[package]] name = "bit_field" version = "0.10.2" -version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" -checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" [[package]] name = "bitflags" @@ -159,17 +200,15 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bumpalo" -version = "3.12.0" +version = "3.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" +checksum = "3c6ed94e98ecff0c12dd1b04c15ec0d7d9458ca8fe806cea6f12954efe74c63b" [[package]] name = "bytemuck" version = "1.13.1" -version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" -checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" [[package]] name = "byteorder" @@ -180,15 +219,14 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" version = "1.4.0" -version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" [[package]] name = "cached" -version = "0.42.0" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5877db5d1af7fae60d06b5db9430b68056a69b3582a0be8e3691e87654aeb6" +checksum = "bc2fafddf188d13788e7099295a59b99e99b2148ab2195cae454e754cc099925" dependencies = [ "async-trait", "async_once", @@ -210,10 +248,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e10ca87c81aaa3a949dbbe2b5e6c2c45dbc94ba4897e45ea31ff9ec5087be3dc" dependencies = [ "cached_proc_macro_types", - "darling", + "darling 0.14.4", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -225,10 +263,8 @@ checksum = "3a4f925191b4367301851c6d99b09890311d74b0d43f274c0b34c86d308a3663" [[package]] name = "cc" version = "1.0.79" -version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" [[package]] name = "cfg-if" @@ -248,17 +284,15 @@ dependencies = [ "num-traits", "serde", "time 0.1.45", - "serde", - "time 0.1.45", "wasm-bindgen", "winapi", ] [[package]] name = "clap" -version = "4.1.8" +version = "4.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d7ae14b20b94cb02149ed21a86c423859cbe18dc7ed69845cace50e52b40a5" +checksum = "34d21f9bf1b425d2968943631ec91202fe5e837264063503708b83013f8fc938" dependencies = [ "clap_builder", "clap_derive", @@ -267,9 +301,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.2.5" +version = "4.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fdc5d93c358224b4d6867ef1356d740de2303e9892edc06c5340daeccd96bab" +checksum = "914c8c79fb560f238ef6429439a30023c862f7a28e688c58f7203f12b29970bd" dependencies = [ "anstream", "anstyle", @@ -280,24 +314,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.1.8" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44bec8e5c9d09e439c4335b1af0abaab56dcf3b94999a936e1bb47b9134288f0" +checksum = "3f9644cd56d6b87dbe899ef8b053e331c0637664e9e21a33dfcdc36093f5c5c4" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.16", ] [[package]] name = "clap_lex" -version = "0.3.2" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "350b9cf31731f9957399229e9b2adc51eeabdfbe9d71d9a0552275fd12710d09" -dependencies = [ - "os_str_bytes", -] +checksum = "8a2dd5a6fe8c6e3502f568a6353e5273bbb15193ad9a89e457b9970798efbea1" [[package]] name = "cluFlock" @@ -309,16 +340,6 @@ dependencies = [ "winapi", ] -[[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 = "color-eyre" version = "0.6.2" @@ -397,9 +418,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ "cfg-if", "crossbeam-utils", @@ -408,10 +429,8 @@ dependencies = [ [[package]] name = "crossbeam-deque" version = "0.8.3" -version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" dependencies = [ "cfg-if", "crossbeam-epoch", @@ -421,26 +440,21 @@ dependencies = [ [[package]] name = "crossbeam-epoch" version = "0.9.14" -version = "0.9.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" -checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", "memoffset 0.8.0", - "memoffset 0.8.0", "scopeguard", ] [[package]] name = "crossbeam-utils" version = "0.8.15" -version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" -checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" dependencies = [ "cfg-if", ] @@ -451,58 +465,24 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" -[[package]] -name = "cxx" -version = "1.0.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a140f260e6f3f79013b8bfc65e7ce630c9ab4388c6a89c71e07226f49487b72" -dependencies = [ - "cc", - "cxxbridge-flags", - "cxxbridge-macro", - "link-cplusplus", -] - -[[package]] -name = "cxx-build" -version = "1.0.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da6383f459341ea689374bf0a42979739dc421874f112ff26f829b8040b8e613" -dependencies = [ - "cc", - "codespan-reporting", - "once_cell", - "proc-macro2", - "quote", - "scratch", - "syn 2.0.15", -] - -[[package]] -name = "cxxbridge-flags" -version = "1.0.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90201c1a650e95ccff1c8c0bb5a343213bdd317c6e600a93075bca2eff54ec97" - -[[package]] -name = "cxxbridge-macro" -version = "1.0.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b75aed41bb2e6367cae39e6326ef817a851db13c13e4f3263714ca3cfb8de56" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.15", -] - [[package]] name = "darling" version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" dependencies = [ - "darling_core", - "darling_macro", + "darling_core 0.14.4", + "darling_macro 0.14.4", +] + +[[package]] +name = "darling" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0558d22a7b463ed0241e993f76f09f30b126687447751a8638587b864e4b3944" +dependencies = [ + "darling_core 0.20.1", + "darling_macro 0.20.1", ] [[package]] @@ -519,85 +499,40 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "darling_core" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab8bfa2e259f8ee1ce5e97824a3c55ec4404a0d772ca7fa96bf19f0752a046eb" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.16", +] + [[package]] name = "darling_macro" version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" dependencies = [ - "darling_core", + "darling_core 0.14.4", "quote", "syn 1.0.109", ] -[[package]] -name = "darling" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn", -] - [[package]] name = "darling_macro" -version = "0.14.4" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" +checksum = "29a358ff9f12ec09c3e61fef9b5a9902623a695a46a917b07f269bff1445611a" dependencies = [ - "darling_core", + "darling_core 0.20.1", "quote", - "syn", -] - -[[package]] -name = "darling" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn", -] - -[[package]] -name = "darling_macro" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" -dependencies = [ - "darling_core", - "quote", - "syn", + "syn 2.0.16", ] [[package]] @@ -633,7 +568,7 @@ dependencies = [ "libc", "option-ext", "redox_users", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -648,10 +583,8 @@ dependencies = [ [[package]] name = "either" version = "1.8.1" -version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" [[package]] name = "enum_dispatch" @@ -689,21 +622,17 @@ dependencies = [ [[package]] name = "exr" version = "1.6.3" -version = "1.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bdd2162b720141a91a054640662d3edce3d50a944a50ffca5313cd951abb35b4" -checksum = "bdd2162b720141a91a054640662d3edce3d50a944a50ffca5313cd951abb35b4" dependencies = [ "bit_field", "flume", "half 2.2.1", - "half 2.2.1", "lebe", - "miniz_oxide", + "miniz_oxide 0.6.2", "rayon-core", "smallvec", "zune-inflate", - "zune-inflate", ] [[package]] @@ -725,6 +654,15 @@ dependencies = [ "color-maps", ] +[[package]] +name = "fdeflate" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" +dependencies = [ + "simd-adler32", +] + [[package]] name = "file-locker" version = "1.1.2" @@ -742,9 +680,6 @@ checksum = "cda653ca797810c02f7ca4b804b40b8b95ae046eb989d356bce17919a8c25499" dependencies = [ "serde", ] -dependencies = [ - "serde", -] [[package]] name = "flatbuffers" @@ -763,7 +698,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.7.1", ] [[package]] @@ -804,22 +739,13 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - [[package]] name = "fontconfig-parser" version = "0.5.2" -version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ab2e12762761366dcb876ab8b6e0cfa4797ddcd890575919f008b5ba655672a" -checksum = "4ab2e12762761366dcb876ab8b6e0cfa4797ddcd890575919f008b5ba655672a" dependencies = [ "roxmltree", - "roxmltree", ] [[package]] @@ -844,16 +770,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "freedesktop_entry_parser" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db9c27b72f19a99a895f8ca89e2d26e4ef31013376e56fdafef697627306c3e4" -dependencies = [ - "nom", - "thiserror", -] - [[package]] name = "fuchsia-cprng" version = "0.1.1" @@ -884,44 +800,12 @@ dependencies = [ "futures-sink", ] -[[package]] -name = "futures" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" -dependencies = [ - "futures-core", - "futures-sink", -] - [[package]] name = "futures-core" version = "0.3.28" -version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" -[[package]] -name = "futures-io" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" - [[package]] name = "futures-io" version = "0.3.28" @@ -931,7 +815,6 @@ checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" [[package]] name = "futures-sink" version = "0.3.28" -version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" @@ -941,26 +824,6 @@ version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" -[[package]] -name = "futures-util" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" -dependencies = [ - "futures-core", - "futures-sink", - "futures-task", - "pin-project-lite", - "pin-utils", -] -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" - -[[package]] -name = "futures-task" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" - [[package]] name = "futures-util" version = "0.3.28" @@ -1000,19 +863,8 @@ dependencies = [ [[package]] name = "gimli" version = "0.27.2" -version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" -checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" - -[[package]] -name = "glam" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f597d56c1bd55a811a1be189459e8fad2bbc272616375602443bdfb37fa774" -dependencies = [ - "mint", -] [[package]] name = "glam" @@ -1032,10 +884,8 @@ checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" [[package]] name = "half" version = "2.2.1" -version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0" -checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0" dependencies = [ "crunchy", ] @@ -1043,23 +893,15 @@ dependencies = [ [[package]] name = "hashbrown" version = "0.9.1" -name = "hashbrown" -version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" dependencies = [ "ahash 0.4.7", ] -checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" -dependencies = [ - "ahash 0.4.7", -] [[package]] name = "hashbrown" version = "0.12.3" -name = "hashbrown" -version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" @@ -1069,19 +911,6 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" - [[package]] name = "heck" version = "0.4.1" @@ -1109,23 +938,11 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "hermit-abi" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - [[package]] name = "iana-time-zone" -version = "0.1.53" +version = "0.1.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" +checksum = "0722cd7114b7de04316e7ea5456a0bbb20e4adb46fd27a3697adb812cff0f37c" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1137,12 +954,11 @@ dependencies = [ [[package]] name = "iana-time-zone-haiku" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ - "cxx", - "cxx-build", + "cc", ] [[package]] @@ -1151,17 +967,11 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - [[package]] name = "image" -version = "0.24.5" +version = "0.24.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69b7ea949b537b0fd0af141fff8c77690f2ce96f4f41f042ccb6c69c6c965945" +checksum = "527909aa81e20ac3a44803521443a765550f09b5130c2c2fa1ea59c2f8f50a3a" dependencies = [ "bytemuck", "byteorder", @@ -1190,9 +1000,9 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] name = "indexmap" -version = "1.9.2" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", @@ -1210,9 +1020,9 @@ dependencies = [ [[package]] name = "io-lifetimes" -version = "1.0.6" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfa919a82ea574332e2de6e74b4c36e74d41982b335080fa59d4ef31be20fdf3" +checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" dependencies = [ "hermit-abi 0.3.1", "libc", @@ -1221,11 +1031,10 @@ dependencies = [ [[package]] name = "is-terminal" -version = "0.4.4" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b6b32576413a8e69b90e952e4a026476040d81017b80445deda5f2d3921857" +checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" dependencies = [ - "hermit-abi 0.3.1", "hermit-abi 0.3.1", "io-lifetimes", "rustix", @@ -1238,12 +1047,6 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" -[[package]] -name = "itoa" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" - [[package]] name = "jpeg-decoder" version = "0.3.0" @@ -1255,11 +1058,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.61" -version = "0.3.61" +version = "0.3.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" -checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +checksum = "68c16e1bfd491478ab155fd8b4896b86f9ede344949b641e61501e07c2b8b4d5" dependencies = [ "wasm-bindgen", ] @@ -1275,9 +1076,9 @@ dependencies = [ [[package]] name = "kurbo" -version = "0.9.1" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db8c31eaef73f18e0d938785e01ab471ec73e3f90c3389e84335ade689ba953b" +checksum = "d676038719d1c892f91e6e85121550143c75880b42f7feff6d413a078cf91fb3" dependencies = [ "arrayvec", ] @@ -1296,9 +1097,9 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" [[package]] name = "libc" -version = "0.2.140" +version = "0.2.144" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" +checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1" [[package]] name = "linicon" @@ -1323,22 +1124,11 @@ dependencies = [ "rust-ini", ] -[[package]] -name = "link-cplusplus" -version = "1.0.8" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" -checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" -dependencies = [ - "cc", -] - [[package]] name = "linux-raw-sys" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b64f40e5e03e0d54f03845c8197d0291253cdbedfb1cb46b13c2c117554a9f4c" +checksum = "ece97ea872ece730aed82664c424eb4c8291e1ff2480247ccf7409044bc6479f" [[package]] name = "lock_api" @@ -1368,7 +1158,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn", + "syn 2.0.16", ] [[package]] @@ -1398,10 +1188,8 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memmap2" version = "0.5.10" -version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" -checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" dependencies = [ "libc", ] @@ -1415,15 +1203,6 @@ dependencies = [ "autocfg", ] -[[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" @@ -1436,14 +1215,10 @@ dependencies = [ [[package]] name = "memoffset" version = "0.8.0" -name = "memoffset" -version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" -checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" dependencies = [ "autocfg", - "autocfg", ] [[package]] @@ -1452,12 +1227,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" -[[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" @@ -1489,10 +1258,8 @@ dependencies = [ [[package]] name = "mio" version = "0.8.6" -version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" -checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" dependencies = [ "libc", "log", @@ -1521,12 +1288,9 @@ dependencies = [ [[package]] name = "nix" version = "0.25.1" -version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" -checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" dependencies = [ - "autocfg", "autocfg", "bitflags", "cfg-if", @@ -1535,20 +1299,6 @@ dependencies = [ "pin-utils", ] -[[package]] -name = "nix" -version = "0.26.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a" -dependencies = [ - "bitflags", - "cfg-if", - "libc", - "memoffset 0.7.1", - "memoffset 0.6.5", - "pin-utils", -] - [[package]] name = "nix" version = "0.26.2" @@ -1573,16 +1323,6 @@ dependencies = [ "minimal-lexical", ] -[[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 = "nu-ansi-term" version = "0.46.0" @@ -1626,12 +1366,9 @@ dependencies = [ [[package]] name = "num_cpus" version = "1.15.0" -version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" dependencies = [ - "hermit-abi 0.2.6", "hermit-abi 0.2.6", "libc", ] @@ -1639,10 +1376,8 @@ dependencies = [ [[package]] name = "num_enum" version = "0.5.11" -version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" -checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" dependencies = [ "num_enum_derive", ] @@ -1650,10 +1385,8 @@ dependencies = [ [[package]] name = "num_enum_derive" version = "0.5.11" -version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" -checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -1664,10 +1397,8 @@ dependencies = [ [[package]] name = "object" version = "0.30.3" -version = "0.30.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439" -checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439" dependencies = [ "memchr", ] @@ -1675,10 +1406,14 @@ dependencies = [ [[package]] name = "once_cell" version = "1.17.1" -version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "ordered-multimap" @@ -1690,19 +1425,11 @@ dependencies = [ "hashbrown 0.9.1", ] -[[package]] -name = "os_str_bytes" -version = "6.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" - [[package]] name = "ouroboros" version = "0.15.6" -version = "0.15.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1358bd1558bd2a083fed428ffeda486fbfb323e698cdda7794259d592ca72db" -checksum = "e1358bd1558bd2a083fed428ffeda486fbfb323e698cdda7794259d592ca72db" dependencies = [ "aliasable", "ouroboros_macro", @@ -1711,10 +1438,8 @@ dependencies = [ [[package]] name = "ouroboros_macro" version = "0.15.6" -version = "0.15.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7" -checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7" dependencies = [ "Inflector", "proc-macro-error", @@ -1754,7 +1479,6 @@ checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", "parking_lot_core 0.9.7", - "parking_lot_core 0.9.7", ] [[package]] @@ -1774,10 +1498,8 @@ dependencies = [ [[package]] name = "parking_lot_core" version = "0.9.7" -version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" -checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" dependencies = [ "cfg-if", "libc", @@ -1794,22 +1516,22 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project" -version = "1.0.12" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +checksum = "c95a7476719eab1e366eaf73d0260af3021184f18177925b07f54b30089ceead" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.12" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +checksum = "39407670928234ebc5e6e580247dd567ad73a3578460c5990f9503df207e8f07" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.16", ] [[package]] @@ -1826,15 +1548,15 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "png" -version = "0.17.7" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d708eaf860a19b19ce538740d2b4bdeeb8337fa53f7738455e706623ad5c638" +checksum = "aaeebc51f9e7d2c150d3f3bfeb667f2aa985db5ef1e3d212847bdedb488beeaa" dependencies = [ "bitflags", "crc32fast", "fdeflate", "flate2", - "miniz_oxide", + "miniz_oxide 0.7.1", ] [[package]] @@ -1846,14 +1568,11 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro-crate" version = "1.3.1" -version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", "toml_edit", - "toml_edit", ] [[package]] @@ -1882,9 +1601,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.51" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6" +checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" dependencies = [ "unicode-ident", ] @@ -1893,7 +1612,6 @@ dependencies = [ name = "protostar" version = "0.4.0" dependencies = [ - "cached", "cached", "clap", "color-eyre", @@ -1904,21 +1622,15 @@ dependencies = [ "image", "lazy_static", "linicon", - "linicon", "manifest-dir-macros", "mint", "nix 0.26.2", "regex", - "nix 0.26.2", - "regex", "resvg", "rustc-hash", "serde", "serde_json", "serde_with", - "serde", - "serde_json", - "serde_with", "stardust-xr-fusion", "stardust-xr-molecules", "tempdir", @@ -1930,10 +1642,19 @@ dependencies = [ ] [[package]] -name = "quote" -version = "1.0.23" +name = "qoi" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" +checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "quote" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f4f29d145265ec1c483c7c654450edde0bfe043d3938d6972630663356d9500" dependencies = [ "proc-macro2", ] @@ -1999,10 +1720,8 @@ dependencies = [ [[package]] name = "rayon" version = "1.7.0" -version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" dependencies = [ "either", "rayon-core", @@ -2011,10 +1730,8 @@ dependencies = [ [[package]] name = "rayon-core" version = "1.11.0" -version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -2065,7 +1782,7 @@ checksum = "af83e617f331cc6ae2da5443c602dfa5af81e517212d9d611a5b3ba1777b5370" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.7.1", ] [[package]] @@ -2120,10 +1837,8 @@ dependencies = [ [[package]] name = "rgb" version = "0.8.36" -version = "0.8.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20ec2d3e3fc7a92ced357df9cebd5a10b6fb2aa1ee797bf7e9ce2f17dffc8f59" -checksum = "20ec2d3e3fc7a92ced357df9cebd5a10b6fb2aa1ee797bf7e9ce2f17dffc8f59" dependencies = [ "bytemuck", ] @@ -2136,7 +1851,6 @@ checksum = "bdc23d1ace03d6b8153c7d16f0708cd80b61ee8e80304954803354e67e40d150" dependencies = [ "log", "roxmltree", - "roxmltree", "simplecss", "siphasher", "svgtypes 0.9.0", @@ -2145,10 +1859,8 @@ dependencies = [ [[package]] name = "roxmltree" version = "0.18.0" -version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8f595a457b6b8c6cda66a48503e92ee8d19342f905948f29c383200ec9eb1d8" -checksum = "d8f595a457b6b8c6cda66a48503e92ee8d19342f905948f29c383200ec9eb1d8" dependencies = [ "xmlparser", ] @@ -2156,23 +1868,18 @@ dependencies = [ [[package]] name = "rust-ini" version = "0.17.0" -name = "rust-ini" -version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63471c4aa97a1cf8332a5f97709a79a4234698de6a1f5087faf66f2dae810e22" -checksum = "63471c4aa97a1cf8332a5f97709a79a4234698de6a1f5087faf66f2dae810e22" dependencies = [ "cfg-if", "ordered-multimap", - "cfg-if", - "ordered-multimap", ] [[package]] name = "rustc-demangle" -version = "0.1.21" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustc-hash" @@ -2191,9 +1898,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.36.9" +version = "0.37.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd5c6ff11fecd55b40746d1995a02f2eb375bf8c00d192d521ee09f42bef37bc" +checksum = "acf8729d8542766f1b2cf77eb034d52f40d375bb8b615d0b147089946e16613d" dependencies = [ "bitflags", "errno", @@ -2225,12 +1932,6 @@ version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" -[[package]] -name = "ryu" -version = "1.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" - [[package]] name = "same-file" version = "1.0.6" @@ -2246,14 +1947,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" -[[package]] -name = "scratch" -version = "1.0.5" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" -checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" - [[package]] name = "semver" version = "1.0.17" @@ -2262,29 +1955,29 @@ checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" [[package]] name = "serde" -version = "1.0.155" +version = "1.0.163" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71f2b4817415c6d4210bfe1c7bfcf4801b2d904cb4d0e1a8fdb651013c9e86b8" +checksum = "2113ab51b87a539ae008b5c6c02dc020ffa39afd2d83cffcb3f4eb2722cebec2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.155" +version = "1.0.163" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d071a94a3fac4aff69d023a7f411e33f40f3483f8c5190b1953822b6b76d7630" +checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.16", ] [[package]] name = "serde_json" -version = "1.0.94" +version = "1.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea" +checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" dependencies = [ "itoa", "ryu", @@ -2293,20 +1986,20 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395627de918015623b32e7669714206363a7fc00382bf477e72c1f7533e8eafc" +checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.16", ] [[package]] name = "serde_with" -version = "2.3.1" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85456ffac572dc8826334164f2fb6fb40a7c766aebe195a2a21ee69ee2885ecf" +checksum = "07ff71d2c147a7b57362cead5e22f772cd52f6ab31cfcd9edcd7f6aeb2a0afbe" dependencies = [ "base64 0.13.1", "chrono", @@ -2315,19 +2008,19 @@ dependencies = [ "serde", "serde_json", "serde_with_macros", - "time 0.3.20", + "time 0.3.21", ] [[package]] name = "serde_with_macros" -version = "2.3.1" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cbcd6104f8a4ab6af7f6be2a0da6be86b9de3c401f6e86bb856ab2af739232f" +checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" dependencies = [ - "darling", + "darling 0.20.1", "proc-macro2", "quote", - "syn", + "syn 2.0.16", ] [[package]] @@ -2342,19 +2035,17 @@ dependencies = [ [[package]] name = "signal-hook-registry" version = "1.4.1" -version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" dependencies = [ "libc", ] [[package]] name = "simd-adler32" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14a5df39617d7c8558154693a1bb8157a4aab8179209540cc0b10e5dc24e0b18" +checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f" [[package]] name = "simplecss" @@ -2380,10 +2071,8 @@ checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "socket2" version = "0.4.9" -version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" dependencies = [ "libc", "winapi", @@ -2391,9 +2080,9 @@ dependencies = [ [[package]] name = "spin" -version = "0.9.5" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dccf47db1b41fa1573ed27ccf5e08e3ca771cb994f776668c5ebda893b248fc" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" dependencies = [ "lock_api", ] @@ -2401,6 +2090,8 @@ dependencies = [ [[package]] name = "stardust-xr" version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0efaf53544cca5e641ba51928f492a8639cf62399207f8d5c1e3f917e4fc4aa1" dependencies = [ "chrono", "cluFlock", @@ -2422,7 +2113,6 @@ version = "0.40.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10dc289847fa08d3a67bd2be88abbc04584c6cab0081cc43bf4d56fe3cf43b5a" dependencies = [ - "color-eyre", "color-eyre", "color-rs", "enum_dispatch", @@ -2442,16 +2132,13 @@ dependencies = [ [[package]] name = "stardust-xr-molecules" version = "0.24.3" -version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "724a92e67765300651d165950b70ec4800d4ad6450f473882f6024d5a559ea9d" -checksum = "724a92e67765300651d165950b70ec4800d4ad6450f473882f6024d5a559ea9d" dependencies = [ "color-rs", - "glam 0.24.0", + "glam", "lazy_static", "map-range", - "map-range", "mint", "rustc-hash", "serde", @@ -2464,15 +2151,15 @@ dependencies = [ [[package]] name = "stardust-xr-schemas" version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "980c91ff833850cca57108b9ff33aa67bb9552e7caa288d8456808e0a5fbd705" dependencies = [ "flatbuffers", "flexbuffers", "glam", - "manifest-dir-macros", "mint", "ouroboros", "serde", - "serde_repr", "thiserror", ] @@ -2523,14 +2210,13 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98ffacedcdcf1da6579c907279b4f3c5492fbce99fbbf227f5ed270a589c2765" dependencies = [ - "kurbo 0.9.1", + "kurbo 0.9.4", "siphasher", ] [[package]] name = "syn" version = "1.0.109" -version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ @@ -2539,6 +2225,17 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn" +version = "2.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6f671d4b5ffdb8eadec19c0ae67fe2639df8684bd7bc4b83d986b8db549cf01" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "tempdir" version = "0.3.7" @@ -2549,46 +2246,32 @@ dependencies = [ "remove_dir_all", ] -[[package]] -name = "termcolor" -version = "1.2.0" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" -dependencies = [ - "winapi-util", -] - [[package]] name = "thiserror" -version = "1.0.39" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5ab016db510546d856297882807df8da66a16fb8c4101cb8b30054b0d5b2d9c" +checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.39" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5420d42e90af0c38c3290abcca25b9b3bdf379fc9f55c528f53a269d9c9a267e" +checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.16", ] [[package]] name = "thread_local" version = "1.1.7" -version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" dependencies = [ - "cfg-if", "cfg-if", "once_cell", ] @@ -2617,9 +2300,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.20" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890" +checksum = "8f3403384eaacbca9923fa06940178ac13e4edb725486d70e8e15881d0c836cc" dependencies = [ "itoa", "serde", @@ -2629,51 +2312,24 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" +checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" [[package]] name = "time-macros" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36" -dependencies = [ - "time-core", -] - -[[package]] -name = "time" -version = "0.3.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890" -dependencies = [ - "itoa", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" - -[[package]] -name = "time-macros" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36" +checksum = "372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b" dependencies = [ "time-core", ] [[package]] name = "tiny-skia" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfef3412c6975196fdfac41ef232f910be2bb37b9dd3313a49a1a6bc815a5bdb" +checksum = "df8493a203431061e901613751931f047d1971337153f96d0e5e363d6dbf6a67" dependencies = [ "arrayref", "arrayvec", @@ -2696,9 +2352,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.26.0" +version = "1.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03201d01c3c27a29c8a5cee5b55a93ddae1ccf6f08f65365c2c918f8c1b76f64" +checksum = "0aa32867d44e6f2ce3385e89dceb990188b8bb0fb25b0cf576647a6f98ac5105" dependencies = [ "autocfg", "bytes", @@ -2721,29 +2377,24 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.16", ] [[package]] name = "toml_datetime" version = "0.6.1" -name = "toml_datetime" -version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" [[package]] name = "toml_edit" -version = "0.19.5" +version = "0.19.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7082a95d48029677a28f181e5f6422d0c8339ad8396a39d3f33d62a90c1f6c30" +checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" dependencies = [ "indexmap", "toml_datetime", "winnow", - "indexmap", - "toml_datetime", - "winnow", ] [[package]] @@ -2766,14 +2417,14 @@ checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.16", ] [[package]] name = "tracing-core" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" dependencies = [ "once_cell", "valuable", @@ -2827,16 +2478,14 @@ checksum = "0609f771ad9c6155384897e1df4d948e692667cc0588548b68eb44d052b27633" [[package]] name = "tween" version = "2.0.1" -version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90aba0c5c9d07e12084c38dcbf0f4b16f74801b588650ad633f9d7e9a0143952" -checksum = "90aba0c5c9d07e12084c38dcbf0f4b16f74801b588650ad633f9d7e9a0143952" [[package]] name = "unicode-bidi" -version = "0.3.11" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524b68aca1d05e03fdf03fcdce2c6c94b6daf6d16861ddaa7e4f2b6638a9052c" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-bidi-mirroring" @@ -2859,10 +2508,8 @@ checksum = "2281c8c1d221438e373249e065ca4989c4c36952c211ff21a0ee91c44a3869e7" [[package]] name = "unicode-ident" version = "1.0.8" -version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" -checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" [[package]] name = "unicode-script" @@ -2876,19 +2523,12 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94" -[[package]] -name = "unicode-width" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" - [[package]] name = "ustr" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "371436099f2980de56dc385b615696d3eabbdac9649a72b85f9d75f68474fa9c" dependencies = [ - "ahash 0.7.6", "ahash 0.7.6", "byteorder", "lazy_static", @@ -2901,12 +2541,11 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b6bb4e62619d9f68aa2d8a823fea2bff302340a1f2d45c264d5b0be170832e" dependencies = [ - "base64 0.21.0", "base64 0.21.0", "data-url", "flate2", "imagesize", - "kurbo 0.9.1", + "kurbo 0.9.4", "log", "rctree", "rosvgtree", @@ -2920,7 +2559,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "195386e01bc35f860db024de275a76e7a31afdf975d18beb6d0e44764118b4db" dependencies = [ "fontdb", - "kurbo 0.9.1", + "kurbo 0.9.4", "log", "rustybuzz", "unicode-bidi", @@ -2971,11 +2610,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.84" -version = "0.2.84" +version = "0.2.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" -checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +checksum = "5b6cb788c4e39112fbe1822277ef6fb3c55cd86b95cb3d3c4c1c9597e4ac74b4" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -2983,28 +2620,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.84" -version = "0.2.84" +version = "0.2.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" -checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +checksum = "35e522ed4105a9d626d885b35d62501b30d9666283a5c8be12c14a8bdafe7822" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.16", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.84" -version = "0.2.84" +version = "0.2.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" -checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +checksum = "358a79a0cb89d21db8120cbfb91392335913e4890665b1a7981d9e956903b434" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3012,26 +2645,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.84" -version = "0.2.84" +version = "0.2.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" -checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +checksum = "4783ce29f09b9d93134d41297aded3a712b7b979e9c6f28c32cb88c973a94869" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.16", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.84" -version = "0.2.84" +version = "0.2.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" -checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" +checksum = "a901d592cafaa4d711bc324edfaff879ac700b19c3dfd60058d2b445be2691eb" [[package]] name = "weezl" @@ -3070,79 +2699,152 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets 0.48.0", +] + [[package]] name = "windows-sys" version = "0.45.0" -version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ - "windows-targets", + "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.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "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", +] + +[[package]] +name = "windows-targets" +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", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" +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.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" +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.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" +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.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" +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.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" +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.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" +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.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" +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 = "winnow" -version = "0.3.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee7b2c67f962bf5042bfd8b6a916178df33a26eec343ae064cb8e069f638fa6f" +checksum = "61de7bac303dc551fe038e2b3cef0f571087a47571ea6e79a87692ac99b99699" dependencies = [ "memchr", ] @@ -3164,9 +2866,9 @@ checksum = "4d25c75bf9ea12c4040a97f829154768bbbce366287e2dc044af160cd79a13fd" [[package]] name = "zune-inflate" -version = "0.2.51" +version = "0.2.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a01728b79fb9b7e28a8c11f715e1cd8dc2cda7416a007d66cac55cebb3a8ac6b" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" dependencies = [ "simd-adler32", ] diff --git a/Cargo.toml b/Cargo.toml index 7971dfd..fd1dda7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,6 @@ version = "0.4.0" edition = "2021" [dependencies] -cached = "0.42.0" cached = "0.43.0" clap = { version = "4.1.3", features = ["derive"] } color-eyre = "0.6.2" @@ -24,11 +23,6 @@ rustc-hash = "1.1.0" serde = "1.0.155" serde_json = "1.0.94" serde_with = "2.3.1" -stardust-xr-fusion = "0.40.0" -stardust-xr-molecules = "0.24.3" -serde = "1.0.155" -serde_json = "1.0.94" -serde_with = "2.3.1" stardust-xr-fusion = "0.40.2" stardust-xr-molecules = "0.24.3" tokio = { version = "1.24.1", features = ["full"] } @@ -36,3 +30,6 @@ tracing-subscriber = { version = "0.3.16", features = ["env-filter"] } tween = "2.0.0" ustr = "0.9.0" walkdir = "2.3.2" + +[dev-dependencies] +tempdir = "0.3.7" diff --git a/examples/hexagon_launcher.rs b/examples/hexagon_launcher.rs index 1e28775..297a556 100644 --- a/examples/hexagon_launcher.rs +++ b/examples/hexagon_launcher.rs @@ -2,239 +2,6 @@ use color_eyre::eyre::Result; use glam::Quat; use manifest_dir_macros::directory_relative_path; use mint::Vector3; -use protostar::{ - protostar::ProtoStar, - xdg::{get_desktop_files, parse_desktop_file, DesktopFile}, -}; -use stardust_xr_fusion::{ - client::{Client, FrameInfo, RootHandler}, - core::values::Transform, - drawable::{MaterialParameter, Model, ResourceID}, - fields::BoxField, - node::NodeError, - spatial::Spatial, -}; -use stardust_xr_molecules::{touch_plane::TouchPlane, GrabData, Grabbable}; -use std::f32::consts::PI; -use tween::TweenTime; - -const APP_SIZE: f32 = 0.06; -const PADDING: f32 = 0.005; - -#[derive(Clone)] -struct Hex { - q: isize, - r: isize, - s: isize, -} - -const HEX_CENTER: Hex = Hex { q: 0, r: 0, s: 0 }; -const HEX_DIRECTION_VECTORS: [Hex; 6] = [ - Hex { q: 1, r: 0, s: -1 }, - Hex { q: 1, r: -1, s: 0 }, - Hex { q: 0, r: -1, s: 1 }, - Hex { q: -1, r: 0, s: 1 }, - Hex { q: -1, r: 1, s: 0 }, - Hex { q: 0, r: 1, s: -1 }, -]; - -impl Hex { - fn new(q: isize, r: isize, s: isize) -> Self { - Hex { q, r, s } - } - - fn get_coords(&self) -> [f32; 3] { - let x = 3.0 / 2.0 * (APP_SIZE + PADDING) / 2.0 * (-self.q - self.s).to_f32(); - let y = 3.0_f32.sqrt() * (APP_SIZE + PADDING) / 2.0 - * ((-self.q - self.s).to_f32() / 2.0 + self.s.to_f32()); - [x, y, 0.0] - } - - fn add(self, vec: &Hex) -> Self { - Hex::new(self.q + vec.q, self.r + vec.r, self.s + vec.s) - } - - fn neighbor(self, direction: usize) -> Self { - self.add(&HEX_DIRECTION_VECTORS[direction]) - } - - fn scale(self, factor: isize) -> Self { - Hex::new(self.q * factor, self.r * factor, self.s * factor) - } -} - -#[tokio::main(flavor = "current_thread")] -async fn main() -> Result<()> { - color_eyre::install().unwrap(); - tracing_subscriber::fmt() - .with_env_filter(tracing_subscriber::EnvFilter::from_default_env()) - .pretty() - .init(); - let (client, event_loop) = Client::connect_with_async_loop().await?; - client.set_base_prefixes(&[directory_relative_path!("res")]); - - let _root = client.wrap_root(AppHexGrid::new(&client))?; - - tokio::select! { - _ = tokio::signal::ctrl_c() => (), - e = event_loop => e??, - }; - Ok(()) -} - -struct AppHexGrid { - apps: Vec, - button: Button, -} -impl AppHexGrid { - fn new(client: &Client) -> Self { - let button = Button::new(client).unwrap(); - let mut desktop_files: Vec = get_desktop_files() - .into_iter() - .filter_map(|d| parse_desktop_file(d).ok()) - .filter(|d| !d.no_display) - .collect(); - - desktop_files.sort_by_key(|d| d.clone().name.unwrap_or_default()); - - let mut apps = Vec::new(); - let mut radius = 1; - while !desktop_files.is_empty() { - let mut hex = HEX_CENTER.add(&HEX_DIRECTION_VECTORS[4].clone().scale(radius)); - for i in 0..6 { - if desktop_files.is_empty() { - break; - }; - for _ in 0..radius { - if desktop_files.is_empty() { - break; - }; - apps.push( - App::new( - button.grabbable.content_parent(), - hex.get_coords(), - desktop_files.pop().unwrap(), - ) - .unwrap(), - ); - hex = hex.neighbor(i); - } - } - radius += 1; - } - AppHexGrid { apps, button } - } -} -impl RootHandler for AppHexGrid { - fn frame(&mut self, info: FrameInfo) { - self.button.frame(info); - if self.button.touch_plane.touch_started() { - let color = [0.0, 1.0, 0.0, 1.0]; - self.button - .model - .model_part("?????") - .unwrap() - .set_material_parameter("color", MaterialParameter::Color(color)) - .unwrap(); - for app in &mut self.apps { - app.protostar.toggle(); - } - } else if self.button.touch_plane.touch_stopped() { - let color = [0.0, 0.0, 1.0, 1.0]; - self.button - .model - .model_part("?????") - .unwrap() - .set_material_parameter("color", MaterialParameter::Color(color)) - .unwrap(); - } - for app in &mut self.apps { - app.frame(info); - } - } -} -struct App { - _desktop_file: DesktopFile, - protostar: ProtoStar, -} - -impl App { - fn new( - parent: &Spatial, - position: impl Into>, - desktop_file: DesktopFile, - ) -> Option { - let position = position.into(); - let protostar = - ProtoStar::create_from_desktop_file(parent, position, desktop_file.clone()).ok()?; - Some(App { - _desktop_file: desktop_file, - protostar, - }) - } -} -impl RootHandler for App { - fn frame(&mut self, info: FrameInfo) { - self.protostar.frame(info); - } -} - -struct Button { - touch_plane: TouchPlane, - grabbable: Grabbable, - model: Model, -} -impl Button { - fn new(client: &Client) -> Result { - let field = BoxField::create(client.get_root(), Transform::default(), [APP_SIZE; 3])?; - let grabbable = Grabbable::create( - client.get_root(), - Transform::default(), - &field, - GrabData { - max_distance: 0.01, - ..Default::default() - }, - )?; - field.set_spatial_parent(grabbable.content_parent())?; - let touch_plane = TouchPlane::create( - grabbable.content_parent(), - Transform::default(), - [(APP_SIZE + PADDING) / 2.0; 2], - (APP_SIZE + PADDING) / 2.0, - 1.0..0.0, - 1.0..0.0, - )?; - - let model = Model::create( - grabbable.content_parent(), - Transform::from_rotation_scale( - Quat::from_rotation_x(PI / 2.0) * Quat::from_rotation_y(PI), - [0.03, 0.03, 0.03], - ), - &ResourceID::new_namespaced("protostar", "hexagon/hexagon"), - )?; - model - .model_part("?????") - .unwrap() - .set_material_parameter("color", MaterialParameter::Color([0.0, 0.0, 1.0, 1.0]))?; - Ok(Button { - touch_plane, - grabbable, - model, - }) - } -} -impl RootHandler for Button { - fn frame(&mut self, info: FrameInfo) { - self.touch_plane.update(); - self.grabbable.update(&info).unwrap(); - } -} -use color_eyre::eyre::Result; -use glam::Quat; -use manifest_dir_macros::directory_relative_path; -use mint::Vector3; use protostar::{ application::Application, xdg::{get_desktop_files, parse_desktop_file, DesktopFile, Icon, IconType}, @@ -448,6 +215,8 @@ impl RootHandler for Button { } } +// Model handling + fn model_from_icon(parent: &Spatial, icon: &Icon) -> Result { return match &icon.icon_type { IconType::Png => { diff --git a/examples/sirius.rs b/examples/sirius.rs index ac36ec4..26a424d 100644 --- a/examples/sirius.rs +++ b/examples/sirius.rs @@ -1,27 +1,54 @@ -#![allow(dead_code)] - +use clap::{self, Parser}; use color_eyre::eyre::Result; -use glam::Vec3; +use glam::{Quat, Vec3}; use manifest_dir_macros::directory_relative_path; -use protostar::protostar::ProtoStar; +use mint::Vector3; +use protostar::{ + application::Application, + xdg::{parse_desktop_file, DesktopFile, Icon, IconType}, +}; use stardust_xr_fusion::{ client::{Client, FrameInfo, RootHandler}, core::values::Transform, - drawable::{MaterialParameter, Model, ResourceID}, + drawable::{Alignment, Bounds, MaterialParameter, Model, ResourceID, Text, TextFit, TextStyle}, fields::BoxField, input::{InputData, InputDataType}, node::NodeError, + node::NodeType, spatial::Spatial, }; use stardust_xr_molecules::{touch_plane::TouchPlane, GrabData, Grabbable}; +use std::{f32::consts::PI, path::PathBuf}; + +use tween::{QuartInOut, Tweener}; +use walkdir::WalkDir; + +const APP_SIZE: f32 = 0.06; +const ACTIVATION_DISTANCE: f32 = 0.5; + +#[derive(Debug, Parser)] +#[clap(author, version, about, long_about = None)] +struct Args { + /// Directory to scan for desktop files + apps_directory: PathBuf, +} #[tokio::main(flavor = "current_thread")] async fn main() -> Result<()> { color_eyre::install()?; + + let args = Args::parse(); + if !args.apps_directory.is_dir() { + panic!( + "{} is not a direcotry", + args.apps_directory.to_string_lossy() + ) + } + let (client, event_loop) = Client::connect_with_async_loop().await?; client.set_base_prefixes(&[directory_relative_path!("res")]); - let _wrapped_root = client.wrap_root(Sirius::new(&client)?)?; + let _wrapped_root = client.wrap_root(Sirius::new(&client, args)?)?; tokio::select! { _ = tokio::signal::ctrl_c() => (), @@ -30,49 +57,21 @@ async fn main() -> Result<()> { Ok(()) } -struct Star { - cli: ProtoStar, -} - -impl Star { - fn new(parent: &Spatial, _name: Option<&str>, path: String) -> Option { - let cli = ProtoStar::new_raw(parent, [0.0; 3], None, None, path).unwrap(); - Some(Star { cli }) - } -} - -impl RootHandler for Star { - fn frame(&mut self, info: FrameInfo) { - self.cli.frame(info); - } -} - -const LOCATION_OF_TELESCOPE: &str = "/home/bc/repos/stardust/"; -const EXECUTABLES: [&str; 3] = ["magnetar", "atmosphere", "manifold"]; - struct Sirius { touch_plane: TouchPlane, model: Model, root: Spatial, - clients: Vec, + clients: Vec, visibility: bool, grabbable: Grabbable, } impl Sirius { - fn new(client: &Client) -> Result { + fn new(client: &Client, args: Args) -> Result { let mut client_list: Vec<(Option<&str>, String)> = Vec::new(); - for executable in EXECUTABLES { - client_list.push(( - Some(executable), - format!( - "{}telescope/repos/{}/target/release/{}", - LOCATION_OF_TELESCOPE, executable, executable - ), - )); - } + let root = Spatial::create(client.get_root(), Transform::default(), false).unwrap(); - let field = BoxField::create(&root, Transform::default(), Vec3::from([0.1; 3])).unwrap(); + let field = BoxField::create(&root, Transform::default(), [0.1; 3]).unwrap(); let grabbable = Grabbable::create(&root, Transform::default(), &field, GrabData::default())?; let touch_plane = TouchPlane::create( @@ -83,10 +82,28 @@ impl Sirius { 1.0..0.0, 1.0..0.0, )?; - let mut clients = Vec::new(); - for clientkv in client_list { - clients.push(Star::new(grabbable.content_parent(), clientkv.0, clientkv.1).unwrap()); - } + + let walkdir = WalkDir::new(args.apps_directory.canonicalize().unwrap()); + + let mut clients: Vec = walkdir + .into_iter() + .filter_map(|path| path.ok()) + .map(|entry| entry.into_path()) + .filter(|path| { + path.is_file() + && path.extension().is_some() + && path.extension().unwrap() == "desktop" + }) + .filter_map(|path| { + App::create_from_desktop_file( + grabbable.content_parent(), + [0.0; 3], + parse_desktop_file(path).ok()?, + ) + .ok() + }) + .collect(); + let model = Model::create( grabbable.content_parent(), Transform::default(), @@ -125,31 +142,25 @@ impl RootHandler for Sirius { self.visibility = !self.visibility; match self.visibility { true => { - for star in self.clients.iter().enumerate() { - let mut starpos = (star.0 as f32 + 1.0) / 10.0; + for (pos, star) in self.clients.iter().enumerate() { + let mut starpos = (pos as f32 + 1.0) / 10.0; match starpos % 0.2 == 0.0 { true => starpos = -starpos / 2.0, false => starpos = (starpos - 0.1) / 2.0, } println!("{}", starpos); - star.1 - .cli - .content_parent() + star.content_parent() .set_position( Some(&self.grabbable.content_parent()), - Vec3::from([starpos, 0.1, 0.0]), + [starpos, 0.1, 0.0], ) .ok(); } } false => { for star in &self.clients { - star.cli - .content_parent() - .set_position( - Some(&self.grabbable.content_parent()), - Vec3::from([0.0, 0.0, 0.0]), - ) + star.content_parent() + .set_position(Some(&self.grabbable.content_parent()), [0.0, 0.0, 0.0]) .ok(); } } @@ -197,3 +208,230 @@ fn position(data: &InputData) -> Vec3 { InputDataType::Tip(t) => t.origin.into(), } } + +fn model_from_icon(parent: &Spatial, icon: &Icon) -> Result { + return match &icon.icon_type { + IconType::Png => { + let t = Transform::from_rotation_scale( + Quat::from_rotation_x(PI / 2.0) * Quat::from_rotation_y(PI), + [APP_SIZE * 0.5; 3], + ); + + let model = Model::create( + parent, + t, + &ResourceID::new_namespaced("protostar", "hexagon/hexagon"), + )?; + model + .model_part("Hex")? + .set_material_parameter("color", MaterialParameter::Color([0.0, 1.0, 1.0, 1.0]))?; + model.model_part("Icon")?.set_material_parameter( + "diffuse", + MaterialParameter::Texture(ResourceID::Direct(icon.path.clone())), + )?; + Ok(model) + } + IconType::Gltf => Ok(Model::create( + parent, + Transform::from_scale([0.05; 3]), + &ResourceID::new_direct(icon.path.clone())?, + )?), + _ => panic!("Invalid Icon Type"), + }; +} + +pub struct App { + application: Application, + parent: Spatial, + position: Vector3, + grabbable: Grabbable, + _field: BoxField, + icon: Model, + label: Option, + grabbable_shrink: Option>, + grabbable_grow: Option>, + grabbable_move: Option>, + currently_shown: bool, +} +impl App { + pub fn create_from_desktop_file( + parent: &Spatial, + position: impl Into>, + desktop_file: DesktopFile, + ) -> Result { + let position = position.into(); + let field = BoxField::create(parent, Transform::default(), [APP_SIZE; 3])?; + let application = Application::create(&parent.client()?, desktop_file)?; + let icon = application.icon(128, false); + let grabbable = Grabbable::create( + parent, + Transform::from_position(position), + &field, + GrabData { + max_distance: 0.01, + frame_cancel_threshold: 50, + ..Default::default() + }, + )?; + grabbable.content_parent().set_spatial_parent(parent)?; + field.set_spatial_parent(grabbable.content_parent())?; + let icon = icon + .map(|i| model_from_icon(grabbable.content_parent(), &i)) + .unwrap_or_else(|| { + Ok(Model::create( + grabbable.content_parent(), + Transform::from_rotation_scale( + Quat::from_rotation_x(PI / 2.0) * Quat::from_rotation_y(PI), + [APP_SIZE * 0.5; 3], + ), + &ResourceID::new_namespaced("protostar", "hexagon/hexagon"), + )?) + })?; + + let label_style = TextStyle { + character_height: APP_SIZE * 2.0, + bounds: Some(Bounds { + bounds: [1.0; 2].into(), + fit: TextFit::Wrap, + bounds_align: Alignment::XCenter | Alignment::YCenter, + }), + text_align: Alignment::Center.into(), + ..Default::default() + }; + let label = application.name().and_then(|name| { + Text::create( + &icon, + Transform::from_position_rotation( + [0.0, 0.1, -(APP_SIZE * 4.0)], + Quat::from_rotation_x(PI * 0.5), + ), + name, + label_style, + ) + .ok() + }); + Ok(App { + parent: parent.alias(), + position, + grabbable, + _field: field, + label, + application, + icon, + grabbable_shrink: None, + grabbable_grow: None, + grabbable_move: None, + currently_shown: true, + }) + } + pub fn content_parent(&self) -> &Spatial { + self.grabbable.content_parent() + } + pub fn toggle(&mut self) { + self.grabbable.set_enabled(!self.currently_shown).unwrap(); + if self.currently_shown { + self.grabbable_move = Some(Tweener::quart_in_out(1.0, 0.0001, 0.25)); //TODO make the scale a parameter + } else { + self.icon.set_enabled(true).unwrap(); + self.label.as_ref().map(|l| l.set_enabled(true).unwrap()); + self.grabbable_move = Some(Tweener::quart_in_out(0.0001, 1.0, 0.25)); + } + self.currently_shown = !self.currently_shown; + } +} +impl RootHandler for App { + fn frame(&mut self, info: FrameInfo) { + let _ = self.grabbable.update(&info); + + if let Some(grabbable_move) = &mut self.grabbable_move { + if !grabbable_move.is_finished() { + let scale = grabbable_move.move_by(info.delta); + self.grabbable + .content_parent() + .set_position( + Some(&self.parent), + [ + self.position.x * scale, + self.position.y * scale, + self.position.z * scale, + ], + ) + .unwrap(); + } else { + if grabbable_move.final_value() == 0.0001 { + self.icon.set_enabled(false).unwrap(); + self.label.as_ref().map(|l| l.set_enabled(false).unwrap()); + } + self.grabbable_move = None; + } + } + if let Some(grabbable_shrink) = &mut self.grabbable_shrink { + if !grabbable_shrink.is_finished() { + let scale = grabbable_shrink.move_by(info.delta); + self.grabbable + .content_parent() + .set_scale(Some(&self.parent), Vector3::from([scale; 3])) + .unwrap(); + } else { + self.grabbable + .content_parent() + .set_spatial_parent(&self.parent) + .unwrap(); + if self.currently_shown { + self.grabbable_grow = Some(Tweener::quart_in_out(0.0001, 1.0, 0.25)); + self.grabbable.cancel_angular_velocity(); + self.grabbable.cancel_linear_velocity(); + } + self.grabbable_shrink = None; + self.grabbable + .content_parent() + .set_position(Some(&self.parent), self.position) + .unwrap(); + self.grabbable + .content_parent() + .set_rotation(Some(&self.parent), Quat::default()) + .unwrap(); + self.icon + .set_rotation( + None, + Quat::from_rotation_x(PI / 2.0) * Quat::from_rotation_y(PI), + ) + .unwrap(); + } + } else if let Some(grabbable_grow) = &mut self.grabbable_grow { + if !grabbable_grow.is_finished() { + let scale = grabbable_grow.move_by(info.delta); + self.grabbable + .content_parent() + .set_scale(Some(&self.parent), Vector3::from([scale; 3])) + .unwrap(); + } else { + self.grabbable + .content_parent() + .set_spatial_parent(&self.parent) + .unwrap(); + self.grabbable_grow = None; + } + } else if self.grabbable.valid() && self.grabbable.grab_action().actor_stopped() { + self.grabbable_shrink = Some(Tweener::quart_in_out(APP_SIZE * 0.5, 0.0001, 0.25)); + let Ok(distance_future) = self.grabbable + .content_parent() + .get_position_rotation_scale(&self.parent) + else {return}; + + let application = self.application.clone(); + let space = self.content_parent().alias(); + + //TODO: split the executable string for the args + tokio::task::spawn(async move { + let distance_vector = distance_future.await.ok().unwrap().0; + let distance = ((distance_vector.x.powi(2) + distance_vector.y.powi(2)).sqrt() + + distance_vector.z.powi(2)) + .sqrt(); + if dbg!(distance) > ACTIVATION_DISTANCE { + let _ = application.launch(&space); + } + }); + } + } +} diff --git a/src/application.rs b/src/application.rs index 466bddc..37ce141 100644 --- a/src/application.rs +++ b/src/application.rs @@ -71,7 +71,7 @@ impl Application { tokio::task::spawn(async move { let Ok(startup_token) = future_startup_token.await else {return}; let Ok(connection_env) = future_connection_env.await else {return}; - + dbg!(&connection_env); for (k, v) in connection_env.into_iter() { std::env::set_var(k, v); } diff --git a/src/main.rs b/src/main.rs index fcfe8bc..dd84573 100644 --- a/src/main.rs +++ b/src/main.rs @@ -19,17 +19,11 @@ async fn main() -> Result<()> { let (client, event_loop) = Client::connect_with_async_loop().await?; client.set_base_prefixes(&[directory_relative_path!("res")]); - let protostar = if let Some(desktop_file) = args.desktop_file { - ProtoStar::create_from_desktop_file( - client.get_root(), - [0.0, 0.0, 0.0], - parse_desktop_file(desktop_file).map_err(|e| Report::msg(e))?, - )? - } else if let Some(command) = args.command { - ProtoStar::new_raw(client.get_root(), [0.0, 0.0, 0.0], None, None, command)? - } else { - bail!("No command or desktop file, nothing to launch."); - }; + let protostar = ProtoStar::create_from_desktop_file( + client.get_root(), + [0.0, 0.0, 0.0], + parse_desktop_file(args.desktop_file).map_err(|e| Report::msg(e))?, + )?; let _root = client.wrap_root(protostar); diff --git a/src/protostar.rs b/src/protostar.rs index 833f4fb..1fa8406 100644 --- a/src/protostar.rs +++ b/src/protostar.rs @@ -1,5 +1,3 @@ -use crate::xdg::{DesktopFile, Icon, IconType}; -use color_eyre::eyre::{eyre, Result}; use crate::{ application::Application, xdg::{DesktopFile, Icon, IconType}, @@ -7,8 +5,6 @@ use crate::{ use color_eyre::eyre::Result; use glam::Quat; use mint::Vector3; -use nix::unistd::setsid; -use regex::Regex; use stardust_xr_fusion::{ client::{FrameInfo, RootHandler}, core::values::Transform, @@ -19,14 +15,8 @@ use stardust_xr_fusion::{ }; use stardust_xr_molecules::{GrabData, Grabbable}; use std::f32::consts::PI; -use std::os::unix::process::CommandExt; -use std::process::{Command, Stdio}; -use std::f32::consts::PI; use tween::{QuartInOut, Tweener}; -const MODEL_SCALE: f32 = 0.03; -const ACTIVATION_DISTANCE: f32 = 1.0; - const MODEL_SCALE: f32 = 0.03; const ACTIVATION_DISTANCE: f32 = 0.5; @@ -43,7 +33,6 @@ fn model_from_icon(parent: &Spatial, icon: &Icon) -> Result { t, &ResourceID::new_namespaced("protostar", "hexagon/hexagon"), )?; - let model_part = model.model_part("hexagon/hexagon").unwrap(); model .model_part("Hex")? .set_material_parameter("color", MaterialParameter::Color([0.0, 1.0, 1.0, 1.0]))?; @@ -63,8 +52,6 @@ fn model_from_icon(parent: &Spatial, icon: &Icon) -> Result { } pub struct ProtoStar { - parent: Spatial, - position: Vector3, application: Application, parent: Spatial, position: Vector3, @@ -75,42 +62,9 @@ pub struct ProtoStar { grabbable_shrink: Option>, grabbable_grow: Option>, grabbable_move: Option>, - execute_command: String, - currently_shown: bool, - label: Option, - grabbable_shrink: Option>, - grabbable_grow: Option>, - grabbable_move: Option>, currently_shown: bool, } impl ProtoStar { - pub fn create_from_desktop_file( - parent: &Spatial, - position: impl Into>, - desktop_file: DesktopFile, - ) -> Result { - // dbg!(&desktop_file); - let raw_icons = desktop_file.get_raw_icons(); - let mut icon = raw_icons - .clone() - .into_iter() - .find(|i| match i.icon_type { - IconType::Gltf => true, - _ => false, - }) - .or(raw_icons.into_iter().max_by_key(|i| i.size)); - - match icon { - Some(i) => { - icon = match i.cached_process(128) { - Ok(i) => Some(i), - _ => None, - } - } - None => {} - } - - pub fn create_from_desktop_file( parent: &Spatial, position: impl Into>, @@ -122,25 +76,6 @@ impl ProtoStar { let icon = application.icon(128, false); let grabbable = Grabbable::create( parent, - position, - desktop_file.name.as_deref(), - icon, - desktop_file.command.ok_or_else(|| eyre!("No command"))?, - ); - - } - pub fn new_raw( - parent: &Spatial, - position: impl Into>, - name: Option<&str>, - icon: Option, - execute_command: String, - ) -> Result { - let position = position.into(); - let field = BoxField::create(parent, Transform::default(), [MODEL_SCALE * 2.0; 3])?; - let grabbable = Grabbable::create( - parent, - Transform::from_position(position), Transform::from_position(position), &field, GrabData { @@ -163,29 +98,6 @@ impl ProtoStar { )?) })?; - let label_style = TextStyle { - character_height: MODEL_SCALE * 4.0, - bounds: Some(Bounds { - bounds: [1.0; 2].into(), - fit: TextFit::Wrap, - bounds_align: Alignment::XCenter | Alignment::YCenter, - }), - text_align: Alignment::Center.into(), - ..Default::default() - }; - let label = name.and_then(|name| { - Text::create( - &icon, - Transform::from_position_rotation( - [0.0, 0.1, -(MODEL_SCALE * 8.0)], - Quat::from_rotation_x(PI * 0.5), - ), - name, - label_style, - ) - .ok() - }); - let label_style = TextStyle { character_height: MODEL_SCALE * 4.0, bounds: Some(Bounds { @@ -212,19 +124,12 @@ impl ProtoStar { parent: parent.alias(), position, grabbable, - field, - label, _field: field, label, application, icon, grabbable_shrink: None, grabbable_grow: None, - execute_command, - currently_shown: true, - grabbable_move: None, - grabbable_shrink: None, - grabbable_grow: None, grabbable_move: None, currently_shown: true, }) @@ -246,7 +151,6 @@ impl ProtoStar { } impl RootHandler for ProtoStar { fn frame(&mut self, info: FrameInfo) { - self.grabbable.update(&info).unwrap(); let _ = self.grabbable.update(&info); if let Some(grabbable_move) = &mut self.grabbable_move { @@ -271,87 +175,6 @@ impl RootHandler for ProtoStar { self.grabbable_move = None; } } - if let Some(grabbable_shrink) = &mut self.grabbable_shrink { - if !grabbable_shrink.is_finished() { - let scale = grabbable_shrink.move_by(info.delta); - self.grabbable - .content_parent() - .set_scale(Some(&self.parent), Vector3::from([scale; 3])) - .unwrap(); - } else { - self.grabbable - .content_parent() - .set_spatial_parent(&self.parent) - .unwrap(); - if self.currently_shown { - self.grabbable_grow = Some(Tweener::quart_in_out(0.0001, 1.0, 0.25)); - self.grabbable.cancel_angular_velocity(); - self.grabbable.cancel_linear_velocity(); - } - self.grabbable_shrink = None; - self.grabbable - .content_parent() - .set_position(Some(&self.parent), self.position) - .unwrap(); - self.grabbable - .content_parent() - .set_rotation(Some(&self.parent), Quat::default()) - .unwrap(); - self.icon - .set_rotation( - None, - Quat::from_rotation_x(PI / 2.0) * Quat::from_rotation_y(PI), - ) - .unwrap(); - } - } else if let Some(grabbable_grow) = &mut self.grabbable_grow { - if !grabbable_grow.is_finished() { - let scale = grabbable_grow.move_by(info.delta); - self.grabbable - .content_parent() - .set_scale(Some(&self.parent), Vector3::from([scale; 3])) - if let Some(grabbable_move) = &mut self.grabbable_move { - if !grabbable_move.is_finished() { - let scale = grabbable_move.move_by(info.delta); - self.grabbable - .content_parent() - .set_position( - Some(&self.parent), - [ - self.position.x * scale, - self.position.y * scale, - self.position.z * scale, - ], - ) - .unwrap(); - } else { - self.grabbable - .content_parent() - .set_spatial_parent(&self.parent) - .unwrap(); - self.grabbable_grow = None; - if grabbable_move.final_value() == 0.0001 { - self.icon.set_enabled(false).unwrap(); - self.label.as_ref().map(|l| l.set_enabled(false).unwrap()); - } - self.grabbable_move = None; - } - } else if self.grabbable.grab_action().actor_stopped() { - let startup_settings = StartupSettings::create(&self.field.client().unwrap()).unwrap(); - startup_settings - .set_root(self.grabbable.content_parent()) - .unwrap(); - self.grabbable_shrink = Some(Tweener::quart_in_out(MODEL_SCALE, 0.0001, 0.25)); - let distance_future = self - .grabbable - .content_parent() - .get_position_rotation_scale(&self.parent) - .unwrap(); - - let executable = self.execute_command.clone(); - - //TODO: split the executable string for the args - } if let Some(grabbable_shrink) = &mut self.grabbable_shrink { if !grabbable_shrink.is_finished() { let scale = grabbable_shrink.move_by(info.delta); @@ -415,30 +238,6 @@ impl RootHandler for ProtoStar { let distance = ((distance_vector.x.powi(2) + distance_vector.y.powi(2)).sqrt() + distance_vector.z.powi(2)) .sqrt(); - if dbg!(distance) > ACTIVATION_DISTANCE { - let future = startup_settings.generate_startup_token().unwrap(); - - std::env::set_var("STARDUST_STARTUP_TOKEN", future.await.unwrap()); - let re = Regex::new(r"%[fFuUdDnNickvm]").unwrap(); - let exec = re.replace_all(&executable, ""); - unsafe { - Command::new("sh") - .arg("-c") - .arg(exec.to_string()) - .stdin(Stdio::null()) - .stdout(Stdio::null()) - .stderr(Stdio::null()) - .pre_exec(|| { - _ = setsid(); - Ok(()) - }) - .spawn() - .expect("Failed to start child process"); - } - let distance_vector = distance_future.await.ok().unwrap().0; - let distance = ((distance_vector.x.powi(2) + distance_vector.y.powi(2)).sqrt() - + distance_vector.z.powi(2)) - .sqrt(); if dbg!(distance) > ACTIVATION_DISTANCE { let _ = application.launch(&space); } diff --git a/src/xdg.rs b/src/xdg.rs index 0ff4bf1..275830d 100644 --- a/src/xdg.rs +++ b/src/xdg.rs @@ -18,8 +18,8 @@ use std::path::{Path, PathBuf}; use std::str::FromStr; use std::sync::Mutex; use std::{env, fs}; -use walkdir::WalkDir; +use walkdir::WalkDir; #[serde_as] #[derive(Deserialize, Serialize)] struct ImageCache { @@ -233,19 +233,19 @@ pub struct DesktopFile { pub no_display: bool, } impl DesktopFile { - pub fn get_raw_icons(&self) -> Vec { + pub fn get_raw_icons(&self, preferred_px_size: u16) -> Vec { // Get the name of the icon from the DesktopFile struct let Some(icon_name) = self.icon.as_ref() else { return Vec::new(); }; let test_icon_path = self.path.join(Path::new(icon_name)); if test_icon_path.exists() { - if let Some(icon) = Icon::from_path(test_icon_path, 128) { + if let Some(icon) = Icon::from_path(test_icon_path, preferred_px_size) { return vec![icon]; } } if let Some(cache_icon_path) = IMAGE_CACHE.lock().unwrap().map.get(icon_name) { if cache_icon_path.exists() { - if let Some(icon) = Icon::from_path(cache_icon_path.to_owned(), 128) { + if let Some(icon) = Icon::from_path(cache_icon_path.to_owned(), preferred_px_size) { return vec![icon]; } } @@ -341,7 +341,7 @@ fn test_get_icon_path() { }; // Call the get_icon_path() function with a size argument and store the result - let icon_paths = desktop_file.get_raw_icons(); + let icon_paths = desktop_file.get_raw_icons(32); dbg!(&icon_paths); // Assert that the get_icon_path() function returns the expected result