From dfe7a7e971b03ff37659018e3a41ec7946584435 Mon Sep 17 00:00:00 2001 From: arabian Date: Wed, 24 Sep 2025 22:51:34 +0300 Subject: [PATCH] 1.0.0 rewrite --- Cargo.lock | 4676 +++++++++++++++++++++++ Cargo.toml | 55 +- assets/icon.png | Bin 0 -> 12460 bytes assets/pwsp-daemon.service | 10 + pwsp.desktop => assets/pwsp-gui.desktop | 5 +- assets/screenshot.png | Bin 0 -> 205110 bytes screenshot.png | Bin 251895 -> 0 bytes scripts/build.sh | 5 + scripts/build_all.sh | 24 + scripts/build_deb.sh | 8 + scripts/build_rpm.sh | 8 + src/bin/cli.rs | 113 + src/bin/daemon.rs | 96 + src/gui/draw.rs | 320 ++ src/gui/input.rs | 24 + src/gui/mod.rs | 134 + src/gui/update.rs | 77 + src/lib.rs | 2 + src/main.rs | 9 +- src/types/audio_player.rs | 240 ++ src/types/commands.rs | 234 ++ src/types/config.rs | 81 + src/types/gui.rs | 39 + src/types/mod.rs | 6 + src/types/pipewire.rs | 31 + src/types/socket.rs | 101 + src/utils/commands.rs | 57 + src/utils/config.rs | 6 + src/utils/daemon.rs | 156 + src/utils/gui.rs | 159 + src/utils/mod.rs | 5 + src/utils/pipewire.rs | 299 ++ 32 files changed, 6973 insertions(+), 7 deletions(-) create mode 100644 assets/icon.png create mode 100644 assets/pwsp-daemon.service rename pwsp.desktop => assets/pwsp-gui.desktop (50%) create mode 100644 assets/screenshot.png delete mode 100644 screenshot.png create mode 100755 scripts/build.sh create mode 100755 scripts/build_all.sh create mode 100755 scripts/build_deb.sh create mode 100755 scripts/build_rpm.sh create mode 100644 src/bin/cli.rs create mode 100644 src/bin/daemon.rs create mode 100644 src/gui/draw.rs create mode 100644 src/gui/input.rs create mode 100644 src/gui/mod.rs create mode 100644 src/gui/update.rs create mode 100644 src/lib.rs create mode 100644 src/types/audio_player.rs create mode 100644 src/types/commands.rs create mode 100644 src/types/config.rs create mode 100644 src/types/gui.rs create mode 100644 src/types/mod.rs create mode 100644 src/types/pipewire.rs create mode 100644 src/types/socket.rs create mode 100644 src/utils/commands.rs create mode 100644 src/utils/config.rs create mode 100644 src/utils/daemon.rs create mode 100644 src/utils/gui.rs create mode 100644 src/utils/mod.rs create mode 100644 src/utils/pipewire.rs diff --git a/Cargo.lock b/Cargo.lock index 81e80c3..1222bc1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,4682 @@ # 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.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[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 = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "alsa" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed7572b7ba83a31e20d1b48970ee402d2e3e0537dcfe0a3ff4d6eb7508617d43" +dependencies = [ + "alsa-sys", + "bitflags 2.9.4", + "cfg-if", + "libc", +] + +[[package]] +name = "alsa-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527" +dependencies = [ + "libc", + "pkg-config", +] + +[[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.4", + "cc", + "cesu8", + "jni", + "jni-sys", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "num_enum", + "thiserror 1.0.69", +] + +[[package]] +name = "android-properties" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" + +[[package]] +name = "annotate-snippets" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccaf7e9dfbb6ab22c82e473cd1a8a7bd313c19a5b7e40970f3d89ef5a5c9e81e" +dependencies = [ + "unicode-width 0.1.14", + "yansi-term", +] + +[[package]] +name = "anstyle" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" + +[[package]] +name = "anyhow" +version = "1.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" + +[[package]] +name = "arboard" +version = "3.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf" +dependencies = [ + "clipboard-win", + "image", + "log", + "objc2 0.6.2", + "objc2-app-kit 0.3.1", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation 0.3.1", + "parking_lot", + "percent-encoding", + "windows-sys 0.60.2", + "x11rb", +] + +[[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 = "ashpd" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cbdf310d77fd3aaee6ea2093db7011dc2d35d2eb3481e5607f1f8d942ed99df" +dependencies = [ + "async-fs", + "async-net", + "enumflags2", + "futures-channel", + "futures-util", + "rand", + "raw-window-handle", + "serde", + "serde_repr", + "url", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "zbus", +] + +[[package]] +name = "async-broadcast" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" +dependencies = [ + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[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.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "pin-project-lite", + "slab", +] + +[[package]] +name = "async-fs" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8034a681df4aed8b8edbd7fbe472401ecf009251c8b40556b304567052e294c5" +dependencies = [ + "async-lock", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" +dependencies = [ + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix 1.1.2", + "slab", + "windows-sys 0.61.0", +] + +[[package]] +name = "async-lock" +version = "3.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-net" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7" +dependencies = [ + "async-io", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-process" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" +dependencies = [ + "async-channel", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix 1.1.2", +] + +[[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", +] + +[[package]] +name = "async-signal" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix 1.1.2", + "signal-hook-registry", + "slab", + "windows-sys 0.61.0", +] + +[[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.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[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 = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "bindgen" +version = "0.69.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" +dependencies = [ + "annotate-snippets", + "bitflags 2.9.4", + "cexpr", + "clang-sys", + "itertools", + "lazy_static", + "lazycell", + "proc-macro2", + "quote", + "regex", + "rustc-hash 1.1.0", + "shlex", + "syn", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" +dependencies = [ + "serde", +] + +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2 0.5.2", +] + +[[package]] +name = "block2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "340d2f0bdb2a43c1d3cd40513185b2bd7def0aa1052f956455114bc98f82dcf2" +dependencies = [ + "objc2 0.6.2", +] + +[[package]] +name = "blocking" +version = "1.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +dependencies = [ + "async-channel", + "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 = "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", +] + +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + +[[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.4", + "log", + "polling", + "rustix 0.38.44", + "slab", + "thiserror 1.0.69", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" +dependencies = [ + "calloop", + "rustix 0.38.44", + "wayland-backend", + "wayland-client", +] + +[[package]] +name = "cc" +version = "1.2.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80f41ae168f955c12fb8960b057d70d0ca153fb83182b57d86380443527be7e9" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cfg-if" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "cgl" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" +dependencies = [ + "libc", +] + +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "clap" +version = "4.5.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2134bb3ea021b78629caa971416385309e0131b351b25e01dc16fb54e1b5fae" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2ba64afa3c0a6df7fa517765e31314e983f51dda798ffba27b988194fb65dc9" +dependencies = [ + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" + +[[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 = "codespan-reporting" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" +dependencies = [ + "serde", + "termcolor", + "unicode-width 0.2.1", +] + +[[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 = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "cookie-factory" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9885fa71e26b8ab7855e2ec7cae6e9b380edff76cd052e07c683a0319d51b3a2" +dependencies = [ + "futures", +] + +[[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", + "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 = "coreaudio-rs" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aae284fbaf7d27aa0e292f7677dfbe26503b0d555026f702940805a630eac17" +dependencies = [ + "bitflags 1.3.2", + "libc", + "objc2-audio-toolbox", + "objc2-core-audio", + "objc2-core-audio-types", + "objc2-core-foundation", +] + +[[package]] +name = "cpal" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbd307f43cc2a697e2d1f8bc7a1d824b5269e052209e28883e5bc04d095aaa3f" +dependencies = [ + "alsa", + "coreaudio-rs", + "dasp_sample", + "jni", + "js-sys", + "libc", + "mach2", + "ndk", + "ndk-context", + "num-derive", + "num-traits", + "objc2-audio-toolbox", + "objc2-core-audio", + "objc2-core-audio-types", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows", +] + +[[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 = "cursor-icon" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" + +[[package]] +name = "dasp_sample" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" + +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.61.0", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dispatch2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +dependencies = [ + "bitflags 2.9.4", + "block2 0.6.1", + "libc", + "objc2 0.6.2", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "dlib" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +dependencies = [ + "libloading", +] + +[[package]] +name = "document-features" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" +dependencies = [ + "litrs", +] + +[[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 = "ecolor" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94bdf37f8d5bd9aa7f753573fdda9cf7343afa73dd28d7bfe9593bd9798fc07e" +dependencies = [ + "bytemuck", + "emath", +] + +[[package]] +name = "eframe" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14d1c15e7bd136b309bd3487e6ffe5f668b354cd9768636a836dd738ac90eb0b" +dependencies = [ + "ahash", + "bytemuck", + "document-features", + "egui", + "egui-wgpu", + "egui-winit", + "egui_glow", + "glow", + "glutin", + "glutin-winit", + "image", + "js-sys", + "log", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", + "parking_lot", + "percent-encoding", + "profiling", + "raw-window-handle", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "web-time", + "winapi", + "windows-sys 0.59.0", + "winit", +] + +[[package]] +name = "egui" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5d0306cd61ca75e29682926d71f2390160247f135965242e904a636f51c0dc" +dependencies = [ + "ahash", + "bitflags 2.9.4", + "emath", + "epaint", + "log", + "nohash-hasher", + "profiling", + "smallvec", + "unicode-segmentation", +] + +[[package]] +name = "egui-wgpu" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c12eca13293f8eba27a32aaaa1c765bfbf31acd43e8d30d5881dcbe5e99ca0c7" +dependencies = [ + "ahash", + "bytemuck", + "document-features", + "egui", + "epaint", + "log", + "profiling", + "thiserror 1.0.69", + "type-map", + "web-time", + "wgpu", + "winit", +] + +[[package]] +name = "egui-winit" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f95d0a91f9cb0dc2e732d49c2d521ac8948e1f0b758f306fb7b14d6f5db3927f" +dependencies = [ + "ahash", + "arboard", + "bytemuck", + "egui", + "log", + "profiling", + "raw-window-handle", + "smithay-clipboard", + "web-time", + "webbrowser", + "winit", +] + +[[package]] +name = "egui_glow" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7037813341727937f9e22f78d912f3e29bc3c46e2f40a9e82bb51cbf5e4cfb" +dependencies = [ + "ahash", + "bytemuck", + "egui", + "glow", + "log", + "memoffset", + "profiling", + "wasm-bindgen", + "web-sys", + "winit", +] + +[[package]] +name = "egui_material_icons" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edaf2524c06db70ec9154db2de26b43ea278cd304547c0ee9339d5a46a4d6a04" +dependencies = [ + "egui", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "emath" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45fd7bc25f769a3c198fe1cf183124bf4de3bd62ef7b4f1eaf6b08711a3af8db" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[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", +] + +[[package]] +name = "epaint" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63adcea970b7a13094fe97a36ab9307c35a750f9e24bf00bb7ef3de573e0fddb" +dependencies = [ + "ab_glyph", + "ahash", + "bytemuck", + "ecolor", + "emath", + "epaint_default_fonts", + "log", + "nohash-hasher", + "parking_lot", + "profiling", + "rayon", +] + +[[package]] +name = "epaint_default_fonts" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1537accc50c9cab5a272c39300bdd0dd5dca210f6e5e8d70be048df9596e7ca2" + +[[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.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.0", +] + +[[package]] +name = "error-code" +version = "3.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" + +[[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", + "pin-project-lite", +] + +[[package]] +name = "extended" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af9673d8203fcb076b19dfd17e38b3d4ae9f44959416ea532ce72415a6020365" + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fax" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab" +dependencies = [ + "fax_derive", +] + +[[package]] +name = "fax_derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ced73b1dacfc750a6db6c0a0c3a3853c8b41997e2e2c563dc90804ae6867959" + +[[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 = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[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", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[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", +] + +[[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 = "gethostname" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc257fdb4038301ce4b9cd1b3b51704509692bb3ff716a410cbd07925d9dae55" +dependencies = [ + "rustix 1.1.2", + "windows-targets 0.52.6", +] + +[[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.7+wasi-0.2.4", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[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 = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "glow" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "glutin" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12124de845cacfebedff80e877bb37b5b75c34c5a4c89e47e1cdd67fb6041325" +dependencies = [ + "bitflags 2.9.4", + "cfg_aliases", + "cgl", + "dispatch2", + "glutin_egl_sys", + "glutin_glx_sys", + "glutin_wgl_sys", + "libloading", + "objc2 0.6.2", + "objc2-app-kit 0.3.1", + "objc2-core-foundation", + "objc2-foundation 0.3.1", + "once_cell", + "raw-window-handle", + "wayland-sys", + "windows-sys 0.52.0", + "x11-dl", +] + +[[package]] +name = "glutin-winit" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85edca7075f8fc728f28cb8fbb111a96c3b89e930574369e3e9c27eb75d3788f" +dependencies = [ + "cfg_aliases", + "glutin", + "raw-window-handle", + "winit", +] + +[[package]] +name = "glutin_egl_sys" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c4680ba6195f424febdc3ba46e7a42a0e58743f2edb115297b86d7f8ecc02d2" +dependencies = [ + "gl_generator", + "windows-sys 0.52.0", +] + +[[package]] +name = "glutin_glx_sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7bb2938045a88b612499fbcba375a77198e01306f52272e692f8c1f3751185" +dependencies = [ + "gl_generator", + "x11-dl", +] + +[[package]] +name = "glutin_wgl_sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" +dependencies = [ + "gl_generator", +] + +[[package]] +name = "half" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" +dependencies = [ + "cfg-if", + "crunchy", + "num-traits", +] + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[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 = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "image" +version = "0.25.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "529feb3e6769d234375c4cf1ee2ce713682b8e76538cb13f9fc23e1400a591e7" +dependencies = [ + "bytemuck", + "byteorder-lite", + "moxcms", + "num-traits", + "png", + "tiff", +] + +[[package]] +name = "indexmap" +version = "2.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" +dependencies = [ + "equivalent", + "hashbrown 0.16.0", +] + +[[package]] +name = "io-uring" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" +dependencies = [ + "bitflags 2.9.4", + "cfg-if", + "libc", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[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 1.0.69", + "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.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.3", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "khronos_api" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "libc" +version = "0.2.176" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174" + +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link 0.2.0", +] + +[[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.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" +dependencies = [ + "bitflags 2.9.4", + "libc", + "redox_syscall 0.5.17", +] + +[[package]] +name = "libspa" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65f3a4b81b2a2d8c7f300643676202debd1b7c929dbf5c9bb89402ea11d19810" +dependencies = [ + "bitflags 2.9.4", + "cc", + "convert_case", + "cookie-factory", + "libc", + "libspa-sys", + "nix 0.27.1", + "nom", + "system-deps", +] + +[[package]] +name = "libspa-sys" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf0d9716420364790e85cbb9d3ac2c950bde16a7dd36f3209b7dfdfc4a24d01f" +dependencies = [ + "bindgen", + "cc", + "system-deps", +] + +[[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.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "litrs" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed" + +[[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.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" + +[[package]] +name = "mach2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" +dependencies = [ + "libc", +] + +[[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.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7" +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 = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[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 = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + +[[package]] +name = "moxcms" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd32fa8935aeadb8a8a6b6b351e40225570a37c43de67690383d87ef170cd08" +dependencies = [ + "num-traits", + "pxfm", +] + +[[package]] +name = "naga" +version = "25.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b977c445f26e49757f9aca3631c3b8b836942cb278d69a92e7b80d3b24da632" +dependencies = [ + "arrayvec", + "bit-set", + "bitflags 2.9.4", + "cfg_aliases", + "codespan-reporting", + "half", + "hashbrown 0.15.5", + "hexf-parse", + "indexmap", + "log", + "num-traits", + "once_cell", + "rustc-hash 1.1.0", + "strum", + "thiserror 2.0.16", + "unicode-ident", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.9.4", + "jni-sys", + "log", + "ndk-sys", + "num_enum", + "raw-window-handle", + "thiserror 1.0.69", +] + +[[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.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "nix" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" +dependencies = [ + "bitflags 2.9.4", + "cfg-if", + "libc", +] + +[[package]] +name = "nix" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags 2.9.4", + "cfg-if", + "cfg_aliases", + "libc", + "memoffset", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[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", +] + +[[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" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "561f357ba7f3a2a61563a186a163d0a3a5247e1089524a3981d49adb775078bc" +dependencies = [ + "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.4", + "block2 0.5.1", + "libc", + "objc2 0.5.2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation 0.2.2", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-app-kit" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc" +dependencies = [ + "bitflags 2.9.4", + "block2 0.6.1", + "objc2 0.6.2", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation 0.3.1", +] + +[[package]] +name = "objc2-audio-toolbox" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10cbe18d879e20a4aea544f8befe38bcf52255eb63d3f23eca2842f3319e4c07" +dependencies = [ + "bitflags 2.9.4", + "libc", + "objc2 0.6.2", + "objc2-core-audio", + "objc2-core-audio-types", + "objc2-core-foundation", + "objc2-foundation 0.3.1", +] + +[[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.4", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-contacts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-core-audio" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca44961e888e19313b808f23497073e3f6b3c22bb485056674c8b49f3b025c82" +dependencies = [ + "dispatch2", + "objc2 0.6.2", + "objc2-core-audio-types", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-core-audio-types" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0f1cc99bb07ad2ddb6527ddf83db6a15271bb036b3eb94b801cd44fdc666ee1" +dependencies = [ + "bitflags 2.9.4", + "objc2 0.6.2", +] + +[[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.4", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" +dependencies = [ + "bitflags 2.9.4", + "dispatch2", + "objc2 0.6.2", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "989c6c68c13021b5c2d6b71456ebb0f9dc78d752e86a98da7c716f4f9470f5a4" +dependencies = [ + "bitflags 2.9.4", + "dispatch2", + "objc2 0.6.2", + "objc2-core-foundation", + "objc2-io-surface", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "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 0.5.1", + "objc2 0.5.2", + "objc2-contacts", + "objc2-foundation 0.2.2", +] + +[[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.4", + "block2 0.5.1", + "dispatch", + "libc", + "objc2 0.5.2", +] + +[[package]] +name = "objc2-foundation" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c" +dependencies = [ + "bitflags 2.9.4", + "objc2 0.6.2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7282e9ac92529fa3457ce90ebb15f4ecbc383e8338060960760fa2cf75420c3c" +dependencies = [ + "bitflags 2.9.4", + "objc2 0.6.2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-link-presentation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.9.4", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[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.4", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal", +] + +[[package]] +name = "objc2-symbols" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" +dependencies = [ + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[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.4", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", + "objc2-foundation 0.2.2", + "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 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[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.4", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "orbclient" +version = "0.3.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba0b26cec2e24f08ed8bb31519a9333140a6599b867dac464bb150bdb796fd43" +dependencies = [ + "libredox", +] + +[[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 = "owned_ttf_parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b" +dependencies = [ + "ttf-parser", +] + +[[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.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[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 = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[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", +] + +[[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 = "pipewire" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08e645ba5c45109106d56610b3ee60eb13a6f2beb8b74f8dc8186cf261788dda" +dependencies = [ + "anyhow", + "bitflags 2.9.4", + "libc", + "libspa", + "libspa-sys", + "nix 0.27.1", + "once_cell", + "pipewire-sys", + "thiserror 1.0.69", +] + +[[package]] +name = "pipewire-sys" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "849e188f90b1dda88fe2bfe1ad31fe5f158af2c98f80fb5d13726c44f3f01112" +dependencies = [ + "bindgen", + "libspa-sys", + "system-deps", +] + +[[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.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0" +dependencies = [ + "bitflags 2.9.4", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polling" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix 1.1.2", + "windows-sys 0.61.0", +] + +[[package]] +name = "pollster" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" + +[[package]] +name = "portable-atomic" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "potential_utf" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" +dependencies = [ + "zerovec", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro-crate" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +dependencies = [ + "toml_edit 0.23.6", +] + +[[package]] +name = "proc-macro2" +version = "1.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" + [[package]] name = "pwsp" version = "1.0.0" +dependencies = [ + "async-trait", + "clap", + "dirs", + "eframe", + "egui", + "egui_material_icons", + "futures", + "pipewire", + "rfd", + "rodio", + "serde", + "serde_json", + "tokio", +] + +[[package]] +name = "pxfm" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83f9b339b02259ada5c0f4a389b7fb472f933aa17ce176fd2ad98f28bb401fde" +dependencies = [ + "num-traits", +] + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + +[[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.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", +] + +[[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.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[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.4", +] + +[[package]] +name = "redox_users" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +dependencies = [ + "getrandom 0.2.16", + "libredox", + "thiserror 2.0.16", +] + +[[package]] +name = "regex" +version = "1.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" + +[[package]] +name = "renderdoc-sys" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" + +[[package]] +name = "rfd" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef2bee61e6cffa4635c72d7d81a84294e28f0930db0ddcb0f66d10244674ebed" +dependencies = [ + "ashpd", + "block2 0.6.1", + "dispatch2", + "js-sys", + "log", + "objc2 0.6.2", + "objc2-app-kit 0.3.1", + "objc2-core-foundation", + "objc2-foundation 0.3.1", + "pollster", + "raw-window-handle", + "urlencoding", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "rodio" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e40ecf59e742e03336be6a3d53755e789fd05a059fa22dfa0ed624722319e183" +dependencies = [ + "cpal", + "dasp_sample", + "num-rational", + "symphonia", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" + +[[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.4", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +dependencies = [ + "bitflags 2.9.4", + "errno", + "libc", + "linux-raw-sys 0.11.0", + "windows-sys 0.61.0", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[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 = "serde" +version = "1.0.226" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dca6411025b24b60bfa7ec1fe1f8e710ac09782dca409ee8237ba74b51295fd" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.226" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba2ba63999edb9dac981fb34b3e5c0d111a69b0924e253ed29d83f7c99e966a4" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.226" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8db53ae22f34573731bafa1db20f04027b2d25e02d8205921b569171699cdb33" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[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", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[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 = "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.4", + "calloop", + "calloop-wayland-source", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix 0.38.44", + "thiserror 1.0.69", + "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 = "socket2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + +[[package]] +name = "symphonia" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "815c942ae7ee74737bb00f965fa5b5a2ac2ce7b6c01c0cc169bbeaf7abd5f5a9" +dependencies = [ + "lazy_static", + "symphonia-bundle-flac", + "symphonia-bundle-mp3", + "symphonia-codec-aac", + "symphonia-codec-adpcm", + "symphonia-codec-alac", + "symphonia-codec-pcm", + "symphonia-codec-vorbis", + "symphonia-core", + "symphonia-format-caf", + "symphonia-format-isomp4", + "symphonia-format-mkv", + "symphonia-format-ogg", + "symphonia-format-riff", + "symphonia-metadata", +] + +[[package]] +name = "symphonia-bundle-flac" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72e34f34298a7308d4397a6c7fbf5b84c5d491231ce3dd379707ba673ab3bd97" +dependencies = [ + "log", + "symphonia-core", + "symphonia-metadata", + "symphonia-utils-xiph", +] + +[[package]] +name = "symphonia-bundle-mp3" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c01c2aae70f0f1fb096b6f0ff112a930b1fb3626178fba3ae68b09dce71706d4" +dependencies = [ + "lazy_static", + "log", + "symphonia-core", + "symphonia-metadata", +] + +[[package]] +name = "symphonia-codec-aac" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdbf25b545ad0d3ee3e891ea643ad115aff4ca92f6aec472086b957a58522f70" +dependencies = [ + "lazy_static", + "log", + "symphonia-core", +] + +[[package]] +name = "symphonia-codec-adpcm" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c94e1feac3327cd616e973d5be69ad36b3945f16b06f19c6773fc3ac0b426a0f" +dependencies = [ + "log", + "symphonia-core", +] + +[[package]] +name = "symphonia-codec-alac" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d8a6666649a08412906476a8b0efd9b9733e241180189e9f92b09c08d0e38f3" +dependencies = [ + "log", + "symphonia-core", +] + +[[package]] +name = "symphonia-codec-pcm" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f395a67057c2ebc5e84d7bb1be71cce1a7ba99f64e0f0f0e303a03f79116f89b" +dependencies = [ + "log", + "symphonia-core", +] + +[[package]] +name = "symphonia-codec-vorbis" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a98765fb46a0a6732b007f7e2870c2129b6f78d87db7987e6533c8f164a9f30" +dependencies = [ + "log", + "symphonia-core", + "symphonia-utils-xiph", +] + +[[package]] +name = "symphonia-core" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "798306779e3dc7d5231bd5691f5a813496dc79d3f56bf82e25789f2094e022c3" +dependencies = [ + "arrayvec", + "bitflags 1.3.2", + "bytemuck", + "lazy_static", + "log", +] + +[[package]] +name = "symphonia-format-caf" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e43c99c696a388295a29fe71b133079f5d8b18041cf734c5459c35ad9097af50" +dependencies = [ + "log", + "symphonia-core", + "symphonia-metadata", +] + +[[package]] +name = "symphonia-format-isomp4" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abfdf178d697e50ce1e5d9b982ba1b94c47218e03ec35022d9f0e071a16dc844" +dependencies = [ + "encoding_rs", + "log", + "symphonia-core", + "symphonia-metadata", + "symphonia-utils-xiph", +] + +[[package]] +name = "symphonia-format-mkv" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bb43471a100f7882dc9937395bd5ebee8329298e766250b15b3875652fe3d6f" +dependencies = [ + "lazy_static", + "log", + "symphonia-core", + "symphonia-metadata", + "symphonia-utils-xiph", +] + +[[package]] +name = "symphonia-format-ogg" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ada3505789516bcf00fc1157c67729eded428b455c27ca370e41f4d785bfa931" +dependencies = [ + "log", + "symphonia-core", + "symphonia-metadata", + "symphonia-utils-xiph", +] + +[[package]] +name = "symphonia-format-riff" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f7be232f962f937f4b7115cbe62c330929345434c834359425e043bfd15f50" +dependencies = [ + "extended", + "log", + "symphonia-core", + "symphonia-metadata", +] + +[[package]] +name = "symphonia-metadata" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc622b9841a10089c5b18e99eb904f4341615d5aa55bbf4eedde1be721a4023c" +dependencies = [ + "encoding_rs", + "lazy_static", + "log", + "symphonia-core", +] + +[[package]] +name = "symphonia-utils-xiph" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "484472580fa49991afda5f6550ece662237b00c6f562c7d9638d1b086ed010fe" +dependencies = [ + "symphonia-core", + "symphonia-metadata", +] + +[[package]] +name = "syn" +version = "2.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck", + "pkg-config", + "toml", + "version-compare", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "tempfile" +version = "3.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +dependencies = [ + "fastrand", + "getrandom 0.3.3", + "once_cell", + "rustix 1.1.2", + "windows-sys 0.61.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 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" +dependencies = [ + "thiserror-impl 2.0.16", +] + +[[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", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tiff" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f" +dependencies = [ + "fax", + "flate2", + "half", + "quick-error", + "weezl", + "zune-jpeg", +] + +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.47.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +dependencies = [ + "backtrace", + "bytes", + "io-uring", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "slab", + "socket2", + "tokio-macros", + "windows-sys 0.59.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.23.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3effe7c0e86fdff4f69cdd2ccc1b96f933e24811c5441d44904e8683e27184b" +dependencies = [ + "indexmap", + "toml_datetime 0.7.2", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627" +dependencies = [ + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "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", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "ttf-parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" + +[[package]] +name = "type-map" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90" +dependencies = [ + "rustc-hash 2.1.1", +] + +[[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-ident" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" + +[[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-width" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" + +[[package]] +name = "url" +version = "2.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "version-compare" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" + +[[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.7+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" +dependencies = [ + "wasip2", +] + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" +dependencies = [ + "unicode-ident", +] + +[[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.1.2", + "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.4", + "rustix 1.1.2", + "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.4", + "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.1.2", + "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.4", + "wayland-backend", + "wayland-client", + "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.4", + "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.4", + "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.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" +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 = "webbrowser" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aaf4f3c0ba838e82b4e5ccc4157003fb8c324ee24c058470ffb82820becbde98" +dependencies = [ + "core-foundation 0.10.1", + "jni", + "log", + "ndk-context", + "objc2 0.6.2", + "objc2-foundation 0.3.1", + "url", + "web-sys", +] + +[[package]] +name = "weezl" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3" + +[[package]] +name = "wgpu" +version = "25.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec8fb398f119472be4d80bc3647339f56eb63b2a331f6a3d16e25d8144197dd9" +dependencies = [ + "arrayvec", + "bitflags 2.9.4", + "cfg_aliases", + "document-features", + "hashbrown 0.15.5", + "js-sys", + "log", + "parking_lot", + "portable-atomic", + "profiling", + "raw-window-handle", + "smallvec", + "static_assertions", + "wasm-bindgen", + "web-sys", + "wgpu-core", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-core" +version = "25.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7b882196f8368511d613c6aeec80655160db6646aebddf8328879a88d54e500" +dependencies = [ + "arrayvec", + "bit-set", + "bit-vec", + "bitflags 2.9.4", + "cfg_aliases", + "document-features", + "hashbrown 0.15.5", + "indexmap", + "log", + "naga", + "once_cell", + "parking_lot", + "portable-atomic", + "profiling", + "raw-window-handle", + "rustc-hash 1.1.0", + "smallvec", + "thiserror 2.0.16", + "wgpu-core-deps-windows-linux-android", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-core-deps-windows-linux-android" +version = "25.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cba5fb5f7f9c98baa7c889d444f63ace25574833df56f5b817985f641af58e46" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-hal" +version = "25.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f968767fe4d3d33747bbd1473ccd55bf0f6451f55d733b5597e67b5deab4ad17" +dependencies = [ + "bitflags 2.9.4", + "cfg_aliases", + "libloading", + "log", + "naga", + "parking_lot", + "portable-atomic", + "raw-window-handle", + "renderdoc-sys", + "thiserror 2.0.16", + "wgpu-types", +] + +[[package]] +name = "wgpu-types" +version = "25.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2aa49460c2a8ee8edba3fca54325540d904dd85b2e086ada762767e17d06e8bc" +dependencies = [ + "bitflags 2.9.4", + "bytemuck", + "js-sys", + "log", + "thiserror 2.0.16", + "web-sys", +] + +[[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.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.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 = "windows" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" +dependencies = [ + "windows-core", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" +dependencies = [ + "windows-result", + "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-link" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" + +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-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-sys" +version = "0.61.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa" +dependencies = [ + "windows-link 0.2.0", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[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 0.1.3", + "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.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.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.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.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.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.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.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", + "android-activity", + "atomic-waker", + "bitflags 2.9.4", + "block2 0.5.1", + "bytemuck", + "calloop", + "cfg_aliases", + "concurrent-queue", + "core-foundation 0.9.4", + "core-graphics", + "cursor-icon", + "dpi", + "js-sys", + "libc", + "memmap2", + "ndk", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", + "objc2-ui-kit", + "orbclient", + "percent-encoding", + "pin-project", + "raw-window-handle", + "redox_syscall 0.4.1", + "rustix 0.38.44", + "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.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + +[[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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" +dependencies = [ + "as-raw-xcb-connection", + "gethostname", + "libc", + "libloading", + "once_cell", + "rustix 1.1.2", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" + +[[package]] +name = "xcursor" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b" + +[[package]] +name = "xkbcommon-dl" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" +dependencies = [ + "bitflags 2.9.4", + "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 = "yansi-term" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe5c30ade05e61656247b2e334a031dfd0cc466fadef865bdcdea8d537951bf1" +dependencies = [ + "winapi", +] + +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zbus" +version = "5.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d07e46d035fb8e375b2ce63ba4e4ff90a7f73cf2ffb0138b29e1158d2eaadf7" +dependencies = [ + "async-broadcast", + "async-executor", + "async-io", + "async-lock", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "enumflags2", + "event-listener", + "futures-core", + "futures-lite", + "hex", + "nix 0.30.1", + "ordered-stream", + "serde", + "serde_repr", + "tracing", + "uds_windows", + "windows-sys 0.60.2", + "winnow", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "5.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57e797a9c847ed3ccc5b6254e8bcce056494b375b511b3d6edcec0aeb4defaca" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", + "zbus_names", + "zvariant", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" +dependencies = [ + "serde", + "static_assertions", + "winnow", + "zvariant", +] + +[[package]] +name = "zerocopy" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zune-core" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" + +[[package]] +name = "zune-jpeg" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713" +dependencies = [ + "zune-core", +] + +[[package]] +name = "zvariant" +version = "5.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "999dd3be73c52b1fccd109a4a81e4fcd20fab1d3599c8121b38d04e1419498db" +dependencies = [ + "endi", + "enumflags2", + "serde", + "url", + "winnow", + "zvariant_derive", + "zvariant_utils", +] + +[[package]] +name = "zvariant_derive" +version = "5.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6643fd0b26a46d226bd90d3f07c1b5321fe9bb7f04673cb37ac6d6883885b68e" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6949d142f89f6916deca2232cf26a8afacf2b9fdc35ce766105e104478be599" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "syn", + "winnow", +] diff --git a/Cargo.toml b/Cargo.toml index 1d4e3cb..56566ed 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,15 +3,44 @@ name = "pwsp" version = "1.0.0" edition = "2024" authors = ["arabian"] -description = "A simple soundpad application written in Rust using egui for the GUI, pipewire for audio input/output, and rodio for audio decoding." +description = "PWSP lets you play audio files through your microphone. Has both CLI and GUI clients." readme = "README.md" -homepage = "https://github.com/arabianq/pipewire-soundpad" +homepage = "https://pwsp.arabianq.ru" repository = "https://github.com/arabianq/pipewire-soundpad" license = "MIT" -keywords = ["soundpad", "pipewire"] +keywords = ["soundpad", "pipewire", "linux", "cli", "gui"] [dependencies] +tokio = { version = "1.47.1", features = ["full"] } +futures = { version = "0.3.31", features = ["thread-pool"] } +async-trait = "0.1.89" + +serde = { version = "1.0.226", features = ["derive"] } +serde_json = "1.0.145" + +clap = { version = "4.5.48", default-features = false, features = ["std", "suggestions", "help", "usage", "error-context", "derive"] } +dirs = "6.0.0" + +rodio = { version = "0.21.1", default-features = false, features = ["symphonia-all", "playback"] } +pipewire = "0.8.0" +rfd = "0.15.4" + +egui = { version = "0.32.3", default-features = false, features = ["default_fonts", "rayon"] } +eframe = { version = "0.32.3", default-features = false, features = ["default_fonts", "glow", "x11", "wayland"] } +egui_material_icons = "0.4.0" + +[[bin]] +name = "pwsp-daemon" +path = "src/bin/daemon.rs" + +[[bin]] +name = "pwsp-cli" +path = "src/bin/cli.rs" + +[[bin]] +name = "pwsp-gui" +path = "src/main.rs" [profile.release] strip = true @@ -19,3 +48,23 @@ lto = true codegen-units = 1 opt-level = "z" panic = "abort" + +[package.metadata.generate-rpm] +assets = [ + { source = "target/release/pwsp-daemon", dest = "/usr/bin/pwsp-daemon", mode = "755" }, + { source = "target/release/pwsp-cli", dest = "/usr/bin/pwsp-cli", mode = "755" }, + { source = "target/release/pwsp-gui", dest = "/usr/bin/pwsp-gui", mode = "755" }, + { source = "pwsp-gui.desktop", dest = "/usr/share/applications/pwsp.desktop", mode = "644" }, + { source = "icon.png", dest = "/usr/share/icons/hicolor/256x256/apps/pwsp.png", mode = "644" }, + { source = "pwsp-daemon.service", dest = "/usr/lib/systemd/user/pwsp-daemon.service", mode = "644" }, +] + +[package.metadata.deb] +assets = [ + ["target/release/pwsp-daemon", "usr/bin/", "755"], + ["target/release/pwsp-cli", "usr/bin/", "755"], + ["target/release/pwsp-gui", "usr/bin/", "755"], + ["assets/pwsp-gui.desktop", "usr/share/applications/pwsp.desktop", "644"], + ["assets/icon.png", "usr/share/icons/hicolor/256x256/apps/pwsp.png", "644"], + ["assets/pwsp-daemon.service", "usr/lib/systemd/user/pwsp-daemon.service", "644"], +] \ No newline at end of file diff --git a/assets/icon.png b/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..55529137db97a950a8db72c62ed07ebbb6d11976 GIT binary patch literal 12460 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 NqpqT@T&8Fh^gj~Hw!i=Y literal 0 HcmV?d00001 diff --git a/assets/pwsp-daemon.service b/assets/pwsp-daemon.service new file mode 100644 index 0000000..675f214 --- /dev/null +++ b/assets/pwsp-daemon.service @@ -0,0 +1,10 @@ +[Unit] +Description=Pipewire Soundpad Daemon + +[Service] +ExecStart=/usr/bin/pwsp-daemon +Restart=no +RuntimeDirectory=pwsp + +[Install] +WantedBy=default.target \ No newline at end of file diff --git a/pwsp.desktop b/assets/pwsp-gui.desktop similarity index 50% rename from pwsp.desktop rename to assets/pwsp-gui.desktop index 4d711cf..5883cc7 100644 --- a/pwsp.desktop +++ b/assets/pwsp-gui.desktop @@ -1,7 +1,8 @@ [Desktop Entry] Name=PWSP (Soundpad) -Exec=pwsp %u -Icon= +Comment=Let's you play audio files through you microphone +Exec=pwsp-gui %u +Icon=pwsp Terminal=false Type=Application Categories=Audio \ No newline at end of file diff --git a/assets/screenshot.png b/assets/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..1068a9fcd0b1def8ef78f805ff99fc32eb559521 GIT binary patch literal 205110 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

|?S@B^Wrn8-4>Gs;XzQ6` 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 literal 0 HcmV?d00001 diff --git a/screenshot.png b/screenshot.png deleted file mode 100644 index 41b8eecbd5e442e19315d6502d6c239de8a99871..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251895 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/%*W7{lY5z6FX$Bi>!~V8qN3wlvpc;+QfMwMta- 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

{(} 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ⅆId4ol?q8>$(<9g-e_o+5<3yHc%jFktm0v~ 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 B8e#wd diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100755 index 0000000..98e6909 --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +cd "$(dirname "$(realpath "$0")")/.." || exit + +cargo build --release \ No newline at end of file diff --git a/scripts/build_all.sh b/scripts/build_all.sh new file mode 100755 index 0000000..dd335fa --- /dev/null +++ b/scripts/build_all.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +cd "$(dirname "$(realpath "$0")")/.." || exit + +bash ./scripts/build.sh + +bash ./scripts/build_rpm.sh +bash ./scripts/build_deb.sh + +if command -v upx >/dev/null 2>&1; then + upx --best ./target/release/pwsp-gui + upx --best ./target/release/pwsp-cli + upx --best ./target/release/pwsp-daemon + upx -t ./target/release/pwsp-gui + upx -t ./target/release/pwsp-cli + upx -t ./target/release/pwsp-daemon +fi + +rm -rf ./target/for_github_release +mkdir ./target/for_github_release + +cp "$(find ./target/debian/pwsp_*_amd64.deb | sort -V | tail -n 1)" ./target/for_github_release/ +cp "$(find ./target/generate-rpm/pwsp-*.x86_64.rpm | sort -V | tail -n 1)" ./target/for_github_release/ +zip -9j ./target/for_github_release/pwsp-x86_64-linux.zip ./target/release/pwsp-gui ./target/release/pwsp-cli ./target/release/pwsp-daemon \ No newline at end of file diff --git a/scripts/build_deb.sh b/scripts/build_deb.sh new file mode 100755 index 0000000..4cd140f --- /dev/null +++ b/scripts/build_deb.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +cd "$(dirname "$(realpath "$0")")/.." || exit + +rm -rf ./target/debian + +cargo install cargo-deb +cargo-deb \ No newline at end of file diff --git a/scripts/build_rpm.sh b/scripts/build_rpm.sh new file mode 100755 index 0000000..28b03b9 --- /dev/null +++ b/scripts/build_rpm.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +cd "$(dirname "$(realpath "$0")")/.." || exit + +rm -rf ./target/cargo-generate-rpm + +cargo install cargo-generate-rpm +cargo-generate-rpm \ No newline at end of file diff --git a/src/bin/cli.rs b/src/bin/cli.rs new file mode 100644 index 0000000..14db786 --- /dev/null +++ b/src/bin/cli.rs @@ -0,0 +1,113 @@ +use clap::{Parser, Subcommand}; +use pwsp::{ + types::socket::Request, + utils::daemon::{make_request, wait_for_daemon}, +}; +use std::{error::Error, path::PathBuf}; + +#[derive(Parser, Debug)] +#[command(version, about, long_about = None)] +struct Cli { + #[clap(subcommand)] + command: Commands, +} + +#[derive(Subcommand, Debug)] +enum Commands { + /// Perform an action (ping, pause, resume, stop, play) + Action { + #[clap(subcommand)] + action: Actions, + }, + /// Get information from the player (is paused, volume, position, state) + Get { + #[clap(subcommand)] + parameter: GetCommands, + }, + /// Set information in the player (volume, position) + Set { + #[clap(subcommand)] + parameter: SetCommands, + }, +} + +#[derive(Subcommand, Debug)] +enum Actions { + /// Ping the daemon + Ping, + /// Pause audio playback + Pause, + /// Resume audio playback + Resume, + /// Stop audio playback and clear the queue + Stop, + /// Play a file + Play { file_path: PathBuf }, +} + +#[derive(Subcommand, Debug)] +enum GetCommands { + /// Check if the player is paused + IsPaused, + /// Playback volume + Volume, + /// Playback position + Position, + /// Duration of the current file + Duration, + /// Player state + State, + /// Current playing file path + CurrentFilePath, + /// Current audio input + Input, + /// All audio inputs + Inputs, +} + +#[derive(Subcommand, Debug)] +enum SetCommands { + /// Playback volume + Volume { volume: f32 }, + /// Playback position + Position { position: f32 }, + /// Input + Input { id: u32 }, +} + +#[tokio::main] +async fn main() -> Result<(), Box> { + let cli = Cli::parse(); + + wait_for_daemon().await?; + + let request = match cli.command { + Commands::Action { action } => match action { + Actions::Ping => Request::ping(), + Actions::Pause => Request::pause(), + Actions::Resume => Request::resume(), + Actions::Stop => Request::stop(), + Actions::Play { file_path } => Request::play(file_path.to_str().unwrap()), + }, + Commands::Get { parameter } => match parameter { + GetCommands::IsPaused => Request::get_is_paused(), + GetCommands::Volume => Request::get_volume(), + GetCommands::Position => Request::get_position(), + GetCommands::Duration => Request::get_duration(), + GetCommands::State => Request::get_state(), + GetCommands::CurrentFilePath => Request::get_current_file_path(), + GetCommands::Input => Request::get_input(), + GetCommands::Inputs => Request::get_inputs(), + }, + Commands::Set { parameter } => match parameter { + SetCommands::Volume { volume } => Request::set_volume(volume), + SetCommands::Position { position } => Request::seek(position), + SetCommands::Input { id } => Request::set_input(id), + }, + }; + + let response = make_request(request).await?; + println!("{} : {}", response.status, response.message); + + Ok(()) +} diff --git a/src/bin/daemon.rs b/src/bin/daemon.rs new file mode 100644 index 0000000..329c499 --- /dev/null +++ b/src/bin/daemon.rs @@ -0,0 +1,96 @@ +use pwsp::{ + types::socket::{Request, Response}, + utils::{ + commands::parse_command, + daemon::{ + create_runtime_dir, get_audio_player, get_daemon_config, get_runtime_dir, + is_daemon_running, link_player_to_virtual_mic, + }, + pipewire::create_virtual_mic, + }, +}; +use std::{error::Error, fs}; +use tokio::{ + io::{AsyncReadExt, AsyncWriteExt}, + net::UnixListener, +}; + +#[tokio::main] +async fn main() -> Result<(), Box> { + create_runtime_dir()?; + + if is_daemon_running()? { + return Err("Another instance is already running.".into()); + } + + get_daemon_config(); // Initialize daemon config + create_virtual_mic()?; + get_audio_player().await; // Initialize audio player + link_player_to_virtual_mic().await?; + + let runtime_dir = get_runtime_dir(); + + let lock_file = fs::File::create(runtime_dir.join("daemon.lock"))?; + lock_file.lock()?; + + let socket_path = runtime_dir.join("daemon.sock"); + if fs::metadata(&socket_path).is_ok() { + fs::remove_file(&socket_path)?; + } + + let listener = UnixListener::bind(&socket_path)?; + println!( + "Daemon started. Listening on {}", + socket_path.to_str().unwrap_or_default() + ); + + loop { + let (mut stream, _addr) = listener.accept().await?; + + tokio::spawn(async move { + // ---------- Read request (start) ---------- + let mut len_bytes = [0u8; 4]; + if stream.read_exact(&mut len_bytes).await.is_err() { + eprintln!("Failed to read message length from client!"); + return; + } + + let request_len = u32::from_le_bytes(len_bytes) as usize; + + let mut buffer = vec![0u8; request_len]; + if stream.read_exact(&mut buffer).await.is_err() { + eprintln!("Failed to read message from client!"); + return; + } + + let request: Request = serde_json::from_slice(&buffer).unwrap(); + println!("Received request: {:?}", request); + // ---------- Read request (end) ---------- + + // ---------- Generate response (start) ---------- + let command = parse_command(&request); + let response: Response; + if let Some(command) = command { + response = command.execute().await; + } else { + response = Response::new(false, "Unknown command"); + } + // ---------- Generate response (end) ---------- + + // ---------- Send response (start) ---------- + let response_data = serde_json::to_vec(&response).unwrap(); + let response_len = response_data.len() as u32; + + if stream.write_all(&response_len.to_le_bytes()).await.is_err() { + eprintln!("Failed to write response length to client!"); + return; + } + if stream.write_all(&response_data).await.is_err() { + eprintln!("Failed to write response to client!"); + return; + } + println!("Sent response: {:?}", response); + // ---------- Send response (end) ---------- + }); + } +} diff --git a/src/gui/draw.rs b/src/gui/draw.rs new file mode 100644 index 0000000..27fd563 --- /dev/null +++ b/src/gui/draw.rs @@ -0,0 +1,320 @@ +use crate::gui::SoundpadGui; +use egui::{ + Button, Color32, ComboBox, FontFamily, Label, RichText, ScrollArea, Slider, TextEdit, Ui, Vec2, +}; +use egui_material_icons::icons; +use pwsp::types::audio_player::PlayerState; +use pwsp::utils::gui::format_time_pair; +use std::{error::Error, path::PathBuf}; + +impl SoundpadGui { + pub fn draw_waiting_for_daemon(&mut self, ui: &mut Ui) { + ui.centered_and_justified(|ui| { + ui.label( + RichText::new("Waiting for PWSP daemon to start...") + .size(34.0) + .monospace(), + ); + }); + } + + pub fn draw_settings(&mut self, ui: &mut Ui) { + ui.vertical(|ui| { + ui.spacing_mut().item_spacing.y = 5.0; + // --------- Back Button and Title ---------- + ui.horizontal_top(|ui| { + let back_button = Button::new(icons::ICON_ARROW_BACK).frame(false); + let back_button_response = ui.add(back_button); + if back_button_response.clicked() { + self.app_state.show_settings = false; + } + + ui.add_space(ui.available_width() / 2.0 - 40.0); + + ui.label(RichText::new("Settings").color(Color32::WHITE).monospace()); + }); + // -------------------------------- + + ui.separator(); + ui.add_space(20.0); + + // --------- Checkboxes ---------- + let save_volume_response = + ui.checkbox(&mut self.config.save_volume, "Always remember volume"); + let save_input_response = + ui.checkbox(&mut self.config.save_input, "Always remember microphone"); + let save_scale_response = ui.checkbox( + &mut self.config.save_scale_factor, + "Always remember UI scale factor", + ); + + if save_volume_response.changed() + || save_input_response.changed() + || save_scale_response.changed() + { + self.config.save_to_file().ok(); + } + // -------------------------------- + }); + } + + pub fn draw(&mut self, ui: &mut Ui) -> Result<(), Box> { + self.draw_header(ui); + self.draw_body(ui); + ui.separator(); + self.draw_footer(ui); + Ok(()) + } + + fn draw_header(&mut self, ui: &mut Ui) { + ui.vertical_centered_justified(|ui| { + // Current file name + ui.label( + RichText::new( + self.audio_player_state + .current_file_path + .to_string_lossy() + .to_string(), + ) + .color(Color32::WHITE) + .family(FontFamily::Monospace), + ); + // Media controls + self.draw_controls(ui); + ui.separator(); + }); + } + + fn draw_controls(&mut self, ui: &mut Ui) { + ui.horizontal_top(|ui| { + // ---------- Play Button ---------- + let play_button = Button::new(match self.audio_player_state.state { + PlayerState::Playing => icons::ICON_PAUSE, + PlayerState::Paused | PlayerState::Stopped => icons::ICON_PLAY_ARROW, + }) + .corner_radius(15.0); + + let play_button_response = ui.add_sized([30.0, 30.0], play_button); + if play_button_response.clicked() { + self.play_toggle(); + } + // -------------------------------- + + // ---------- Position Slider ---------- + let position_slider = Slider::new( + &mut self.app_state.position_slider_value, + 0.0..=self.audio_player_state.duration, + ) + .show_value(false) + .step_by(1.0); + + let default_slider_width = ui.spacing().slider_width; + let position_slider_width = ui.available_width() + - (30.0 * 3.0) + - default_slider_width + - (ui.spacing().item_spacing.x * 5.0); + ui.spacing_mut().slider_width = position_slider_width; + let position_slider_response = ui.add_sized([30.0, 30.0], position_slider); + if position_slider_response.drag_stopped() { + self.app_state.position_dragged = true; + } + // -------------------------------- + + // ---------- Time Label ---------- + let time_label = Label::new( + RichText::new(format_time_pair( + self.audio_player_state.position, + self.audio_player_state.duration, + )) + .monospace(), + ); + ui.add_sized([30.0, 30.0], time_label); + // -------------------------------- + + // ---------- Volume Icon ---------- + let volume_icon = if self.audio_player_state.volume > 0.7 { + icons::ICON_VOLUME_UP + } else if self.audio_player_state.volume == 0.0 { + icons::ICON_VOLUME_OFF + } else if self.audio_player_state.volume < 0.3 { + icons::ICON_VOLUME_MUTE + } else { + icons::ICON_VOLUME_DOWN + }; + let volume_icon = Label::new(RichText::new(volume_icon).size(18.0)); + ui.add_sized([30.0, 25.0], volume_icon); + // -------------------------------- + + // ---------- Volume Slider ---------- + let volume_slider = Slider::new(&mut self.app_state.volume_slider_value, 0.0..=1.0) + .show_value(false) + .step_by(0.01); + + ui.spacing_mut().slider_width = default_slider_width; + ui.spacing_mut().item_spacing.x = 0.0; + + let volume_slider_response = ui.add_sized([30.0, 30.0], volume_slider); + if volume_slider_response.drag_stopped() { + self.app_state.volume_dragged = true; + } + // -------------------------------- + }); + } + + fn draw_body(&mut self, ui: &mut Ui) { + let dirs_size = Vec2::new(ui.available_width() / 4.0, ui.available_height() - 40.0); + + ui.horizontal(|ui| { + self.draw_dirs(ui, dirs_size); + ui.separator(); + + let files_size = Vec2::new(ui.available_width(), ui.available_height() - 40.0); + self.draw_files(ui, files_size); + }); + } + + fn draw_dirs(&mut self, ui: &mut Ui, area_size: Vec2) { + ui.vertical(|ui| { + ui.set_min_width(area_size.x); + ui.set_min_height(area_size.y); + + ScrollArea::vertical().id_salt(0).show(ui, |ui| { + let mut dirs: Vec = self.app_state.dirs.iter().cloned().collect(); + dirs.sort(); + for path in dirs.iter() { + ui.horizontal(|ui| { + let name = path + .file_name() + .map(|s| s.to_string_lossy().to_string()) + .unwrap_or_else(|| path.to_string_lossy().to_string()); + + let dir_button = Button::new(name).frame(false); + let dir_button_response = ui.add(dir_button); + if dir_button_response.clicked() { + self.app_state.current_dir = Some(path.clone()); + } + + let delete_dir_button = Button::new(icons::ICON_DELETE).frame(false); + let delete_dir_button_response = + ui.add_sized([18.0, 18.0], delete_dir_button); + if delete_dir_button_response.clicked() { + self.remove_dir(path.clone()); + } + }); + } + + ui.horizontal(|ui| { + let add_dir_button = egui::Button::new(icons::ICON_ADD).frame(false); + let add_dir_button_response = ui.add_sized([18.0, 18.0], add_dir_button); + if add_dir_button_response.clicked() { + self.add_dir(); + } + }); + }); + }); + } + + fn draw_files(&mut self, ui: &mut Ui, area_size: Vec2) { + let extensions = [ + "mp3", "wav", "ogg", "flac", "mp4", "m4a", "aac", "mov", "mkv", "webm", "avi", + ]; + + ui.vertical(|ui| { + ui.horizontal(|ui| { + ui.add_sized( + [ui.available_width(), 22.0], + TextEdit::singleline(&mut self.app_state.search_query).hint_text("Search..."), + ); + }); + + ui.separator(); + + ScrollArea::vertical().id_salt(1).show(ui, |ui| { + ui.set_min_width(area_size.x); + ui.set_min_height(area_size.y); + + ui.vertical(|ui| { + if let Some(path) = self.app_state.current_dir.clone() { + for entry in path.read_dir().unwrap() { + let entry = entry.unwrap(); + let entry_path = entry.path(); + + if entry_path.is_dir() { + continue; + } + + if !extensions.contains( + &entry_path.extension().unwrap_or_default().to_str().unwrap(), + ) { + continue; + } + + let file_name = entry_path + .file_name() + .unwrap() + .to_string_lossy() + .to_string(); + + let search_query = self + .app_state + .search_query + .to_lowercase() + .trim() + .to_string(); + + if !file_name.to_lowercase().contains(search_query.as_str()) { + continue; + } + + let file_button = Button::new(file_name).frame(false); + let file_button_response = ui.add(file_button); + if file_button_response.clicked() { + self.play_file(entry_path); + } + } + } + }); + }); + }); + } + + fn draw_footer(&mut self, ui: &mut Ui) { + ui.add_space(5.0); + ui.horizontal_top(|ui| { + // ---------- Microphone selection ---------- + let mut mics: Vec<(&u32, &String)> = + self.audio_player_state.all_inputs.iter().collect(); + mics.sort_by_key(|(k, _)| *k); + + let mut selected_input = self.audio_player_state.current_input.to_owned(); + let prev_input = selected_input.to_owned(); + ComboBox::from_label("Choose microphone") + .selected_text( + self.audio_player_state + .all_inputs + .get(&selected_input) + .unwrap_or(&String::new()), + ) + .show_ui(ui, |ui| { + for (index, device) in mics { + ui.selectable_value(&mut selected_input, index.to_owned(), device); + } + }); + + if selected_input != prev_input { + self.set_input(selected_input); + } + // -------------------------------- + + ui.add_space(ui.available_width() - 18.0 - ui.spacing().item_spacing.x); + + // ---------- Settings button ---------- + let settings_button = Button::new(icons::ICON_SETTINGS).frame(false); + let settings_button_response = ui.add_sized([18.0, 18.0], settings_button); + if settings_button_response.clicked() { + self.app_state.show_settings = true; + } + // -------------------------------- + }); + } +} diff --git a/src/gui/input.rs b/src/gui/input.rs new file mode 100644 index 0000000..ee85fbb --- /dev/null +++ b/src/gui/input.rs @@ -0,0 +1,24 @@ +use crate::gui::SoundpadGui; +use egui::{Context, Key}; + +impl SoundpadGui { + pub fn handle_input(&mut self, ctx: &Context) { + ctx.input(|i| { + if i.key_pressed(Key::Escape) { + std::process::exit(0); + } + + if !self.app_state.show_settings && i.key_pressed(Key::Space) { + self.play_toggle(); + } + + if i.key_pressed(Key::Slash) { + self.app_state.show_settings = !self.app_state.show_settings; + } + + if self.app_state.show_settings && i.key_pressed(Key::Backspace) { + self.app_state.show_settings = false; + } + }); + } +} diff --git a/src/gui/mod.rs b/src/gui/mod.rs new file mode 100644 index 0000000..1ce2711 --- /dev/null +++ b/src/gui/mod.rs @@ -0,0 +1,134 @@ +mod draw; +mod input; +mod update; + +use eframe::{HardwareAcceleration, NativeOptions, icon_data::from_png_bytes, run_native}; +use egui::{Context, Vec2, ViewportBuilder}; +use pwsp::{ + types::{ + audio_player::PlayerState, + config::GuiConfig, + gui::{AppState, AudioPlayerState}, + socket::Request, + }, + utils::{ + daemon::get_daemon_config, + gui::{get_gui_config, make_request_sync, start_app_state_thread}, + }, +}; +use rfd::FileDialog; +use std::path::PathBuf; +use std::{ + error::Error, + sync::{Arc, Mutex}, +}; + +struct SoundpadGui { + pub app_state: AppState, + pub config: GuiConfig, + pub audio_player_state: AudioPlayerState, + pub audio_player_state_shared: Arc>, +} + +impl SoundpadGui { + fn new(ctx: &Context) -> Self { + let audio_player_state = Arc::new(Mutex::new(AudioPlayerState::default())); + start_app_state_thread(audio_player_state.clone()); + + let config = get_gui_config(); + + ctx.set_zoom_factor(config.scale_factor); + + let mut soundpad_gui = SoundpadGui { + app_state: AppState::default(), + config: config.clone(), + audio_player_state: AudioPlayerState::default(), + audio_player_state_shared: audio_player_state.clone(), + }; + + soundpad_gui.app_state.dirs = config.dirs; + + soundpad_gui + } + + pub fn play_toggle(&mut self) { + let mut guard = self.audio_player_state_shared.lock().unwrap(); + guard.state = match guard.state { + PlayerState::Playing => { + make_request_sync(Request::pause()).ok(); + guard.new_state = Some(PlayerState::Paused); + PlayerState::Paused + } + PlayerState::Paused => { + make_request_sync(Request::resume()).ok(); + guard.new_state = Some(PlayerState::Playing); + PlayerState::Playing + } + PlayerState::Stopped => PlayerState::Stopped, + }; + } + + pub fn add_dir(&mut self) { + let file_dialog = FileDialog::new(); + if let Some(path) = file_dialog.pick_folder() { + self.app_state.dirs.insert(path); + self.config.dirs = self.app_state.dirs.clone(); + self.config.save_to_file().ok(); + } + } + + pub fn remove_dir(&mut self, path: PathBuf) { + self.app_state.dirs.remove(&path); + if let Some(current_dir) = &self.app_state.current_dir + && current_dir == &path + { + self.app_state.current_dir = None; + } + self.config.dirs = self.app_state.dirs.clone(); + self.config.save_to_file().ok(); + } + + pub fn play_file(&mut self, path: PathBuf) { + make_request_sync(Request::play(path.to_str().unwrap())).ok(); + } + + pub fn set_input(&mut self, id: u32) { + make_request_sync(Request::set_input(id)).ok(); + + if self.config.save_input { + let mut daemon_config = get_daemon_config(); + daemon_config.default_input_id = Some(id); + daemon_config.save_to_file().ok(); + } + } +} + +pub async fn run() -> Result<(), Box> { + const ICON: &[u8] = include_bytes!("../../assets/icon.png"); + + let options = NativeOptions { + vsync: true, + centered: true, + hardware_acceleration: HardwareAcceleration::Preferred, + + viewport: ViewportBuilder::default() + .with_app_id("ru.arabianq.pwsp") + .with_inner_size(Vec2::new(1200.0, 800.0)) + .with_min_inner_size(Vec2::new(800.0, 600.0)) + .with_icon(from_png_bytes(ICON)?), + + ..Default::default() + }; + + match run_native( + "Pipewire Soundpad", + options, + Box::new(|cc| { + egui_material_icons::initialize(&cc.egui_ctx); + Ok(Box::new(SoundpadGui::new(&cc.egui_ctx))) + }), + ) { + Ok(_) => Ok(()), + Err(e) => Err(e.into()), + } +} diff --git a/src/gui/update.rs b/src/gui/update.rs new file mode 100644 index 0000000..a74bb28 --- /dev/null +++ b/src/gui/update.rs @@ -0,0 +1,77 @@ +use crate::gui::SoundpadGui; +use eframe::{App, Frame as EFrame}; +use egui::{CentralPanel, Context}; +use pwsp::{ + types::socket::Request, + utils::{ + daemon::{get_daemon_config, is_daemon_running}, + gui::make_request_sync, + }, +}; + +impl App for SoundpadGui { + fn update(&mut self, ctx: &Context, _frame: &mut EFrame) { + { + let guard = self.audio_player_state_shared.lock().unwrap(); + self.audio_player_state = guard.clone(); + } + + let old_scale_factor = self.config.scale_factor; + let new_scale_factor = ctx.zoom_factor().clamp(0.5, 2.0); + + ctx.set_zoom_factor(new_scale_factor); + self.config.scale_factor = new_scale_factor; + + if new_scale_factor != old_scale_factor && self.config.save_scale_factor { + self.config.save_to_file().ok(); + } + + self.handle_input(ctx); + + CentralPanel::default().show(ctx, |ui| { + if !is_daemon_running().unwrap() { + self.draw_waiting_for_daemon(ui); + return; + } + + if self.app_state.show_settings { + self.draw_settings(ui); + return; + } + + self.draw(ui).ok(); + }); + + if self.app_state.position_dragged { + make_request_sync(Request::seek(self.app_state.position_slider_value)).ok(); + let mut guard = self.audio_player_state_shared.lock().unwrap(); + guard.new_position = Some(self.app_state.position_slider_value); + guard.position = self.app_state.position_slider_value; + self.app_state.position_dragged = false; + } else { + self.app_state.position_slider_value = self.audio_player_state.position; + } + + if self.app_state.volume_dragged { + let new_volume = self.app_state.volume_slider_value; + + make_request_sync(Request::set_volume(new_volume)).ok(); + + let mut guard = self.audio_player_state_shared.lock().unwrap(); + guard.new_volume = Some(self.app_state.volume_slider_value); + guard.volume = self.app_state.volume_slider_value; + + self.app_state.volume_dragged = false; + + if self.config.save_volume { + let mut daemon_config = get_daemon_config(); + daemon_config.default_volume = Some(new_volume); + daemon_config.save_to_file().ok(); + } + } else { + self.app_state.volume_slider_value = self.audio_player_state.volume; + } + + ctx.request_repaint_after_secs(1.0 / 60.0); + } +} diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..b4ab6a6 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,2 @@ +pub mod types; +pub mod utils; diff --git a/src/main.rs b/src/main.rs index 29f9ff3..146394a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,8 @@ -fn main () { +mod gui; -} \ No newline at end of file +use std::error::Error; + +#[tokio::main] +async fn main() -> Result<(), Box> { + gui::run().await +} diff --git a/src/types/audio_player.rs b/src/types/audio_player.rs new file mode 100644 index 0000000..9738a18 --- /dev/null +++ b/src/types/audio_player.rs @@ -0,0 +1,240 @@ +use crate::{ + types::pipewire::{AudioDevice, DeviceType, Terminate}, + utils::{ + daemon::get_daemon_config, + pipewire::{create_link, get_all_devices, get_device}, + }, +}; +use rodio::{Decoder, OutputStream, OutputStreamBuilder, Sink, Source}; +use serde::{Deserialize, Serialize}; +use std::{ + error::Error, + fs, + path::{Path, PathBuf}, + time::Duration, +}; + +#[derive(Debug, Eq, PartialEq, Default, Clone, Serialize, Deserialize)] +pub enum PlayerState { + #[default] + Stopped, + Paused, + Playing, +} + +pub struct AudioPlayer { + _stream_handle: OutputStream, + sink: Sink, + + input_link_sender: Option>, + pub current_input_device: Option, + + pub volume: f32, + pub duration: Option, + + pub current_file_path: Option, +} + +impl AudioPlayer { + pub async fn new() -> Result> { + let daemon_config = get_daemon_config(); + let default_volume = daemon_config.default_volume.unwrap_or(1.0); + let mut default_input_device: Option = None; + if let Some(id) = daemon_config.default_input_id + && let Ok(device) = get_device(id).await + && device.device_type == DeviceType::Input + { + default_input_device = Some(device); + } + + let stream_handle = OutputStreamBuilder::open_default_stream()?; + let sink = Sink::connect_new(stream_handle.mixer()); + sink.set_volume(default_volume); + + let mut audio_player = AudioPlayer { + _stream_handle: stream_handle, + sink, + + input_link_sender: None, + current_input_device: default_input_device.clone(), + + volume: default_volume, + duration: None, + + current_file_path: None, + }; + + if default_input_device.is_some() { + audio_player.link_devices().await?; + } + + Ok(audio_player) + } + + fn abort_link_thread(&mut self) { + if let Some(sender) = &self.input_link_sender { + match sender.send(Terminate {}) { + Ok(_) => println!("Sent terminate signal to link thread"), + Err(_) => println!("Failed to send terminate signal to link thread"), + } + } + } + + async fn link_devices(&mut self) -> Result<(), Box> { + self.abort_link_thread(); + + if self.current_input_device.is_none() { + println!("No input device selected, skipping device linking"); + return Ok(()); + } + + let (input_devices, _) = get_all_devices().await?; + + let mut pwsp_daemon_input: Option = None; + for input_device in input_devices { + if input_device.name == "pwsp-virtual-mic" { + pwsp_daemon_input = Some(input_device); + break; + } + } + + if pwsp_daemon_input.is_none() { + println!("Could not find pwsp-daemon input device, skipping device linking"); + return Ok(()); + } + + let pwsp_daemon_input = pwsp_daemon_input.unwrap(); + + let current_input_device = self.current_input_device.clone().unwrap(); + let output_fl = current_input_device + .clone() + .output_fl + .expect("Failed to get pwsp-daemon output_fl"); + let output_fr = current_input_device + .clone() + .output_fr + .expect("Failed to get pwsp-daemon output_fl"); + let input_fl = pwsp_daemon_input + .clone() + .input_fl + .expect("Failed to get pwsp-daemon input_fl"); + let input_fr = pwsp_daemon_input + .clone() + .input_fr + .expect("Failed to get pwsp-daemon input_fr"); + self.input_link_sender = Some(create_link(output_fl, output_fr, input_fl, input_fr)?); + + Ok(()) + } + + pub fn pause(&mut self) { + if self.get_state() == PlayerState::Playing { + self.sink.pause(); + } + } + + pub fn resume(&mut self) { + if self.get_state() == PlayerState::Paused { + self.sink.play(); + } + } + + pub fn stop(&mut self) { + self.sink.stop(); + } + + pub fn is_paused(&self) -> bool { + self.sink.is_paused() + } + + pub fn get_state(&mut self) -> PlayerState { + if self.sink.len() == 0 { + return PlayerState::Stopped; + } + + if self.sink.is_paused() { + return PlayerState::Paused; + } + + PlayerState::Playing + } + + pub fn set_volume(&mut self, volume: f32) { + self.volume = volume; + self.sink.set_volume(volume); + } + + pub fn get_position(&mut self) -> f32 { + if self.get_state() == PlayerState::Stopped { + return 0.0; + } + + self.sink.get_pos().as_secs_f32() + } + + pub fn seek(&mut self, position: f32) -> Result<(), Box> { + match self.sink.try_seek(Duration::from_secs_f32(position)) { + Ok(_) => Ok(()), + Err(err) => Err(err.into()), + } + } + + pub fn get_duration(&mut self) -> Result> { + if self.get_state() == PlayerState::Stopped { + Err("Nothing is playing right now".into()) + } else { + match self.duration { + Some(duration) => Ok(duration), + None => Err("Couldn't determine duration for current file".into()), + } + } + } + + pub async fn play(&mut self, file_path: &Path) -> Result<(), Box> { + if !file_path.exists() { + return Err(format!("File does not exist: {}", file_path.display()).into()); + } + + let file = fs::File::open(file_path)?; + match Decoder::try_from(file) { + Ok(source) => { + self.current_file_path = Some(file_path.to_path_buf()); + + if let Some(duration) = source.total_duration() { + self.duration = Some(duration.as_secs_f32()); + } else { + self.duration = None; + } + + self.sink.stop(); + self.sink.append(source); + self.sink.play(); + self.link_devices().await?; + + Ok(()) + } + Err(err) => Err(err.into()), + } + } + + pub fn get_current_file_path(&mut self) -> &Option { + if self.get_state() == PlayerState::Stopped { + self.current_file_path = None; + } + &self.current_file_path + } + + pub async fn set_current_input_device(&mut self, id: u32) -> Result<(), Box> { + let input_device = get_device(id).await?; + + if input_device.device_type != DeviceType::Input { + return Err("Selected device is not an input device".into()); + } + + self.current_input_device = Some(input_device); + + self.link_devices().await?; + + Ok(()) + } +} diff --git a/src/types/commands.rs b/src/types/commands.rs new file mode 100644 index 0000000..4e90645 --- /dev/null +++ b/src/types/commands.rs @@ -0,0 +1,234 @@ +use crate::{ + types::socket::Response, + utils::{daemon::get_audio_player, pipewire::get_all_devices}, +}; +use async_trait::async_trait; +use std::path::PathBuf; + +#[async_trait] +pub trait Executable { + async fn execute(&self) -> Response; +} + +pub struct PingCommand {} + +pub struct PauseCommand {} + +pub struct ResumeCommand {} + +pub struct StopCommand {} + +pub struct IsPausedCommand {} + +pub struct GetStateCommand {} + +pub struct GetVolumeCommand {} + +pub struct SetVolumeCommand { + pub volume: Option, +} + +pub struct GetPositionCommand {} + +pub struct SeekCommand { + pub position: Option, +} + +pub struct GetDurationCommand {} + +pub struct PlayCommand { + pub file_path: Option, +} + +pub struct GetCurrentFilePathCommand {} + +pub struct GetCurrentInputCommand {} + +pub struct GetAllInputsCommand {} + +pub struct SetCurrentInputCommand { + pub id: Option, +} + +#[async_trait] +impl Executable for PingCommand { + async fn execute(&self) -> Response { + Response::new(true, "pong") + } +} + +#[async_trait] +impl Executable for PauseCommand { + async fn execute(&self) -> Response { + let mut audio_player = get_audio_player().await.lock().await; + audio_player.pause(); + Response::new(true, "Audio was paused") + } +} + +#[async_trait] +impl Executable for ResumeCommand { + async fn execute(&self) -> Response { + let mut audio_player = get_audio_player().await.lock().await; + audio_player.resume(); + Response::new(true, "Audio was resumed") + } +} + +#[async_trait] +impl Executable for StopCommand { + async fn execute(&self) -> Response { + let mut audio_player = get_audio_player().await.lock().await; + audio_player.stop(); + Response::new(true, "Audio was stopped") + } +} + +#[async_trait] +impl Executable for IsPausedCommand { + async fn execute(&self) -> Response { + let audio_player = get_audio_player().await.lock().await; + let is_paused = audio_player.is_paused().to_string(); + Response::new(true, is_paused) + } +} + +#[async_trait] +impl Executable for GetStateCommand { + async fn execute(&self) -> Response { + let mut audio_player = get_audio_player().await.lock().await; + let state = audio_player.get_state(); + Response::new(true, serde_json::to_string(&state).unwrap()) + } +} + +#[async_trait] +impl Executable for GetVolumeCommand { + async fn execute(&self) -> Response { + let audio_player = get_audio_player().await.lock().await; + let volume = audio_player.volume; + Response::new(true, volume.to_string()) + } +} + +#[async_trait] +impl Executable for SetVolumeCommand { + async fn execute(&self) -> Response { + if let Some(volume) = self.volume { + let mut audio_player = get_audio_player().await.lock().await; + audio_player.set_volume(volume); + Response::new(true, format!("Audio volume was set to {}", volume)) + } else { + Response::new(false, "Invalid volume value") + } + } +} + +#[async_trait] +impl Executable for GetPositionCommand { + async fn execute(&self) -> Response { + let mut audio_player = get_audio_player().await.lock().await; + let position = audio_player.get_position(); + Response::new(true, position.to_string()) + } +} + +#[async_trait] +impl Executable for SeekCommand { + async fn execute(&self) -> Response { + if let Some(position) = self.position { + let mut audio_player = get_audio_player().await.lock().await; + match audio_player.seek(position) { + Ok(_) => Response::new(true, format!("Audio position was set to {}", position)), + Err(err) => Response::new(false, err.to_string()), + } + } else { + Response::new(false, "Invalid position value") + } + } +} + +#[async_trait] +impl Executable for GetDurationCommand { + async fn execute(&self) -> Response { + let mut audio_player = get_audio_player().await.lock().await; + match audio_player.get_duration() { + Ok(duration) => Response::new(true, duration.to_string()), + Err(err) => Response::new(false, err.to_string()), + } + } +} + +#[async_trait] +impl Executable for PlayCommand { + async fn execute(&self) -> Response { + if let Some(file_path) = &self.file_path { + let mut audio_player = get_audio_player().await.lock().await; + match audio_player.play(file_path).await { + Ok(_) => Response::new(true, format!("Now playing {}", file_path.display())), + Err(err) => Response::new(false, err.to_string()), + } + } else { + Response::new(false, "Invalid file path") + } + } +} + +#[async_trait] +impl Executable for GetCurrentFilePathCommand { + async fn execute(&self) -> Response { + let mut audio_player = get_audio_player().await.lock().await; + let current_file_path = audio_player.get_current_file_path(); + if let Some(current_file_path) = current_file_path { + Response::new(true, current_file_path.to_str().unwrap()) + } else { + Response::new(false, "No file is playing") + } + } +} + +#[async_trait] +impl Executable for GetCurrentInputCommand { + async fn execute(&self) -> Response { + let audio_player = get_audio_player().await.lock().await; + if let Some(input_device) = &audio_player.current_input_device { + Response::new(true, format!("{} - {}", input_device.id, input_device.nick)) + } else { + Response::new(false, "No input device selected") + } + } +} + +#[async_trait] +impl Executable for GetAllInputsCommand { + async fn execute(&self) -> Response { + let (input_devices, _output_devices) = get_all_devices().await.unwrap(); + let mut input_devices_strings = vec![]; + for device in input_devices { + if device.name == "pwsp-virtual-mic" { + continue; + } + + let string = format!("{} - {}", device.id, device.nick); + input_devices_strings.push(string); + } + let response_message = input_devices_strings.join("; "); + + Response::new(true, response_message) + } +} + +#[async_trait] +impl Executable for SetCurrentInputCommand { + async fn execute(&self) -> Response { + if let Some(id) = self.id { + let mut audio_player = get_audio_player().await.lock().await; + match audio_player.set_current_input_device(id).await { + Ok(_) => Response::new(true, "Input device was set"), + Err(err) => Response::new(false, err.to_string()), + } + } else { + Response::new(false, "Invalid index value") + } + } +} diff --git a/src/types/config.rs b/src/types/config.rs new file mode 100644 index 0000000..9eead72 --- /dev/null +++ b/src/types/config.rs @@ -0,0 +1,81 @@ +use crate::utils::config::get_config_path; +use serde::{Deserialize, Serialize}; +use std::{collections::HashSet, error::Error, fs, path::PathBuf}; + +#[derive(Default, Clone, Serialize, Deserialize)] +pub struct DaemonConfig { + pub default_input_id: Option, + pub default_volume: Option, +} + +impl DaemonConfig { + pub fn save_to_file(&self) -> Result<(), Box> { + let config_path = get_config_path()?.join("daemon.json"); + let config_dir = config_path.parent().unwrap(); + + if !config_path.exists() { + fs::create_dir_all(config_dir)?; + } + + let config_json = serde_json::to_string_pretty(self)?; + fs::write(config_path, config_json.as_bytes())?; + Ok(()) + } + + pub fn load_from_file() -> Result> { + let config_path = get_config_path()?.join("daemon.json"); + let bytes = fs::read(config_path)?; + Ok(serde_json::from_slice::(&bytes)?) + } +} + +#[derive(Clone, Serialize, Deserialize)] +pub struct GuiConfig { + pub scale_factor: f32, + + pub save_volume: bool, + pub save_input: bool, + pub save_scale_factor: bool, + + pub dirs: HashSet, +} + +impl Default for GuiConfig { + fn default() -> Self { + GuiConfig { + scale_factor: 1.0, + + save_volume: false, + save_input: false, + save_scale_factor: false, + + dirs: HashSet::default(), + } + } +} + +impl GuiConfig { + pub fn save_to_file(&mut self) -> Result<(), Box> { + let config_path = get_config_path()?.join("gui.json"); + let config_dir = config_path.parent().unwrap(); + + if !config_path.exists() { + fs::create_dir_all(config_dir)?; + } + + // Do not save scale factor if user does not want to + if !self.save_scale_factor { + self.scale_factor = 1.0; + } + + let config_json = serde_json::to_string_pretty(self)?; + fs::write(config_path, config_json.as_bytes())?; + Ok(()) + } + + pub fn load_from_file() -> Result> { + let config_path = get_config_path()?.join("gui.json"); + let bytes = fs::read(config_path)?; + Ok(serde_json::from_slice::(&bytes)?) + } +} diff --git a/src/types/gui.rs b/src/types/gui.rs new file mode 100644 index 0000000..9197608 --- /dev/null +++ b/src/types/gui.rs @@ -0,0 +1,39 @@ +use crate::types::audio_player::PlayerState; +use std::{ + collections::{HashMap, HashSet}, + path::PathBuf, +}; + +#[derive(Default, Debug)] +pub struct AppState { + pub search_query: String, + + pub position_slider_value: f32, + pub volume_slider_value: f32, + + pub position_dragged: bool, + pub volume_dragged: bool, + + pub show_settings: bool, + + pub current_dir: Option, + pub dirs: HashSet, +} + +#[derive(Default, Debug, Clone)] +pub struct AudioPlayerState { + pub state: PlayerState, + pub new_state: Option, + pub current_file_path: PathBuf, + + pub is_paused: bool, + + pub volume: f32, + pub new_volume: Option, + pub position: f32, + pub new_position: Option, + pub duration: f32, + + pub current_input: u32, + pub all_inputs: HashMap, +} diff --git a/src/types/mod.rs b/src/types/mod.rs new file mode 100644 index 0000000..b095ede --- /dev/null +++ b/src/types/mod.rs @@ -0,0 +1,6 @@ +pub mod audio_player; +pub mod commands; +pub mod config; +pub mod gui; +pub mod pipewire; +pub mod socket; diff --git a/src/types/pipewire.rs b/src/types/pipewire.rs new file mode 100644 index 0000000..1dcc89a --- /dev/null +++ b/src/types/pipewire.rs @@ -0,0 +1,31 @@ +#[derive(Debug)] +pub struct Terminate {} + +#[derive(Debug, Clone, Ord, PartialOrd, Eq, PartialEq)] +pub struct Port { + pub node_id: u32, + pub port_id: u32, + + pub name: String, +} + +#[derive(Debug, Clone, Ord, PartialOrd, Eq, PartialEq)] +pub enum DeviceType { + Input, + Output, +} + +#[derive(Debug, Clone, Ord, PartialOrd, Eq, PartialEq)] +pub struct AudioDevice { + pub id: u32, + + pub nick: String, + pub name: String, + + pub device_type: DeviceType, + + pub input_fl: Option, + pub input_fr: Option, + pub output_fl: Option, + pub output_fr: Option, +} diff --git a/src/types/socket.rs b/src/types/socket.rs new file mode 100644 index 0000000..ab2f8d9 --- /dev/null +++ b/src/types/socket.rs @@ -0,0 +1,101 @@ +use serde::{Deserialize, Serialize}; +use std::collections::HashMap; + +#[derive(Default, Debug, Clone, Serialize, Deserialize)] +pub struct Request { + pub name: String, + pub args: HashMap, +} + +impl Request { + pub fn new>(function_name: T, data: Vec<(T, T)>) -> Self { + let hashmap_data: HashMap = data + .into_iter() + .map(|(key, value)| (key.as_ref().to_string(), value.as_ref().to_string())) + .collect(); + + Request { + name: function_name.as_ref().to_string(), + args: hashmap_data, + } + } + + pub fn ping() -> Self { + Request::new("ping", vec![]) + } + + pub fn pause() -> Self { + Request::new("pause", vec![]) + } + + pub fn resume() -> Self { + Request::new("resume", vec![]) + } + + pub fn stop() -> Self { + Request::new("stop", vec![]) + } + + pub fn play(file_path: &str) -> Self { + Request::new("play", vec![("file_path", file_path)]) + } + + pub fn get_is_paused() -> Self { + Request::new("is_paused", vec![]) + } + + pub fn get_volume() -> Self { + Request::new("get_volume", vec![]) + } + + pub fn get_position() -> Self { + Request::new("get_position", vec![]) + } + + pub fn get_duration() -> Self { + Request::new("get_duration", vec![]) + } + + pub fn get_state() -> Self { + Request::new("get_state", vec![]) + } + + pub fn get_current_file_path() -> Self { + Request::new("get_current_file_path", vec![]) + } + + pub fn get_input() -> Self { + Request::new("get_input", vec![]) + } + + pub fn get_inputs() -> Self { + Request::new("get_inputs", vec![]) + } + + pub fn set_volume(volume: f32) -> Self { + Request::new("set_volume", vec![("volume", &volume.to_string())]) + } + + pub fn seek(position: f32) -> Self { + Request::new("seek", vec![("position", &position.to_string())]) + } + + pub fn set_input(id: u32) -> Self { + Request::new("set_input", vec![("input_id", &id.to_string())]) + } +} + +#[derive(Default, Debug, Clone, Serialize, Deserialize)] +pub struct Response { + pub status: bool, + pub message: String, +} + +impl Response { + pub fn new>(status: bool, message: T) -> Self { + Response { + status, + message: message.as_ref().to_string(), + } + } +} diff --git a/src/utils/commands.rs b/src/utils/commands.rs new file mode 100644 index 0000000..32e6cba --- /dev/null +++ b/src/utils/commands.rs @@ -0,0 +1,57 @@ +use crate::types::{commands::*, socket::Request}; + +use std::path::PathBuf; + +pub fn parse_command(request: &Request) -> Option> { + match request.name.as_str() { + "ping" => Some(Box::new(PingCommand {})), + "pause" => Some(Box::new(PauseCommand {})), + "resume" => Some(Box::new(ResumeCommand {})), + "stop" => Some(Box::new(StopCommand {})), + "is_paused" => Some(Box::new(IsPausedCommand {})), + "get_state" => Some(Box::new(GetStateCommand {})), + "get_volume" => Some(Box::new(GetVolumeCommand {})), + "set_volume" => { + let volume = request + .args + .get("volume") + .unwrap_or(&String::new()) + .parse::() + .ok(); + Some(Box::new(SetVolumeCommand { volume })) + } + "get_position" => Some(Box::new(GetPositionCommand {})), + "seek" => { + let position = request + .args + .get("position") + .unwrap_or(&String::new()) + .parse::() + .ok(); + Some(Box::new(SeekCommand { position })) + } + "get_duration" => Some(Box::new(GetDurationCommand {})), + "play" => { + let file_path = request + .args + .get("file_path") + .unwrap_or(&String::new()) + .parse::() + .ok(); + Some(Box::new(PlayCommand { file_path })) + } + "get_current_file_path" => Some(Box::new(GetCurrentFilePathCommand {})), + "get_input" => Some(Box::new(GetCurrentInputCommand {})), + "get_inputs" => Some(Box::new(GetAllInputsCommand {})), + "set_input" => { + let id = request + .args + .get("input_id") + .unwrap_or(&String::new()) + .parse::() + .ok(); + Some(Box::new(SetCurrentInputCommand { id })) + } + _ => None, + } +} diff --git a/src/utils/config.rs b/src/utils/config.rs new file mode 100644 index 0000000..127cc7a --- /dev/null +++ b/src/utils/config.rs @@ -0,0 +1,6 @@ +use std::{error::Error, path::PathBuf}; + +pub fn get_config_path() -> Result> { + let config_path = dirs::config_dir().expect("Failed to obtain config dir"); + Ok(config_path.join("pwsp")) +} diff --git a/src/utils/daemon.rs b/src/utils/daemon.rs new file mode 100644 index 0000000..985d4de --- /dev/null +++ b/src/utils/daemon.rs @@ -0,0 +1,156 @@ +use crate::{ + types::{ + audio_player::AudioPlayer, + config::DaemonConfig, + pipewire::AudioDevice, + socket::{Request, Response}, + }, + utils::pipewire::{create_link, get_all_devices}, +}; +use std::path::PathBuf; +use std::{error::Error, fs}; +use tokio::{ + io::{AsyncReadExt, AsyncWriteExt}, + net::UnixStream, + sync::{Mutex, OnceCell}, + time::{Duration, sleep}, +}; + +static AUDIO_PLAYER: OnceCell> = OnceCell::const_new(); + +pub async fn get_audio_player() -> &'static Mutex { + AUDIO_PLAYER + .get_or_init(|| async { + println!("Initializing audio player"); + Mutex::new(AudioPlayer::new().await.unwrap()) + }) + .await +} + +pub fn get_daemon_config() -> DaemonConfig { + DaemonConfig::load_from_file().unwrap_or_else(|_| { + let config = DaemonConfig::default(); + config.save_to_file().ok(); + config + }) +} + +pub async fn link_player_to_virtual_mic() -> Result<(), Box> { + let (input_devices, output_devices) = get_all_devices().await?; + + let mut pwsp_daemon_output: Option = None; + for output_device in output_devices { + if output_device.name == "alsa_playback.pwsp-daemon" { + pwsp_daemon_output = Some(output_device); + break; + } + } + + if pwsp_daemon_output.is_none() { + println!("Could not find pwsp-daemon output device, skipping device linking"); + return Ok(()); + } + + let mut pwsp_daemon_input: Option = None; + for input_device in input_devices { + if input_device.name == "pwsp-virtual-mic" { + pwsp_daemon_input = Some(input_device); + break; + } + } + + if pwsp_daemon_input.is_none() { + println!("Could not find pwsp-daemon input device, skipping device linking"); + return Ok(()); + } + + let pwsp_daemon_output = pwsp_daemon_output.unwrap(); + let pwsp_daemon_input = pwsp_daemon_input.unwrap(); + + let output_fl = pwsp_daemon_output + .clone() + .output_fl + .expect("Failed to get pwsp-daemon output_fl"); + let output_fr = pwsp_daemon_output + .clone() + .output_fr + .expect("Failed to get pwsp-daemon output_fl"); + let input_fl = pwsp_daemon_input + .clone() + .input_fl + .expect("Failed to get pwsp-daemon input_fl"); + let input_fr = pwsp_daemon_input + .clone() + .input_fr + .expect("Failed to get pwsp-daemon input_fr"); + create_link(output_fl, output_fr, input_fl, input_fr)?; + + Ok(()) +} + +pub fn get_runtime_dir() -> PathBuf { + dirs::runtime_dir().unwrap_or(PathBuf::from("/run/pwsp")) +} + +pub fn create_runtime_dir() -> Result<(), Box> { + let runtime_dir = get_runtime_dir(); + if !runtime_dir.exists() { + fs::create_dir_all(&runtime_dir)?; + } + + Ok(()) +} + +pub fn is_daemon_running() -> Result> { + let lock_file = fs::File::create(get_runtime_dir().join("daemon.lock"))?; + match lock_file.try_lock() { + Ok(_) => Ok(false), + Err(_) => Ok(true), + } +} + +pub async fn wait_for_daemon() -> Result<(), Box> { + if is_daemon_running()? { + return Ok(()); + } + + println!("Daemon not found, waiting for it..."); + while !is_daemon_running()? { + sleep(Duration::from_millis(100)).await; + } + + println!("Found running daemon"); + + Ok(()) +} + +pub async fn make_request(request: Request) -> Result> { + let socket_path = get_runtime_dir().join("daemon.sock"); + let mut stream = UnixStream::connect(socket_path).await?; + + // ---------- Send request (start) ---------- + let request_data = serde_json::to_vec(&request)?; + let request_len = request_data.len() as u32; + if stream.write_all(&request_len.to_le_bytes()).await.is_err() { + return Err("Failed to send request length".into()); + }; + if stream.write_all(&request_data).await.is_err() { + return Err("Failed to send request".into()); + } + // ---------- Send request (end) ---------- + + // ---------- Read response (start) ---------- + let mut len_bytes = [0u8; 4]; + if stream.read_exact(&mut len_bytes).await.is_err() { + return Err("Failed to read response length".into()); + } + let response_len = u32::from_le_bytes(len_bytes) as usize; + + let mut buffer = vec![0u8; response_len]; + if stream.read_exact(&mut buffer).await.is_err() { + return Err("Failed to read response".into()); + }; + // ---------- Read response (end) ---------- + + Ok(serde_json::from_slice(&buffer)?) +} diff --git a/src/utils/gui.rs b/src/utils/gui.rs new file mode 100644 index 0000000..1f836fc --- /dev/null +++ b/src/utils/gui.rs @@ -0,0 +1,159 @@ +use crate::{ + types::{ + audio_player::PlayerState, + config::GuiConfig, + gui::AudioPlayerState, + socket::{Request, Response}, + }, + utils::daemon::{make_request, wait_for_daemon}, +}; +use std::{ + collections::HashMap, + error::Error, + path::PathBuf, + sync::{Arc, Mutex}, +}; +use tokio::time::{Duration, sleep}; + +pub fn get_gui_config() -> GuiConfig { + GuiConfig::load_from_file().unwrap_or_else(|_| { + let mut config = GuiConfig::default(); + config.save_to_file().ok(); + config + }) +} + +pub fn make_request_sync(request: Request) -> Result> { + futures::executor::block_on(make_request(request)) +} + +pub fn format_time_pair(position: f32, duration: f32) -> String { + fn format_time(seconds: f32) -> String { + let total_seconds = seconds.round() as u32; + let minutes = total_seconds / 60; + let secs = total_seconds % 60; + format!("{:02}:{:02}", minutes, secs) + } + + format!("{}/{}", format_time(position), format_time(duration)) +} + +pub fn start_app_state_thread(audio_player_state_shared: Arc>) { + tokio::spawn(async move { + let sleep_duration = Duration::from_millis(100); + + loop { + wait_for_daemon().await.ok(); + + let state_req = Request::get_state(); + let file_path_req = Request::get_current_file_path(); + let is_paused_req = Request::get_is_paused(); + let volume_req = Request::get_volume(); + let position_req = Request::get_position(); + let duration_req = Request::get_duration(); + let current_input_req = Request::get_input(); + let all_inputs_req = Request::get_inputs(); + + let state_res = make_request(state_req).await.unwrap_or_default(); + let file_path_res = make_request(file_path_req).await.unwrap_or_default(); + let is_paused_res = make_request(is_paused_req).await.unwrap_or_default(); + let volume_res = make_request(volume_req).await.unwrap_or_default(); + let position_res = make_request(position_req).await.unwrap_or_default(); + let duration_res = make_request(duration_req).await.unwrap_or_default(); + let current_input_res = make_request(current_input_req).await.unwrap_or_default(); + let all_inputs_res = make_request(all_inputs_req).await.unwrap_or_default(); + + let state = match state_res.status { + true => serde_json::from_str::(&state_res.message).unwrap(), + false => PlayerState::default(), + }; + + let file_path = match file_path_res.status { + true => PathBuf::from(file_path_res.message), + false => PathBuf::new(), + }; + let is_paused = match is_paused_res.status { + true => is_paused_res.message == "true", + false => false, + }; + let volume = match volume_res.status { + true => volume_res.message.parse::().unwrap(), + false => 0.0, + }; + let position = match position_res.status { + true => position_res.message.parse::().unwrap(), + false => 0.0, + }; + let duration = match duration_res.status { + true => duration_res.message.parse::().unwrap(), + false => 0.0, + }; + let current_input = match current_input_res.status { + true => current_input_res + .message + .as_str() + .split(" - ") + .collect::>() + .first() + .unwrap() + .to_string() + .parse::() + .unwrap_or_default(), + false => 0, + }; + let all_inputs = match all_inputs_res.status { + true => all_inputs_res + .message + .as_str() + .split(';') + .filter_map(|entry| { + let entry = entry.trim(); + if entry.is_empty() { + return None; + } + entry.split_once(" - ").and_then(|(k, v)| { + k.trim() + .parse::() + .ok() + .map(|key| (key, v.trim().to_string())) + }) + }) + .collect(), + false => HashMap::new(), + }; + + { + let mut guard = audio_player_state_shared.lock().unwrap(); + + guard.state = match guard.new_state.clone() { + Some(new_state) => { + guard.new_state = None; + new_state + } + None => state, + }; + guard.current_file_path = file_path; + guard.is_paused = is_paused; + guard.volume = match guard.new_volume { + Some(new_volume) => { + guard.new_volume = None; + new_volume + } + None => volume, + }; + guard.position = match guard.new_position { + Some(new_position) => { + guard.new_position = None; + new_position + } + None => position, + }; + guard.duration = if duration > 0.0 { duration } else { 1.0 }; + guard.current_input = current_input; + guard.all_inputs = all_inputs; + } + + sleep(sleep_duration).await; + } + }); +} diff --git a/src/utils/mod.rs b/src/utils/mod.rs new file mode 100644 index 0000000..e23bcd1 --- /dev/null +++ b/src/utils/mod.rs @@ -0,0 +1,5 @@ +pub mod commands; +pub mod config; +pub mod daemon; +pub mod gui; +pub mod pipewire; diff --git a/src/utils/pipewire.rs b/src/utils/pipewire.rs new file mode 100644 index 0000000..fa66522 --- /dev/null +++ b/src/utils/pipewire.rs @@ -0,0 +1,299 @@ +use crate::types::pipewire::{AudioDevice, DeviceType, Port, Terminate}; +use pipewire::{ + context::Context, link::Link, main_loop::MainLoop, properties::properties, + registry::GlobalObject, spa::utils::dict::DictRef, +}; +use std::{collections::HashMap, error::Error, thread}; +use tokio::{ + sync::mpsc, + time::{Duration, timeout}, +}; + +fn parse_global_object( + global_object: &GlobalObject<&DictRef>, +) -> (Option, Option) { + // Only objects with props can be devices/ports + if let Some(props) = global_object.props { + // Only objects with media.class can be devices + if let Some(media_class) = props.get("media.class") { + let node_id = global_object.id; + let node_nick = props.get("node.nick"); + let node_name = props.get("node.name"); + let node_description = props.get("node.description"); + + // Check if the device is an input or output + return if media_class.starts_with("Audio/Source") { + let input_device = AudioDevice { + id: node_id, + nick: node_nick + .unwrap_or(node_description.unwrap_or(node_name.unwrap_or_default())) + .to_string(), + name: node_name.unwrap_or_default().to_string(), + device_type: DeviceType::Input, + + input_fl: None, + input_fr: None, + output_fl: None, + output_fr: None, + }; + (Some(input_device), None) + } else if media_class.starts_with("Stream/Output/Audio") { + let output_device = AudioDevice { + id: node_id, + nick: node_nick + .unwrap_or(node_description.unwrap_or(node_name.unwrap_or_default())) + .to_string(), + name: node_name.unwrap_or_default().to_string(), + device_type: DeviceType::Output, + + input_fl: None, + input_fr: None, + output_fl: None, + output_fr: None, + }; + (Some(output_device), None) + } else { + (None, None) + }; + // Check if the object is a port + } else if props.get("port.direction").is_some() { + let node_id = props.get("node.id").unwrap().parse::().unwrap(); + let port_id = props.get("port.id").unwrap().parse::().unwrap(); + let port_name = props.get("port.name").unwrap(); + + let port = Port { + node_id, + port_id, + name: port_name.to_string(), + }; + + return (None, Some(port)); + } + } + (None, None) +} + +async fn pw_get_global_objects_thread( + main_sender: mpsc::Sender<(Option, Option)>, + pw_receiver: pipewire::channel::Receiver, +) { + let main_loop = MainLoop::new(None).expect("Failed to initialize pipewire main loop"); + + // Stop main loop on Terminate message + let _receiver = pw_receiver.attach(main_loop.loop_(), { + let _main_loop = main_loop.clone(); + move |_| _main_loop.quit() + }); + + let context = Context::new(&main_loop).expect("Failed to create pipewire context"); + let core = context + .connect(None) + .expect("Failed to connect to pipewire context"); + let registry = core + .get_registry() + .expect("Failed to get registry from pipewire context"); + + let _listener = registry + .add_listener_local() + .global(move |global| { + // Try to parse every global object pipewire finds + let (device, port) = parse_global_object(global); + + // Send message to the main thread + let sender_clone = main_sender.clone(); + tokio::task::spawn(async move { + sender_clone.send((device, port)).await.ok(); + }); + }) + .register(); + + main_loop.run(); +} + +pub async fn get_all_devices() -> Result<(Vec, Vec), Box> { + // Channels to communicate with pipewire thread + let (main_sender, mut main_receiver) = mpsc::channel(10); + let (pw_sender, pw_receiver) = pipewire::channel::channel(); + + // Spawn pipewire thread in background + let _pw_thread = + tokio::spawn(async move { pw_get_global_objects_thread(main_sender, pw_receiver).await }); + + let mut input_devices: HashMap = HashMap::new(); + let mut output_devices: HashMap = HashMap::new(); + let mut ports: Vec = vec![]; + + loop { + // If we don't receive a message in 100ms, we can assume that pipewire thread is finished + match timeout(Duration::from_millis(100), main_receiver.recv()).await { + Ok(Some((device, port))) => { + if let Some(device) = device { + match device.device_type { + DeviceType::Input => { + input_devices.insert(device.id, device); + } + DeviceType::Output => { + output_devices.insert(device.id, device); + } + } + } else if let Some(port) = port { + ports.push(port); + } + } + Ok(None) | Err(_) => { + // Pipewire thread is finished and we can collect our devices + pw_sender + .send(Terminate {}) + .expect("Failed to terminate pipewire thread"); + + for port in ports { + let node_id = port.node_id; + + if input_devices.contains_key(&node_id) { + let input_device = input_devices.get_mut(&node_id).unwrap(); + match port.name.as_str() { + "input_FL" => input_device.input_fl = Some(port), + "input_FR" => input_device.input_fr = Some(port), + "output_FL" => input_device.output_fl = Some(port), + "output_FR" => input_device.output_fr = Some(port), + "capture_FL" => input_device.output_fl = Some(port), + "capture_FR" => input_device.output_fr = Some(port), + "input_MONO" => { + input_device.input_fl = Some(port.clone()); + input_device.input_fr = Some(port) + } + _ => {} + } + } else if output_devices.contains_key(&node_id) { + let output_device = output_devices.get_mut(&node_id).unwrap(); + match port.name.as_str() { + "input_FL" => output_device.input_fl = Some(port), + "input_FR" => output_device.input_fr = Some(port), + "output_FL" => output_device.output_fl = Some(port), + "output_FR" => output_device.output_fr = Some(port), + "capture_FL" => output_device.output_fl = Some(port), + "capture_FR" => output_device.output_fr = Some(port), + "output_MONO" => { + output_device.output_fl = Some(port.clone()); + output_device.output_fr = Some(port) + } + "capture_MONO" => { + output_device.output_fl = Some(port.clone()); + output_device.output_fr = Some(port) + } + _ => {} + } + } + } + + let mut input_devices: Vec = input_devices.values().cloned().collect(); + let mut output_devices: Vec = + output_devices.values().cloned().collect(); + + input_devices.sort_by(|a, b| a.id.cmp(&b.id)); + output_devices.sort_by(|a, b| a.id.cmp(&b.id)); + + return Ok((input_devices, output_devices)); + } + } + } +} + +pub async fn get_device(node_id: u32) -> Result> { + let (mut input_devices, output_devices) = get_all_devices().await?; + input_devices.extend(output_devices); + + for device in input_devices { + if device.id == node_id { + return Ok(device); + } + } + + Err("Device not found".into()) +} + +pub fn create_virtual_mic() -> Result, Box> { + let (pw_sender, pw_receiver) = pipewire::channel::channel::(); + + let _pw_thread = thread::spawn(move || { + let main_loop = MainLoop::new(None).expect("Failed to initialize pipewire main loop"); + let context = Context::new(&main_loop).expect("Failed to create pipewire context"); + let core = context + .connect(None) + .expect("Failed to connect to pipewire context"); + + let props = properties!( + "factory.name" => "support.null-audio-sink", + "node.name" => "pwsp-virtual-mic", + "node.description" => "PWSP Virtual Mic", + "media.class" => "Audio/Source/Virtual", + "audio.position" => "[ FL FR ]", + "audio.channels" => "2", + "object.linger" => "false", // Destroy the node on app exit + ); + + let _node = core + .create_object::("adapter", &props) + .expect("Failed to create virtual mic"); + + let _receiver = pw_receiver.attach(main_loop.loop_(), { + let _main_loop = main_loop.clone(); + move |_| _main_loop.quit() + }); + + println!("Virtual mic created"); + main_loop.run(); + }); + + Ok(pw_sender) +} + +pub fn create_link( + output_fl: Port, + output_fr: Port, + input_fl: Port, + input_fr: Port, +) -> Result, Box> { + let (pw_sender, pw_receiver) = pipewire::channel::channel::(); + + let _pw_thread = thread::spawn(move || { + let main_loop = MainLoop::new(None).expect("Failed to initialize pipewire main loop"); + let context = Context::new(&main_loop).expect("Failed to create pipewire context"); + let core = context + .connect(None) + .expect("Failed to connect to pipewire context"); + + let props_fl = properties! { + "link.output.node" => format!("{}", output_fl.node_id).as_str(), + "link.output.port" => format!("{}", output_fl.port_id).as_str(), + "link.input.node" => format!("{}", input_fl.node_id).as_str(), + "link.input.port" => format!("{}", input_fl.port_id).as_str(), + }; + let props_fr = properties! { + "link.output.node" => format!("{}", output_fr.node_id).as_str(), + "link.output.port" => format!("{}", output_fr.port_id).as_str(), + "link.input.node" => format!("{}", input_fr.node_id).as_str(), + "link.input.port" => format!("{}", input_fr.port_id).as_str(), + }; + + let _link_fl = core + .create_object::("link-factory", &props_fl) + .expect("Failed to create link FL"); + let _link_fr = core + .create_object::("link-factory", &props_fr) + .expect("Failed to create link FR"); + + let _receiver = pw_receiver.attach(main_loop.loop_(), { + let _main_loop = main_loop.clone(); + move |_| _main_loop.quit() + }); + + println!( + "Link created: FL: {}-{} FR: {}-{}", + output_fl.node_id, input_fl.node_id, output_fr.node_id, input_fr.node_id + ); + main_loop.run(); + }); + + Ok(pw_sender) +}