From c60336f664d2eaec777e3d5ab17816b239971367 Mon Sep 17 00:00:00 2001 From: user0-07161 Date: Tue, 10 Feb 2026 00:23:54 +0100 Subject: [PATCH] init: initial commit --- .cargo/config.toml | 27 + .gitignore | 1 + Cargo.lock | 4669 +++++++++++++++++++++++++++++ Cargo.toml | 14 + LICENSE | 16 + LICENSE_ASSETS | 1 + NOTICE | 0 src/ipc.rs | 29 + src/main.rs | 239 ++ src/res/NOTICE_ASSETS | 158 + src/res/back_default.png | Bin 0 -> 6277 bytes src/res/back_pressed.png | Bin 0 -> 7928 bytes src/res/fonts/HoneycombClock.ttf | Bin 0 -> 10036 bytes src/res/fonts/HoneycombClock2.ttf | Bin 0 -> 9884 bytes src/res/home_default.png | Bin 0 -> 6531 bytes src/res/home_pressed.png | Bin 0 -> 8044 bytes src/res/recent_default.png | Bin 0 -> 5163 bytes src/res/recent_pressed.png | Bin 0 -> 6664 bytes src/xkb.rs | 32 + 19 files changed, 5186 insertions(+) create mode 100644 .cargo/config.toml create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 LICENSE create mode 120000 LICENSE_ASSETS create mode 100644 NOTICE create mode 100644 src/ipc.rs create mode 100644 src/main.rs create mode 100644 src/res/NOTICE_ASSETS create mode 100644 src/res/back_default.png create mode 100644 src/res/back_pressed.png create mode 100644 src/res/fonts/HoneycombClock.ttf create mode 100644 src/res/fonts/HoneycombClock2.ttf create mode 100644 src/res/home_default.png create mode 100644 src/res/home_pressed.png create mode 100644 src/res/recent_default.png create mode 100644 src/res/recent_pressed.png create mode 100644 src/xkb.rs diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000..4726679 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,27 @@ +# musl workaround for wayland lib loading +[target.x86_64-unknown-linux-musl] +rustflags = [ "-C", "target-feature=-crt-static" ] + +[target.aarch64-unknown-linux-musl] +rustflags = [ "-C", "target-feature=-crt-static" ] + +[target.armv7-unknown-linux-musleabi] +rustflags = [ "-C", "target-feature=-crt-static" ] + +[target.armv7-unknown-linux-musleabihf] +rustflags = [ "-C", "target-feature=-crt-static" ] + +[target.i686-unknown-linux-musl] +rustflags = [ "-C", "target-feature=-crt-static" ] + +[target.i586-unknown-linux-musl] +rustflags = [ "-C", "target-feature=-crt-static" ] + +[target.mips64-unknown-linux-muslabi64] +rustflags = [ "-C", "target-feature=-crt-static" ] + +[target.powerpc64le-unknown-linux-musl] +rustflags = [ "-C", "target-feature=-crt-static" ] + +[target.s390x-unknown-linux-musl] +rustflags = [ "-C", "target-feature=-crt-static" ] diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..4ce28d2 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,4669 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "ab_glyph" +version = "0.2.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e074464580a518d16a7126262fffaaa47af89d4099d4cb403f8ed938ba12ee7d" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2187590a23ab1e3df8681afdf0987c48504d80291f002fcdb651f0ef5e25169" + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom 0.2.16", + "once_cell", + "version_check", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "getrandom 0.3.3", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "android-activity" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" +dependencies = [ + "android-properties", + "bitflags 2.9.1", + "cc", + "cesu8", + "jni", + "jni-sys", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys 0.6.0+11769913", + "num_enum", + "thiserror", +] + +[[package]] +name = "android-properties" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" + +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "as-raw-xcb-connection" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" + +[[package]] +name = "ash" +version = "0.37.3+1.3.251" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a" +dependencies = [ + "libloading 0.7.4", +] + +[[package]] +name = "async-broadcast" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" +dependencies = [ + "event-listener 5.4.1", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "pin-project-lite", + "slab", +] + +[[package]] +name = "async-fs" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09f7e37c0ed80b2a977691c47dae8625cfb21e205827106c64f7c588766b2e50" +dependencies = [ + "async-lock", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-global-executor" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" +dependencies = [ + "async-channel 2.5.0", + "async-executor", + "async-io", + "async-lock", + "blocking", + "futures-lite", + "once_cell", +] + +[[package]] +name = "async-io" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19634d6336019ef220f09fd31168ce5c184b295cbf80345437cc36094ef223ca" +dependencies = [ + "async-lock", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix 1.0.8", + "slab", + "windows-sys 0.60.2", +] + +[[package]] +name = "async-lock" +version = "3.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" +dependencies = [ + "event-listener 5.4.1", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-process" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65daa13722ad51e6ab1a1b9c01299142bc75135b337923cfa10e79bbbd669f00" +dependencies = [ + "async-channel 2.5.0", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener 5.4.1", + "futures-lite", + "rustix 1.0.8", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "async-signal" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f567af260ef69e1d52c2b560ce0ea230763e6fbb9214a85d768760a920e3e3c1" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix 1.0.8", + "signal-hook-registry", + "slab", + "windows-sys 0.60.2", +] + +[[package]] +name = "async-std" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "730294c1c08c2e0f85759590518f6333f0d5a0a766a27d519c1b244c3dfd8a24" +dependencies = [ + "async-channel 1.9.0", + "async-global-executor", + "async-io", + "async-lock", + "async-process", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "async-trait" +version = "0.1.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bit_field" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2", +] + +[[package]] +name = "blocking" +version = "1.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +dependencies = [ + "async-channel 2.5.0", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "by_address" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" + +[[package]] +name = "bytemuck" +version = "1.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f154e572231cb6ba2bd1176980827e3d5dc04cc183a75dea38109fbdd672d29" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "calloop" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" +dependencies = [ + "bitflags 2.9.1", + "log", + "polling", + "rustix 0.38.44", + "slab", + "thiserror", +] + +[[package]] +name = "calloop" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb9f6e1368bd4621d2c86baa7e37de77a938adf5221e5dd3d6133340101b309e" +dependencies = [ + "bitflags 2.9.1", + "polling", + "rustix 1.0.8", + "slab", + "tracing", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" +dependencies = [ + "calloop 0.13.0", + "rustix 0.38.44", + "wayland-backend", + "wayland-client", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a7a1dbbe026a55ef47a500b123af5a9a0914520f061d467914cf21be95daf" +dependencies = [ + "calloop 0.14.3", + "rustix 0.38.44", + "wayland-backend", + "wayland-client", +] + +[[package]] +name = "cc" +version = "1.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2352e5597e9c544d5e6d9c95190d5d27738ade584fa8db0a16e130e5c2b5296e" +dependencies = [ + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "clipboard-win" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" +dependencies = [ + "error-code", +] + +[[package]] +name = "clipboard_macos" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b7f4aaa047ba3c3630b080bb9860894732ff23e2aee290a418909aa6d5df38f" +dependencies = [ + "objc2", + "objc2-app-kit", + "objc2-foundation", +] + +[[package]] +name = "clipboard_wayland" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "003f886bc4e2987729d10c1db3424e7f80809f3fc22dbc16c685738887cb37b8" +dependencies = [ + "smithay-clipboard", +] + +[[package]] +name = "clipboard_x11" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4274ea815e013e0f9f04a2633423e14194e408a0576c943ce3d14ca56c50031c" +dependencies = [ + "thiserror", + "x11rb", +] + +[[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_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "com" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e17887fd17353b65b1b2ef1c526c83e26cd72e74f598a8dc1bee13a48f3d9f6" +dependencies = [ + "com_macros", +] + +[[package]] +name = "com_macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d375883580a668c7481ea6631fc1a8863e33cc335bf56bfad8d7e6d4b04b13a5" +dependencies = [ + "com_macros_support", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "com_macros_support" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "core-graphics-types 0.1.3", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" +dependencies = [ + "bitflags 2.9.1", + "core-foundation 0.10.1", + "core-graphics-types 0.2.0", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.9.1", + "core-foundation 0.10.1", + "libc", +] + +[[package]] +name = "cosmic-text" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59fd57d82eb4bfe7ffa9b1cec0c05e2fd378155b47f255a67983cb4afe0e80c2" +dependencies = [ + "bitflags 2.9.1", + "fontdb", + "log", + "rangemap", + "rayon", + "rustc-hash 1.1.0", + "rustybuzz", + "self_cell", + "swash", + "sys-locale", + "ttf-parser 0.21.1", + "unicode-bidi", + "unicode-linebreak", + "unicode-script", + "unicode-segmentation", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "ctor-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f791803201ab277ace03903de1594460708d2d54df6053f2d9e82f592b19e3b" + +[[package]] +name = "cursor-icon" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" + +[[package]] +name = "d3d12" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e3d747f100290a1ca24b752186f61f6637e1deffe3bf6320de6fcb29510a307" +dependencies = [ + "bitflags 2.9.1", + "libloading 0.8.8", + "winapi", +] + +[[package]] +name = "dark-light" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a76fa97167fa740dcdbfe18e8895601e1bc36525f09b044e00916e717c03a3c" +dependencies = [ + "dconf_rs", + "detect-desktop-environment", + "dirs", + "objc", + "rust-ini", + "web-sys", + "winreg", + "zbus", +] + +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.104", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "dconf_rs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7046468a81e6a002061c01e6a7c83139daf91b11c30e66795b13217c2d885c8b" + +[[package]] +name = "detect-desktop-environment" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21d8ad60dd5b13a4ee6bd8fa2d5d88965c597c67bce32b5fc49c94f55cb50810" + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dlib" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +dependencies = [ + "libloading 0.8.8", +] + +[[package]] +name = "dlv-list" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0688c2a7f92e427f44895cd63841bff7b29f8d7a1648b9e7e07a4a365b2e1257" + +[[package]] +name = "doctest-file" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac81fa3e28d21450aa4d2ac065992ba96a1d7303efbce51a95f4fd175b67562" + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dpi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" + +[[package]] +name = "drm" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98888c4bbd601524c11a7ed63f814b8825f420514f78e96f752c437ae9cbb5d1" +dependencies = [ + "bitflags 2.9.1", + "bytemuck", + "drm-ffi", + "drm-fourcc", + "rustix 0.38.44", +] + +[[package]] +name = "drm-ffi" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97c98727e48b7ccb4f4aea8cfe881e5b07f702d17b7875991881b41af7278d53" +dependencies = [ + "drm-sys", + "rustix 0.38.44", +] + +[[package]] +name = "drm-fourcc" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4" + +[[package]] +name = "drm-sys" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd39dde40b6e196c2e8763f23d119ddb1a8714534bf7d77fa97a65b0feda3986" +dependencies = [ + "libc", + "linux-raw-sys 0.6.5", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "endi" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" + +[[package]] +name = "enumflags2" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "error-code" +version = "3.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" + +[[package]] +name = "etagere" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc89bf99e5dc15954a60f707c1e09d7540e5cd9af85fa75caa0b510bc08c5342" +dependencies = [ + "euclid", + "svg_fmt", +] + +[[package]] +name = "euclid" +version = "0.22.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48" +dependencies = [ + "num-traits", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener 5.4.1", + "pin-project-lite", +] + +[[package]] +name = "exr" +version = "1.73.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83197f59927b46c04a183a619b7c29df34e63e63c7869320862268c0ef687e0" +dependencies = [ + "bit_field", + "half", + "lebe", + "miniz_oxide", + "rayon-core", + "smallvec", + "zune-inflate", +] + +[[package]] +name = "fast-srgb8" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd2e7510819d6fbf51a5545c8f922716ecfb14df168a3242f7d33e0239efe6a1" + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "flate2" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "font-types" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3971f9a5ca983419cdc386941ba3b9e1feba01a0ab888adf78739feb2798492" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "fontconfig-parser" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbc773e24e02d4ddd8395fd30dc147524273a83e54e0f312d986ea30de5f5646" +dependencies = [ + "roxmltree", +] + +[[package]] +name = "fontdb" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0299020c3ef3f60f526a4f64ab4a3d4ce116b1acbf24cdd22da0068e5d81dc3" +dependencies = [ + "fontconfig-parser", + "log", + "memmap2", + "slotmap", + "tinyvec", + "ttf-parser 0.20.0", +] + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", + "num_cpus", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-lite" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "gethostname" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" +dependencies = [ + "libc", + "windows-targets 0.48.5", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + +[[package]] +name = "gif" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae047235e33e2829703574b54fdec96bfbad892062d97fed2f76022287de61b" +dependencies = [ + "color_quant", + "weezl", +] + +[[package]] +name = "gl_generator" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" +dependencies = [ + "khronos_api", + "log", + "xml-rs", +] + +[[package]] +name = "glam" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "151665d9be52f9bb40fc7966565d39666f2d1e69233571b71b87791c7e0528b3" + +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "glow" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "glutin_wgl_sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead" +dependencies = [ + "gl_generator", +] + +[[package]] +name = "gpu-alloc" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" +dependencies = [ + "bitflags 2.9.1", + "gpu-alloc-types", +] + +[[package]] +name = "gpu-alloc-types" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "gpu-allocator" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f56f6318968d03c18e1bcf4857ff88c61157e9da8e47c5f29055d60e1228884" +dependencies = [ + "log", + "presser", + "thiserror", + "winapi", + "windows", +] + +[[package]] +name = "gpu-descriptor" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" +dependencies = [ + "bitflags 2.9.1", + "gpu-descriptor-types", + "hashbrown 0.14.5", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "guillotiere" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782" +dependencies = [ + "euclid", + "svg_fmt", +] + +[[package]] +name = "half" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" +dependencies = [ + "cfg-if", + "crunchy", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.8", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash 0.8.12", + "allocator-api2", +] + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" + +[[package]] +name = "hassle-rs" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" +dependencies = [ + "bitflags 2.9.1", + "com", + "libc", + "libloading 0.8.8", + "thiserror", + "widestring", + "winapi", +] + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hexf-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" + +[[package]] +name = "honeycomb-navigation" +version = "0.1.0" +dependencies = [ + "anyhow", + "iced", + "iced_layershell", + "interprocess", + "tempfile", + "tracing", + "tracing-subscriber", + "xkbcommon", +] + +[[package]] +name = "iced" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88acfabc84ec077eaf9ede3457ffa3a104626d79022a9bf7f296093b1d60c73f" +dependencies = [ + "iced_core", + "iced_futures", + "iced_renderer", + "iced_widget", + "iced_winit", + "image", + "thiserror", +] + +[[package]] +name = "iced_core" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0013a238275494641bf8f1732a23a808196540dc67b22ff97099c044ae4c8a1c" +dependencies = [ + "bitflags 2.9.1", + "bytes", + "dark-light", + "glam", + "log", + "num-traits", + "once_cell", + "palette", + "rustc-hash 2.1.1", + "smol_str", + "thiserror", + "web-time", +] + +[[package]] +name = "iced_futures" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c04a6745ba2e80f32cf01e034fd00d853aa4f4cd8b91888099cb7aaee0d5d7c" +dependencies = [ + "async-std", + "futures", + "iced_core", + "log", + "rustc-hash 2.1.1", + "wasm-bindgen-futures", + "wasm-timer", +] + +[[package]] +name = "iced_glyphon" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41c3bb56f1820ca252bc1d0994ece33d233a55657c0c263ea7cb16895adbde82" +dependencies = [ + "cosmic-text", + "etagere", + "lru", + "rustc-hash 2.1.1", + "wgpu", +] + +[[package]] +name = "iced_graphics" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba25a18cfa6d5cc160aca7e1b34f73ccdff21680fa8702168c09739767b6c66f" +dependencies = [ + "bitflags 2.9.1", + "bytemuck", + "cosmic-text", + "half", + "iced_core", + "iced_futures", + "image", + "kamadak-exif", + "log", + "once_cell", + "raw-window-handle", + "rustc-hash 2.1.1", + "thiserror", + "unicode-segmentation", +] + +[[package]] +name = "iced_layershell" +version = "0.13.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9ff107c0d7ca85e81566f391f5acabc2473f87ed7de33aaef7b4d600592067" +dependencies = [ + "futures", + "iced", + "iced_core", + "iced_futures", + "iced_graphics", + "iced_layershell_macros", + "iced_renderer", + "iced_runtime", + "layershellev", + "log", + "thiserror", + "tracing", + "window_clipboard", +] + +[[package]] +name = "iced_layershell_macros" +version = "0.13.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7a9be2dc188479ea8c327432b55727cbab17be0d79e7eb3df14727191068f1" +dependencies = [ + "darling", + "manyhow", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "iced_renderer" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73558208059f9e622df2bf434e044ee2f838ce75201a023cf0ca3e1244f46c2a" +dependencies = [ + "iced_graphics", + "iced_tiny_skia", + "iced_wgpu", + "log", + "thiserror", +] + +[[package]] +name = "iced_runtime" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "348b5b2c61c934d88ca3b0ed1ed913291e923d086a66fa288ce9669da9ef62b5" +dependencies = [ + "bytes", + "iced_core", + "iced_futures", + "raw-window-handle", + "thiserror", +] + +[[package]] +name = "iced_tiny_skia" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c625d368284fcc43b0b36b176f76eff1abebe7959dd58bd8ce6897d641962a50" +dependencies = [ + "bytemuck", + "cosmic-text", + "iced_graphics", + "kurbo", + "log", + "rustc-hash 2.1.1", + "softbuffer", + "tiny-skia", +] + +[[package]] +name = "iced_wgpu" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15708887133671d2bcc6c1d01d1f176f43a64d6cdc3b2bf893396c3ee498295f" +dependencies = [ + "bitflags 2.9.1", + "bytemuck", + "futures", + "glam", + "guillotiere", + "iced_glyphon", + "iced_graphics", + "log", + "once_cell", + "rustc-hash 2.1.1", + "thiserror", + "wgpu", +] + +[[package]] +name = "iced_widget" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81429e1b950b0e4bca65be4c4278fea6678ea782030a411778f26fa9f8983e1d" +dependencies = [ + "iced_renderer", + "iced_runtime", + "num-traits", + "once_cell", + "rustc-hash 2.1.1", + "thiserror", + "unicode-segmentation", +] + +[[package]] +name = "iced_winit" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f44cd4e1c594b6334f409282937bf972ba14d31fedf03c23aa595d982a2fda28" +dependencies = [ + "iced_futures", + "iced_graphics", + "iced_runtime", + "log", + "rustc-hash 2.1.1", + "thiserror", + "tracing", + "wasm-bindgen-futures", + "web-sys", + "winapi", + "window_clipboard", + "winit", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "image" +version = "0.24.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "exr", + "gif", + "jpeg-decoder", + "num-traits", + "png", + "qoi", + "tiff", +] + +[[package]] +name = "indexmap" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +dependencies = [ + "equivalent", + "hashbrown 0.15.5", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "interprocess" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53bf2b0e0785c5394a7392f66d7c4fb9c653633c29b27a932280da3cb344c66a" +dependencies = [ + "doctest-file", + "libc", + "recvmsg", + "widestring", + "windows-sys 0.52.0", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" +dependencies = [ + "getrandom 0.3.3", + "libc", +] + +[[package]] +name = "jpeg-decoder" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07" +dependencies = [ + "rayon", +] + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "kamadak-exif" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef4fc70d0ab7e5b6bafa30216a6b48705ea964cdfc29c050f2412295eba58077" +dependencies = [ + "mutate_once", +] + +[[package]] +name = "khronos-egl" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" +dependencies = [ + "libc", + "libloading 0.8.8", + "pkg-config", +] + +[[package]] +name = "khronos_api" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" + +[[package]] +name = "kurbo" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1618d4ebd923e97d67e7cd363d80aef35fe961005cbbbb3d2dad8bdd1bc63440" +dependencies = [ + "arrayvec", + "smallvec", +] + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[package]] +name = "layershellev" +version = "0.13.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5dd46870775aec1b5265b29f3dbd38845423dff5bb1a11e0f7c12e312e6ecf" +dependencies = [ + "bitflags 2.9.1", + "calloop 0.14.3", + "calloop-wayland-source 0.4.0", + "log", + "raw-window-handle", + "tempfile", + "thiserror", + "waycrate_xkbkeycode", + "wayland-backend", + "wayland-client", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-misc", + "wayland-protocols-wlr", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "lebe" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" + +[[package]] +name = "libc" +version = "0.2.174" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libloading" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +dependencies = [ + "cfg-if", + "windows-targets 0.53.3", +] + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + +[[package]] +name = "libredox" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" +dependencies = [ + "bitflags 2.9.1", + "libc", + "redox_syscall 0.5.17", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "linux-raw-sys" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a385b1be4e5c3e362ad2ffa73c392e53f031eaa5b7d648e64cd87f27f6063d7" + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +dependencies = [ + "value-bag", +] + +[[package]] +name = "lru" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "manyhow" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b33efb3ca6d3b07393750d4030418d594ab1139cee518f0dc88db70fec873587" +dependencies = [ + "darling_core", + "manyhow-macros", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "manyhow-macros" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46fce34d199b78b6e6073abf984c9cf5fd3e9330145a93ee0738a7443e371495" +dependencies = [ + "proc-macro-utils", + "proc-macro2", + "quote", +] + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "memmap2" +version = "0.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "483758ad303d734cec05e5c12b41d7e93e6a6390c5e9dae6bdeb7c1259012d28" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "metal" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" +dependencies = [ + "bitflags 2.9.1", + "block", + "core-graphics-types 0.1.3", + "foreign-types", + "log", + "objc", + "paste", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mutate_once" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16cf681a23b4d0a43fc35024c176437f9dcd818db34e0f42ab456a0ee5ad497b" + +[[package]] +name = "naga" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843" +dependencies = [ + "bit-set", + "bitflags 2.9.1", + "codespan-reporting", + "hexf-parse", + "indexmap", + "log", + "num-traits", + "rustc-hash 1.1.0", + "spirv", + "termcolor", + "thiserror", + "unicode-xid", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.9.1", + "jni-sys", + "log", + "ndk-sys 0.6.0+11769913", + "num_enum", + "raw-window-handle", + "thiserror", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.5.0+25.2.9519653" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "cfg_aliases 0.2.1", + "libc", + "memoffset", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", + "objc_exception", +] + +[[package]] +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.9.1", + "block2", + "libc", + "objc2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" +dependencies = [ + "bitflags 2.9.1", + "block2", + "objc2", + "objc2-core-location", + "objc2-foundation", +] + +[[package]] +name = "objc2-contacts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.9.1", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-core-location" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" +dependencies = [ + "block2", + "objc2", + "objc2-contacts", + "objc2-foundation", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.9.1", + "block2", + "dispatch", + "libc", + "objc2", +] + +[[package]] +name = "objc2-link-presentation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" +dependencies = [ + "block2", + "objc2", + "objc2-app-kit", + "objc2-foundation", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.9.1", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.9.1", + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-symbols" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +dependencies = [ + "bitflags 2.9.1", + "block2", + "objc2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", + "objc2-foundation", + "objc2-link-presentation", + "objc2-quartz-core", + "objc2-symbols", + "objc2-uniform-type-identifiers", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-uniform-type-identifiers" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" +dependencies = [ + "bitflags 2.9.1", + "block2", + "objc2", + "objc2-core-location", + "objc2-foundation", +] + +[[package]] +name = "objc_exception" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +dependencies = [ + "cc", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "orbclient" +version = "0.3.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba0b26cec2e24f08ed8bb31519a9333140a6599b867dac464bb150bdb796fd43" +dependencies = [ + "libredox", +] + +[[package]] +name = "ordered-multimap" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccd746e37177e1711c20dd619a1620f34f5c8b569c53590a72dedd5344d8924a" +dependencies = [ + "dlv-list", + "hashbrown 0.12.3", +] + +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "owned_ttf_parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b" +dependencies = [ + "ttf-parser 0.25.1", +] + +[[package]] +name = "palette" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cbf71184cc5ecc2e4e1baccdb21026c20e5fc3dcf63028a086131b3ab00b6e6" +dependencies = [ + "approx", + "fast-srgb8", + "palette_derive", + "phf", +] + +[[package]] +name = "palette_derive" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5030daf005bface118c096f510ffb781fc28f9ab6a32ab224d8631be6851d30" +dependencies = [ + "by_address", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.6", +] + +[[package]] +name = "parking_lot" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.11", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.5.17", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_macros", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared", + "rand", +] + +[[package]] +name = "phf_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "png" +version = "0.17.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polling" +version = "3.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5bd19146350fe804f7cb2669c851c03d69da628803dab0d98018142aaa5d829" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix 1.0.8", + "windows-sys 0.60.2", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "presser" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" + +[[package]] +name = "proc-macro-crate" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro-utils" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eeaf08a13de400bc215877b5bdc088f241b12eb42f0a548d3390dc1c56bb7071" +dependencies = [ + "proc-macro2", + "quote", + "smallvec", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" + +[[package]] +name = "qoi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "quick-xml" +version = "0.37.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "range-alloc" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d6831663a5098ea164f89cff59c6284e95f4e3c76ce9848d4529f5ccca9bde" + +[[package]] +name = "rangemap" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93e7e49bb0bf967717f7bd674458b3d6b0c5f48ec7e3038166026a69fc22223" + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "read-fonts" +version = "0.22.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69aacb76b5c29acfb7f90155d39759a29496aebb49395830e928a9703d2eec2f" +dependencies = [ + "bytemuck", + "font-types", +] + +[[package]] +name = "recvmsg" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175" + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.16", + "libredox", + "thiserror", +] + +[[package]] +name = "renderdoc-sys" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" + +[[package]] +name = "roxmltree" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" + +[[package]] +name = "rust-ini" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6d5f2436026b4f6e79dc829837d467cc7e9a55ee40e750d716713540715a2df" +dependencies = [ + "cfg-if", + "ordered-multimap", +] + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags 2.9.1", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +dependencies = [ + "bitflags 2.9.1", + "errno", + "libc", + "linux-raw-sys 0.9.4", + "windows-sys 0.60.2", +] + +[[package]] +name = "rustversion" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" + +[[package]] +name = "rustybuzz" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfb9cf8877777222e4a3bc7eb247e398b56baba500c38c1c46842431adc8b55c" +dependencies = [ + "bitflags 2.9.1", + "bytemuck", + "libm", + "smallvec", + "ttf-parser 0.21.1", + "unicode-bidi-mirroring", + "unicode-ccc", + "unicode-properties", + "unicode-script", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sctk-adwaita" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" +dependencies = [ + "ab_glyph", + "log", + "memmap2", + "smithay-client-toolkit", + "tiny-skia", +] + +[[package]] +name = "self_cell" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f7d95a54511e0c7be3f51e8867aa8cf35148d7b9445d44de2f943e2b206e749" + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +dependencies = [ + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[package]] +name = "skrifa" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1c44ad1f6c5bdd4eefed8326711b7dbda9ea45dfd36068c427d332aa382cbe" +dependencies = [ + "bytemuck", + "read-fonts", +] + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "slotmap" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" +dependencies = [ + "version_check", +] + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "smithay-client-toolkit" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" +dependencies = [ + "bitflags 2.9.1", + "calloop 0.13.0", + "calloop-wayland-source 0.3.0", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix 0.38.44", + "thiserror", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smithay-clipboard" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc8216eec463674a0e90f29e0ae41a4db573ec5b56b1c6c1c71615d249b6d846" +dependencies = [ + "libc", + "smithay-client-toolkit", + "wayland-backend", +] + +[[package]] +name = "smol_str" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" +dependencies = [ + "serde", +] + +[[package]] +name = "softbuffer" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18051cdd562e792cad055119e0cdb2cfc137e44e3987532e0f9659a77931bb08" +dependencies = [ + "as-raw-xcb-connection", + "bytemuck", + "cfg_aliases 0.2.1", + "core-graphics 0.24.0", + "drm", + "fastrand", + "foreign-types", + "js-sys", + "log", + "memmap2", + "objc2", + "objc2-foundation", + "objc2-quartz-core", + "raw-window-handle", + "redox_syscall 0.5.17", + "rustix 0.38.44", + "tiny-xlib", + "wasm-bindgen", + "wayland-backend", + "wayland-client", + "wayland-sys", + "web-sys", + "windows-sys 0.59.0", + "x11rb", +] + +[[package]] +name = "spirv" +version = "0.3.0+sdk-1.3.268.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strict-num" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "svg_fmt" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0193cc4331cfd2f3d2011ef287590868599a2f33c3e69bc22c1a3d3acf9e02fb" + +[[package]] +name = "swash" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbd59f3f359ddd2c95af4758c18270eddd9c730dde98598023cdabff472c2ca2" +dependencies = [ + "skrifa", + "yazi", + "zeno", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sys-locale" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4" +dependencies = [ + "libc", +] + +[[package]] +name = "tempfile" +version = "3.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +dependencies = [ + "fastrand", + "getrandom 0.3.3", + "once_cell", + "rustix 1.0.8", + "windows-sys 0.59.0", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "tiff" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" +dependencies = [ + "flate2", + "jpeg-decoder", + "weezl", +] + +[[package]] +name = "tiny-skia" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" +dependencies = [ + "arrayref", + "arrayvec", + "bytemuck", + "cfg-if", + "log", + "png", + "tiny-skia-path", +] + +[[package]] +name = "tiny-skia-path" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" +dependencies = [ + "arrayref", + "bytemuck", + "strict-num", +] + +[[package]] +name = "tiny-xlib" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0324504befd01cab6e0c994f34b2ffa257849ee019d3fb3b64fb2c858887d89e" +dependencies = [ + "as-raw-xcb-connection", + "ctor-lite", + "libloading 0.8.8", + "pkg-config", + "tracing", +] + +[[package]] +name = "tinyvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "nu-ansi-term", + "sharded-slab", + "smallvec", + "thread_local", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "ttf-parser" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" + +[[package]] +name = "ttf-parser" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c591d83f69777866b9126b24c6dd9a18351f177e49d625920d19f989fd31cf8" + +[[package]] +name = "ttf-parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "uds_windows" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset", + "tempfile", + "winapi", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" + +[[package]] +name = "unicode-bidi-mirroring" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23cb788ffebc92c5948d0e997106233eeb1d8b9512f93f41651f52b6c5f5af86" + +[[package]] +name = "unicode-ccc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df77b101bcc4ea3d78dafc5ad7e4f58ceffe0b2b16bf446aeb50b6cb4157656" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-linebreak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" + +[[package]] +name = "unicode-properties" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" + +[[package]] +name = "unicode-script" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb421b350c9aff471779e262955939f565ec18b86c15364e6bdf0d662ca7c1f" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "value-bag" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.104", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-timer" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" +dependencies = [ + "futures", + "js-sys", + "parking_lot 0.11.2", + "pin-utils", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "waycrate_xkbkeycode" +version = "0.13.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a36a4a1e2ae0ef1d628f031e441ec5db79fcce5f888e8082b69340eb7fcd90d" +dependencies = [ + "bitflags 2.9.1", + "calloop 0.14.3", + "log", + "memmap2", + "smol_str", + "wayland-backend", + "wayland-client", + "xkbcommon-dl", +] + +[[package]] +name = "wayland-backend" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673a33c33048a5ade91a6b139580fa174e19fb0d23f396dca9fa15f2e1e49b35" +dependencies = [ + "cc", + "downcast-rs", + "rustix 1.0.8", + "scoped-tls", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66a47e840dc20793f2264eb4b3e4ecb4b75d91c0dd4af04b456128e0bdd449d" +dependencies = [ + "bitflags 2.9.1", + "rustix 1.0.8", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-csd-frame" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" +dependencies = [ + "bitflags 2.9.1", + "cursor-icon", + "wayland-backend", +] + +[[package]] +name = "wayland-cursor" +version = "0.31.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "447ccc440a881271b19e9989f75726d60faa09b95b0200a9b7eb5cc47c3eeb29" +dependencies = [ + "rustix 1.0.8", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.32.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efa790ed75fbfd71283bd2521a1cfdc022aabcc28bdcff00851f9e4ae88d9901" +dependencies = [ + "bitflags 2.9.1", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-misc" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dfe33d551eb8bffd03ff067a8b44bb963919157841a99957151299a6307d19c" +dependencies = [ + "bitflags 2.9.1", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-plasma" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a07a14257c077ab3279987c4f8bb987851bf57081b93710381daea94f2c2c032" +dependencies = [ + "bitflags 2.9.1", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efd94963ed43cf9938a090ca4f7da58eb55325ec8200c3848963e98dc25b78ec" +dependencies = [ + "bitflags 2.9.1", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54cb1e9dc49da91950bdfd8b848c49330536d9d1fb03d4bfec8cae50caa50ae3" +dependencies = [ + "proc-macro2", + "quick-xml", + "quote", +] + +[[package]] +name = "wayland-sys" +version = "0.31.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34949b42822155826b41db8e5d0c1be3a2bd296c747577a43a3e6daefc296142" +dependencies = [ + "dlib", + "log", + "once_cell", + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "weezl" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3" + +[[package]] +name = "wgpu" +version = "0.19.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbd7311dbd2abcfebaabf1841a2824ed7c8be443a0f29166e5d3c6a53a762c01" +dependencies = [ + "arrayvec", + "cfg-if", + "cfg_aliases 0.1.1", + "js-sys", + "log", + "naga", + "parking_lot 0.12.4", + "profiling", + "raw-window-handle", + "smallvec", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-core" +version = "0.19.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28b94525fc99ba9e5c9a9e24764f2bc29bad0911a7446c12f446a8277369bf3a" +dependencies = [ + "arrayvec", + "bit-vec", + "bitflags 2.9.1", + "cfg_aliases 0.1.1", + "codespan-reporting", + "indexmap", + "log", + "naga", + "once_cell", + "parking_lot 0.12.4", + "profiling", + "raw-window-handle", + "rustc-hash 1.1.0", + "smallvec", + "thiserror", + "web-sys", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-hal" +version = "0.19.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfabcfc55fd86611a855816326b2d54c3b2fd7972c27ce414291562650552703" +dependencies = [ + "android_system_properties", + "arrayvec", + "ash", + "bit-set", + "bitflags 2.9.1", + "block", + "cfg_aliases 0.1.1", + "core-graphics-types 0.1.3", + "d3d12", + "glow", + "glutin_wgl_sys", + "gpu-alloc", + "gpu-allocator", + "gpu-descriptor", + "hassle-rs", + "js-sys", + "khronos-egl", + "libc", + "libloading 0.8.8", + "log", + "metal", + "naga", + "ndk-sys 0.5.0+25.2.9519653", + "objc", + "once_cell", + "parking_lot 0.12.4", + "profiling", + "range-alloc", + "raw-window-handle", + "renderdoc-sys", + "rustc-hash 1.1.0", + "smallvec", + "thiserror", + "wasm-bindgen", + "web-sys", + "wgpu-types", + "winapi", +] + +[[package]] +name = "wgpu-types" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b671ff9fb03f78b46ff176494ee1ebe7d603393f42664be55b64dc8d53969805" +dependencies = [ + "bitflags 2.9.1", + "js-sys", + "web-sys", +] + +[[package]] +name = "widestring" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "window_clipboard" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6d692d46038c433f9daee7ad8757e002a4248c20b0a3fbc991d99521d3bcb6d" +dependencies = [ + "clipboard-win", + "clipboard_macos", + "clipboard_wayland", + "clipboard_x11", + "raw-window-handle", + "thiserror", +] + +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.3", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "winit" +version = "0.30.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66d4b9ed69c4009f6321f762d6e61ad8a2389cd431b97cb1e146812e9e6c732" +dependencies = [ + "ahash 0.8.12", + "android-activity", + "atomic-waker", + "bitflags 2.9.1", + "block2", + "bytemuck", + "calloop 0.13.0", + "cfg_aliases 0.2.1", + "concurrent-queue", + "core-foundation 0.9.4", + "core-graphics 0.23.2", + "cursor-icon", + "dpi", + "js-sys", + "libc", + "memmap2", + "ndk", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", + "orbclient", + "percent-encoding", + "pin-project", + "raw-window-handle", + "redox_syscall 0.4.1", + "rustix 0.38.44", + "sctk-adwaita", + "smithay-client-toolkit", + "smol_str", + "tracing", + "unicode-segmentation", + "wasm-bindgen", + "wasm-bindgen-futures", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-protocols-plasma", + "web-sys", + "web-time", + "windows-sys 0.52.0", + "x11-dl", + "x11rb", + "xkbcommon-dl", +] + +[[package]] +name = "winnow" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "x11rb" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" +dependencies = [ + "as-raw-xcb-connection", + "gethostname", + "libc", + "libloading 0.8.8", + "once_cell", + "rustix 0.38.44", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" + +[[package]] +name = "xcursor" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b" + +[[package]] +name = "xdg-home" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "xkbcommon" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a974f48060a14e95705c01f24ad9c3345022f4d97441b8a36beb7ed5c4a02d" +dependencies = [ + "libc", + "memmap2", + "xkeysym", +] + +[[package]] +name = "xkbcommon-dl" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" +dependencies = [ + "bitflags 2.9.1", + "dlib", + "log", + "once_cell", + "xkeysym", +] + +[[package]] +name = "xkeysym" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" + +[[package]] +name = "xml-rs" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7" + +[[package]] +name = "yazi" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c94451ac9513335b5e23d7a8a2b61a7102398b8cca5160829d313e84c9d98be1" + +[[package]] +name = "zbus" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" +dependencies = [ + "async-broadcast", + "async-executor", + "async-fs", + "async-io", + "async-lock", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "enumflags2", + "event-listener 5.4.1", + "futures-core", + "futures-sink", + "futures-util", + "hex", + "nix", + "ordered-stream", + "rand", + "serde", + "serde_repr", + "sha1", + "static_assertions", + "tracing", + "uds_windows", + "windows-sys 0.52.0", + "xdg-home", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" +dependencies = [ + "serde", + "static_assertions", + "zvariant", +] + +[[package]] +name = "zeno" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd15f8e0dbb966fd9245e7498c7e9e5055d9e5c8b676b95bd67091cd11a1e697" + +[[package]] +name = "zerocopy" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "zvariant" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" +dependencies = [ + "endi", + "enumflags2", + "serde", + "static_assertions", + "zvariant_derive", +] + +[[package]] +name = "zvariant_derive" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..418ac4d --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "honeycomb-navigation" +version = "0.1.0" +edition = "2024" + +[dependencies] +anyhow = "1.0.98" +iced = { version = "0.13.1", features = [ "image", "async-std" ] } +iced_layershell = "0.13.7" +interprocess = "2.3.1" +tempfile = "3.20.0" +tracing = "0.1.41" +tracing-subscriber = "0.3.19" +xkbcommon = "0.9.0" diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..728e2be --- /dev/null +++ b/LICENSE @@ -0,0 +1,16 @@ +Copyright 2025 Project Honeycomb contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the “Software”), to deal +in the Software without restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, +and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/LICENSE_ASSETS b/LICENSE_ASSETS new file mode 120000 index 0000000..abf83b1 --- /dev/null +++ b/LICENSE_ASSETS @@ -0,0 +1 @@ +src/res/NOTICE_ASSETS \ No newline at end of file diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000..e69de29 diff --git a/src/ipc.rs b/src/ipc.rs new file mode 100644 index 0000000..8cc978f --- /dev/null +++ b/src/ipc.rs @@ -0,0 +1,29 @@ +use anyhow::Result; +use interprocess::local_socket::{ + GenericNamespaced, NameType, Stream, ToNsName, traits::Stream as _, +}; +use std::io::{BufWriter, Write}; + +pub struct Ipc; + +impl Ipc { + fn connect() -> Result> { + let name = if GenericNamespaced::is_supported() { + "honeycomb-mgr.sock".to_ns_name::()? + } else { + "/tmp/homeycomb-mgr.sock".to_ns_name::()? + }; + + let conn = Stream::connect(name)?; + + Ok(BufWriter::new(conn)) + } + + pub fn open_recents() -> Result<()> { + let mut bufwriter = Self::connect()?; + + bufwriter.write(b"recents\n")?; + + Ok(()) + } +} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..0ccba37 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,239 @@ +use std::time::Duration; + +use anyhow::anyhow; +use iced::theme::Palette; +use iced::widget::image::{self, Handle}; +use iced::widget::{Button, Text, button, horizontal_space, row, stack}; +use iced::{ + Background, Border, Color, Element, Event, Font, Shadow, Task as Command, Task, Theme, color, + event, font, time, +}; +use iced_layershell::Application; +use iced_layershell::actions::{LayershellCustomActions, LayershellCustomActionsWithId}; +use iced_layershell::reexport::Anchor; +use iced_layershell::reexport::wl_keyboard::KeymapFormat; +use iced_layershell::settings::{LayerShellSettings, Settings, StartMode, VirtualKeyboardSettings}; +use iced_layershell::to_layer_message; + +use crate::ipc::Ipc; +use crate::xkb::get_keymap_as_file; + +mod ipc; +mod xkb; + +pub fn transparent_button(_: &Theme, _: button::Status) -> button::Style { + button::Style { + background: Some(Background::Color(Color::TRANSPARENT)), + text_color: Color::WHITE, + border: Border::default(), + shadow: Shadow::default(), + } +} + +pub fn main() -> Result<(), iced_layershell::Error> { + let bound_output_name = std::env::args().nth(1); + let start_mode = match bound_output_name { + Some(output) => StartMode::TargetScreen(output), + None => StartMode::Active, + }; + let (file, keymap_size) = get_keymap_as_file(); + + tracing_subscriber::fmt::init(); + + Bar::run(Settings { + layer_settings: LayerShellSettings { + size: Some((0, 40)), + exclusive_zone: 40, + anchor: Anchor::Bottom | Anchor::Left | Anchor::Right, + start_mode, + ..Default::default() + }, + virtual_keyboard_support: Some(VirtualKeyboardSettings { + file, + keymap_size, + keymap_format: KeymapFormat::XkbV1, + }), + ..Default::default() + }) +} + +struct Bar { + back_clicked: bool, + home_clicked: bool, + recent_clicked: bool, +} + +#[derive(Debug, Clone)] +enum NavButton { + Back, + Home, + Recent, +} + +#[to_layer_message] +#[derive(Debug, Clone)] +#[allow(dead_code)] +enum Message { + IcedEvent(Event), + ButtonClicked(NavButton), + Poll, + FontLoaded(Result<(), font::Error>), + PressEsc, + OpenRecents, +} + +impl TryInto for Message { + type Error = anyhow::Error; + fn try_into(self) -> Result { + match self { + Message::PressEsc => Ok(LayershellCustomActionsWithId( + None, + LayershellCustomActions::VirtualKeyboardPressed { time: 100, key: 27 }, + )), + + _ => Err(anyhow!("unknown message")), + } + } +} + +impl Application for Bar { + type Message = Message; + type Flags = (); + type Theme = Theme; + type Executor = iced::executor::Default; + + fn new(_flags: ()) -> (Self, Command) { + ( + Self { + back_clicked: false, + home_clicked: false, + recent_clicked: false, + }, + Command::batch([ + font::load(include_bytes!("res/fonts/HoneycombClock.ttf").as_slice()) + .map(Message::FontLoaded), + font::load(include_bytes!("res/fonts/HoneycombClock2.ttf").as_slice()) + .map(Message::FontLoaded), + ]), + ) + } + + fn namespace(&self) -> String { + String::from("project honeycomb") + } + + fn subscription(&self) -> iced::Subscription { + iced::Subscription::batch(vec![ + event::listen().map(Message::IcedEvent), + time::every(Duration::from_millis(300)).map(|_| Message::Poll), + ]) + } + + fn update(&mut self, message: Message) -> Task { + match message { + Message::ButtonClicked(button) => match button { + NavButton::Back => { + self.back_clicked = true; + Task::done(Message::PressEsc) + } + + NavButton::Home => { + self.home_clicked = true; + Task::none() + } + + NavButton::Recent => { + self.recent_clicked = true; + Task::done(Message::OpenRecents) + } + }, + + Message::Poll => { + self.back_clicked = false; + self.home_clicked = false; + self.recent_clicked = false; + Task::none() + } + + Message::FontLoaded(result) => { + match result { + Ok(_) => { + println!("successfully loaded font!"); + } + + Err(_) => { + println!("error while loading font"); + } + } + Task::none() + } + + Message::OpenRecents => { + Ipc::open_recents().unwrap(); + Task::none() + } + + _ => Task::none(), + } + } + + fn view(&self) -> Element<'_, Message> { + let back = if !self.back_clicked { + include_bytes!("res/back_default.png") as &[u8] + } else { + include_bytes!("res/back_pressed.png") as &[u8] + }; + let back_button = Button::new(image::Image::new(Handle::from_bytes(back))) + .on_press(Message::ButtonClicked(NavButton::Back)) + .style(transparent_button); + + let home = if !self.home_clicked { + include_bytes!("res/home_default.png") as &[u8] + } else { + include_bytes!("res/home_pressed.png") as &[u8] + }; + let home_button = Button::new(image::Image::new(Handle::from_bytes(home))) + .on_press(Message::ButtonClicked(NavButton::Home)) + .style(transparent_button); + + let recent = if !self.recent_clicked { + include_bytes!("res/recent_default.png") as &[u8] + } else { + include_bytes!("res/recent_pressed.png") as &[u8] + }; + let recent_button = Button::new(image::Image::new(Handle::from_bytes(recent))) + .on_press(Message::ButtonClicked(NavButton::Recent)) + .style(transparent_button); + + let clock_1 = Font::with_name("HoneycombClock"); + let clock_2 = Font::with_name("HoneycombClock2"); + + let color = color!(0x525d7b); + + let text_time_1 = Text::new("12:35").font(clock_1).size(35).color(color); + let text_time_2 = Text::new("12:35").font(clock_2).size(35).color(color); + + let text_time = stack!(text_time_2).push(text_time_1); + + row![ + back_button, + home_button, + recent_button, + horizontal_space(), + text_time, + ] + .into() + } + + fn theme(&self) -> Self::Theme { + let custom_palette = Palette { + background: Color::BLACK, + primary: Color::BLACK, + text: Color::WHITE, + success: Color::WHITE, + danger: Color::WHITE, + }; + + Theme::custom("honeycomb-default".to_owned(), custom_palette) + } +} diff --git a/src/res/NOTICE_ASSETS b/src/res/NOTICE_ASSETS new file mode 100644 index 0000000..f93bf52 --- /dev/null +++ b/src/res/NOTICE_ASSETS @@ -0,0 +1,158 @@ + Copyright (c) 2005-2008, The Android Open Source Project + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + 1. Definitions. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + END OF TERMS AND CONDITIONS diff --git a/src/res/back_default.png b/src/res/back_default.png new file mode 100644 index 0000000000000000000000000000000000000000..ca8656cd70eab2a11af2dbaac1b8983309f6a8d1 GIT binary patch literal 6277 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
)DYqE^?Z{rEArc+PE0$AuTRv*okq=jtZaTCLjZ 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 L3crCk$ZNy^g(fCj literal 0 HcmV?d00001 diff --git a/src/res/fonts/HoneycombClock2.ttf b/src/res/fonts/HoneycombClock2.ttf new file mode 100644 index 0000000000000000000000000000000000000000..3f2c6de4fedeb5c31f764906f35c354fca375d91 GIT binary patch literal 9884 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 literal 0 HcmV?d00001 diff --git a/src/res/home_default.png b/src/res/home_default.png new file mode 100644 index 0000000000000000000000000000000000000000..06c99218f2345a281e8aa056ab0c074c98137571 GIT binary patch literal 6531 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 Am;e9( literal 0 HcmV?d00001 diff --git a/src/res/home_pressed.png b/src/res/home_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..83068a9b3f3833d027ada87e14dfaa52fbcd9bcc GIT binary patch literal 8044 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 literal 0 HcmV?d00001 diff --git a/src/res/recent_default.png b/src/res/recent_default.png new file mode 100644 index 0000000000000000000000000000000000000000..b2c4d45d172c9e68e135bda1b1fd27feac755a4e GIT binary patch literal 5163 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 V7H)lP#=yY9;OXk;vd$@?2>{6z?|%RQ literal 0 HcmV?d00001 diff --git a/src/res/recent_pressed.png b/src/res/recent_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..afc4057471e96b460d4f0e455f6139edc84639bf GIT binary patch literal 6664 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 E0I^cN(*OVf literal 0 HcmV?d00001 diff --git a/src/xkb.rs b/src/xkb.rs new file mode 100644 index 0000000..21886e9 --- /dev/null +++ b/src/xkb.rs @@ -0,0 +1,32 @@ +use std::{ffi::CString, fs::File, io::Write, path::PathBuf}; + +use xkbcommon::xkb; + +// from https://github.com/ptazithos/wkeys/blob/main/wkeys/src/native/session.rs +pub fn get_keymap_as_file() -> (File, u32) { + let context = xkb::Context::new(xkb::CONTEXT_NO_FLAGS); + + let keymap = xkb::Keymap::new_from_names( + &context, + "", + "", + "us", + "", + None, + xkb::KEYMAP_COMPILE_NO_FLAGS, + ) + .expect("xkbcommon keymap panicked!"); + let xkb_state = xkb::State::new(&keymap); + let keymap = xkb_state + .get_keymap() + .get_as_string(xkb::KEYMAP_FORMAT_TEXT_V1); + let keymap = CString::new(keymap).expect("Keymap should not contain interior nul bytes"); + let keymap = keymap.as_bytes_with_nul(); + let dir = std::env::var_os("XDG_RUNTIME_DIR") + .map(PathBuf::from) + .unwrap_or_else(std::env::temp_dir); + let mut file = tempfile::tempfile_in(dir).expect("File could not be created!"); + file.write_all(keymap).unwrap(); + file.flush().unwrap(); + (file, keymap.len() as u32) +}