├── .github └── workflows │ └── rust.yml ├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── LICENSE ├── README.md ├── assets ├── 1.png └── 2.png ├── chibi ├── config.toml ├── screenshots ├── main_ui.png └── settings.png └── src ├── app.rs ├── capture ├── alsa_util.rs └── mod.rs ├── config.rs ├── lib.rs └── main.rs /.github/workflows/rust.yml: -------------------------------------------------------------------------------- 1 | name: Rust 2 | 3 | on: 4 | push: 5 | branches: [ "main" ] 6 | pull_request: 7 | branches: [ "main" ] 8 | 9 | env: 10 | CARGO_TERM_COLOR: always 11 | 12 | jobs: 13 | build: 14 | 15 | runs-on: ubuntu-latest 16 | 17 | steps: 18 | - name: Cache APT packages 19 | uses: actions/cache@v4 20 | with: 21 | # apt stores it's cache here 22 | path: /var/cache/apt/archives 23 | key: ${{ runner.os }}-apt-${{ hashFiles('**/apt.txt') }} 24 | 25 | - name: Install dependencies 26 | run: sudo apt-get update && sudo apt-get install -y clang alsa-utils libasound2-dev 27 | 28 | - uses: actions/checkout@v4 29 | - name: Build 30 | run: cargo build --verbose 31 | - name: Run tests 32 | run: cargo test --verbose 33 | - name: Run clippy 34 | run: cargo clippy --verbose -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 4 4 | 5 | [[package]] 6 | name = "ab_glyph" 7 | version = "0.2.29" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "ec3672c180e71eeaaac3a541fbbc5f5ad4def8b747c595ad30d674e43049f7b0" 10 | dependencies = [ 11 | "ab_glyph_rasterizer", 12 | "owned_ttf_parser", 13 | ] 14 | 15 | [[package]] 16 | name = "ab_glyph_rasterizer" 17 | version = "0.1.8" 18 | source = "registry+https://github.com/rust-lang/crates.io-index" 19 | checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" 20 | 21 | [[package]] 22 | name = "adler2" 23 | version = "2.0.0" 24 | source = "registry+https://github.com/rust-lang/crates.io-index" 25 | checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" 26 | 27 | [[package]] 28 | name = "ahash" 29 | version = "0.7.8" 30 | source = "registry+https://github.com/rust-lang/crates.io-index" 31 | checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" 32 | dependencies = [ 33 | "getrandom 0.2.15", 34 | "once_cell", 35 | "version_check", 36 | ] 37 | 38 | [[package]] 39 | name = "ahash" 40 | version = "0.8.11" 41 | source = "registry+https://github.com/rust-lang/crates.io-index" 42 | checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" 43 | dependencies = [ 44 | "cfg-if", 45 | "getrandom 0.2.15", 46 | "once_cell", 47 | "version_check", 48 | "zerocopy 0.7.35", 49 | ] 50 | 51 | [[package]] 52 | name = "aho-corasick" 53 | version = "1.1.3" 54 | source = "registry+https://github.com/rust-lang/crates.io-index" 55 | checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 56 | dependencies = [ 57 | "memchr", 58 | ] 59 | 60 | [[package]] 61 | name = "aligned-vec" 62 | version = "0.5.0" 63 | source = "registry+https://github.com/rust-lang/crates.io-index" 64 | checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1" 65 | 66 | [[package]] 67 | name = "allocator-api2" 68 | version = "0.2.21" 69 | source = "registry+https://github.com/rust-lang/crates.io-index" 70 | checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" 71 | 72 | [[package]] 73 | name = "alsa" 74 | version = "0.9.1" 75 | source = "registry+https://github.com/rust-lang/crates.io-index" 76 | checksum = "ed7572b7ba83a31e20d1b48970ee402d2e3e0537dcfe0a3ff4d6eb7508617d43" 77 | dependencies = [ 78 | "alsa-sys", 79 | "bitflags 2.9.0", 80 | "cfg-if", 81 | "libc", 82 | ] 83 | 84 | [[package]] 85 | name = "alsa-sys" 86 | version = "0.3.1" 87 | source = "registry+https://github.com/rust-lang/crates.io-index" 88 | checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527" 89 | dependencies = [ 90 | "libc", 91 | "pkg-config", 92 | ] 93 | 94 | [[package]] 95 | name = "android-activity" 96 | version = "0.6.0" 97 | source = "registry+https://github.com/rust-lang/crates.io-index" 98 | checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" 99 | dependencies = [ 100 | "android-properties", 101 | "bitflags 2.9.0", 102 | "cc", 103 | "cesu8", 104 | "jni", 105 | "jni-sys", 106 | "libc", 107 | "log", 108 | "ndk 0.9.0", 109 | "ndk-context", 110 | "ndk-sys 0.6.0+11769913", 111 | "num_enum", 112 | "thiserror", 113 | ] 114 | 115 | [[package]] 116 | name = "android-properties" 117 | version = "0.2.2" 118 | source = "registry+https://github.com/rust-lang/crates.io-index" 119 | checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" 120 | 121 | [[package]] 122 | name = "android_system_properties" 123 | version = "0.1.5" 124 | source = "registry+https://github.com/rust-lang/crates.io-index" 125 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 126 | dependencies = [ 127 | "libc", 128 | ] 129 | 130 | [[package]] 131 | name = "anyhow" 132 | version = "1.0.97" 133 | source = "registry+https://github.com/rust-lang/crates.io-index" 134 | checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" 135 | 136 | [[package]] 137 | name = "approx" 138 | version = "0.5.1" 139 | source = "registry+https://github.com/rust-lang/crates.io-index" 140 | checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" 141 | dependencies = [ 142 | "num-traits", 143 | ] 144 | 145 | [[package]] 146 | name = "arbitrary" 147 | version = "1.4.1" 148 | source = "registry+https://github.com/rust-lang/crates.io-index" 149 | checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" 150 | 151 | [[package]] 152 | name = "arg_enum_proc_macro" 153 | version = "0.3.4" 154 | source = "registry+https://github.com/rust-lang/crates.io-index" 155 | checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" 156 | dependencies = [ 157 | "proc-macro2", 158 | "quote", 159 | "syn 2.0.100", 160 | ] 161 | 162 | [[package]] 163 | name = "arrayref" 164 | version = "0.3.9" 165 | source = "registry+https://github.com/rust-lang/crates.io-index" 166 | checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" 167 | 168 | [[package]] 169 | name = "arrayvec" 170 | version = "0.7.6" 171 | source = "registry+https://github.com/rust-lang/crates.io-index" 172 | checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" 173 | 174 | [[package]] 175 | name = "as-raw-xcb-connection" 176 | version = "1.0.1" 177 | source = "registry+https://github.com/rust-lang/crates.io-index" 178 | checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" 179 | 180 | [[package]] 181 | name = "ash" 182 | version = "0.37.3+1.3.251" 183 | source = "registry+https://github.com/rust-lang/crates.io-index" 184 | checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a" 185 | dependencies = [ 186 | "libloading 0.7.4", 187 | ] 188 | 189 | [[package]] 190 | name = "async-broadcast" 191 | version = "0.7.2" 192 | source = "registry+https://github.com/rust-lang/crates.io-index" 193 | checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" 194 | dependencies = [ 195 | "event-listener", 196 | "event-listener-strategy", 197 | "futures-core", 198 | "pin-project-lite", 199 | ] 200 | 201 | [[package]] 202 | name = "async-channel" 203 | version = "2.3.1" 204 | source = "registry+https://github.com/rust-lang/crates.io-index" 205 | checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" 206 | dependencies = [ 207 | "concurrent-queue", 208 | "event-listener-strategy", 209 | "futures-core", 210 | "pin-project-lite", 211 | ] 212 | 213 | [[package]] 214 | name = "async-executor" 215 | version = "1.13.1" 216 | source = "registry+https://github.com/rust-lang/crates.io-index" 217 | checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" 218 | dependencies = [ 219 | "async-task", 220 | "concurrent-queue", 221 | "fastrand", 222 | "futures-lite", 223 | "slab", 224 | ] 225 | 226 | [[package]] 227 | name = "async-fs" 228 | version = "2.1.2" 229 | source = "registry+https://github.com/rust-lang/crates.io-index" 230 | checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" 231 | dependencies = [ 232 | "async-lock", 233 | "blocking", 234 | "futures-lite", 235 | ] 236 | 237 | [[package]] 238 | name = "async-io" 239 | version = "2.4.0" 240 | source = "registry+https://github.com/rust-lang/crates.io-index" 241 | checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" 242 | dependencies = [ 243 | "async-lock", 244 | "cfg-if", 245 | "concurrent-queue", 246 | "futures-io", 247 | "futures-lite", 248 | "parking", 249 | "polling", 250 | "rustix 0.38.44", 251 | "slab", 252 | "tracing", 253 | "windows-sys 0.59.0", 254 | ] 255 | 256 | [[package]] 257 | name = "async-lock" 258 | version = "3.4.0" 259 | source = "registry+https://github.com/rust-lang/crates.io-index" 260 | checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" 261 | dependencies = [ 262 | "event-listener", 263 | "event-listener-strategy", 264 | "pin-project-lite", 265 | ] 266 | 267 | [[package]] 268 | name = "async-process" 269 | version = "2.3.0" 270 | source = "registry+https://github.com/rust-lang/crates.io-index" 271 | checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" 272 | dependencies = [ 273 | "async-channel", 274 | "async-io", 275 | "async-lock", 276 | "async-signal", 277 | "async-task", 278 | "blocking", 279 | "cfg-if", 280 | "event-listener", 281 | "futures-lite", 282 | "rustix 0.38.44", 283 | "tracing", 284 | ] 285 | 286 | [[package]] 287 | name = "async-recursion" 288 | version = "1.1.1" 289 | source = "registry+https://github.com/rust-lang/crates.io-index" 290 | checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" 291 | dependencies = [ 292 | "proc-macro2", 293 | "quote", 294 | "syn 2.0.100", 295 | ] 296 | 297 | [[package]] 298 | name = "async-signal" 299 | version = "0.2.10" 300 | source = "registry+https://github.com/rust-lang/crates.io-index" 301 | checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" 302 | dependencies = [ 303 | "async-io", 304 | "async-lock", 305 | "atomic-waker", 306 | "cfg-if", 307 | "futures-core", 308 | "futures-io", 309 | "rustix 0.38.44", 310 | "signal-hook-registry", 311 | "slab", 312 | "windows-sys 0.59.0", 313 | ] 314 | 315 | [[package]] 316 | name = "async-stream" 317 | version = "0.3.6" 318 | source = "registry+https://github.com/rust-lang/crates.io-index" 319 | checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" 320 | dependencies = [ 321 | "async-stream-impl", 322 | "futures-core", 323 | "pin-project-lite", 324 | ] 325 | 326 | [[package]] 327 | name = "async-stream-impl" 328 | version = "0.3.6" 329 | source = "registry+https://github.com/rust-lang/crates.io-index" 330 | checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" 331 | dependencies = [ 332 | "proc-macro2", 333 | "quote", 334 | "syn 2.0.100", 335 | ] 336 | 337 | [[package]] 338 | name = "async-task" 339 | version = "4.7.1" 340 | source = "registry+https://github.com/rust-lang/crates.io-index" 341 | checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" 342 | 343 | [[package]] 344 | name = "async-trait" 345 | version = "0.1.87" 346 | source = "registry+https://github.com/rust-lang/crates.io-index" 347 | checksum = "d556ec1359574147ec0c4fc5eb525f3f23263a592b1a9c07e0a75b427de55c97" 348 | dependencies = [ 349 | "proc-macro2", 350 | "quote", 351 | "syn 2.0.100", 352 | ] 353 | 354 | [[package]] 355 | name = "atomic-waker" 356 | version = "1.1.2" 357 | source = "registry+https://github.com/rust-lang/crates.io-index" 358 | checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" 359 | 360 | [[package]] 361 | name = "autocfg" 362 | version = "1.4.0" 363 | source = "registry+https://github.com/rust-lang/crates.io-index" 364 | checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" 365 | 366 | [[package]] 367 | name = "av1-grain" 368 | version = "0.2.3" 369 | source = "registry+https://github.com/rust-lang/crates.io-index" 370 | checksum = "6678909d8c5d46a42abcf571271e15fdbc0a225e3646cf23762cd415046c78bf" 371 | dependencies = [ 372 | "anyhow", 373 | "arrayvec", 374 | "log", 375 | "nom", 376 | "num-rational", 377 | "v_frame", 378 | ] 379 | 380 | [[package]] 381 | name = "avif-serialize" 382 | version = "0.8.3" 383 | source = "registry+https://github.com/rust-lang/crates.io-index" 384 | checksum = "98922d6a4cfbcb08820c69d8eeccc05bb1f29bfa06b4f5b1dbfe9a868bd7608e" 385 | dependencies = [ 386 | "arrayvec", 387 | ] 388 | 389 | [[package]] 390 | name = "bindgen" 391 | version = "0.70.1" 392 | source = "registry+https://github.com/rust-lang/crates.io-index" 393 | checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" 394 | dependencies = [ 395 | "bitflags 2.9.0", 396 | "cexpr", 397 | "clang-sys", 398 | "itertools 0.13.0", 399 | "proc-macro2", 400 | "quote", 401 | "regex", 402 | "rustc-hash 1.1.0", 403 | "shlex", 404 | "syn 2.0.100", 405 | ] 406 | 407 | [[package]] 408 | name = "bit-set" 409 | version = "0.5.3" 410 | source = "registry+https://github.com/rust-lang/crates.io-index" 411 | checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" 412 | dependencies = [ 413 | "bit-vec", 414 | ] 415 | 416 | [[package]] 417 | name = "bit-vec" 418 | version = "0.6.3" 419 | source = "registry+https://github.com/rust-lang/crates.io-index" 420 | checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" 421 | 422 | [[package]] 423 | name = "bit_field" 424 | version = "0.10.2" 425 | source = "registry+https://github.com/rust-lang/crates.io-index" 426 | checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" 427 | 428 | [[package]] 429 | name = "bitflags" 430 | version = "1.3.2" 431 | source = "registry+https://github.com/rust-lang/crates.io-index" 432 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 433 | 434 | [[package]] 435 | name = "bitflags" 436 | version = "2.9.0" 437 | source = "registry+https://github.com/rust-lang/crates.io-index" 438 | checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" 439 | 440 | [[package]] 441 | name = "bitstream-io" 442 | version = "2.6.0" 443 | source = "registry+https://github.com/rust-lang/crates.io-index" 444 | checksum = "6099cdc01846bc367c4e7dd630dc5966dccf36b652fae7a74e17b640411a91b2" 445 | 446 | [[package]] 447 | name = "block" 448 | version = "0.1.6" 449 | source = "registry+https://github.com/rust-lang/crates.io-index" 450 | checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 451 | 452 | [[package]] 453 | name = "block-buffer" 454 | version = "0.10.4" 455 | source = "registry+https://github.com/rust-lang/crates.io-index" 456 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 457 | dependencies = [ 458 | "generic-array", 459 | ] 460 | 461 | [[package]] 462 | name = "block2" 463 | version = "0.5.1" 464 | source = "registry+https://github.com/rust-lang/crates.io-index" 465 | checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" 466 | dependencies = [ 467 | "objc2", 468 | ] 469 | 470 | [[package]] 471 | name = "blocking" 472 | version = "1.6.1" 473 | source = "registry+https://github.com/rust-lang/crates.io-index" 474 | checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" 475 | dependencies = [ 476 | "async-channel", 477 | "async-task", 478 | "futures-io", 479 | "futures-lite", 480 | "piper", 481 | ] 482 | 483 | [[package]] 484 | name = "built" 485 | version = "0.7.7" 486 | source = "registry+https://github.com/rust-lang/crates.io-index" 487 | checksum = "56ed6191a7e78c36abdb16ab65341eefd73d64d303fffccdbb00d51e4205967b" 488 | 489 | [[package]] 490 | name = "bumpalo" 491 | version = "3.17.0" 492 | source = "registry+https://github.com/rust-lang/crates.io-index" 493 | checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" 494 | 495 | [[package]] 496 | name = "by_address" 497 | version = "1.2.1" 498 | source = "registry+https://github.com/rust-lang/crates.io-index" 499 | checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" 500 | 501 | [[package]] 502 | name = "bytemuck" 503 | version = "1.22.0" 504 | source = "registry+https://github.com/rust-lang/crates.io-index" 505 | checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540" 506 | dependencies = [ 507 | "bytemuck_derive", 508 | ] 509 | 510 | [[package]] 511 | name = "bytemuck_derive" 512 | version = "1.8.1" 513 | source = "registry+https://github.com/rust-lang/crates.io-index" 514 | checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" 515 | dependencies = [ 516 | "proc-macro2", 517 | "quote", 518 | "syn 2.0.100", 519 | ] 520 | 521 | [[package]] 522 | name = "byteorder" 523 | version = "1.5.0" 524 | source = "registry+https://github.com/rust-lang/crates.io-index" 525 | checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 526 | 527 | [[package]] 528 | name = "byteorder-lite" 529 | version = "0.1.0" 530 | source = "registry+https://github.com/rust-lang/crates.io-index" 531 | checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" 532 | 533 | [[package]] 534 | name = "bytes" 535 | version = "1.10.1" 536 | source = "registry+https://github.com/rust-lang/crates.io-index" 537 | checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" 538 | 539 | [[package]] 540 | name = "calloop" 541 | version = "0.13.0" 542 | source = "registry+https://github.com/rust-lang/crates.io-index" 543 | checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" 544 | dependencies = [ 545 | "bitflags 2.9.0", 546 | "log", 547 | "polling", 548 | "rustix 0.38.44", 549 | "slab", 550 | "thiserror", 551 | ] 552 | 553 | [[package]] 554 | name = "calloop-wayland-source" 555 | version = "0.3.0" 556 | source = "registry+https://github.com/rust-lang/crates.io-index" 557 | checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" 558 | dependencies = [ 559 | "calloop", 560 | "rustix 0.38.44", 561 | "wayland-backend", 562 | "wayland-client", 563 | ] 564 | 565 | [[package]] 566 | name = "cc" 567 | version = "1.2.16" 568 | source = "registry+https://github.com/rust-lang/crates.io-index" 569 | checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" 570 | dependencies = [ 571 | "jobserver", 572 | "libc", 573 | "shlex", 574 | ] 575 | 576 | [[package]] 577 | name = "cesu8" 578 | version = "1.1.0" 579 | source = "registry+https://github.com/rust-lang/crates.io-index" 580 | checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" 581 | 582 | [[package]] 583 | name = "cexpr" 584 | version = "0.6.0" 585 | source = "registry+https://github.com/rust-lang/crates.io-index" 586 | checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" 587 | dependencies = [ 588 | "nom", 589 | ] 590 | 591 | [[package]] 592 | name = "cfg-expr" 593 | version = "0.15.8" 594 | source = "registry+https://github.com/rust-lang/crates.io-index" 595 | checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" 596 | dependencies = [ 597 | "smallvec", 598 | "target-lexicon", 599 | ] 600 | 601 | [[package]] 602 | name = "cfg-if" 603 | version = "1.0.0" 604 | source = "registry+https://github.com/rust-lang/crates.io-index" 605 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 606 | 607 | [[package]] 608 | name = "cfg_aliases" 609 | version = "0.1.1" 610 | source = "registry+https://github.com/rust-lang/crates.io-index" 611 | checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" 612 | 613 | [[package]] 614 | name = "cfg_aliases" 615 | version = "0.2.1" 616 | source = "registry+https://github.com/rust-lang/crates.io-index" 617 | checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" 618 | 619 | [[package]] 620 | name = "chibi" 621 | version = "0.1.0" 622 | dependencies = [ 623 | "alsa", 624 | "async-channel", 625 | "async-stream", 626 | "cpal", 627 | "iced", 628 | "iced_futures", 629 | "image 0.25.5", 630 | "lazy_static", 631 | "rand 0.9.0", 632 | "serde", 633 | "toml", 634 | ] 635 | 636 | [[package]] 637 | name = "clang-sys" 638 | version = "1.8.1" 639 | source = "registry+https://github.com/rust-lang/crates.io-index" 640 | checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" 641 | dependencies = [ 642 | "glob", 643 | "libc", 644 | "libloading 0.8.6", 645 | ] 646 | 647 | [[package]] 648 | name = "clipboard-win" 649 | version = "5.4.0" 650 | source = "registry+https://github.com/rust-lang/crates.io-index" 651 | checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" 652 | dependencies = [ 653 | "error-code", 654 | ] 655 | 656 | [[package]] 657 | name = "clipboard_macos" 658 | version = "0.1.1" 659 | source = "registry+https://github.com/rust-lang/crates.io-index" 660 | checksum = "9b7f4aaa047ba3c3630b080bb9860894732ff23e2aee290a418909aa6d5df38f" 661 | dependencies = [ 662 | "objc2", 663 | "objc2-app-kit", 664 | "objc2-foundation", 665 | ] 666 | 667 | [[package]] 668 | name = "clipboard_wayland" 669 | version = "0.2.2" 670 | source = "registry+https://github.com/rust-lang/crates.io-index" 671 | checksum = "003f886bc4e2987729d10c1db3424e7f80809f3fc22dbc16c685738887cb37b8" 672 | dependencies = [ 673 | "smithay-clipboard", 674 | ] 675 | 676 | [[package]] 677 | name = "clipboard_x11" 678 | version = "0.4.2" 679 | source = "registry+https://github.com/rust-lang/crates.io-index" 680 | checksum = "4274ea815e013e0f9f04a2633423e14194e408a0576c943ce3d14ca56c50031c" 681 | dependencies = [ 682 | "thiserror", 683 | "x11rb", 684 | ] 685 | 686 | [[package]] 687 | name = "codespan-reporting" 688 | version = "0.11.1" 689 | source = "registry+https://github.com/rust-lang/crates.io-index" 690 | checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" 691 | dependencies = [ 692 | "termcolor", 693 | "unicode-width", 694 | ] 695 | 696 | [[package]] 697 | name = "color_quant" 698 | version = "1.1.0" 699 | source = "registry+https://github.com/rust-lang/crates.io-index" 700 | checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" 701 | 702 | [[package]] 703 | name = "com" 704 | version = "0.6.0" 705 | source = "registry+https://github.com/rust-lang/crates.io-index" 706 | checksum = "7e17887fd17353b65b1b2ef1c526c83e26cd72e74f598a8dc1bee13a48f3d9f6" 707 | dependencies = [ 708 | "com_macros", 709 | ] 710 | 711 | [[package]] 712 | name = "com_macros" 713 | version = "0.6.0" 714 | source = "registry+https://github.com/rust-lang/crates.io-index" 715 | checksum = "d375883580a668c7481ea6631fc1a8863e33cc335bf56bfad8d7e6d4b04b13a5" 716 | dependencies = [ 717 | "com_macros_support", 718 | "proc-macro2", 719 | "syn 1.0.109", 720 | ] 721 | 722 | [[package]] 723 | name = "com_macros_support" 724 | version = "0.6.0" 725 | source = "registry+https://github.com/rust-lang/crates.io-index" 726 | checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c" 727 | dependencies = [ 728 | "proc-macro2", 729 | "quote", 730 | "syn 1.0.109", 731 | ] 732 | 733 | [[package]] 734 | name = "combine" 735 | version = "4.6.7" 736 | source = "registry+https://github.com/rust-lang/crates.io-index" 737 | checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" 738 | dependencies = [ 739 | "bytes", 740 | "memchr", 741 | ] 742 | 743 | [[package]] 744 | name = "concurrent-queue" 745 | version = "2.5.0" 746 | source = "registry+https://github.com/rust-lang/crates.io-index" 747 | checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" 748 | dependencies = [ 749 | "crossbeam-utils", 750 | ] 751 | 752 | [[package]] 753 | name = "core-foundation" 754 | version = "0.9.4" 755 | source = "registry+https://github.com/rust-lang/crates.io-index" 756 | checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 757 | dependencies = [ 758 | "core-foundation-sys", 759 | "libc", 760 | ] 761 | 762 | [[package]] 763 | name = "core-foundation" 764 | version = "0.10.0" 765 | source = "registry+https://github.com/rust-lang/crates.io-index" 766 | checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" 767 | dependencies = [ 768 | "core-foundation-sys", 769 | "libc", 770 | ] 771 | 772 | [[package]] 773 | name = "core-foundation-sys" 774 | version = "0.8.7" 775 | source = "registry+https://github.com/rust-lang/crates.io-index" 776 | checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 777 | 778 | [[package]] 779 | name = "core-graphics" 780 | version = "0.23.2" 781 | source = "registry+https://github.com/rust-lang/crates.io-index" 782 | checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" 783 | dependencies = [ 784 | "bitflags 1.3.2", 785 | "core-foundation 0.9.4", 786 | "core-graphics-types 0.1.3", 787 | "foreign-types", 788 | "libc", 789 | ] 790 | 791 | [[package]] 792 | name = "core-graphics" 793 | version = "0.24.0" 794 | source = "registry+https://github.com/rust-lang/crates.io-index" 795 | checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" 796 | dependencies = [ 797 | "bitflags 2.9.0", 798 | "core-foundation 0.10.0", 799 | "core-graphics-types 0.2.0", 800 | "foreign-types", 801 | "libc", 802 | ] 803 | 804 | [[package]] 805 | name = "core-graphics-types" 806 | version = "0.1.3" 807 | source = "registry+https://github.com/rust-lang/crates.io-index" 808 | checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" 809 | dependencies = [ 810 | "bitflags 1.3.2", 811 | "core-foundation 0.9.4", 812 | "libc", 813 | ] 814 | 815 | [[package]] 816 | name = "core-graphics-types" 817 | version = "0.2.0" 818 | source = "registry+https://github.com/rust-lang/crates.io-index" 819 | checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" 820 | dependencies = [ 821 | "bitflags 2.9.0", 822 | "core-foundation 0.10.0", 823 | "libc", 824 | ] 825 | 826 | [[package]] 827 | name = "coreaudio-rs" 828 | version = "0.11.3" 829 | source = "registry+https://github.com/rust-lang/crates.io-index" 830 | checksum = "321077172d79c662f64f5071a03120748d5bb652f5231570141be24cfcd2bace" 831 | dependencies = [ 832 | "bitflags 1.3.2", 833 | "core-foundation-sys", 834 | "coreaudio-sys", 835 | ] 836 | 837 | [[package]] 838 | name = "coreaudio-sys" 839 | version = "0.2.16" 840 | source = "registry+https://github.com/rust-lang/crates.io-index" 841 | checksum = "2ce857aa0b77d77287acc1ac3e37a05a8c95a2af3647d23b15f263bdaeb7562b" 842 | dependencies = [ 843 | "bindgen", 844 | ] 845 | 846 | [[package]] 847 | name = "cosmic-text" 848 | version = "0.12.1" 849 | source = "registry+https://github.com/rust-lang/crates.io-index" 850 | checksum = "59fd57d82eb4bfe7ffa9b1cec0c05e2fd378155b47f255a67983cb4afe0e80c2" 851 | dependencies = [ 852 | "bitflags 2.9.0", 853 | "fontdb", 854 | "log", 855 | "rangemap", 856 | "rayon", 857 | "rustc-hash 1.1.0", 858 | "rustybuzz", 859 | "self_cell", 860 | "swash", 861 | "sys-locale", 862 | "ttf-parser 0.21.1", 863 | "unicode-bidi", 864 | "unicode-linebreak", 865 | "unicode-script", 866 | "unicode-segmentation", 867 | ] 868 | 869 | [[package]] 870 | name = "cpal" 871 | version = "0.15.3" 872 | source = "registry+https://github.com/rust-lang/crates.io-index" 873 | checksum = "873dab07c8f743075e57f524c583985fbaf745602acbe916a01539364369a779" 874 | dependencies = [ 875 | "alsa", 876 | "core-foundation-sys", 877 | "coreaudio-rs", 878 | "dasp_sample", 879 | "jni", 880 | "js-sys", 881 | "libc", 882 | "mach2", 883 | "ndk 0.8.0", 884 | "ndk-context", 885 | "oboe", 886 | "wasm-bindgen", 887 | "wasm-bindgen-futures", 888 | "web-sys", 889 | "windows 0.54.0", 890 | ] 891 | 892 | [[package]] 893 | name = "cpufeatures" 894 | version = "0.2.17" 895 | source = "registry+https://github.com/rust-lang/crates.io-index" 896 | checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" 897 | dependencies = [ 898 | "libc", 899 | ] 900 | 901 | [[package]] 902 | name = "crc32fast" 903 | version = "1.4.2" 904 | source = "registry+https://github.com/rust-lang/crates.io-index" 905 | checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" 906 | dependencies = [ 907 | "cfg-if", 908 | ] 909 | 910 | [[package]] 911 | name = "crossbeam-deque" 912 | version = "0.8.6" 913 | source = "registry+https://github.com/rust-lang/crates.io-index" 914 | checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" 915 | dependencies = [ 916 | "crossbeam-epoch", 917 | "crossbeam-utils", 918 | ] 919 | 920 | [[package]] 921 | name = "crossbeam-epoch" 922 | version = "0.9.18" 923 | source = "registry+https://github.com/rust-lang/crates.io-index" 924 | checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" 925 | dependencies = [ 926 | "crossbeam-utils", 927 | ] 928 | 929 | [[package]] 930 | name = "crossbeam-utils" 931 | version = "0.8.21" 932 | source = "registry+https://github.com/rust-lang/crates.io-index" 933 | checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" 934 | 935 | [[package]] 936 | name = "crunchy" 937 | version = "0.2.3" 938 | source = "registry+https://github.com/rust-lang/crates.io-index" 939 | checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" 940 | 941 | [[package]] 942 | name = "crypto-common" 943 | version = "0.1.6" 944 | source = "registry+https://github.com/rust-lang/crates.io-index" 945 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 946 | dependencies = [ 947 | "generic-array", 948 | "typenum", 949 | ] 950 | 951 | [[package]] 952 | name = "ctor-lite" 953 | version = "0.1.0" 954 | source = "registry+https://github.com/rust-lang/crates.io-index" 955 | checksum = "1f791803201ab277ace03903de1594460708d2d54df6053f2d9e82f592b19e3b" 956 | 957 | [[package]] 958 | name = "cursor-icon" 959 | version = "1.1.0" 960 | source = "registry+https://github.com/rust-lang/crates.io-index" 961 | checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" 962 | 963 | [[package]] 964 | name = "d3d12" 965 | version = "0.19.0" 966 | source = "registry+https://github.com/rust-lang/crates.io-index" 967 | checksum = "3e3d747f100290a1ca24b752186f61f6637e1deffe3bf6320de6fcb29510a307" 968 | dependencies = [ 969 | "bitflags 2.9.0", 970 | "libloading 0.8.6", 971 | "winapi", 972 | ] 973 | 974 | [[package]] 975 | name = "dark-light" 976 | version = "1.1.1" 977 | source = "registry+https://github.com/rust-lang/crates.io-index" 978 | checksum = "2a76fa97167fa740dcdbfe18e8895601e1bc36525f09b044e00916e717c03a3c" 979 | dependencies = [ 980 | "dconf_rs", 981 | "detect-desktop-environment", 982 | "dirs", 983 | "objc", 984 | "rust-ini", 985 | "web-sys", 986 | "winreg", 987 | "zbus", 988 | ] 989 | 990 | [[package]] 991 | name = "dasp_sample" 992 | version = "0.11.0" 993 | source = "registry+https://github.com/rust-lang/crates.io-index" 994 | checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" 995 | 996 | [[package]] 997 | name = "dconf_rs" 998 | version = "0.3.0" 999 | source = "registry+https://github.com/rust-lang/crates.io-index" 1000 | checksum = "7046468a81e6a002061c01e6a7c83139daf91b11c30e66795b13217c2d885c8b" 1001 | 1002 | [[package]] 1003 | name = "detect-desktop-environment" 1004 | version = "0.2.0" 1005 | source = "registry+https://github.com/rust-lang/crates.io-index" 1006 | checksum = "21d8ad60dd5b13a4ee6bd8fa2d5d88965c597c67bce32b5fc49c94f55cb50810" 1007 | 1008 | [[package]] 1009 | name = "digest" 1010 | version = "0.10.7" 1011 | source = "registry+https://github.com/rust-lang/crates.io-index" 1012 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 1013 | dependencies = [ 1014 | "block-buffer", 1015 | "crypto-common", 1016 | ] 1017 | 1018 | [[package]] 1019 | name = "dirs" 1020 | version = "4.0.0" 1021 | source = "registry+https://github.com/rust-lang/crates.io-index" 1022 | checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" 1023 | dependencies = [ 1024 | "dirs-sys", 1025 | ] 1026 | 1027 | [[package]] 1028 | name = "dirs-sys" 1029 | version = "0.3.7" 1030 | source = "registry+https://github.com/rust-lang/crates.io-index" 1031 | checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" 1032 | dependencies = [ 1033 | "libc", 1034 | "redox_users", 1035 | "winapi", 1036 | ] 1037 | 1038 | [[package]] 1039 | name = "dispatch" 1040 | version = "0.2.0" 1041 | source = "registry+https://github.com/rust-lang/crates.io-index" 1042 | checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" 1043 | 1044 | [[package]] 1045 | name = "dlib" 1046 | version = "0.5.2" 1047 | source = "registry+https://github.com/rust-lang/crates.io-index" 1048 | checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" 1049 | dependencies = [ 1050 | "libloading 0.8.6", 1051 | ] 1052 | 1053 | [[package]] 1054 | name = "dlv-list" 1055 | version = "0.3.0" 1056 | source = "registry+https://github.com/rust-lang/crates.io-index" 1057 | checksum = "0688c2a7f92e427f44895cd63841bff7b29f8d7a1648b9e7e07a4a365b2e1257" 1058 | 1059 | [[package]] 1060 | name = "downcast-rs" 1061 | version = "1.2.1" 1062 | source = "registry+https://github.com/rust-lang/crates.io-index" 1063 | checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" 1064 | 1065 | [[package]] 1066 | name = "dpi" 1067 | version = "0.1.1" 1068 | source = "registry+https://github.com/rust-lang/crates.io-index" 1069 | checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" 1070 | 1071 | [[package]] 1072 | name = "drm" 1073 | version = "0.12.0" 1074 | source = "registry+https://github.com/rust-lang/crates.io-index" 1075 | checksum = "98888c4bbd601524c11a7ed63f814b8825f420514f78e96f752c437ae9cbb5d1" 1076 | dependencies = [ 1077 | "bitflags 2.9.0", 1078 | "bytemuck", 1079 | "drm-ffi", 1080 | "drm-fourcc", 1081 | "rustix 0.38.44", 1082 | ] 1083 | 1084 | [[package]] 1085 | name = "drm-ffi" 1086 | version = "0.8.0" 1087 | source = "registry+https://github.com/rust-lang/crates.io-index" 1088 | checksum = "97c98727e48b7ccb4f4aea8cfe881e5b07f702d17b7875991881b41af7278d53" 1089 | dependencies = [ 1090 | "drm-sys", 1091 | "rustix 0.38.44", 1092 | ] 1093 | 1094 | [[package]] 1095 | name = "drm-fourcc" 1096 | version = "2.2.0" 1097 | source = "registry+https://github.com/rust-lang/crates.io-index" 1098 | checksum = "0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4" 1099 | 1100 | [[package]] 1101 | name = "drm-sys" 1102 | version = "0.7.0" 1103 | source = "registry+https://github.com/rust-lang/crates.io-index" 1104 | checksum = "fd39dde40b6e196c2e8763f23d119ddb1a8714534bf7d77fa97a65b0feda3986" 1105 | dependencies = [ 1106 | "libc", 1107 | "linux-raw-sys 0.6.5", 1108 | ] 1109 | 1110 | [[package]] 1111 | name = "either" 1112 | version = "1.15.0" 1113 | source = "registry+https://github.com/rust-lang/crates.io-index" 1114 | checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" 1115 | 1116 | [[package]] 1117 | name = "endi" 1118 | version = "1.1.0" 1119 | source = "registry+https://github.com/rust-lang/crates.io-index" 1120 | checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" 1121 | 1122 | [[package]] 1123 | name = "enumflags2" 1124 | version = "0.7.11" 1125 | source = "registry+https://github.com/rust-lang/crates.io-index" 1126 | checksum = "ba2f4b465f5318854c6f8dd686ede6c0a9dc67d4b1ac241cf0eb51521a309147" 1127 | dependencies = [ 1128 | "enumflags2_derive", 1129 | "serde", 1130 | ] 1131 | 1132 | [[package]] 1133 | name = "enumflags2_derive" 1134 | version = "0.7.11" 1135 | source = "registry+https://github.com/rust-lang/crates.io-index" 1136 | checksum = "fc4caf64a58d7a6d65ab00639b046ff54399a39f5f2554728895ace4b297cd79" 1137 | dependencies = [ 1138 | "proc-macro2", 1139 | "quote", 1140 | "syn 2.0.100", 1141 | ] 1142 | 1143 | [[package]] 1144 | name = "equivalent" 1145 | version = "1.0.2" 1146 | source = "registry+https://github.com/rust-lang/crates.io-index" 1147 | checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" 1148 | 1149 | [[package]] 1150 | name = "errno" 1151 | version = "0.3.10" 1152 | source = "registry+https://github.com/rust-lang/crates.io-index" 1153 | checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" 1154 | dependencies = [ 1155 | "libc", 1156 | "windows-sys 0.59.0", 1157 | ] 1158 | 1159 | [[package]] 1160 | name = "error-code" 1161 | version = "3.3.1" 1162 | source = "registry+https://github.com/rust-lang/crates.io-index" 1163 | checksum = "a5d9305ccc6942a704f4335694ecd3de2ea531b114ac2d51f5f843750787a92f" 1164 | 1165 | [[package]] 1166 | name = "etagere" 1167 | version = "0.2.15" 1168 | source = "registry+https://github.com/rust-lang/crates.io-index" 1169 | checksum = "fc89bf99e5dc15954a60f707c1e09d7540e5cd9af85fa75caa0b510bc08c5342" 1170 | dependencies = [ 1171 | "euclid", 1172 | "svg_fmt", 1173 | ] 1174 | 1175 | [[package]] 1176 | name = "euclid" 1177 | version = "0.22.11" 1178 | source = "registry+https://github.com/rust-lang/crates.io-index" 1179 | checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48" 1180 | dependencies = [ 1181 | "num-traits", 1182 | ] 1183 | 1184 | [[package]] 1185 | name = "event-listener" 1186 | version = "5.4.0" 1187 | source = "registry+https://github.com/rust-lang/crates.io-index" 1188 | checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" 1189 | dependencies = [ 1190 | "concurrent-queue", 1191 | "parking", 1192 | "pin-project-lite", 1193 | ] 1194 | 1195 | [[package]] 1196 | name = "event-listener-strategy" 1197 | version = "0.5.3" 1198 | source = "registry+https://github.com/rust-lang/crates.io-index" 1199 | checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" 1200 | dependencies = [ 1201 | "event-listener", 1202 | "pin-project-lite", 1203 | ] 1204 | 1205 | [[package]] 1206 | name = "exr" 1207 | version = "1.73.0" 1208 | source = "registry+https://github.com/rust-lang/crates.io-index" 1209 | checksum = "f83197f59927b46c04a183a619b7c29df34e63e63c7869320862268c0ef687e0" 1210 | dependencies = [ 1211 | "bit_field", 1212 | "half", 1213 | "lebe", 1214 | "miniz_oxide", 1215 | "rayon-core", 1216 | "smallvec", 1217 | "zune-inflate", 1218 | ] 1219 | 1220 | [[package]] 1221 | name = "fast-srgb8" 1222 | version = "1.0.0" 1223 | source = "registry+https://github.com/rust-lang/crates.io-index" 1224 | checksum = "dd2e7510819d6fbf51a5545c8f922716ecfb14df168a3242f7d33e0239efe6a1" 1225 | 1226 | [[package]] 1227 | name = "fastrand" 1228 | version = "2.3.0" 1229 | source = "registry+https://github.com/rust-lang/crates.io-index" 1230 | checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 1231 | 1232 | [[package]] 1233 | name = "fdeflate" 1234 | version = "0.3.7" 1235 | source = "registry+https://github.com/rust-lang/crates.io-index" 1236 | checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" 1237 | dependencies = [ 1238 | "simd-adler32", 1239 | ] 1240 | 1241 | [[package]] 1242 | name = "flate2" 1243 | version = "1.1.0" 1244 | source = "registry+https://github.com/rust-lang/crates.io-index" 1245 | checksum = "11faaf5a5236997af9848be0bef4db95824b1d534ebc64d0f0c6cf3e67bd38dc" 1246 | dependencies = [ 1247 | "crc32fast", 1248 | "miniz_oxide", 1249 | ] 1250 | 1251 | [[package]] 1252 | name = "font-types" 1253 | version = "0.7.3" 1254 | source = "registry+https://github.com/rust-lang/crates.io-index" 1255 | checksum = "b3971f9a5ca983419cdc386941ba3b9e1feba01a0ab888adf78739feb2798492" 1256 | dependencies = [ 1257 | "bytemuck", 1258 | ] 1259 | 1260 | [[package]] 1261 | name = "fontconfig-parser" 1262 | version = "0.5.7" 1263 | source = "registry+https://github.com/rust-lang/crates.io-index" 1264 | checksum = "c1fcfcd44ca6e90c921fee9fa665d530b21ef1327a4c1a6c5250ea44b776ada7" 1265 | dependencies = [ 1266 | "roxmltree", 1267 | ] 1268 | 1269 | [[package]] 1270 | name = "fontdb" 1271 | version = "0.16.2" 1272 | source = "registry+https://github.com/rust-lang/crates.io-index" 1273 | checksum = "b0299020c3ef3f60f526a4f64ab4a3d4ce116b1acbf24cdd22da0068e5d81dc3" 1274 | dependencies = [ 1275 | "fontconfig-parser", 1276 | "log", 1277 | "memmap2", 1278 | "slotmap", 1279 | "tinyvec", 1280 | "ttf-parser 0.20.0", 1281 | ] 1282 | 1283 | [[package]] 1284 | name = "foreign-types" 1285 | version = "0.5.0" 1286 | source = "registry+https://github.com/rust-lang/crates.io-index" 1287 | checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" 1288 | dependencies = [ 1289 | "foreign-types-macros", 1290 | "foreign-types-shared", 1291 | ] 1292 | 1293 | [[package]] 1294 | name = "foreign-types-macros" 1295 | version = "0.2.3" 1296 | source = "registry+https://github.com/rust-lang/crates.io-index" 1297 | checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" 1298 | dependencies = [ 1299 | "proc-macro2", 1300 | "quote", 1301 | "syn 2.0.100", 1302 | ] 1303 | 1304 | [[package]] 1305 | name = "foreign-types-shared" 1306 | version = "0.3.1" 1307 | source = "registry+https://github.com/rust-lang/crates.io-index" 1308 | checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" 1309 | 1310 | [[package]] 1311 | name = "futures" 1312 | version = "0.3.31" 1313 | source = "registry+https://github.com/rust-lang/crates.io-index" 1314 | checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" 1315 | dependencies = [ 1316 | "futures-channel", 1317 | "futures-core", 1318 | "futures-executor", 1319 | "futures-io", 1320 | "futures-sink", 1321 | "futures-task", 1322 | "futures-util", 1323 | ] 1324 | 1325 | [[package]] 1326 | name = "futures-channel" 1327 | version = "0.3.31" 1328 | source = "registry+https://github.com/rust-lang/crates.io-index" 1329 | checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" 1330 | dependencies = [ 1331 | "futures-core", 1332 | "futures-sink", 1333 | ] 1334 | 1335 | [[package]] 1336 | name = "futures-core" 1337 | version = "0.3.31" 1338 | source = "registry+https://github.com/rust-lang/crates.io-index" 1339 | checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" 1340 | 1341 | [[package]] 1342 | name = "futures-executor" 1343 | version = "0.3.31" 1344 | source = "registry+https://github.com/rust-lang/crates.io-index" 1345 | checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" 1346 | dependencies = [ 1347 | "futures-core", 1348 | "futures-task", 1349 | "futures-util", 1350 | "num_cpus", 1351 | ] 1352 | 1353 | [[package]] 1354 | name = "futures-io" 1355 | version = "0.3.31" 1356 | source = "registry+https://github.com/rust-lang/crates.io-index" 1357 | checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" 1358 | 1359 | [[package]] 1360 | name = "futures-lite" 1361 | version = "2.6.0" 1362 | source = "registry+https://github.com/rust-lang/crates.io-index" 1363 | checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" 1364 | dependencies = [ 1365 | "fastrand", 1366 | "futures-core", 1367 | "futures-io", 1368 | "parking", 1369 | "pin-project-lite", 1370 | ] 1371 | 1372 | [[package]] 1373 | name = "futures-macro" 1374 | version = "0.3.31" 1375 | source = "registry+https://github.com/rust-lang/crates.io-index" 1376 | checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" 1377 | dependencies = [ 1378 | "proc-macro2", 1379 | "quote", 1380 | "syn 2.0.100", 1381 | ] 1382 | 1383 | [[package]] 1384 | name = "futures-sink" 1385 | version = "0.3.31" 1386 | source = "registry+https://github.com/rust-lang/crates.io-index" 1387 | checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" 1388 | 1389 | [[package]] 1390 | name = "futures-task" 1391 | version = "0.3.31" 1392 | source = "registry+https://github.com/rust-lang/crates.io-index" 1393 | checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" 1394 | 1395 | [[package]] 1396 | name = "futures-util" 1397 | version = "0.3.31" 1398 | source = "registry+https://github.com/rust-lang/crates.io-index" 1399 | checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" 1400 | dependencies = [ 1401 | "futures-channel", 1402 | "futures-core", 1403 | "futures-io", 1404 | "futures-macro", 1405 | "futures-sink", 1406 | "futures-task", 1407 | "memchr", 1408 | "pin-project-lite", 1409 | "pin-utils", 1410 | "slab", 1411 | ] 1412 | 1413 | [[package]] 1414 | name = "generic-array" 1415 | version = "0.14.7" 1416 | source = "registry+https://github.com/rust-lang/crates.io-index" 1417 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 1418 | dependencies = [ 1419 | "typenum", 1420 | "version_check", 1421 | ] 1422 | 1423 | [[package]] 1424 | name = "gethostname" 1425 | version = "0.4.3" 1426 | source = "registry+https://github.com/rust-lang/crates.io-index" 1427 | checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" 1428 | dependencies = [ 1429 | "libc", 1430 | "windows-targets 0.48.5", 1431 | ] 1432 | 1433 | [[package]] 1434 | name = "getrandom" 1435 | version = "0.2.15" 1436 | source = "registry+https://github.com/rust-lang/crates.io-index" 1437 | checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" 1438 | dependencies = [ 1439 | "cfg-if", 1440 | "libc", 1441 | "wasi 0.11.0+wasi-snapshot-preview1", 1442 | ] 1443 | 1444 | [[package]] 1445 | name = "getrandom" 1446 | version = "0.3.1" 1447 | source = "registry+https://github.com/rust-lang/crates.io-index" 1448 | checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" 1449 | dependencies = [ 1450 | "cfg-if", 1451 | "libc", 1452 | "wasi 0.13.3+wasi-0.2.2", 1453 | "windows-targets 0.52.6", 1454 | ] 1455 | 1456 | [[package]] 1457 | name = "gif" 1458 | version = "0.13.1" 1459 | source = "registry+https://github.com/rust-lang/crates.io-index" 1460 | checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" 1461 | dependencies = [ 1462 | "color_quant", 1463 | "weezl", 1464 | ] 1465 | 1466 | [[package]] 1467 | name = "gl_generator" 1468 | version = "0.14.0" 1469 | source = "registry+https://github.com/rust-lang/crates.io-index" 1470 | checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" 1471 | dependencies = [ 1472 | "khronos_api", 1473 | "log", 1474 | "xml-rs", 1475 | ] 1476 | 1477 | [[package]] 1478 | name = "glam" 1479 | version = "0.25.0" 1480 | source = "registry+https://github.com/rust-lang/crates.io-index" 1481 | checksum = "151665d9be52f9bb40fc7966565d39666f2d1e69233571b71b87791c7e0528b3" 1482 | 1483 | [[package]] 1484 | name = "glob" 1485 | version = "0.3.2" 1486 | source = "registry+https://github.com/rust-lang/crates.io-index" 1487 | checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" 1488 | 1489 | [[package]] 1490 | name = "glow" 1491 | version = "0.13.1" 1492 | source = "registry+https://github.com/rust-lang/crates.io-index" 1493 | checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1" 1494 | dependencies = [ 1495 | "js-sys", 1496 | "slotmap", 1497 | "wasm-bindgen", 1498 | "web-sys", 1499 | ] 1500 | 1501 | [[package]] 1502 | name = "glutin_wgl_sys" 1503 | version = "0.5.0" 1504 | source = "registry+https://github.com/rust-lang/crates.io-index" 1505 | checksum = "6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead" 1506 | dependencies = [ 1507 | "gl_generator", 1508 | ] 1509 | 1510 | [[package]] 1511 | name = "gpu-alloc" 1512 | version = "0.6.0" 1513 | source = "registry+https://github.com/rust-lang/crates.io-index" 1514 | checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" 1515 | dependencies = [ 1516 | "bitflags 2.9.0", 1517 | "gpu-alloc-types", 1518 | ] 1519 | 1520 | [[package]] 1521 | name = "gpu-alloc-types" 1522 | version = "0.3.0" 1523 | source = "registry+https://github.com/rust-lang/crates.io-index" 1524 | checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" 1525 | dependencies = [ 1526 | "bitflags 2.9.0", 1527 | ] 1528 | 1529 | [[package]] 1530 | name = "gpu-allocator" 1531 | version = "0.25.0" 1532 | source = "registry+https://github.com/rust-lang/crates.io-index" 1533 | checksum = "6f56f6318968d03c18e1bcf4857ff88c61157e9da8e47c5f29055d60e1228884" 1534 | dependencies = [ 1535 | "log", 1536 | "presser", 1537 | "thiserror", 1538 | "winapi", 1539 | "windows 0.52.0", 1540 | ] 1541 | 1542 | [[package]] 1543 | name = "gpu-descriptor" 1544 | version = "0.2.4" 1545 | source = "registry+https://github.com/rust-lang/crates.io-index" 1546 | checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" 1547 | dependencies = [ 1548 | "bitflags 2.9.0", 1549 | "gpu-descriptor-types", 1550 | "hashbrown 0.14.5", 1551 | ] 1552 | 1553 | [[package]] 1554 | name = "gpu-descriptor-types" 1555 | version = "0.1.2" 1556 | source = "registry+https://github.com/rust-lang/crates.io-index" 1557 | checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" 1558 | dependencies = [ 1559 | "bitflags 2.9.0", 1560 | ] 1561 | 1562 | [[package]] 1563 | name = "guillotiere" 1564 | version = "0.6.2" 1565 | source = "registry+https://github.com/rust-lang/crates.io-index" 1566 | checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782" 1567 | dependencies = [ 1568 | "euclid", 1569 | "svg_fmt", 1570 | ] 1571 | 1572 | [[package]] 1573 | name = "half" 1574 | version = "2.4.1" 1575 | source = "registry+https://github.com/rust-lang/crates.io-index" 1576 | checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" 1577 | dependencies = [ 1578 | "cfg-if", 1579 | "crunchy", 1580 | ] 1581 | 1582 | [[package]] 1583 | name = "hashbrown" 1584 | version = "0.12.3" 1585 | source = "registry+https://github.com/rust-lang/crates.io-index" 1586 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 1587 | dependencies = [ 1588 | "ahash 0.7.8", 1589 | ] 1590 | 1591 | [[package]] 1592 | name = "hashbrown" 1593 | version = "0.14.5" 1594 | source = "registry+https://github.com/rust-lang/crates.io-index" 1595 | checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" 1596 | dependencies = [ 1597 | "ahash 0.8.11", 1598 | "allocator-api2", 1599 | ] 1600 | 1601 | [[package]] 1602 | name = "hashbrown" 1603 | version = "0.15.2" 1604 | source = "registry+https://github.com/rust-lang/crates.io-index" 1605 | checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" 1606 | 1607 | [[package]] 1608 | name = "hassle-rs" 1609 | version = "0.11.0" 1610 | source = "registry+https://github.com/rust-lang/crates.io-index" 1611 | checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" 1612 | dependencies = [ 1613 | "bitflags 2.9.0", 1614 | "com", 1615 | "libc", 1616 | "libloading 0.8.6", 1617 | "thiserror", 1618 | "widestring", 1619 | "winapi", 1620 | ] 1621 | 1622 | [[package]] 1623 | name = "heck" 1624 | version = "0.5.0" 1625 | source = "registry+https://github.com/rust-lang/crates.io-index" 1626 | checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" 1627 | 1628 | [[package]] 1629 | name = "hermit-abi" 1630 | version = "0.3.9" 1631 | source = "registry+https://github.com/rust-lang/crates.io-index" 1632 | checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" 1633 | 1634 | [[package]] 1635 | name = "hermit-abi" 1636 | version = "0.4.0" 1637 | source = "registry+https://github.com/rust-lang/crates.io-index" 1638 | checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" 1639 | 1640 | [[package]] 1641 | name = "hex" 1642 | version = "0.4.3" 1643 | source = "registry+https://github.com/rust-lang/crates.io-index" 1644 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1645 | 1646 | [[package]] 1647 | name = "hexf-parse" 1648 | version = "0.2.1" 1649 | source = "registry+https://github.com/rust-lang/crates.io-index" 1650 | checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" 1651 | 1652 | [[package]] 1653 | name = "iced" 1654 | version = "0.13.1" 1655 | source = "registry+https://github.com/rust-lang/crates.io-index" 1656 | checksum = "88acfabc84ec077eaf9ede3457ffa3a104626d79022a9bf7f296093b1d60c73f" 1657 | dependencies = [ 1658 | "iced_core", 1659 | "iced_futures", 1660 | "iced_renderer", 1661 | "iced_widget", 1662 | "iced_winit", 1663 | "image 0.24.9", 1664 | "thiserror", 1665 | ] 1666 | 1667 | [[package]] 1668 | name = "iced_core" 1669 | version = "0.13.2" 1670 | source = "registry+https://github.com/rust-lang/crates.io-index" 1671 | checksum = "0013a238275494641bf8f1732a23a808196540dc67b22ff97099c044ae4c8a1c" 1672 | dependencies = [ 1673 | "bitflags 2.9.0", 1674 | "bytes", 1675 | "dark-light", 1676 | "glam", 1677 | "log", 1678 | "num-traits", 1679 | "once_cell", 1680 | "palette", 1681 | "rustc-hash 2.1.1", 1682 | "smol_str", 1683 | "thiserror", 1684 | "web-time", 1685 | ] 1686 | 1687 | [[package]] 1688 | name = "iced_futures" 1689 | version = "0.13.2" 1690 | source = "registry+https://github.com/rust-lang/crates.io-index" 1691 | checksum = "0c04a6745ba2e80f32cf01e034fd00d853aa4f4cd8b91888099cb7aaee0d5d7c" 1692 | dependencies = [ 1693 | "futures", 1694 | "iced_core", 1695 | "log", 1696 | "rustc-hash 2.1.1", 1697 | "wasm-bindgen-futures", 1698 | "wasm-timer", 1699 | ] 1700 | 1701 | [[package]] 1702 | name = "iced_glyphon" 1703 | version = "0.6.0" 1704 | source = "registry+https://github.com/rust-lang/crates.io-index" 1705 | checksum = "41c3bb56f1820ca252bc1d0994ece33d233a55657c0c263ea7cb16895adbde82" 1706 | dependencies = [ 1707 | "cosmic-text", 1708 | "etagere", 1709 | "lru", 1710 | "rustc-hash 2.1.1", 1711 | "wgpu", 1712 | ] 1713 | 1714 | [[package]] 1715 | name = "iced_graphics" 1716 | version = "0.13.0" 1717 | source = "registry+https://github.com/rust-lang/crates.io-index" 1718 | checksum = "ba25a18cfa6d5cc160aca7e1b34f73ccdff21680fa8702168c09739767b6c66f" 1719 | dependencies = [ 1720 | "bitflags 2.9.0", 1721 | "bytemuck", 1722 | "cosmic-text", 1723 | "half", 1724 | "iced_core", 1725 | "iced_futures", 1726 | "image 0.24.9", 1727 | "kamadak-exif", 1728 | "log", 1729 | "once_cell", 1730 | "raw-window-handle", 1731 | "rustc-hash 2.1.1", 1732 | "thiserror", 1733 | "unicode-segmentation", 1734 | ] 1735 | 1736 | [[package]] 1737 | name = "iced_renderer" 1738 | version = "0.13.0" 1739 | source = "registry+https://github.com/rust-lang/crates.io-index" 1740 | checksum = "73558208059f9e622df2bf434e044ee2f838ce75201a023cf0ca3e1244f46c2a" 1741 | dependencies = [ 1742 | "iced_graphics", 1743 | "iced_tiny_skia", 1744 | "iced_wgpu", 1745 | "log", 1746 | "thiserror", 1747 | ] 1748 | 1749 | [[package]] 1750 | name = "iced_runtime" 1751 | version = "0.13.2" 1752 | source = "registry+https://github.com/rust-lang/crates.io-index" 1753 | checksum = "348b5b2c61c934d88ca3b0ed1ed913291e923d086a66fa288ce9669da9ef62b5" 1754 | dependencies = [ 1755 | "bytes", 1756 | "iced_core", 1757 | "iced_futures", 1758 | "raw-window-handle", 1759 | "thiserror", 1760 | ] 1761 | 1762 | [[package]] 1763 | name = "iced_tiny_skia" 1764 | version = "0.13.0" 1765 | source = "registry+https://github.com/rust-lang/crates.io-index" 1766 | checksum = "c625d368284fcc43b0b36b176f76eff1abebe7959dd58bd8ce6897d641962a50" 1767 | dependencies = [ 1768 | "bytemuck", 1769 | "cosmic-text", 1770 | "iced_graphics", 1771 | "kurbo", 1772 | "log", 1773 | "rustc-hash 2.1.1", 1774 | "softbuffer", 1775 | "tiny-skia", 1776 | ] 1777 | 1778 | [[package]] 1779 | name = "iced_wgpu" 1780 | version = "0.13.5" 1781 | source = "registry+https://github.com/rust-lang/crates.io-index" 1782 | checksum = "15708887133671d2bcc6c1d01d1f176f43a64d6cdc3b2bf893396c3ee498295f" 1783 | dependencies = [ 1784 | "bitflags 2.9.0", 1785 | "bytemuck", 1786 | "futures", 1787 | "glam", 1788 | "guillotiere", 1789 | "iced_glyphon", 1790 | "iced_graphics", 1791 | "log", 1792 | "once_cell", 1793 | "rustc-hash 2.1.1", 1794 | "thiserror", 1795 | "wgpu", 1796 | ] 1797 | 1798 | [[package]] 1799 | name = "iced_widget" 1800 | version = "0.13.4" 1801 | source = "registry+https://github.com/rust-lang/crates.io-index" 1802 | checksum = "81429e1b950b0e4bca65be4c4278fea6678ea782030a411778f26fa9f8983e1d" 1803 | dependencies = [ 1804 | "iced_renderer", 1805 | "iced_runtime", 1806 | "num-traits", 1807 | "once_cell", 1808 | "rustc-hash 2.1.1", 1809 | "thiserror", 1810 | "unicode-segmentation", 1811 | ] 1812 | 1813 | [[package]] 1814 | name = "iced_winit" 1815 | version = "0.13.0" 1816 | source = "registry+https://github.com/rust-lang/crates.io-index" 1817 | checksum = "f44cd4e1c594b6334f409282937bf972ba14d31fedf03c23aa595d982a2fda28" 1818 | dependencies = [ 1819 | "iced_futures", 1820 | "iced_graphics", 1821 | "iced_runtime", 1822 | "log", 1823 | "rustc-hash 2.1.1", 1824 | "thiserror", 1825 | "tracing", 1826 | "wasm-bindgen-futures", 1827 | "web-sys", 1828 | "winapi", 1829 | "window_clipboard", 1830 | "winit", 1831 | ] 1832 | 1833 | [[package]] 1834 | name = "image" 1835 | version = "0.24.9" 1836 | source = "registry+https://github.com/rust-lang/crates.io-index" 1837 | checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" 1838 | dependencies = [ 1839 | "bytemuck", 1840 | "byteorder", 1841 | "color_quant", 1842 | "exr", 1843 | "gif", 1844 | "jpeg-decoder", 1845 | "num-traits", 1846 | "png", 1847 | "qoi", 1848 | "tiff", 1849 | ] 1850 | 1851 | [[package]] 1852 | name = "image" 1853 | version = "0.25.5" 1854 | source = "registry+https://github.com/rust-lang/crates.io-index" 1855 | checksum = "cd6f44aed642f18953a158afeb30206f4d50da59fbc66ecb53c66488de73563b" 1856 | dependencies = [ 1857 | "bytemuck", 1858 | "byteorder-lite", 1859 | "color_quant", 1860 | "exr", 1861 | "gif", 1862 | "image-webp", 1863 | "num-traits", 1864 | "png", 1865 | "qoi", 1866 | "ravif", 1867 | "rayon", 1868 | "rgb", 1869 | "tiff", 1870 | "zune-core", 1871 | "zune-jpeg", 1872 | ] 1873 | 1874 | [[package]] 1875 | name = "image-webp" 1876 | version = "0.2.1" 1877 | source = "registry+https://github.com/rust-lang/crates.io-index" 1878 | checksum = "b77d01e822461baa8409e156015a1d91735549f0f2c17691bd2d996bef238f7f" 1879 | dependencies = [ 1880 | "byteorder-lite", 1881 | "quick-error", 1882 | ] 1883 | 1884 | [[package]] 1885 | name = "imgref" 1886 | version = "1.11.0" 1887 | source = "registry+https://github.com/rust-lang/crates.io-index" 1888 | checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408" 1889 | 1890 | [[package]] 1891 | name = "indexmap" 1892 | version = "2.8.0" 1893 | source = "registry+https://github.com/rust-lang/crates.io-index" 1894 | checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058" 1895 | dependencies = [ 1896 | "equivalent", 1897 | "hashbrown 0.15.2", 1898 | ] 1899 | 1900 | [[package]] 1901 | name = "instant" 1902 | version = "0.1.13" 1903 | source = "registry+https://github.com/rust-lang/crates.io-index" 1904 | checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" 1905 | dependencies = [ 1906 | "cfg-if", 1907 | ] 1908 | 1909 | [[package]] 1910 | name = "interpolate_name" 1911 | version = "0.2.4" 1912 | source = "registry+https://github.com/rust-lang/crates.io-index" 1913 | checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" 1914 | dependencies = [ 1915 | "proc-macro2", 1916 | "quote", 1917 | "syn 2.0.100", 1918 | ] 1919 | 1920 | [[package]] 1921 | name = "itertools" 1922 | version = "0.12.1" 1923 | source = "registry+https://github.com/rust-lang/crates.io-index" 1924 | checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" 1925 | dependencies = [ 1926 | "either", 1927 | ] 1928 | 1929 | [[package]] 1930 | name = "itertools" 1931 | version = "0.13.0" 1932 | source = "registry+https://github.com/rust-lang/crates.io-index" 1933 | checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" 1934 | dependencies = [ 1935 | "either", 1936 | ] 1937 | 1938 | [[package]] 1939 | name = "jni" 1940 | version = "0.21.1" 1941 | source = "registry+https://github.com/rust-lang/crates.io-index" 1942 | checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" 1943 | dependencies = [ 1944 | "cesu8", 1945 | "cfg-if", 1946 | "combine", 1947 | "jni-sys", 1948 | "log", 1949 | "thiserror", 1950 | "walkdir", 1951 | "windows-sys 0.45.0", 1952 | ] 1953 | 1954 | [[package]] 1955 | name = "jni-sys" 1956 | version = "0.3.0" 1957 | source = "registry+https://github.com/rust-lang/crates.io-index" 1958 | checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" 1959 | 1960 | [[package]] 1961 | name = "jobserver" 1962 | version = "0.1.32" 1963 | source = "registry+https://github.com/rust-lang/crates.io-index" 1964 | checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" 1965 | dependencies = [ 1966 | "libc", 1967 | ] 1968 | 1969 | [[package]] 1970 | name = "jpeg-decoder" 1971 | version = "0.3.1" 1972 | source = "registry+https://github.com/rust-lang/crates.io-index" 1973 | checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" 1974 | dependencies = [ 1975 | "rayon", 1976 | ] 1977 | 1978 | [[package]] 1979 | name = "js-sys" 1980 | version = "0.3.77" 1981 | source = "registry+https://github.com/rust-lang/crates.io-index" 1982 | checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" 1983 | dependencies = [ 1984 | "once_cell", 1985 | "wasm-bindgen", 1986 | ] 1987 | 1988 | [[package]] 1989 | name = "kamadak-exif" 1990 | version = "0.5.5" 1991 | source = "registry+https://github.com/rust-lang/crates.io-index" 1992 | checksum = "ef4fc70d0ab7e5b6bafa30216a6b48705ea964cdfc29c050f2412295eba58077" 1993 | dependencies = [ 1994 | "mutate_once", 1995 | ] 1996 | 1997 | [[package]] 1998 | name = "khronos-egl" 1999 | version = "6.0.0" 2000 | source = "registry+https://github.com/rust-lang/crates.io-index" 2001 | checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" 2002 | dependencies = [ 2003 | "libc", 2004 | "libloading 0.8.6", 2005 | "pkg-config", 2006 | ] 2007 | 2008 | [[package]] 2009 | name = "khronos_api" 2010 | version = "3.1.0" 2011 | source = "registry+https://github.com/rust-lang/crates.io-index" 2012 | checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" 2013 | 2014 | [[package]] 2015 | name = "kurbo" 2016 | version = "0.10.4" 2017 | source = "registry+https://github.com/rust-lang/crates.io-index" 2018 | checksum = "1618d4ebd923e97d67e7cd363d80aef35fe961005cbbbb3d2dad8bdd1bc63440" 2019 | dependencies = [ 2020 | "arrayvec", 2021 | "smallvec", 2022 | ] 2023 | 2024 | [[package]] 2025 | name = "lazy_static" 2026 | version = "1.5.0" 2027 | source = "registry+https://github.com/rust-lang/crates.io-index" 2028 | checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 2029 | 2030 | [[package]] 2031 | name = "lebe" 2032 | version = "0.5.2" 2033 | source = "registry+https://github.com/rust-lang/crates.io-index" 2034 | checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" 2035 | 2036 | [[package]] 2037 | name = "libc" 2038 | version = "0.2.171" 2039 | source = "registry+https://github.com/rust-lang/crates.io-index" 2040 | checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" 2041 | 2042 | [[package]] 2043 | name = "libfuzzer-sys" 2044 | version = "0.4.9" 2045 | source = "registry+https://github.com/rust-lang/crates.io-index" 2046 | checksum = "cf78f52d400cf2d84a3a973a78a592b4adc535739e0a5597a0da6f0c357adc75" 2047 | dependencies = [ 2048 | "arbitrary", 2049 | "cc", 2050 | ] 2051 | 2052 | [[package]] 2053 | name = "libloading" 2054 | version = "0.7.4" 2055 | source = "registry+https://github.com/rust-lang/crates.io-index" 2056 | checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" 2057 | dependencies = [ 2058 | "cfg-if", 2059 | "winapi", 2060 | ] 2061 | 2062 | [[package]] 2063 | name = "libloading" 2064 | version = "0.8.6" 2065 | source = "registry+https://github.com/rust-lang/crates.io-index" 2066 | checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" 2067 | dependencies = [ 2068 | "cfg-if", 2069 | "windows-targets 0.52.6", 2070 | ] 2071 | 2072 | [[package]] 2073 | name = "libm" 2074 | version = "0.2.11" 2075 | source = "registry+https://github.com/rust-lang/crates.io-index" 2076 | checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" 2077 | 2078 | [[package]] 2079 | name = "libredox" 2080 | version = "0.1.3" 2081 | source = "registry+https://github.com/rust-lang/crates.io-index" 2082 | checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" 2083 | dependencies = [ 2084 | "bitflags 2.9.0", 2085 | "libc", 2086 | "redox_syscall 0.5.10", 2087 | ] 2088 | 2089 | [[package]] 2090 | name = "linux-raw-sys" 2091 | version = "0.4.15" 2092 | source = "registry+https://github.com/rust-lang/crates.io-index" 2093 | checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" 2094 | 2095 | [[package]] 2096 | name = "linux-raw-sys" 2097 | version = "0.6.5" 2098 | source = "registry+https://github.com/rust-lang/crates.io-index" 2099 | checksum = "2a385b1be4e5c3e362ad2ffa73c392e53f031eaa5b7d648e64cd87f27f6063d7" 2100 | 2101 | [[package]] 2102 | name = "linux-raw-sys" 2103 | version = "0.9.2" 2104 | source = "registry+https://github.com/rust-lang/crates.io-index" 2105 | checksum = "6db9c683daf087dc577b7506e9695b3d556a9f3849903fa28186283afd6809e9" 2106 | 2107 | [[package]] 2108 | name = "lock_api" 2109 | version = "0.4.12" 2110 | source = "registry+https://github.com/rust-lang/crates.io-index" 2111 | checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" 2112 | dependencies = [ 2113 | "autocfg", 2114 | "scopeguard", 2115 | ] 2116 | 2117 | [[package]] 2118 | name = "log" 2119 | version = "0.4.26" 2120 | source = "registry+https://github.com/rust-lang/crates.io-index" 2121 | checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" 2122 | 2123 | [[package]] 2124 | name = "loop9" 2125 | version = "0.1.5" 2126 | source = "registry+https://github.com/rust-lang/crates.io-index" 2127 | checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" 2128 | dependencies = [ 2129 | "imgref", 2130 | ] 2131 | 2132 | [[package]] 2133 | name = "lru" 2134 | version = "0.12.5" 2135 | source = "registry+https://github.com/rust-lang/crates.io-index" 2136 | checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" 2137 | 2138 | [[package]] 2139 | name = "mach2" 2140 | version = "0.4.2" 2141 | source = "registry+https://github.com/rust-lang/crates.io-index" 2142 | checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" 2143 | dependencies = [ 2144 | "libc", 2145 | ] 2146 | 2147 | [[package]] 2148 | name = "malloc_buf" 2149 | version = "0.0.6" 2150 | source = "registry+https://github.com/rust-lang/crates.io-index" 2151 | checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" 2152 | dependencies = [ 2153 | "libc", 2154 | ] 2155 | 2156 | [[package]] 2157 | name = "maybe-rayon" 2158 | version = "0.1.1" 2159 | source = "registry+https://github.com/rust-lang/crates.io-index" 2160 | checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" 2161 | dependencies = [ 2162 | "cfg-if", 2163 | "rayon", 2164 | ] 2165 | 2166 | [[package]] 2167 | name = "memchr" 2168 | version = "2.7.4" 2169 | source = "registry+https://github.com/rust-lang/crates.io-index" 2170 | checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" 2171 | 2172 | [[package]] 2173 | name = "memmap2" 2174 | version = "0.9.5" 2175 | source = "registry+https://github.com/rust-lang/crates.io-index" 2176 | checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" 2177 | dependencies = [ 2178 | "libc", 2179 | ] 2180 | 2181 | [[package]] 2182 | name = "memoffset" 2183 | version = "0.9.1" 2184 | source = "registry+https://github.com/rust-lang/crates.io-index" 2185 | checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" 2186 | dependencies = [ 2187 | "autocfg", 2188 | ] 2189 | 2190 | [[package]] 2191 | name = "metal" 2192 | version = "0.27.0" 2193 | source = "registry+https://github.com/rust-lang/crates.io-index" 2194 | checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" 2195 | dependencies = [ 2196 | "bitflags 2.9.0", 2197 | "block", 2198 | "core-graphics-types 0.1.3", 2199 | "foreign-types", 2200 | "log", 2201 | "objc", 2202 | "paste", 2203 | ] 2204 | 2205 | [[package]] 2206 | name = "minimal-lexical" 2207 | version = "0.2.1" 2208 | source = "registry+https://github.com/rust-lang/crates.io-index" 2209 | checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 2210 | 2211 | [[package]] 2212 | name = "miniz_oxide" 2213 | version = "0.8.5" 2214 | source = "registry+https://github.com/rust-lang/crates.io-index" 2215 | checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" 2216 | dependencies = [ 2217 | "adler2", 2218 | "simd-adler32", 2219 | ] 2220 | 2221 | [[package]] 2222 | name = "mutate_once" 2223 | version = "0.1.1" 2224 | source = "registry+https://github.com/rust-lang/crates.io-index" 2225 | checksum = "16cf681a23b4d0a43fc35024c176437f9dcd818db34e0f42ab456a0ee5ad497b" 2226 | 2227 | [[package]] 2228 | name = "naga" 2229 | version = "0.19.2" 2230 | source = "registry+https://github.com/rust-lang/crates.io-index" 2231 | checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843" 2232 | dependencies = [ 2233 | "bit-set", 2234 | "bitflags 2.9.0", 2235 | "codespan-reporting", 2236 | "hexf-parse", 2237 | "indexmap", 2238 | "log", 2239 | "num-traits", 2240 | "rustc-hash 1.1.0", 2241 | "spirv", 2242 | "termcolor", 2243 | "thiserror", 2244 | "unicode-xid", 2245 | ] 2246 | 2247 | [[package]] 2248 | name = "ndk" 2249 | version = "0.8.0" 2250 | source = "registry+https://github.com/rust-lang/crates.io-index" 2251 | checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" 2252 | dependencies = [ 2253 | "bitflags 2.9.0", 2254 | "jni-sys", 2255 | "log", 2256 | "ndk-sys 0.5.0+25.2.9519653", 2257 | "num_enum", 2258 | "thiserror", 2259 | ] 2260 | 2261 | [[package]] 2262 | name = "ndk" 2263 | version = "0.9.0" 2264 | source = "registry+https://github.com/rust-lang/crates.io-index" 2265 | checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" 2266 | dependencies = [ 2267 | "bitflags 2.9.0", 2268 | "jni-sys", 2269 | "log", 2270 | "ndk-sys 0.6.0+11769913", 2271 | "num_enum", 2272 | "raw-window-handle", 2273 | "thiserror", 2274 | ] 2275 | 2276 | [[package]] 2277 | name = "ndk-context" 2278 | version = "0.1.1" 2279 | source = "registry+https://github.com/rust-lang/crates.io-index" 2280 | checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" 2281 | 2282 | [[package]] 2283 | name = "ndk-sys" 2284 | version = "0.5.0+25.2.9519653" 2285 | source = "registry+https://github.com/rust-lang/crates.io-index" 2286 | checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" 2287 | dependencies = [ 2288 | "jni-sys", 2289 | ] 2290 | 2291 | [[package]] 2292 | name = "ndk-sys" 2293 | version = "0.6.0+11769913" 2294 | source = "registry+https://github.com/rust-lang/crates.io-index" 2295 | checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" 2296 | dependencies = [ 2297 | "jni-sys", 2298 | ] 2299 | 2300 | [[package]] 2301 | name = "new_debug_unreachable" 2302 | version = "1.0.6" 2303 | source = "registry+https://github.com/rust-lang/crates.io-index" 2304 | checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" 2305 | 2306 | [[package]] 2307 | name = "nix" 2308 | version = "0.29.0" 2309 | source = "registry+https://github.com/rust-lang/crates.io-index" 2310 | checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" 2311 | dependencies = [ 2312 | "bitflags 2.9.0", 2313 | "cfg-if", 2314 | "cfg_aliases 0.2.1", 2315 | "libc", 2316 | "memoffset", 2317 | ] 2318 | 2319 | [[package]] 2320 | name = "nom" 2321 | version = "7.1.3" 2322 | source = "registry+https://github.com/rust-lang/crates.io-index" 2323 | checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 2324 | dependencies = [ 2325 | "memchr", 2326 | "minimal-lexical", 2327 | ] 2328 | 2329 | [[package]] 2330 | name = "noop_proc_macro" 2331 | version = "0.3.0" 2332 | source = "registry+https://github.com/rust-lang/crates.io-index" 2333 | checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" 2334 | 2335 | [[package]] 2336 | name = "num-bigint" 2337 | version = "0.4.6" 2338 | source = "registry+https://github.com/rust-lang/crates.io-index" 2339 | checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" 2340 | dependencies = [ 2341 | "num-integer", 2342 | "num-traits", 2343 | ] 2344 | 2345 | [[package]] 2346 | name = "num-derive" 2347 | version = "0.4.2" 2348 | source = "registry+https://github.com/rust-lang/crates.io-index" 2349 | checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" 2350 | dependencies = [ 2351 | "proc-macro2", 2352 | "quote", 2353 | "syn 2.0.100", 2354 | ] 2355 | 2356 | [[package]] 2357 | name = "num-integer" 2358 | version = "0.1.46" 2359 | source = "registry+https://github.com/rust-lang/crates.io-index" 2360 | checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" 2361 | dependencies = [ 2362 | "num-traits", 2363 | ] 2364 | 2365 | [[package]] 2366 | name = "num-rational" 2367 | version = "0.4.2" 2368 | source = "registry+https://github.com/rust-lang/crates.io-index" 2369 | checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" 2370 | dependencies = [ 2371 | "num-bigint", 2372 | "num-integer", 2373 | "num-traits", 2374 | ] 2375 | 2376 | [[package]] 2377 | name = "num-traits" 2378 | version = "0.2.19" 2379 | source = "registry+https://github.com/rust-lang/crates.io-index" 2380 | checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 2381 | dependencies = [ 2382 | "autocfg", 2383 | ] 2384 | 2385 | [[package]] 2386 | name = "num_cpus" 2387 | version = "1.16.0" 2388 | source = "registry+https://github.com/rust-lang/crates.io-index" 2389 | checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" 2390 | dependencies = [ 2391 | "hermit-abi 0.3.9", 2392 | "libc", 2393 | ] 2394 | 2395 | [[package]] 2396 | name = "num_enum" 2397 | version = "0.7.3" 2398 | source = "registry+https://github.com/rust-lang/crates.io-index" 2399 | checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" 2400 | dependencies = [ 2401 | "num_enum_derive", 2402 | ] 2403 | 2404 | [[package]] 2405 | name = "num_enum_derive" 2406 | version = "0.7.3" 2407 | source = "registry+https://github.com/rust-lang/crates.io-index" 2408 | checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" 2409 | dependencies = [ 2410 | "proc-macro-crate", 2411 | "proc-macro2", 2412 | "quote", 2413 | "syn 2.0.100", 2414 | ] 2415 | 2416 | [[package]] 2417 | name = "objc" 2418 | version = "0.2.7" 2419 | source = "registry+https://github.com/rust-lang/crates.io-index" 2420 | checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 2421 | dependencies = [ 2422 | "malloc_buf", 2423 | "objc_exception", 2424 | ] 2425 | 2426 | [[package]] 2427 | name = "objc-sys" 2428 | version = "0.3.5" 2429 | source = "registry+https://github.com/rust-lang/crates.io-index" 2430 | checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" 2431 | 2432 | [[package]] 2433 | name = "objc2" 2434 | version = "0.5.2" 2435 | source = "registry+https://github.com/rust-lang/crates.io-index" 2436 | checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" 2437 | dependencies = [ 2438 | "objc-sys", 2439 | "objc2-encode", 2440 | ] 2441 | 2442 | [[package]] 2443 | name = "objc2-app-kit" 2444 | version = "0.2.2" 2445 | source = "registry+https://github.com/rust-lang/crates.io-index" 2446 | checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" 2447 | dependencies = [ 2448 | "bitflags 2.9.0", 2449 | "block2", 2450 | "libc", 2451 | "objc2", 2452 | "objc2-core-data", 2453 | "objc2-core-image", 2454 | "objc2-foundation", 2455 | "objc2-quartz-core", 2456 | ] 2457 | 2458 | [[package]] 2459 | name = "objc2-cloud-kit" 2460 | version = "0.2.2" 2461 | source = "registry+https://github.com/rust-lang/crates.io-index" 2462 | checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" 2463 | dependencies = [ 2464 | "bitflags 2.9.0", 2465 | "block2", 2466 | "objc2", 2467 | "objc2-core-location", 2468 | "objc2-foundation", 2469 | ] 2470 | 2471 | [[package]] 2472 | name = "objc2-contacts" 2473 | version = "0.2.2" 2474 | source = "registry+https://github.com/rust-lang/crates.io-index" 2475 | checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" 2476 | dependencies = [ 2477 | "block2", 2478 | "objc2", 2479 | "objc2-foundation", 2480 | ] 2481 | 2482 | [[package]] 2483 | name = "objc2-core-data" 2484 | version = "0.2.2" 2485 | source = "registry+https://github.com/rust-lang/crates.io-index" 2486 | checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" 2487 | dependencies = [ 2488 | "bitflags 2.9.0", 2489 | "block2", 2490 | "objc2", 2491 | "objc2-foundation", 2492 | ] 2493 | 2494 | [[package]] 2495 | name = "objc2-core-image" 2496 | version = "0.2.2" 2497 | source = "registry+https://github.com/rust-lang/crates.io-index" 2498 | checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" 2499 | dependencies = [ 2500 | "block2", 2501 | "objc2", 2502 | "objc2-foundation", 2503 | "objc2-metal", 2504 | ] 2505 | 2506 | [[package]] 2507 | name = "objc2-core-location" 2508 | version = "0.2.2" 2509 | source = "registry+https://github.com/rust-lang/crates.io-index" 2510 | checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" 2511 | dependencies = [ 2512 | "block2", 2513 | "objc2", 2514 | "objc2-contacts", 2515 | "objc2-foundation", 2516 | ] 2517 | 2518 | [[package]] 2519 | name = "objc2-encode" 2520 | version = "4.1.0" 2521 | source = "registry+https://github.com/rust-lang/crates.io-index" 2522 | checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" 2523 | 2524 | [[package]] 2525 | name = "objc2-foundation" 2526 | version = "0.2.2" 2527 | source = "registry+https://github.com/rust-lang/crates.io-index" 2528 | checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" 2529 | dependencies = [ 2530 | "bitflags 2.9.0", 2531 | "block2", 2532 | "dispatch", 2533 | "libc", 2534 | "objc2", 2535 | ] 2536 | 2537 | [[package]] 2538 | name = "objc2-link-presentation" 2539 | version = "0.2.2" 2540 | source = "registry+https://github.com/rust-lang/crates.io-index" 2541 | checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" 2542 | dependencies = [ 2543 | "block2", 2544 | "objc2", 2545 | "objc2-app-kit", 2546 | "objc2-foundation", 2547 | ] 2548 | 2549 | [[package]] 2550 | name = "objc2-metal" 2551 | version = "0.2.2" 2552 | source = "registry+https://github.com/rust-lang/crates.io-index" 2553 | checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" 2554 | dependencies = [ 2555 | "bitflags 2.9.0", 2556 | "block2", 2557 | "objc2", 2558 | "objc2-foundation", 2559 | ] 2560 | 2561 | [[package]] 2562 | name = "objc2-quartz-core" 2563 | version = "0.2.2" 2564 | source = "registry+https://github.com/rust-lang/crates.io-index" 2565 | checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" 2566 | dependencies = [ 2567 | "bitflags 2.9.0", 2568 | "block2", 2569 | "objc2", 2570 | "objc2-foundation", 2571 | "objc2-metal", 2572 | ] 2573 | 2574 | [[package]] 2575 | name = "objc2-symbols" 2576 | version = "0.2.2" 2577 | source = "registry+https://github.com/rust-lang/crates.io-index" 2578 | checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" 2579 | dependencies = [ 2580 | "objc2", 2581 | "objc2-foundation", 2582 | ] 2583 | 2584 | [[package]] 2585 | name = "objc2-ui-kit" 2586 | version = "0.2.2" 2587 | source = "registry+https://github.com/rust-lang/crates.io-index" 2588 | checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" 2589 | dependencies = [ 2590 | "bitflags 2.9.0", 2591 | "block2", 2592 | "objc2", 2593 | "objc2-cloud-kit", 2594 | "objc2-core-data", 2595 | "objc2-core-image", 2596 | "objc2-core-location", 2597 | "objc2-foundation", 2598 | "objc2-link-presentation", 2599 | "objc2-quartz-core", 2600 | "objc2-symbols", 2601 | "objc2-uniform-type-identifiers", 2602 | "objc2-user-notifications", 2603 | ] 2604 | 2605 | [[package]] 2606 | name = "objc2-uniform-type-identifiers" 2607 | version = "0.2.2" 2608 | source = "registry+https://github.com/rust-lang/crates.io-index" 2609 | checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" 2610 | dependencies = [ 2611 | "block2", 2612 | "objc2", 2613 | "objc2-foundation", 2614 | ] 2615 | 2616 | [[package]] 2617 | name = "objc2-user-notifications" 2618 | version = "0.2.2" 2619 | source = "registry+https://github.com/rust-lang/crates.io-index" 2620 | checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" 2621 | dependencies = [ 2622 | "bitflags 2.9.0", 2623 | "block2", 2624 | "objc2", 2625 | "objc2-core-location", 2626 | "objc2-foundation", 2627 | ] 2628 | 2629 | [[package]] 2630 | name = "objc_exception" 2631 | version = "0.1.2" 2632 | source = "registry+https://github.com/rust-lang/crates.io-index" 2633 | checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" 2634 | dependencies = [ 2635 | "cc", 2636 | ] 2637 | 2638 | [[package]] 2639 | name = "oboe" 2640 | version = "0.6.1" 2641 | source = "registry+https://github.com/rust-lang/crates.io-index" 2642 | checksum = "e8b61bebd49e5d43f5f8cc7ee2891c16e0f41ec7954d36bcb6c14c5e0de867fb" 2643 | dependencies = [ 2644 | "jni", 2645 | "ndk 0.8.0", 2646 | "ndk-context", 2647 | "num-derive", 2648 | "num-traits", 2649 | "oboe-sys", 2650 | ] 2651 | 2652 | [[package]] 2653 | name = "oboe-sys" 2654 | version = "0.6.1" 2655 | source = "registry+https://github.com/rust-lang/crates.io-index" 2656 | checksum = "6c8bb09a4a2b1d668170cfe0a7d5bc103f8999fb316c98099b6a9939c9f2e79d" 2657 | dependencies = [ 2658 | "cc", 2659 | ] 2660 | 2661 | [[package]] 2662 | name = "once_cell" 2663 | version = "1.21.0" 2664 | source = "registry+https://github.com/rust-lang/crates.io-index" 2665 | checksum = "cde51589ab56b20a6f686b2c68f7a0bd6add753d697abf720d63f8db3ab7b1ad" 2666 | 2667 | [[package]] 2668 | name = "orbclient" 2669 | version = "0.3.48" 2670 | source = "registry+https://github.com/rust-lang/crates.io-index" 2671 | checksum = "ba0b26cec2e24f08ed8bb31519a9333140a6599b867dac464bb150bdb796fd43" 2672 | dependencies = [ 2673 | "libredox", 2674 | ] 2675 | 2676 | [[package]] 2677 | name = "ordered-multimap" 2678 | version = "0.4.3" 2679 | source = "registry+https://github.com/rust-lang/crates.io-index" 2680 | checksum = "ccd746e37177e1711c20dd619a1620f34f5c8b569c53590a72dedd5344d8924a" 2681 | dependencies = [ 2682 | "dlv-list", 2683 | "hashbrown 0.12.3", 2684 | ] 2685 | 2686 | [[package]] 2687 | name = "ordered-stream" 2688 | version = "0.2.0" 2689 | source = "registry+https://github.com/rust-lang/crates.io-index" 2690 | checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" 2691 | dependencies = [ 2692 | "futures-core", 2693 | "pin-project-lite", 2694 | ] 2695 | 2696 | [[package]] 2697 | name = "owned_ttf_parser" 2698 | version = "0.25.0" 2699 | source = "registry+https://github.com/rust-lang/crates.io-index" 2700 | checksum = "22ec719bbf3b2a81c109a4e20b1f129b5566b7dce654bc3872f6a05abf82b2c4" 2701 | dependencies = [ 2702 | "ttf-parser 0.25.1", 2703 | ] 2704 | 2705 | [[package]] 2706 | name = "palette" 2707 | version = "0.7.6" 2708 | source = "registry+https://github.com/rust-lang/crates.io-index" 2709 | checksum = "4cbf71184cc5ecc2e4e1baccdb21026c20e5fc3dcf63028a086131b3ab00b6e6" 2710 | dependencies = [ 2711 | "approx", 2712 | "fast-srgb8", 2713 | "palette_derive", 2714 | "phf", 2715 | ] 2716 | 2717 | [[package]] 2718 | name = "palette_derive" 2719 | version = "0.7.6" 2720 | source = "registry+https://github.com/rust-lang/crates.io-index" 2721 | checksum = "f5030daf005bface118c096f510ffb781fc28f9ab6a32ab224d8631be6851d30" 2722 | dependencies = [ 2723 | "by_address", 2724 | "proc-macro2", 2725 | "quote", 2726 | "syn 2.0.100", 2727 | ] 2728 | 2729 | [[package]] 2730 | name = "parking" 2731 | version = "2.2.1" 2732 | source = "registry+https://github.com/rust-lang/crates.io-index" 2733 | checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" 2734 | 2735 | [[package]] 2736 | name = "parking_lot" 2737 | version = "0.11.2" 2738 | source = "registry+https://github.com/rust-lang/crates.io-index" 2739 | checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" 2740 | dependencies = [ 2741 | "instant", 2742 | "lock_api", 2743 | "parking_lot_core 0.8.6", 2744 | ] 2745 | 2746 | [[package]] 2747 | name = "parking_lot" 2748 | version = "0.12.3" 2749 | source = "registry+https://github.com/rust-lang/crates.io-index" 2750 | checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" 2751 | dependencies = [ 2752 | "lock_api", 2753 | "parking_lot_core 0.9.10", 2754 | ] 2755 | 2756 | [[package]] 2757 | name = "parking_lot_core" 2758 | version = "0.8.6" 2759 | source = "registry+https://github.com/rust-lang/crates.io-index" 2760 | checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" 2761 | dependencies = [ 2762 | "cfg-if", 2763 | "instant", 2764 | "libc", 2765 | "redox_syscall 0.2.16", 2766 | "smallvec", 2767 | "winapi", 2768 | ] 2769 | 2770 | [[package]] 2771 | name = "parking_lot_core" 2772 | version = "0.9.10" 2773 | source = "registry+https://github.com/rust-lang/crates.io-index" 2774 | checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" 2775 | dependencies = [ 2776 | "cfg-if", 2777 | "libc", 2778 | "redox_syscall 0.5.10", 2779 | "smallvec", 2780 | "windows-targets 0.52.6", 2781 | ] 2782 | 2783 | [[package]] 2784 | name = "paste" 2785 | version = "1.0.15" 2786 | source = "registry+https://github.com/rust-lang/crates.io-index" 2787 | checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" 2788 | 2789 | [[package]] 2790 | name = "percent-encoding" 2791 | version = "2.3.1" 2792 | source = "registry+https://github.com/rust-lang/crates.io-index" 2793 | checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 2794 | 2795 | [[package]] 2796 | name = "phf" 2797 | version = "0.11.3" 2798 | source = "registry+https://github.com/rust-lang/crates.io-index" 2799 | checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" 2800 | dependencies = [ 2801 | "phf_macros", 2802 | "phf_shared", 2803 | ] 2804 | 2805 | [[package]] 2806 | name = "phf_generator" 2807 | version = "0.11.3" 2808 | source = "registry+https://github.com/rust-lang/crates.io-index" 2809 | checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" 2810 | dependencies = [ 2811 | "phf_shared", 2812 | "rand 0.8.5", 2813 | ] 2814 | 2815 | [[package]] 2816 | name = "phf_macros" 2817 | version = "0.11.3" 2818 | source = "registry+https://github.com/rust-lang/crates.io-index" 2819 | checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" 2820 | dependencies = [ 2821 | "phf_generator", 2822 | "phf_shared", 2823 | "proc-macro2", 2824 | "quote", 2825 | "syn 2.0.100", 2826 | ] 2827 | 2828 | [[package]] 2829 | name = "phf_shared" 2830 | version = "0.11.3" 2831 | source = "registry+https://github.com/rust-lang/crates.io-index" 2832 | checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" 2833 | dependencies = [ 2834 | "siphasher", 2835 | ] 2836 | 2837 | [[package]] 2838 | name = "pin-project" 2839 | version = "1.1.10" 2840 | source = "registry+https://github.com/rust-lang/crates.io-index" 2841 | checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" 2842 | dependencies = [ 2843 | "pin-project-internal", 2844 | ] 2845 | 2846 | [[package]] 2847 | name = "pin-project-internal" 2848 | version = "1.1.10" 2849 | source = "registry+https://github.com/rust-lang/crates.io-index" 2850 | checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" 2851 | dependencies = [ 2852 | "proc-macro2", 2853 | "quote", 2854 | "syn 2.0.100", 2855 | ] 2856 | 2857 | [[package]] 2858 | name = "pin-project-lite" 2859 | version = "0.2.16" 2860 | source = "registry+https://github.com/rust-lang/crates.io-index" 2861 | checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" 2862 | 2863 | [[package]] 2864 | name = "pin-utils" 2865 | version = "0.1.0" 2866 | source = "registry+https://github.com/rust-lang/crates.io-index" 2867 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 2868 | 2869 | [[package]] 2870 | name = "piper" 2871 | version = "0.2.4" 2872 | source = "registry+https://github.com/rust-lang/crates.io-index" 2873 | checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" 2874 | dependencies = [ 2875 | "atomic-waker", 2876 | "fastrand", 2877 | "futures-io", 2878 | ] 2879 | 2880 | [[package]] 2881 | name = "pkg-config" 2882 | version = "0.3.32" 2883 | source = "registry+https://github.com/rust-lang/crates.io-index" 2884 | checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" 2885 | 2886 | [[package]] 2887 | name = "png" 2888 | version = "0.17.16" 2889 | source = "registry+https://github.com/rust-lang/crates.io-index" 2890 | checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" 2891 | dependencies = [ 2892 | "bitflags 1.3.2", 2893 | "crc32fast", 2894 | "fdeflate", 2895 | "flate2", 2896 | "miniz_oxide", 2897 | ] 2898 | 2899 | [[package]] 2900 | name = "polling" 2901 | version = "3.7.4" 2902 | source = "registry+https://github.com/rust-lang/crates.io-index" 2903 | checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" 2904 | dependencies = [ 2905 | "cfg-if", 2906 | "concurrent-queue", 2907 | "hermit-abi 0.4.0", 2908 | "pin-project-lite", 2909 | "rustix 0.38.44", 2910 | "tracing", 2911 | "windows-sys 0.59.0", 2912 | ] 2913 | 2914 | [[package]] 2915 | name = "ppv-lite86" 2916 | version = "0.2.21" 2917 | source = "registry+https://github.com/rust-lang/crates.io-index" 2918 | checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" 2919 | dependencies = [ 2920 | "zerocopy 0.8.23", 2921 | ] 2922 | 2923 | [[package]] 2924 | name = "presser" 2925 | version = "0.3.1" 2926 | source = "registry+https://github.com/rust-lang/crates.io-index" 2927 | checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" 2928 | 2929 | [[package]] 2930 | name = "proc-macro-crate" 2931 | version = "3.3.0" 2932 | source = "registry+https://github.com/rust-lang/crates.io-index" 2933 | checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" 2934 | dependencies = [ 2935 | "toml_edit", 2936 | ] 2937 | 2938 | [[package]] 2939 | name = "proc-macro2" 2940 | version = "1.0.94" 2941 | source = "registry+https://github.com/rust-lang/crates.io-index" 2942 | checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" 2943 | dependencies = [ 2944 | "unicode-ident", 2945 | ] 2946 | 2947 | [[package]] 2948 | name = "profiling" 2949 | version = "1.0.16" 2950 | source = "registry+https://github.com/rust-lang/crates.io-index" 2951 | checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d" 2952 | dependencies = [ 2953 | "profiling-procmacros", 2954 | ] 2955 | 2956 | [[package]] 2957 | name = "profiling-procmacros" 2958 | version = "1.0.16" 2959 | source = "registry+https://github.com/rust-lang/crates.io-index" 2960 | checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30" 2961 | dependencies = [ 2962 | "quote", 2963 | "syn 2.0.100", 2964 | ] 2965 | 2966 | [[package]] 2967 | name = "qoi" 2968 | version = "0.4.1" 2969 | source = "registry+https://github.com/rust-lang/crates.io-index" 2970 | checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" 2971 | dependencies = [ 2972 | "bytemuck", 2973 | ] 2974 | 2975 | [[package]] 2976 | name = "quick-error" 2977 | version = "2.0.1" 2978 | source = "registry+https://github.com/rust-lang/crates.io-index" 2979 | checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" 2980 | 2981 | [[package]] 2982 | name = "quick-xml" 2983 | version = "0.37.2" 2984 | source = "registry+https://github.com/rust-lang/crates.io-index" 2985 | checksum = "165859e9e55f79d67b96c5d96f4e88b6f2695a1972849c15a6a3f5c59fc2c003" 2986 | dependencies = [ 2987 | "memchr", 2988 | ] 2989 | 2990 | [[package]] 2991 | name = "quote" 2992 | version = "1.0.40" 2993 | source = "registry+https://github.com/rust-lang/crates.io-index" 2994 | checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" 2995 | dependencies = [ 2996 | "proc-macro2", 2997 | ] 2998 | 2999 | [[package]] 3000 | name = "rand" 3001 | version = "0.8.5" 3002 | source = "registry+https://github.com/rust-lang/crates.io-index" 3003 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 3004 | dependencies = [ 3005 | "libc", 3006 | "rand_chacha 0.3.1", 3007 | "rand_core 0.6.4", 3008 | ] 3009 | 3010 | [[package]] 3011 | name = "rand" 3012 | version = "0.9.0" 3013 | source = "registry+https://github.com/rust-lang/crates.io-index" 3014 | checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" 3015 | dependencies = [ 3016 | "rand_chacha 0.9.0", 3017 | "rand_core 0.9.3", 3018 | "zerocopy 0.8.23", 3019 | ] 3020 | 3021 | [[package]] 3022 | name = "rand_chacha" 3023 | version = "0.3.1" 3024 | source = "registry+https://github.com/rust-lang/crates.io-index" 3025 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 3026 | dependencies = [ 3027 | "ppv-lite86", 3028 | "rand_core 0.6.4", 3029 | ] 3030 | 3031 | [[package]] 3032 | name = "rand_chacha" 3033 | version = "0.9.0" 3034 | source = "registry+https://github.com/rust-lang/crates.io-index" 3035 | checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" 3036 | dependencies = [ 3037 | "ppv-lite86", 3038 | "rand_core 0.9.3", 3039 | ] 3040 | 3041 | [[package]] 3042 | name = "rand_core" 3043 | version = "0.6.4" 3044 | source = "registry+https://github.com/rust-lang/crates.io-index" 3045 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 3046 | dependencies = [ 3047 | "getrandom 0.2.15", 3048 | ] 3049 | 3050 | [[package]] 3051 | name = "rand_core" 3052 | version = "0.9.3" 3053 | source = "registry+https://github.com/rust-lang/crates.io-index" 3054 | checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" 3055 | dependencies = [ 3056 | "getrandom 0.3.1", 3057 | ] 3058 | 3059 | [[package]] 3060 | name = "range-alloc" 3061 | version = "0.1.4" 3062 | source = "registry+https://github.com/rust-lang/crates.io-index" 3063 | checksum = "c3d6831663a5098ea164f89cff59c6284e95f4e3c76ce9848d4529f5ccca9bde" 3064 | 3065 | [[package]] 3066 | name = "rangemap" 3067 | version = "1.5.1" 3068 | source = "registry+https://github.com/rust-lang/crates.io-index" 3069 | checksum = "f60fcc7d6849342eff22c4350c8b9a989ee8ceabc4b481253e8946b9fe83d684" 3070 | 3071 | [[package]] 3072 | name = "rav1e" 3073 | version = "0.7.1" 3074 | source = "registry+https://github.com/rust-lang/crates.io-index" 3075 | checksum = "cd87ce80a7665b1cce111f8a16c1f3929f6547ce91ade6addf4ec86a8dda5ce9" 3076 | dependencies = [ 3077 | "arbitrary", 3078 | "arg_enum_proc_macro", 3079 | "arrayvec", 3080 | "av1-grain", 3081 | "bitstream-io", 3082 | "built", 3083 | "cfg-if", 3084 | "interpolate_name", 3085 | "itertools 0.12.1", 3086 | "libc", 3087 | "libfuzzer-sys", 3088 | "log", 3089 | "maybe-rayon", 3090 | "new_debug_unreachable", 3091 | "noop_proc_macro", 3092 | "num-derive", 3093 | "num-traits", 3094 | "once_cell", 3095 | "paste", 3096 | "profiling", 3097 | "rand 0.8.5", 3098 | "rand_chacha 0.3.1", 3099 | "simd_helpers", 3100 | "system-deps", 3101 | "thiserror", 3102 | "v_frame", 3103 | "wasm-bindgen", 3104 | ] 3105 | 3106 | [[package]] 3107 | name = "ravif" 3108 | version = "0.11.11" 3109 | source = "registry+https://github.com/rust-lang/crates.io-index" 3110 | checksum = "2413fd96bd0ea5cdeeb37eaf446a22e6ed7b981d792828721e74ded1980a45c6" 3111 | dependencies = [ 3112 | "avif-serialize", 3113 | "imgref", 3114 | "loop9", 3115 | "quick-error", 3116 | "rav1e", 3117 | "rayon", 3118 | "rgb", 3119 | ] 3120 | 3121 | [[package]] 3122 | name = "raw-window-handle" 3123 | version = "0.6.2" 3124 | source = "registry+https://github.com/rust-lang/crates.io-index" 3125 | checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" 3126 | 3127 | [[package]] 3128 | name = "rayon" 3129 | version = "1.10.0" 3130 | source = "registry+https://github.com/rust-lang/crates.io-index" 3131 | checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" 3132 | dependencies = [ 3133 | "either", 3134 | "rayon-core", 3135 | ] 3136 | 3137 | [[package]] 3138 | name = "rayon-core" 3139 | version = "1.12.1" 3140 | source = "registry+https://github.com/rust-lang/crates.io-index" 3141 | checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" 3142 | dependencies = [ 3143 | "crossbeam-deque", 3144 | "crossbeam-utils", 3145 | ] 3146 | 3147 | [[package]] 3148 | name = "read-fonts" 3149 | version = "0.22.7" 3150 | source = "registry+https://github.com/rust-lang/crates.io-index" 3151 | checksum = "69aacb76b5c29acfb7f90155d39759a29496aebb49395830e928a9703d2eec2f" 3152 | dependencies = [ 3153 | "bytemuck", 3154 | "font-types", 3155 | ] 3156 | 3157 | [[package]] 3158 | name = "redox_syscall" 3159 | version = "0.2.16" 3160 | source = "registry+https://github.com/rust-lang/crates.io-index" 3161 | checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" 3162 | dependencies = [ 3163 | "bitflags 1.3.2", 3164 | ] 3165 | 3166 | [[package]] 3167 | name = "redox_syscall" 3168 | version = "0.4.1" 3169 | source = "registry+https://github.com/rust-lang/crates.io-index" 3170 | checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" 3171 | dependencies = [ 3172 | "bitflags 1.3.2", 3173 | ] 3174 | 3175 | [[package]] 3176 | name = "redox_syscall" 3177 | version = "0.5.10" 3178 | source = "registry+https://github.com/rust-lang/crates.io-index" 3179 | checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1" 3180 | dependencies = [ 3181 | "bitflags 2.9.0", 3182 | ] 3183 | 3184 | [[package]] 3185 | name = "redox_users" 3186 | version = "0.4.6" 3187 | source = "registry+https://github.com/rust-lang/crates.io-index" 3188 | checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" 3189 | dependencies = [ 3190 | "getrandom 0.2.15", 3191 | "libredox", 3192 | "thiserror", 3193 | ] 3194 | 3195 | [[package]] 3196 | name = "regex" 3197 | version = "1.11.1" 3198 | source = "registry+https://github.com/rust-lang/crates.io-index" 3199 | checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" 3200 | dependencies = [ 3201 | "aho-corasick", 3202 | "memchr", 3203 | "regex-automata", 3204 | "regex-syntax", 3205 | ] 3206 | 3207 | [[package]] 3208 | name = "regex-automata" 3209 | version = "0.4.9" 3210 | source = "registry+https://github.com/rust-lang/crates.io-index" 3211 | checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" 3212 | dependencies = [ 3213 | "aho-corasick", 3214 | "memchr", 3215 | "regex-syntax", 3216 | ] 3217 | 3218 | [[package]] 3219 | name = "regex-syntax" 3220 | version = "0.8.5" 3221 | source = "registry+https://github.com/rust-lang/crates.io-index" 3222 | checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" 3223 | 3224 | [[package]] 3225 | name = "renderdoc-sys" 3226 | version = "1.1.0" 3227 | source = "registry+https://github.com/rust-lang/crates.io-index" 3228 | checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" 3229 | 3230 | [[package]] 3231 | name = "rgb" 3232 | version = "0.8.50" 3233 | source = "registry+https://github.com/rust-lang/crates.io-index" 3234 | checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" 3235 | 3236 | [[package]] 3237 | name = "roxmltree" 3238 | version = "0.20.0" 3239 | source = "registry+https://github.com/rust-lang/crates.io-index" 3240 | checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" 3241 | 3242 | [[package]] 3243 | name = "rust-ini" 3244 | version = "0.18.0" 3245 | source = "registry+https://github.com/rust-lang/crates.io-index" 3246 | checksum = "f6d5f2436026b4f6e79dc829837d467cc7e9a55ee40e750d716713540715a2df" 3247 | dependencies = [ 3248 | "cfg-if", 3249 | "ordered-multimap", 3250 | ] 3251 | 3252 | [[package]] 3253 | name = "rustc-hash" 3254 | version = "1.1.0" 3255 | source = "registry+https://github.com/rust-lang/crates.io-index" 3256 | checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 3257 | 3258 | [[package]] 3259 | name = "rustc-hash" 3260 | version = "2.1.1" 3261 | source = "registry+https://github.com/rust-lang/crates.io-index" 3262 | checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" 3263 | 3264 | [[package]] 3265 | name = "rustix" 3266 | version = "0.38.44" 3267 | source = "registry+https://github.com/rust-lang/crates.io-index" 3268 | checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" 3269 | dependencies = [ 3270 | "bitflags 2.9.0", 3271 | "errno", 3272 | "libc", 3273 | "linux-raw-sys 0.4.15", 3274 | "windows-sys 0.59.0", 3275 | ] 3276 | 3277 | [[package]] 3278 | name = "rustix" 3279 | version = "1.0.2" 3280 | source = "registry+https://github.com/rust-lang/crates.io-index" 3281 | checksum = "f7178faa4b75a30e269c71e61c353ce2748cf3d76f0c44c393f4e60abf49b825" 3282 | dependencies = [ 3283 | "bitflags 2.9.0", 3284 | "errno", 3285 | "libc", 3286 | "linux-raw-sys 0.9.2", 3287 | "windows-sys 0.59.0", 3288 | ] 3289 | 3290 | [[package]] 3291 | name = "rustversion" 3292 | version = "1.0.20" 3293 | source = "registry+https://github.com/rust-lang/crates.io-index" 3294 | checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" 3295 | 3296 | [[package]] 3297 | name = "rustybuzz" 3298 | version = "0.14.1" 3299 | source = "registry+https://github.com/rust-lang/crates.io-index" 3300 | checksum = "cfb9cf8877777222e4a3bc7eb247e398b56baba500c38c1c46842431adc8b55c" 3301 | dependencies = [ 3302 | "bitflags 2.9.0", 3303 | "bytemuck", 3304 | "libm", 3305 | "smallvec", 3306 | "ttf-parser 0.21.1", 3307 | "unicode-bidi-mirroring", 3308 | "unicode-ccc", 3309 | "unicode-properties", 3310 | "unicode-script", 3311 | ] 3312 | 3313 | [[package]] 3314 | name = "same-file" 3315 | version = "1.0.6" 3316 | source = "registry+https://github.com/rust-lang/crates.io-index" 3317 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 3318 | dependencies = [ 3319 | "winapi-util", 3320 | ] 3321 | 3322 | [[package]] 3323 | name = "scoped-tls" 3324 | version = "1.0.1" 3325 | source = "registry+https://github.com/rust-lang/crates.io-index" 3326 | checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" 3327 | 3328 | [[package]] 3329 | name = "scopeguard" 3330 | version = "1.2.0" 3331 | source = "registry+https://github.com/rust-lang/crates.io-index" 3332 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 3333 | 3334 | [[package]] 3335 | name = "sctk-adwaita" 3336 | version = "0.10.1" 3337 | source = "registry+https://github.com/rust-lang/crates.io-index" 3338 | checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" 3339 | dependencies = [ 3340 | "ab_glyph", 3341 | "log", 3342 | "memmap2", 3343 | "smithay-client-toolkit", 3344 | "tiny-skia", 3345 | ] 3346 | 3347 | [[package]] 3348 | name = "self_cell" 3349 | version = "1.1.0" 3350 | source = "registry+https://github.com/rust-lang/crates.io-index" 3351 | checksum = "c2fdfc24bc566f839a2da4c4295b82db7d25a24253867d5c64355abb5799bdbe" 3352 | 3353 | [[package]] 3354 | name = "serde" 3355 | version = "1.0.219" 3356 | source = "registry+https://github.com/rust-lang/crates.io-index" 3357 | checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" 3358 | dependencies = [ 3359 | "serde_derive", 3360 | ] 3361 | 3362 | [[package]] 3363 | name = "serde_derive" 3364 | version = "1.0.219" 3365 | source = "registry+https://github.com/rust-lang/crates.io-index" 3366 | checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" 3367 | dependencies = [ 3368 | "proc-macro2", 3369 | "quote", 3370 | "syn 2.0.100", 3371 | ] 3372 | 3373 | [[package]] 3374 | name = "serde_repr" 3375 | version = "0.1.20" 3376 | source = "registry+https://github.com/rust-lang/crates.io-index" 3377 | checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" 3378 | dependencies = [ 3379 | "proc-macro2", 3380 | "quote", 3381 | "syn 2.0.100", 3382 | ] 3383 | 3384 | [[package]] 3385 | name = "serde_spanned" 3386 | version = "0.6.8" 3387 | source = "registry+https://github.com/rust-lang/crates.io-index" 3388 | checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" 3389 | dependencies = [ 3390 | "serde", 3391 | ] 3392 | 3393 | [[package]] 3394 | name = "sha1" 3395 | version = "0.10.6" 3396 | source = "registry+https://github.com/rust-lang/crates.io-index" 3397 | checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 3398 | dependencies = [ 3399 | "cfg-if", 3400 | "cpufeatures", 3401 | "digest", 3402 | ] 3403 | 3404 | [[package]] 3405 | name = "shlex" 3406 | version = "1.3.0" 3407 | source = "registry+https://github.com/rust-lang/crates.io-index" 3408 | checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 3409 | 3410 | [[package]] 3411 | name = "signal-hook-registry" 3412 | version = "1.4.2" 3413 | source = "registry+https://github.com/rust-lang/crates.io-index" 3414 | checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" 3415 | dependencies = [ 3416 | "libc", 3417 | ] 3418 | 3419 | [[package]] 3420 | name = "simd-adler32" 3421 | version = "0.3.7" 3422 | source = "registry+https://github.com/rust-lang/crates.io-index" 3423 | checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" 3424 | 3425 | [[package]] 3426 | name = "simd_helpers" 3427 | version = "0.1.0" 3428 | source = "registry+https://github.com/rust-lang/crates.io-index" 3429 | checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" 3430 | dependencies = [ 3431 | "quote", 3432 | ] 3433 | 3434 | [[package]] 3435 | name = "siphasher" 3436 | version = "1.0.1" 3437 | source = "registry+https://github.com/rust-lang/crates.io-index" 3438 | checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" 3439 | 3440 | [[package]] 3441 | name = "skrifa" 3442 | version = "0.22.3" 3443 | source = "registry+https://github.com/rust-lang/crates.io-index" 3444 | checksum = "8e1c44ad1f6c5bdd4eefed8326711b7dbda9ea45dfd36068c427d332aa382cbe" 3445 | dependencies = [ 3446 | "bytemuck", 3447 | "read-fonts", 3448 | ] 3449 | 3450 | [[package]] 3451 | name = "slab" 3452 | version = "0.4.9" 3453 | source = "registry+https://github.com/rust-lang/crates.io-index" 3454 | checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 3455 | dependencies = [ 3456 | "autocfg", 3457 | ] 3458 | 3459 | [[package]] 3460 | name = "slotmap" 3461 | version = "1.0.7" 3462 | source = "registry+https://github.com/rust-lang/crates.io-index" 3463 | checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" 3464 | dependencies = [ 3465 | "version_check", 3466 | ] 3467 | 3468 | [[package]] 3469 | name = "smallvec" 3470 | version = "1.14.0" 3471 | source = "registry+https://github.com/rust-lang/crates.io-index" 3472 | checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" 3473 | 3474 | [[package]] 3475 | name = "smithay-client-toolkit" 3476 | version = "0.19.2" 3477 | source = "registry+https://github.com/rust-lang/crates.io-index" 3478 | checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" 3479 | dependencies = [ 3480 | "bitflags 2.9.0", 3481 | "calloop", 3482 | "calloop-wayland-source", 3483 | "cursor-icon", 3484 | "libc", 3485 | "log", 3486 | "memmap2", 3487 | "rustix 0.38.44", 3488 | "thiserror", 3489 | "wayland-backend", 3490 | "wayland-client", 3491 | "wayland-csd-frame", 3492 | "wayland-cursor", 3493 | "wayland-protocols", 3494 | "wayland-protocols-wlr", 3495 | "wayland-scanner", 3496 | "xkeysym", 3497 | ] 3498 | 3499 | [[package]] 3500 | name = "smithay-clipboard" 3501 | version = "0.7.2" 3502 | source = "registry+https://github.com/rust-lang/crates.io-index" 3503 | checksum = "cc8216eec463674a0e90f29e0ae41a4db573ec5b56b1c6c1c71615d249b6d846" 3504 | dependencies = [ 3505 | "libc", 3506 | "smithay-client-toolkit", 3507 | "wayland-backend", 3508 | ] 3509 | 3510 | [[package]] 3511 | name = "smol_str" 3512 | version = "0.2.2" 3513 | source = "registry+https://github.com/rust-lang/crates.io-index" 3514 | checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" 3515 | dependencies = [ 3516 | "serde", 3517 | ] 3518 | 3519 | [[package]] 3520 | name = "softbuffer" 3521 | version = "0.4.6" 3522 | source = "registry+https://github.com/rust-lang/crates.io-index" 3523 | checksum = "18051cdd562e792cad055119e0cdb2cfc137e44e3987532e0f9659a77931bb08" 3524 | dependencies = [ 3525 | "as-raw-xcb-connection", 3526 | "bytemuck", 3527 | "cfg_aliases 0.2.1", 3528 | "core-graphics 0.24.0", 3529 | "drm", 3530 | "fastrand", 3531 | "foreign-types", 3532 | "js-sys", 3533 | "log", 3534 | "memmap2", 3535 | "objc2", 3536 | "objc2-foundation", 3537 | "objc2-quartz-core", 3538 | "raw-window-handle", 3539 | "redox_syscall 0.5.10", 3540 | "rustix 0.38.44", 3541 | "tiny-xlib", 3542 | "wasm-bindgen", 3543 | "wayland-backend", 3544 | "wayland-client", 3545 | "wayland-sys", 3546 | "web-sys", 3547 | "windows-sys 0.59.0", 3548 | "x11rb", 3549 | ] 3550 | 3551 | [[package]] 3552 | name = "spirv" 3553 | version = "0.3.0+sdk-1.3.268.0" 3554 | source = "registry+https://github.com/rust-lang/crates.io-index" 3555 | checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" 3556 | dependencies = [ 3557 | "bitflags 2.9.0", 3558 | ] 3559 | 3560 | [[package]] 3561 | name = "static_assertions" 3562 | version = "1.1.0" 3563 | source = "registry+https://github.com/rust-lang/crates.io-index" 3564 | checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 3565 | 3566 | [[package]] 3567 | name = "strict-num" 3568 | version = "0.1.1" 3569 | source = "registry+https://github.com/rust-lang/crates.io-index" 3570 | checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" 3571 | 3572 | [[package]] 3573 | name = "svg_fmt" 3574 | version = "0.4.4" 3575 | source = "registry+https://github.com/rust-lang/crates.io-index" 3576 | checksum = "ce5d813d71d82c4cbc1742135004e4a79fd870214c155443451c139c9470a0aa" 3577 | 3578 | [[package]] 3579 | name = "swash" 3580 | version = "0.1.19" 3581 | source = "registry+https://github.com/rust-lang/crates.io-index" 3582 | checksum = "cbd59f3f359ddd2c95af4758c18270eddd9c730dde98598023cdabff472c2ca2" 3583 | dependencies = [ 3584 | "skrifa", 3585 | "yazi", 3586 | "zeno", 3587 | ] 3588 | 3589 | [[package]] 3590 | name = "syn" 3591 | version = "1.0.109" 3592 | source = "registry+https://github.com/rust-lang/crates.io-index" 3593 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 3594 | dependencies = [ 3595 | "proc-macro2", 3596 | "quote", 3597 | "unicode-ident", 3598 | ] 3599 | 3600 | [[package]] 3601 | name = "syn" 3602 | version = "2.0.100" 3603 | source = "registry+https://github.com/rust-lang/crates.io-index" 3604 | checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" 3605 | dependencies = [ 3606 | "proc-macro2", 3607 | "quote", 3608 | "unicode-ident", 3609 | ] 3610 | 3611 | [[package]] 3612 | name = "sys-locale" 3613 | version = "0.3.2" 3614 | source = "registry+https://github.com/rust-lang/crates.io-index" 3615 | checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4" 3616 | dependencies = [ 3617 | "libc", 3618 | ] 3619 | 3620 | [[package]] 3621 | name = "system-deps" 3622 | version = "6.2.2" 3623 | source = "registry+https://github.com/rust-lang/crates.io-index" 3624 | checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" 3625 | dependencies = [ 3626 | "cfg-expr", 3627 | "heck", 3628 | "pkg-config", 3629 | "toml", 3630 | "version-compare", 3631 | ] 3632 | 3633 | [[package]] 3634 | name = "target-lexicon" 3635 | version = "0.12.16" 3636 | source = "registry+https://github.com/rust-lang/crates.io-index" 3637 | checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" 3638 | 3639 | [[package]] 3640 | name = "tempfile" 3641 | version = "3.18.0" 3642 | source = "registry+https://github.com/rust-lang/crates.io-index" 3643 | checksum = "2c317e0a526ee6120d8dabad239c8dadca62b24b6f168914bbbc8e2fb1f0e567" 3644 | dependencies = [ 3645 | "cfg-if", 3646 | "fastrand", 3647 | "getrandom 0.3.1", 3648 | "once_cell", 3649 | "rustix 1.0.2", 3650 | "windows-sys 0.59.0", 3651 | ] 3652 | 3653 | [[package]] 3654 | name = "termcolor" 3655 | version = "1.4.1" 3656 | source = "registry+https://github.com/rust-lang/crates.io-index" 3657 | checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" 3658 | dependencies = [ 3659 | "winapi-util", 3660 | ] 3661 | 3662 | [[package]] 3663 | name = "thiserror" 3664 | version = "1.0.69" 3665 | source = "registry+https://github.com/rust-lang/crates.io-index" 3666 | checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" 3667 | dependencies = [ 3668 | "thiserror-impl", 3669 | ] 3670 | 3671 | [[package]] 3672 | name = "thiserror-impl" 3673 | version = "1.0.69" 3674 | source = "registry+https://github.com/rust-lang/crates.io-index" 3675 | checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" 3676 | dependencies = [ 3677 | "proc-macro2", 3678 | "quote", 3679 | "syn 2.0.100", 3680 | ] 3681 | 3682 | [[package]] 3683 | name = "tiff" 3684 | version = "0.9.1" 3685 | source = "registry+https://github.com/rust-lang/crates.io-index" 3686 | checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" 3687 | dependencies = [ 3688 | "flate2", 3689 | "jpeg-decoder", 3690 | "weezl", 3691 | ] 3692 | 3693 | [[package]] 3694 | name = "tiny-skia" 3695 | version = "0.11.4" 3696 | source = "registry+https://github.com/rust-lang/crates.io-index" 3697 | checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" 3698 | dependencies = [ 3699 | "arrayref", 3700 | "arrayvec", 3701 | "bytemuck", 3702 | "cfg-if", 3703 | "log", 3704 | "png", 3705 | "tiny-skia-path", 3706 | ] 3707 | 3708 | [[package]] 3709 | name = "tiny-skia-path" 3710 | version = "0.11.4" 3711 | source = "registry+https://github.com/rust-lang/crates.io-index" 3712 | checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" 3713 | dependencies = [ 3714 | "arrayref", 3715 | "bytemuck", 3716 | "strict-num", 3717 | ] 3718 | 3719 | [[package]] 3720 | name = "tiny-xlib" 3721 | version = "0.2.4" 3722 | source = "registry+https://github.com/rust-lang/crates.io-index" 3723 | checksum = "0324504befd01cab6e0c994f34b2ffa257849ee019d3fb3b64fb2c858887d89e" 3724 | dependencies = [ 3725 | "as-raw-xcb-connection", 3726 | "ctor-lite", 3727 | "libloading 0.8.6", 3728 | "pkg-config", 3729 | "tracing", 3730 | ] 3731 | 3732 | [[package]] 3733 | name = "tinyvec" 3734 | version = "1.9.0" 3735 | source = "registry+https://github.com/rust-lang/crates.io-index" 3736 | checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" 3737 | dependencies = [ 3738 | "tinyvec_macros", 3739 | ] 3740 | 3741 | [[package]] 3742 | name = "tinyvec_macros" 3743 | version = "0.1.1" 3744 | source = "registry+https://github.com/rust-lang/crates.io-index" 3745 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 3746 | 3747 | [[package]] 3748 | name = "toml" 3749 | version = "0.8.20" 3750 | source = "registry+https://github.com/rust-lang/crates.io-index" 3751 | checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" 3752 | dependencies = [ 3753 | "serde", 3754 | "serde_spanned", 3755 | "toml_datetime", 3756 | "toml_edit", 3757 | ] 3758 | 3759 | [[package]] 3760 | name = "toml_datetime" 3761 | version = "0.6.8" 3762 | source = "registry+https://github.com/rust-lang/crates.io-index" 3763 | checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" 3764 | dependencies = [ 3765 | "serde", 3766 | ] 3767 | 3768 | [[package]] 3769 | name = "toml_edit" 3770 | version = "0.22.24" 3771 | source = "registry+https://github.com/rust-lang/crates.io-index" 3772 | checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" 3773 | dependencies = [ 3774 | "indexmap", 3775 | "serde", 3776 | "serde_spanned", 3777 | "toml_datetime", 3778 | "winnow", 3779 | ] 3780 | 3781 | [[package]] 3782 | name = "tracing" 3783 | version = "0.1.41" 3784 | source = "registry+https://github.com/rust-lang/crates.io-index" 3785 | checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" 3786 | dependencies = [ 3787 | "pin-project-lite", 3788 | "tracing-attributes", 3789 | "tracing-core", 3790 | ] 3791 | 3792 | [[package]] 3793 | name = "tracing-attributes" 3794 | version = "0.1.28" 3795 | source = "registry+https://github.com/rust-lang/crates.io-index" 3796 | checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" 3797 | dependencies = [ 3798 | "proc-macro2", 3799 | "quote", 3800 | "syn 2.0.100", 3801 | ] 3802 | 3803 | [[package]] 3804 | name = "tracing-core" 3805 | version = "0.1.33" 3806 | source = "registry+https://github.com/rust-lang/crates.io-index" 3807 | checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" 3808 | dependencies = [ 3809 | "once_cell", 3810 | ] 3811 | 3812 | [[package]] 3813 | name = "ttf-parser" 3814 | version = "0.20.0" 3815 | source = "registry+https://github.com/rust-lang/crates.io-index" 3816 | checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" 3817 | 3818 | [[package]] 3819 | name = "ttf-parser" 3820 | version = "0.21.1" 3821 | source = "registry+https://github.com/rust-lang/crates.io-index" 3822 | checksum = "2c591d83f69777866b9126b24c6dd9a18351f177e49d625920d19f989fd31cf8" 3823 | 3824 | [[package]] 3825 | name = "ttf-parser" 3826 | version = "0.25.1" 3827 | source = "registry+https://github.com/rust-lang/crates.io-index" 3828 | checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" 3829 | 3830 | [[package]] 3831 | name = "typenum" 3832 | version = "1.18.0" 3833 | source = "registry+https://github.com/rust-lang/crates.io-index" 3834 | checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" 3835 | 3836 | [[package]] 3837 | name = "uds_windows" 3838 | version = "1.1.0" 3839 | source = "registry+https://github.com/rust-lang/crates.io-index" 3840 | checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" 3841 | dependencies = [ 3842 | "memoffset", 3843 | "tempfile", 3844 | "winapi", 3845 | ] 3846 | 3847 | [[package]] 3848 | name = "unicode-bidi" 3849 | version = "0.3.18" 3850 | source = "registry+https://github.com/rust-lang/crates.io-index" 3851 | checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" 3852 | 3853 | [[package]] 3854 | name = "unicode-bidi-mirroring" 3855 | version = "0.2.0" 3856 | source = "registry+https://github.com/rust-lang/crates.io-index" 3857 | checksum = "23cb788ffebc92c5948d0e997106233eeb1d8b9512f93f41651f52b6c5f5af86" 3858 | 3859 | [[package]] 3860 | name = "unicode-ccc" 3861 | version = "0.2.0" 3862 | source = "registry+https://github.com/rust-lang/crates.io-index" 3863 | checksum = "1df77b101bcc4ea3d78dafc5ad7e4f58ceffe0b2b16bf446aeb50b6cb4157656" 3864 | 3865 | [[package]] 3866 | name = "unicode-ident" 3867 | version = "1.0.18" 3868 | source = "registry+https://github.com/rust-lang/crates.io-index" 3869 | checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" 3870 | 3871 | [[package]] 3872 | name = "unicode-linebreak" 3873 | version = "0.1.5" 3874 | source = "registry+https://github.com/rust-lang/crates.io-index" 3875 | checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" 3876 | 3877 | [[package]] 3878 | name = "unicode-properties" 3879 | version = "0.1.3" 3880 | source = "registry+https://github.com/rust-lang/crates.io-index" 3881 | checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" 3882 | 3883 | [[package]] 3884 | name = "unicode-script" 3885 | version = "0.5.7" 3886 | source = "registry+https://github.com/rust-lang/crates.io-index" 3887 | checksum = "9fb421b350c9aff471779e262955939f565ec18b86c15364e6bdf0d662ca7c1f" 3888 | 3889 | [[package]] 3890 | name = "unicode-segmentation" 3891 | version = "1.12.0" 3892 | source = "registry+https://github.com/rust-lang/crates.io-index" 3893 | checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" 3894 | 3895 | [[package]] 3896 | name = "unicode-width" 3897 | version = "0.1.14" 3898 | source = "registry+https://github.com/rust-lang/crates.io-index" 3899 | checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" 3900 | 3901 | [[package]] 3902 | name = "unicode-xid" 3903 | version = "0.2.6" 3904 | source = "registry+https://github.com/rust-lang/crates.io-index" 3905 | checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" 3906 | 3907 | [[package]] 3908 | name = "v_frame" 3909 | version = "0.3.8" 3910 | source = "registry+https://github.com/rust-lang/crates.io-index" 3911 | checksum = "d6f32aaa24bacd11e488aa9ba66369c7cd514885742c9fe08cfe85884db3e92b" 3912 | dependencies = [ 3913 | "aligned-vec", 3914 | "num-traits", 3915 | "wasm-bindgen", 3916 | ] 3917 | 3918 | [[package]] 3919 | name = "version-compare" 3920 | version = "0.2.0" 3921 | source = "registry+https://github.com/rust-lang/crates.io-index" 3922 | checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" 3923 | 3924 | [[package]] 3925 | name = "version_check" 3926 | version = "0.9.5" 3927 | source = "registry+https://github.com/rust-lang/crates.io-index" 3928 | checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" 3929 | 3930 | [[package]] 3931 | name = "walkdir" 3932 | version = "2.5.0" 3933 | source = "registry+https://github.com/rust-lang/crates.io-index" 3934 | checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" 3935 | dependencies = [ 3936 | "same-file", 3937 | "winapi-util", 3938 | ] 3939 | 3940 | [[package]] 3941 | name = "wasi" 3942 | version = "0.11.0+wasi-snapshot-preview1" 3943 | source = "registry+https://github.com/rust-lang/crates.io-index" 3944 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 3945 | 3946 | [[package]] 3947 | name = "wasi" 3948 | version = "0.13.3+wasi-0.2.2" 3949 | source = "registry+https://github.com/rust-lang/crates.io-index" 3950 | checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" 3951 | dependencies = [ 3952 | "wit-bindgen-rt", 3953 | ] 3954 | 3955 | [[package]] 3956 | name = "wasm-bindgen" 3957 | version = "0.2.100" 3958 | source = "registry+https://github.com/rust-lang/crates.io-index" 3959 | checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" 3960 | dependencies = [ 3961 | "cfg-if", 3962 | "once_cell", 3963 | "rustversion", 3964 | "wasm-bindgen-macro", 3965 | ] 3966 | 3967 | [[package]] 3968 | name = "wasm-bindgen-backend" 3969 | version = "0.2.100" 3970 | source = "registry+https://github.com/rust-lang/crates.io-index" 3971 | checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" 3972 | dependencies = [ 3973 | "bumpalo", 3974 | "log", 3975 | "proc-macro2", 3976 | "quote", 3977 | "syn 2.0.100", 3978 | "wasm-bindgen-shared", 3979 | ] 3980 | 3981 | [[package]] 3982 | name = "wasm-bindgen-futures" 3983 | version = "0.4.50" 3984 | source = "registry+https://github.com/rust-lang/crates.io-index" 3985 | checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" 3986 | dependencies = [ 3987 | "cfg-if", 3988 | "js-sys", 3989 | "once_cell", 3990 | "wasm-bindgen", 3991 | "web-sys", 3992 | ] 3993 | 3994 | [[package]] 3995 | name = "wasm-bindgen-macro" 3996 | version = "0.2.100" 3997 | source = "registry+https://github.com/rust-lang/crates.io-index" 3998 | checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" 3999 | dependencies = [ 4000 | "quote", 4001 | "wasm-bindgen-macro-support", 4002 | ] 4003 | 4004 | [[package]] 4005 | name = "wasm-bindgen-macro-support" 4006 | version = "0.2.100" 4007 | source = "registry+https://github.com/rust-lang/crates.io-index" 4008 | checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" 4009 | dependencies = [ 4010 | "proc-macro2", 4011 | "quote", 4012 | "syn 2.0.100", 4013 | "wasm-bindgen-backend", 4014 | "wasm-bindgen-shared", 4015 | ] 4016 | 4017 | [[package]] 4018 | name = "wasm-bindgen-shared" 4019 | version = "0.2.100" 4020 | source = "registry+https://github.com/rust-lang/crates.io-index" 4021 | checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" 4022 | dependencies = [ 4023 | "unicode-ident", 4024 | ] 4025 | 4026 | [[package]] 4027 | name = "wasm-timer" 4028 | version = "0.2.5" 4029 | source = "registry+https://github.com/rust-lang/crates.io-index" 4030 | checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" 4031 | dependencies = [ 4032 | "futures", 4033 | "js-sys", 4034 | "parking_lot 0.11.2", 4035 | "pin-utils", 4036 | "wasm-bindgen", 4037 | "wasm-bindgen-futures", 4038 | "web-sys", 4039 | ] 4040 | 4041 | [[package]] 4042 | name = "wayland-backend" 4043 | version = "0.3.8" 4044 | source = "registry+https://github.com/rust-lang/crates.io-index" 4045 | checksum = "b7208998eaa3870dad37ec8836979581506e0c5c64c20c9e79e9d2a10d6f47bf" 4046 | dependencies = [ 4047 | "cc", 4048 | "downcast-rs", 4049 | "rustix 0.38.44", 4050 | "scoped-tls", 4051 | "smallvec", 4052 | "wayland-sys", 4053 | ] 4054 | 4055 | [[package]] 4056 | name = "wayland-client" 4057 | version = "0.31.8" 4058 | source = "registry+https://github.com/rust-lang/crates.io-index" 4059 | checksum = "c2120de3d33638aaef5b9f4472bff75f07c56379cf76ea320bd3a3d65ecaf73f" 4060 | dependencies = [ 4061 | "bitflags 2.9.0", 4062 | "rustix 0.38.44", 4063 | "wayland-backend", 4064 | "wayland-scanner", 4065 | ] 4066 | 4067 | [[package]] 4068 | name = "wayland-csd-frame" 4069 | version = "0.3.0" 4070 | source = "registry+https://github.com/rust-lang/crates.io-index" 4071 | checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" 4072 | dependencies = [ 4073 | "bitflags 2.9.0", 4074 | "cursor-icon", 4075 | "wayland-backend", 4076 | ] 4077 | 4078 | [[package]] 4079 | name = "wayland-cursor" 4080 | version = "0.31.8" 4081 | source = "registry+https://github.com/rust-lang/crates.io-index" 4082 | checksum = "a93029cbb6650748881a00e4922b076092a6a08c11e7fbdb923f064b23968c5d" 4083 | dependencies = [ 4084 | "rustix 0.38.44", 4085 | "wayland-client", 4086 | "xcursor", 4087 | ] 4088 | 4089 | [[package]] 4090 | name = "wayland-protocols" 4091 | version = "0.32.6" 4092 | source = "registry+https://github.com/rust-lang/crates.io-index" 4093 | checksum = "0781cf46869b37e36928f7b432273c0995aa8aed9552c556fb18754420541efc" 4094 | dependencies = [ 4095 | "bitflags 2.9.0", 4096 | "wayland-backend", 4097 | "wayland-client", 4098 | "wayland-scanner", 4099 | ] 4100 | 4101 | [[package]] 4102 | name = "wayland-protocols-plasma" 4103 | version = "0.3.6" 4104 | source = "registry+https://github.com/rust-lang/crates.io-index" 4105 | checksum = "7ccaacc76703fefd6763022ac565b590fcade92202492381c95b2edfdf7d46b3" 4106 | dependencies = [ 4107 | "bitflags 2.9.0", 4108 | "wayland-backend", 4109 | "wayland-client", 4110 | "wayland-protocols", 4111 | "wayland-scanner", 4112 | ] 4113 | 4114 | [[package]] 4115 | name = "wayland-protocols-wlr" 4116 | version = "0.3.6" 4117 | source = "registry+https://github.com/rust-lang/crates.io-index" 4118 | checksum = "248a02e6f595aad796561fa82d25601bd2c8c3b145b1c7453fc8f94c1a58f8b2" 4119 | dependencies = [ 4120 | "bitflags 2.9.0", 4121 | "wayland-backend", 4122 | "wayland-client", 4123 | "wayland-protocols", 4124 | "wayland-scanner", 4125 | ] 4126 | 4127 | [[package]] 4128 | name = "wayland-scanner" 4129 | version = "0.31.6" 4130 | source = "registry+https://github.com/rust-lang/crates.io-index" 4131 | checksum = "896fdafd5d28145fce7958917d69f2fd44469b1d4e861cb5961bcbeebc6d1484" 4132 | dependencies = [ 4133 | "proc-macro2", 4134 | "quick-xml", 4135 | "quote", 4136 | ] 4137 | 4138 | [[package]] 4139 | name = "wayland-sys" 4140 | version = "0.31.6" 4141 | source = "registry+https://github.com/rust-lang/crates.io-index" 4142 | checksum = "dbcebb399c77d5aa9fa5db874806ee7b4eba4e73650948e8f93963f128896615" 4143 | dependencies = [ 4144 | "dlib", 4145 | "log", 4146 | "once_cell", 4147 | "pkg-config", 4148 | ] 4149 | 4150 | [[package]] 4151 | name = "web-sys" 4152 | version = "0.3.77" 4153 | source = "registry+https://github.com/rust-lang/crates.io-index" 4154 | checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" 4155 | dependencies = [ 4156 | "js-sys", 4157 | "wasm-bindgen", 4158 | ] 4159 | 4160 | [[package]] 4161 | name = "web-time" 4162 | version = "1.1.0" 4163 | source = "registry+https://github.com/rust-lang/crates.io-index" 4164 | checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" 4165 | dependencies = [ 4166 | "js-sys", 4167 | "wasm-bindgen", 4168 | ] 4169 | 4170 | [[package]] 4171 | name = "weezl" 4172 | version = "0.1.8" 4173 | source = "registry+https://github.com/rust-lang/crates.io-index" 4174 | checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" 4175 | 4176 | [[package]] 4177 | name = "wgpu" 4178 | version = "0.19.4" 4179 | source = "registry+https://github.com/rust-lang/crates.io-index" 4180 | checksum = "cbd7311dbd2abcfebaabf1841a2824ed7c8be443a0f29166e5d3c6a53a762c01" 4181 | dependencies = [ 4182 | "arrayvec", 4183 | "cfg-if", 4184 | "cfg_aliases 0.1.1", 4185 | "js-sys", 4186 | "log", 4187 | "naga", 4188 | "parking_lot 0.12.3", 4189 | "profiling", 4190 | "raw-window-handle", 4191 | "smallvec", 4192 | "static_assertions", 4193 | "wasm-bindgen", 4194 | "wasm-bindgen-futures", 4195 | "web-sys", 4196 | "wgpu-core", 4197 | "wgpu-hal", 4198 | "wgpu-types", 4199 | ] 4200 | 4201 | [[package]] 4202 | name = "wgpu-core" 4203 | version = "0.19.4" 4204 | source = "registry+https://github.com/rust-lang/crates.io-index" 4205 | checksum = "28b94525fc99ba9e5c9a9e24764f2bc29bad0911a7446c12f446a8277369bf3a" 4206 | dependencies = [ 4207 | "arrayvec", 4208 | "bit-vec", 4209 | "bitflags 2.9.0", 4210 | "cfg_aliases 0.1.1", 4211 | "codespan-reporting", 4212 | "indexmap", 4213 | "log", 4214 | "naga", 4215 | "once_cell", 4216 | "parking_lot 0.12.3", 4217 | "profiling", 4218 | "raw-window-handle", 4219 | "rustc-hash 1.1.0", 4220 | "smallvec", 4221 | "thiserror", 4222 | "web-sys", 4223 | "wgpu-hal", 4224 | "wgpu-types", 4225 | ] 4226 | 4227 | [[package]] 4228 | name = "wgpu-hal" 4229 | version = "0.19.5" 4230 | source = "registry+https://github.com/rust-lang/crates.io-index" 4231 | checksum = "bfabcfc55fd86611a855816326b2d54c3b2fd7972c27ce414291562650552703" 4232 | dependencies = [ 4233 | "android_system_properties", 4234 | "arrayvec", 4235 | "ash", 4236 | "bit-set", 4237 | "bitflags 2.9.0", 4238 | "block", 4239 | "cfg_aliases 0.1.1", 4240 | "core-graphics-types 0.1.3", 4241 | "d3d12", 4242 | "glow", 4243 | "glutin_wgl_sys", 4244 | "gpu-alloc", 4245 | "gpu-allocator", 4246 | "gpu-descriptor", 4247 | "hassle-rs", 4248 | "js-sys", 4249 | "khronos-egl", 4250 | "libc", 4251 | "libloading 0.8.6", 4252 | "log", 4253 | "metal", 4254 | "naga", 4255 | "ndk-sys 0.5.0+25.2.9519653", 4256 | "objc", 4257 | "once_cell", 4258 | "parking_lot 0.12.3", 4259 | "profiling", 4260 | "range-alloc", 4261 | "raw-window-handle", 4262 | "renderdoc-sys", 4263 | "rustc-hash 1.1.0", 4264 | "smallvec", 4265 | "thiserror", 4266 | "wasm-bindgen", 4267 | "web-sys", 4268 | "wgpu-types", 4269 | "winapi", 4270 | ] 4271 | 4272 | [[package]] 4273 | name = "wgpu-types" 4274 | version = "0.19.2" 4275 | source = "registry+https://github.com/rust-lang/crates.io-index" 4276 | checksum = "b671ff9fb03f78b46ff176494ee1ebe7d603393f42664be55b64dc8d53969805" 4277 | dependencies = [ 4278 | "bitflags 2.9.0", 4279 | "js-sys", 4280 | "web-sys", 4281 | ] 4282 | 4283 | [[package]] 4284 | name = "widestring" 4285 | version = "1.1.0" 4286 | source = "registry+https://github.com/rust-lang/crates.io-index" 4287 | checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" 4288 | 4289 | [[package]] 4290 | name = "winapi" 4291 | version = "0.3.9" 4292 | source = "registry+https://github.com/rust-lang/crates.io-index" 4293 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 4294 | dependencies = [ 4295 | "winapi-i686-pc-windows-gnu", 4296 | "winapi-x86_64-pc-windows-gnu", 4297 | ] 4298 | 4299 | [[package]] 4300 | name = "winapi-i686-pc-windows-gnu" 4301 | version = "0.4.0" 4302 | source = "registry+https://github.com/rust-lang/crates.io-index" 4303 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 4304 | 4305 | [[package]] 4306 | name = "winapi-util" 4307 | version = "0.1.9" 4308 | source = "registry+https://github.com/rust-lang/crates.io-index" 4309 | checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" 4310 | dependencies = [ 4311 | "windows-sys 0.59.0", 4312 | ] 4313 | 4314 | [[package]] 4315 | name = "winapi-x86_64-pc-windows-gnu" 4316 | version = "0.4.0" 4317 | source = "registry+https://github.com/rust-lang/crates.io-index" 4318 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 4319 | 4320 | [[package]] 4321 | name = "window_clipboard" 4322 | version = "0.4.1" 4323 | source = "registry+https://github.com/rust-lang/crates.io-index" 4324 | checksum = "f6d692d46038c433f9daee7ad8757e002a4248c20b0a3fbc991d99521d3bcb6d" 4325 | dependencies = [ 4326 | "clipboard-win", 4327 | "clipboard_macos", 4328 | "clipboard_wayland", 4329 | "clipboard_x11", 4330 | "raw-window-handle", 4331 | "thiserror", 4332 | ] 4333 | 4334 | [[package]] 4335 | name = "windows" 4336 | version = "0.52.0" 4337 | source = "registry+https://github.com/rust-lang/crates.io-index" 4338 | checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" 4339 | dependencies = [ 4340 | "windows-core 0.52.0", 4341 | "windows-targets 0.52.6", 4342 | ] 4343 | 4344 | [[package]] 4345 | name = "windows" 4346 | version = "0.54.0" 4347 | source = "registry+https://github.com/rust-lang/crates.io-index" 4348 | checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" 4349 | dependencies = [ 4350 | "windows-core 0.54.0", 4351 | "windows-targets 0.52.6", 4352 | ] 4353 | 4354 | [[package]] 4355 | name = "windows-core" 4356 | version = "0.52.0" 4357 | source = "registry+https://github.com/rust-lang/crates.io-index" 4358 | checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" 4359 | dependencies = [ 4360 | "windows-targets 0.52.6", 4361 | ] 4362 | 4363 | [[package]] 4364 | name = "windows-core" 4365 | version = "0.54.0" 4366 | source = "registry+https://github.com/rust-lang/crates.io-index" 4367 | checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" 4368 | dependencies = [ 4369 | "windows-result", 4370 | "windows-targets 0.52.6", 4371 | ] 4372 | 4373 | [[package]] 4374 | name = "windows-result" 4375 | version = "0.1.2" 4376 | source = "registry+https://github.com/rust-lang/crates.io-index" 4377 | checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" 4378 | dependencies = [ 4379 | "windows-targets 0.52.6", 4380 | ] 4381 | 4382 | [[package]] 4383 | name = "windows-sys" 4384 | version = "0.45.0" 4385 | source = "registry+https://github.com/rust-lang/crates.io-index" 4386 | checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" 4387 | dependencies = [ 4388 | "windows-targets 0.42.2", 4389 | ] 4390 | 4391 | [[package]] 4392 | name = "windows-sys" 4393 | version = "0.52.0" 4394 | source = "registry+https://github.com/rust-lang/crates.io-index" 4395 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 4396 | dependencies = [ 4397 | "windows-targets 0.52.6", 4398 | ] 4399 | 4400 | [[package]] 4401 | name = "windows-sys" 4402 | version = "0.59.0" 4403 | source = "registry+https://github.com/rust-lang/crates.io-index" 4404 | checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" 4405 | dependencies = [ 4406 | "windows-targets 0.52.6", 4407 | ] 4408 | 4409 | [[package]] 4410 | name = "windows-targets" 4411 | version = "0.42.2" 4412 | source = "registry+https://github.com/rust-lang/crates.io-index" 4413 | checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" 4414 | dependencies = [ 4415 | "windows_aarch64_gnullvm 0.42.2", 4416 | "windows_aarch64_msvc 0.42.2", 4417 | "windows_i686_gnu 0.42.2", 4418 | "windows_i686_msvc 0.42.2", 4419 | "windows_x86_64_gnu 0.42.2", 4420 | "windows_x86_64_gnullvm 0.42.2", 4421 | "windows_x86_64_msvc 0.42.2", 4422 | ] 4423 | 4424 | [[package]] 4425 | name = "windows-targets" 4426 | version = "0.48.5" 4427 | source = "registry+https://github.com/rust-lang/crates.io-index" 4428 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 4429 | dependencies = [ 4430 | "windows_aarch64_gnullvm 0.48.5", 4431 | "windows_aarch64_msvc 0.48.5", 4432 | "windows_i686_gnu 0.48.5", 4433 | "windows_i686_msvc 0.48.5", 4434 | "windows_x86_64_gnu 0.48.5", 4435 | "windows_x86_64_gnullvm 0.48.5", 4436 | "windows_x86_64_msvc 0.48.5", 4437 | ] 4438 | 4439 | [[package]] 4440 | name = "windows-targets" 4441 | version = "0.52.6" 4442 | source = "registry+https://github.com/rust-lang/crates.io-index" 4443 | checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 4444 | dependencies = [ 4445 | "windows_aarch64_gnullvm 0.52.6", 4446 | "windows_aarch64_msvc 0.52.6", 4447 | "windows_i686_gnu 0.52.6", 4448 | "windows_i686_gnullvm", 4449 | "windows_i686_msvc 0.52.6", 4450 | "windows_x86_64_gnu 0.52.6", 4451 | "windows_x86_64_gnullvm 0.52.6", 4452 | "windows_x86_64_msvc 0.52.6", 4453 | ] 4454 | 4455 | [[package]] 4456 | name = "windows_aarch64_gnullvm" 4457 | version = "0.42.2" 4458 | source = "registry+https://github.com/rust-lang/crates.io-index" 4459 | checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" 4460 | 4461 | [[package]] 4462 | name = "windows_aarch64_gnullvm" 4463 | version = "0.48.5" 4464 | source = "registry+https://github.com/rust-lang/crates.io-index" 4465 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 4466 | 4467 | [[package]] 4468 | name = "windows_aarch64_gnullvm" 4469 | version = "0.52.6" 4470 | source = "registry+https://github.com/rust-lang/crates.io-index" 4471 | checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 4472 | 4473 | [[package]] 4474 | name = "windows_aarch64_msvc" 4475 | version = "0.42.2" 4476 | source = "registry+https://github.com/rust-lang/crates.io-index" 4477 | checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" 4478 | 4479 | [[package]] 4480 | name = "windows_aarch64_msvc" 4481 | version = "0.48.5" 4482 | source = "registry+https://github.com/rust-lang/crates.io-index" 4483 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 4484 | 4485 | [[package]] 4486 | name = "windows_aarch64_msvc" 4487 | version = "0.52.6" 4488 | source = "registry+https://github.com/rust-lang/crates.io-index" 4489 | checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 4490 | 4491 | [[package]] 4492 | name = "windows_i686_gnu" 4493 | version = "0.42.2" 4494 | source = "registry+https://github.com/rust-lang/crates.io-index" 4495 | checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" 4496 | 4497 | [[package]] 4498 | name = "windows_i686_gnu" 4499 | version = "0.48.5" 4500 | source = "registry+https://github.com/rust-lang/crates.io-index" 4501 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 4502 | 4503 | [[package]] 4504 | name = "windows_i686_gnu" 4505 | version = "0.52.6" 4506 | source = "registry+https://github.com/rust-lang/crates.io-index" 4507 | checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 4508 | 4509 | [[package]] 4510 | name = "windows_i686_gnullvm" 4511 | version = "0.52.6" 4512 | source = "registry+https://github.com/rust-lang/crates.io-index" 4513 | checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 4514 | 4515 | [[package]] 4516 | name = "windows_i686_msvc" 4517 | version = "0.42.2" 4518 | source = "registry+https://github.com/rust-lang/crates.io-index" 4519 | checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" 4520 | 4521 | [[package]] 4522 | name = "windows_i686_msvc" 4523 | version = "0.48.5" 4524 | source = "registry+https://github.com/rust-lang/crates.io-index" 4525 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 4526 | 4527 | [[package]] 4528 | name = "windows_i686_msvc" 4529 | version = "0.52.6" 4530 | source = "registry+https://github.com/rust-lang/crates.io-index" 4531 | checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 4532 | 4533 | [[package]] 4534 | name = "windows_x86_64_gnu" 4535 | version = "0.42.2" 4536 | source = "registry+https://github.com/rust-lang/crates.io-index" 4537 | checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" 4538 | 4539 | [[package]] 4540 | name = "windows_x86_64_gnu" 4541 | version = "0.48.5" 4542 | source = "registry+https://github.com/rust-lang/crates.io-index" 4543 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 4544 | 4545 | [[package]] 4546 | name = "windows_x86_64_gnu" 4547 | version = "0.52.6" 4548 | source = "registry+https://github.com/rust-lang/crates.io-index" 4549 | checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 4550 | 4551 | [[package]] 4552 | name = "windows_x86_64_gnullvm" 4553 | version = "0.42.2" 4554 | source = "registry+https://github.com/rust-lang/crates.io-index" 4555 | checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" 4556 | 4557 | [[package]] 4558 | name = "windows_x86_64_gnullvm" 4559 | version = "0.48.5" 4560 | source = "registry+https://github.com/rust-lang/crates.io-index" 4561 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 4562 | 4563 | [[package]] 4564 | name = "windows_x86_64_gnullvm" 4565 | version = "0.52.6" 4566 | source = "registry+https://github.com/rust-lang/crates.io-index" 4567 | checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 4568 | 4569 | [[package]] 4570 | name = "windows_x86_64_msvc" 4571 | version = "0.42.2" 4572 | source = "registry+https://github.com/rust-lang/crates.io-index" 4573 | checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" 4574 | 4575 | [[package]] 4576 | name = "windows_x86_64_msvc" 4577 | version = "0.48.5" 4578 | source = "registry+https://github.com/rust-lang/crates.io-index" 4579 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 4580 | 4581 | [[package]] 4582 | name = "windows_x86_64_msvc" 4583 | version = "0.52.6" 4584 | source = "registry+https://github.com/rust-lang/crates.io-index" 4585 | checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 4586 | 4587 | [[package]] 4588 | name = "winit" 4589 | version = "0.30.9" 4590 | source = "registry+https://github.com/rust-lang/crates.io-index" 4591 | checksum = "a809eacf18c8eca8b6635091543f02a5a06ddf3dad846398795460e6e0ae3cc0" 4592 | dependencies = [ 4593 | "ahash 0.8.11", 4594 | "android-activity", 4595 | "atomic-waker", 4596 | "bitflags 2.9.0", 4597 | "block2", 4598 | "bytemuck", 4599 | "calloop", 4600 | "cfg_aliases 0.2.1", 4601 | "concurrent-queue", 4602 | "core-foundation 0.9.4", 4603 | "core-graphics 0.23.2", 4604 | "cursor-icon", 4605 | "dpi", 4606 | "js-sys", 4607 | "libc", 4608 | "memmap2", 4609 | "ndk 0.9.0", 4610 | "objc2", 4611 | "objc2-app-kit", 4612 | "objc2-foundation", 4613 | "objc2-ui-kit", 4614 | "orbclient", 4615 | "percent-encoding", 4616 | "pin-project", 4617 | "raw-window-handle", 4618 | "redox_syscall 0.4.1", 4619 | "rustix 0.38.44", 4620 | "sctk-adwaita", 4621 | "smithay-client-toolkit", 4622 | "smol_str", 4623 | "tracing", 4624 | "unicode-segmentation", 4625 | "wasm-bindgen", 4626 | "wasm-bindgen-futures", 4627 | "wayland-backend", 4628 | "wayland-client", 4629 | "wayland-protocols", 4630 | "wayland-protocols-plasma", 4631 | "web-sys", 4632 | "web-time", 4633 | "windows-sys 0.52.0", 4634 | "x11-dl", 4635 | "x11rb", 4636 | "xkbcommon-dl", 4637 | ] 4638 | 4639 | [[package]] 4640 | name = "winnow" 4641 | version = "0.7.4" 4642 | source = "registry+https://github.com/rust-lang/crates.io-index" 4643 | checksum = "0e97b544156e9bebe1a0ffbc03484fc1ffe3100cbce3ffb17eac35f7cdd7ab36" 4644 | dependencies = [ 4645 | "memchr", 4646 | ] 4647 | 4648 | [[package]] 4649 | name = "winreg" 4650 | version = "0.10.1" 4651 | source = "registry+https://github.com/rust-lang/crates.io-index" 4652 | checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" 4653 | dependencies = [ 4654 | "winapi", 4655 | ] 4656 | 4657 | [[package]] 4658 | name = "wit-bindgen-rt" 4659 | version = "0.33.0" 4660 | source = "registry+https://github.com/rust-lang/crates.io-index" 4661 | checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" 4662 | dependencies = [ 4663 | "bitflags 2.9.0", 4664 | ] 4665 | 4666 | [[package]] 4667 | name = "x11-dl" 4668 | version = "2.21.0" 4669 | source = "registry+https://github.com/rust-lang/crates.io-index" 4670 | checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" 4671 | dependencies = [ 4672 | "libc", 4673 | "once_cell", 4674 | "pkg-config", 4675 | ] 4676 | 4677 | [[package]] 4678 | name = "x11rb" 4679 | version = "0.13.1" 4680 | source = "registry+https://github.com/rust-lang/crates.io-index" 4681 | checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" 4682 | dependencies = [ 4683 | "as-raw-xcb-connection", 4684 | "gethostname", 4685 | "libc", 4686 | "libloading 0.8.6", 4687 | "once_cell", 4688 | "rustix 0.38.44", 4689 | "x11rb-protocol", 4690 | ] 4691 | 4692 | [[package]] 4693 | name = "x11rb-protocol" 4694 | version = "0.13.1" 4695 | source = "registry+https://github.com/rust-lang/crates.io-index" 4696 | checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" 4697 | 4698 | [[package]] 4699 | name = "xcursor" 4700 | version = "0.3.8" 4701 | source = "registry+https://github.com/rust-lang/crates.io-index" 4702 | checksum = "0ef33da6b1660b4ddbfb3aef0ade110c8b8a781a3b6382fa5f2b5b040fd55f61" 4703 | 4704 | [[package]] 4705 | name = "xdg-home" 4706 | version = "1.3.0" 4707 | source = "registry+https://github.com/rust-lang/crates.io-index" 4708 | checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" 4709 | dependencies = [ 4710 | "libc", 4711 | "windows-sys 0.59.0", 4712 | ] 4713 | 4714 | [[package]] 4715 | name = "xkbcommon-dl" 4716 | version = "0.4.2" 4717 | source = "registry+https://github.com/rust-lang/crates.io-index" 4718 | checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" 4719 | dependencies = [ 4720 | "bitflags 2.9.0", 4721 | "dlib", 4722 | "log", 4723 | "once_cell", 4724 | "xkeysym", 4725 | ] 4726 | 4727 | [[package]] 4728 | name = "xkeysym" 4729 | version = "0.2.1" 4730 | source = "registry+https://github.com/rust-lang/crates.io-index" 4731 | checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" 4732 | 4733 | [[package]] 4734 | name = "xml-rs" 4735 | version = "0.8.25" 4736 | source = "registry+https://github.com/rust-lang/crates.io-index" 4737 | checksum = "c5b940ebc25896e71dd073bad2dbaa2abfe97b0a391415e22ad1326d9c54e3c4" 4738 | 4739 | [[package]] 4740 | name = "yazi" 4741 | version = "0.1.6" 4742 | source = "registry+https://github.com/rust-lang/crates.io-index" 4743 | checksum = "c94451ac9513335b5e23d7a8a2b61a7102398b8cca5160829d313e84c9d98be1" 4744 | 4745 | [[package]] 4746 | name = "zbus" 4747 | version = "4.4.0" 4748 | source = "registry+https://github.com/rust-lang/crates.io-index" 4749 | checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" 4750 | dependencies = [ 4751 | "async-broadcast", 4752 | "async-executor", 4753 | "async-fs", 4754 | "async-io", 4755 | "async-lock", 4756 | "async-process", 4757 | "async-recursion", 4758 | "async-task", 4759 | "async-trait", 4760 | "blocking", 4761 | "enumflags2", 4762 | "event-listener", 4763 | "futures-core", 4764 | "futures-sink", 4765 | "futures-util", 4766 | "hex", 4767 | "nix", 4768 | "ordered-stream", 4769 | "rand 0.8.5", 4770 | "serde", 4771 | "serde_repr", 4772 | "sha1", 4773 | "static_assertions", 4774 | "tracing", 4775 | "uds_windows", 4776 | "windows-sys 0.52.0", 4777 | "xdg-home", 4778 | "zbus_macros", 4779 | "zbus_names", 4780 | "zvariant", 4781 | ] 4782 | 4783 | [[package]] 4784 | name = "zbus_macros" 4785 | version = "4.4.0" 4786 | source = "registry+https://github.com/rust-lang/crates.io-index" 4787 | checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" 4788 | dependencies = [ 4789 | "proc-macro-crate", 4790 | "proc-macro2", 4791 | "quote", 4792 | "syn 2.0.100", 4793 | "zvariant_utils", 4794 | ] 4795 | 4796 | [[package]] 4797 | name = "zbus_names" 4798 | version = "3.0.0" 4799 | source = "registry+https://github.com/rust-lang/crates.io-index" 4800 | checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" 4801 | dependencies = [ 4802 | "serde", 4803 | "static_assertions", 4804 | "zvariant", 4805 | ] 4806 | 4807 | [[package]] 4808 | name = "zeno" 4809 | version = "0.2.3" 4810 | source = "registry+https://github.com/rust-lang/crates.io-index" 4811 | checksum = "dd15f8e0dbb966fd9245e7498c7e9e5055d9e5c8b676b95bd67091cd11a1e697" 4812 | 4813 | [[package]] 4814 | name = "zerocopy" 4815 | version = "0.7.35" 4816 | source = "registry+https://github.com/rust-lang/crates.io-index" 4817 | checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" 4818 | dependencies = [ 4819 | "zerocopy-derive 0.7.35", 4820 | ] 4821 | 4822 | [[package]] 4823 | name = "zerocopy" 4824 | version = "0.8.23" 4825 | source = "registry+https://github.com/rust-lang/crates.io-index" 4826 | checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6" 4827 | dependencies = [ 4828 | "zerocopy-derive 0.8.23", 4829 | ] 4830 | 4831 | [[package]] 4832 | name = "zerocopy-derive" 4833 | version = "0.7.35" 4834 | source = "registry+https://github.com/rust-lang/crates.io-index" 4835 | checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" 4836 | dependencies = [ 4837 | "proc-macro2", 4838 | "quote", 4839 | "syn 2.0.100", 4840 | ] 4841 | 4842 | [[package]] 4843 | name = "zerocopy-derive" 4844 | version = "0.8.23" 4845 | source = "registry+https://github.com/rust-lang/crates.io-index" 4846 | checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154" 4847 | dependencies = [ 4848 | "proc-macro2", 4849 | "quote", 4850 | "syn 2.0.100", 4851 | ] 4852 | 4853 | [[package]] 4854 | name = "zune-core" 4855 | version = "0.4.12" 4856 | source = "registry+https://github.com/rust-lang/crates.io-index" 4857 | checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" 4858 | 4859 | [[package]] 4860 | name = "zune-inflate" 4861 | version = "0.2.54" 4862 | source = "registry+https://github.com/rust-lang/crates.io-index" 4863 | checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" 4864 | dependencies = [ 4865 | "simd-adler32", 4866 | ] 4867 | 4868 | [[package]] 4869 | name = "zune-jpeg" 4870 | version = "0.4.14" 4871 | source = "registry+https://github.com/rust-lang/crates.io-index" 4872 | checksum = "99a5bab8d7dedf81405c4bb1f2b83ea057643d9cb28778cea9eecddeedd2e028" 4873 | dependencies = [ 4874 | "zune-core", 4875 | ] 4876 | 4877 | [[package]] 4878 | name = "zvariant" 4879 | version = "4.2.0" 4880 | source = "registry+https://github.com/rust-lang/crates.io-index" 4881 | checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" 4882 | dependencies = [ 4883 | "endi", 4884 | "enumflags2", 4885 | "serde", 4886 | "static_assertions", 4887 | "zvariant_derive", 4888 | ] 4889 | 4890 | [[package]] 4891 | name = "zvariant_derive" 4892 | version = "4.2.0" 4893 | source = "registry+https://github.com/rust-lang/crates.io-index" 4894 | checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" 4895 | dependencies = [ 4896 | "proc-macro-crate", 4897 | "proc-macro2", 4898 | "quote", 4899 | "syn 2.0.100", 4900 | "zvariant_utils", 4901 | ] 4902 | 4903 | [[package]] 4904 | name = "zvariant_utils" 4905 | version = "2.1.0" 4906 | source = "registry+https://github.com/rust-lang/crates.io-index" 4907 | checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" 4908 | dependencies = [ 4909 | "proc-macro2", 4910 | "quote", 4911 | "syn 2.0.100", 4912 | ] 4913 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chibi" 3 | version = "0.1.0" 4 | edition = "2024" 5 | 6 | [dependencies] 7 | async-channel = "2.3.1" 8 | async-stream = "0.3.6" 9 | cpal = "0.15.3" 10 | iced = { version = "0.13.1", features = ["image"] } 11 | iced_futures = "0.13.2" 12 | image = "0.25.5" 13 | lazy_static = "1.5.0" 14 | rand = "0.9.0" 15 | serde = "1.0.219" 16 | toml = "0.8.20" 17 | 18 | [target.'cfg(target_os = "linux")'.dependencies] 19 | alsa = "0.9.1" 20 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Mozilla Public License Version 2.0 2 | ================================== 3 | 4 | 1. Definitions 5 | -------------- 6 | 7 | 1.1. "Contributor" 8 | means each individual or legal entity that creates, contributes to 9 | the creation of, or owns Covered Software. 10 | 11 | 1.2. "Contributor Version" 12 | means the combination of the Contributions of others (if any) used 13 | by a Contributor and that particular Contributor's Contribution. 14 | 15 | 1.3. "Contribution" 16 | means Covered Software of a particular Contributor. 17 | 18 | 1.4. "Covered Software" 19 | means Source Code Form to which the initial Contributor has attached 20 | the notice in Exhibit A, the Executable Form of such Source Code 21 | Form, and Modifications of such Source Code Form, in each case 22 | including portions thereof. 23 | 24 | 1.5. "Incompatible With Secondary Licenses" 25 | means 26 | 27 | (a) that the initial Contributor has attached the notice described 28 | in Exhibit B to the Covered Software; or 29 | 30 | (b) that the Covered Software was made available under the terms of 31 | version 1.1 or earlier of the License, but not also under the 32 | terms of a Secondary License. 33 | 34 | 1.6. "Executable Form" 35 | means any form of the work other than Source Code Form. 36 | 37 | 1.7. "Larger Work" 38 | means a work that combines Covered Software with other material, in 39 | a separate file or files, that is not Covered Software. 40 | 41 | 1.8. "License" 42 | means this document. 43 | 44 | 1.9. "Licensable" 45 | means having the right to grant, to the maximum extent possible, 46 | whether at the time of the initial grant or subsequently, any and 47 | all of the rights conveyed by this License. 48 | 49 | 1.10. "Modifications" 50 | means any of the following: 51 | 52 | (a) any file in Source Code Form that results from an addition to, 53 | deletion from, or modification of the contents of Covered 54 | Software; or 55 | 56 | (b) any new file in Source Code Form that contains any Covered 57 | Software. 58 | 59 | 1.11. "Patent Claims" of a Contributor 60 | means any patent claim(s), including without limitation, method, 61 | process, and apparatus claims, in any patent Licensable by such 62 | Contributor that would be infringed, but for the grant of the 63 | License, by the making, using, selling, offering for sale, having 64 | made, import, or transfer of either its Contributions or its 65 | Contributor Version. 66 | 67 | 1.12. "Secondary License" 68 | means either the GNU General Public License, Version 2.0, the GNU 69 | Lesser General Public License, Version 2.1, the GNU Affero General 70 | Public License, Version 3.0, or any later versions of those 71 | licenses. 72 | 73 | 1.13. "Source Code Form" 74 | means the form of the work preferred for making modifications. 75 | 76 | 1.14. "You" (or "Your") 77 | means an individual or a legal entity exercising rights under this 78 | License. For legal entities, "You" includes any entity that 79 | controls, is controlled by, or is under common control with You. For 80 | purposes of this definition, "control" means (a) the power, direct 81 | or indirect, to cause the direction or management of such entity, 82 | whether by contract or otherwise, or (b) ownership of more than 83 | fifty percent (50%) of the outstanding shares or beneficial 84 | ownership of such entity. 85 | 86 | 2. License Grants and Conditions 87 | -------------------------------- 88 | 89 | 2.1. Grants 90 | 91 | Each Contributor hereby grants You a world-wide, royalty-free, 92 | non-exclusive license: 93 | 94 | (a) under intellectual property rights (other than patent or trademark) 95 | Licensable by such Contributor to use, reproduce, make available, 96 | modify, display, perform, distribute, and otherwise exploit its 97 | Contributions, either on an unmodified basis, with Modifications, or 98 | as part of a Larger Work; and 99 | 100 | (b) under Patent Claims of such Contributor to make, use, sell, offer 101 | for sale, have made, import, and otherwise transfer either its 102 | Contributions or its Contributor Version. 103 | 104 | 2.2. Effective Date 105 | 106 | The licenses granted in Section 2.1 with respect to any Contribution 107 | become effective for each Contribution on the date the Contributor first 108 | distributes such Contribution. 109 | 110 | 2.3. Limitations on Grant Scope 111 | 112 | The licenses granted in this Section 2 are the only rights granted under 113 | this License. No additional rights or licenses will be implied from the 114 | distribution or licensing of Covered Software under this License. 115 | Notwithstanding Section 2.1(b) above, no patent license is granted by a 116 | Contributor: 117 | 118 | (a) for any code that a Contributor has removed from Covered Software; 119 | or 120 | 121 | (b) for infringements caused by: (i) Your and any other third party's 122 | modifications of Covered Software, or (ii) the combination of its 123 | Contributions with other software (except as part of its Contributor 124 | Version); or 125 | 126 | (c) under Patent Claims infringed by Covered Software in the absence of 127 | its Contributions. 128 | 129 | This License does not grant any rights in the trademarks, service marks, 130 | or logos of any Contributor (except as may be necessary to comply with 131 | the notice requirements in Section 3.4). 132 | 133 | 2.4. Subsequent Licenses 134 | 135 | No Contributor makes additional grants as a result of Your choice to 136 | distribute the Covered Software under a subsequent version of this 137 | License (see Section 10.2) or under the terms of a Secondary License (if 138 | permitted under the terms of Section 3.3). 139 | 140 | 2.5. Representation 141 | 142 | Each Contributor represents that the Contributor believes its 143 | Contributions are its original creation(s) or it has sufficient rights 144 | to grant the rights to its Contributions conveyed by this License. 145 | 146 | 2.6. Fair Use 147 | 148 | This License is not intended to limit any rights You have under 149 | applicable copyright doctrines of fair use, fair dealing, or other 150 | equivalents. 151 | 152 | 2.7. Conditions 153 | 154 | Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted 155 | in Section 2.1. 156 | 157 | 3. Responsibilities 158 | ------------------- 159 | 160 | 3.1. Distribution of Source Form 161 | 162 | All distribution of Covered Software in Source Code Form, including any 163 | Modifications that You create or to which You contribute, must be under 164 | the terms of this License. You must inform recipients that the Source 165 | Code Form of the Covered Software is governed by the terms of this 166 | License, and how they can obtain a copy of this License. You may not 167 | attempt to alter or restrict the recipients' rights in the Source Code 168 | Form. 169 | 170 | 3.2. Distribution of Executable Form 171 | 172 | If You distribute Covered Software in Executable Form then: 173 | 174 | (a) such Covered Software must also be made available in Source Code 175 | Form, as described in Section 3.1, and You must inform recipients of 176 | the Executable Form how they can obtain a copy of such Source Code 177 | Form by reasonable means in a timely manner, at a charge no more 178 | than the cost of distribution to the recipient; and 179 | 180 | (b) You may distribute such Executable Form under the terms of this 181 | License, or sublicense it under different terms, provided that the 182 | license for the Executable Form does not attempt to limit or alter 183 | the recipients' rights in the Source Code Form under this License. 184 | 185 | 3.3. Distribution of a Larger Work 186 | 187 | You may create and distribute a Larger Work under terms of Your choice, 188 | provided that You also comply with the requirements of this License for 189 | the Covered Software. If the Larger Work is a combination of Covered 190 | Software with a work governed by one or more Secondary Licenses, and the 191 | Covered Software is not Incompatible With Secondary Licenses, this 192 | License permits You to additionally distribute such Covered Software 193 | under the terms of such Secondary License(s), so that the recipient of 194 | the Larger Work may, at their option, further distribute the Covered 195 | Software under the terms of either this License or such Secondary 196 | License(s). 197 | 198 | 3.4. Notices 199 | 200 | You may not remove or alter the substance of any license notices 201 | (including copyright notices, patent notices, disclaimers of warranty, 202 | or limitations of liability) contained within the Source Code Form of 203 | the Covered Software, except that You may alter any license notices to 204 | the extent required to remedy known factual inaccuracies. 205 | 206 | 3.5. Application of Additional Terms 207 | 208 | You may choose to offer, and to charge a fee for, warranty, support, 209 | indemnity or liability obligations to one or more recipients of Covered 210 | Software. However, You may do so only on Your own behalf, and not on 211 | behalf of any Contributor. You must make it absolutely clear that any 212 | such warranty, support, indemnity, or liability obligation is offered by 213 | You alone, and You hereby agree to indemnify every Contributor for any 214 | liability incurred by such Contributor as a result of warranty, support, 215 | indemnity or liability terms You offer. You may include additional 216 | disclaimers of warranty and limitations of liability specific to any 217 | jurisdiction. 218 | 219 | 4. Inability to Comply Due to Statute or Regulation 220 | --------------------------------------------------- 221 | 222 | If it is impossible for You to comply with any of the terms of this 223 | License with respect to some or all of the Covered Software due to 224 | statute, judicial order, or regulation then You must: (a) comply with 225 | the terms of this License to the maximum extent possible; and (b) 226 | describe the limitations and the code they affect. Such description must 227 | be placed in a text file included with all distributions of the Covered 228 | Software under this License. Except to the extent prohibited by statute 229 | or regulation, such description must be sufficiently detailed for a 230 | recipient of ordinary skill to be able to understand it. 231 | 232 | 5. Termination 233 | -------------- 234 | 235 | 5.1. The rights granted under this License will terminate automatically 236 | if You fail to comply with any of its terms. However, if You become 237 | compliant, then the rights granted under this License from a particular 238 | Contributor are reinstated (a) provisionally, unless and until such 239 | Contributor explicitly and finally terminates Your grants, and (b) on an 240 | ongoing basis, if such Contributor fails to notify You of the 241 | non-compliance by some reasonable means prior to 60 days after You have 242 | come back into compliance. Moreover, Your grants from a particular 243 | Contributor are reinstated on an ongoing basis if such Contributor 244 | notifies You of the non-compliance by some reasonable means, this is the 245 | first time You have received notice of non-compliance with this License 246 | from such Contributor, and You become compliant prior to 30 days after 247 | Your receipt of the notice. 248 | 249 | 5.2. If You initiate litigation against any entity by asserting a patent 250 | infringement claim (excluding declaratory judgment actions, 251 | counter-claims, and cross-claims) alleging that a Contributor Version 252 | directly or indirectly infringes any patent, then the rights granted to 253 | You by any and all Contributors for the Covered Software under Section 254 | 2.1 of this License shall terminate. 255 | 256 | 5.3. In the event of termination under Sections 5.1 or 5.2 above, all 257 | end user license agreements (excluding distributors and resellers) which 258 | have been validly granted by You or Your distributors under this License 259 | prior to termination shall survive termination. 260 | 261 | ************************************************************************ 262 | * * 263 | * 6. Disclaimer of Warranty * 264 | * ------------------------- * 265 | * * 266 | * Covered Software is provided under this License on an "as is" * 267 | * basis, without warranty of any kind, either expressed, implied, or * 268 | * statutory, including, without limitation, warranties that the * 269 | * Covered Software is free of defects, merchantable, fit for a * 270 | * particular purpose or non-infringing. The entire risk as to the * 271 | * quality and performance of the Covered Software is with You. * 272 | * Should any Covered Software prove defective in any respect, You * 273 | * (not any Contributor) assume the cost of any necessary servicing, * 274 | * repair, or correction. This disclaimer of warranty constitutes an * 275 | * essential part of this License. No use of any Covered Software is * 276 | * authorized under this License except under this disclaimer. * 277 | * * 278 | ************************************************************************ 279 | 280 | ************************************************************************ 281 | * * 282 | * 7. Limitation of Liability * 283 | * -------------------------- * 284 | * * 285 | * Under no circumstances and under no legal theory, whether tort * 286 | * (including negligence), contract, or otherwise, shall any * 287 | * Contributor, or anyone who distributes Covered Software as * 288 | * permitted above, be liable to You for any direct, indirect, * 289 | * special, incidental, or consequential damages of any character * 290 | * including, without limitation, damages for lost profits, loss of * 291 | * goodwill, work stoppage, computer failure or malfunction, or any * 292 | * and all other commercial damages or losses, even if such party * 293 | * shall have been informed of the possibility of such damages. This * 294 | * limitation of liability shall not apply to liability for death or * 295 | * personal injury resulting from such party's negligence to the * 296 | * extent applicable law prohibits such limitation. Some * 297 | * jurisdictions do not allow the exclusion or limitation of * 298 | * incidental or consequential damages, so this exclusion and * 299 | * limitation may not apply to You. * 300 | * * 301 | ************************************************************************ 302 | 303 | 8. Litigation 304 | ------------- 305 | 306 | Any litigation relating to this License may be brought only in the 307 | courts of a jurisdiction where the defendant maintains its principal 308 | place of business and such litigation shall be governed by laws of that 309 | jurisdiction, without reference to its conflict-of-law provisions. 310 | Nothing in this Section shall prevent a party's ability to bring 311 | cross-claims or counter-claims. 312 | 313 | 9. Miscellaneous 314 | ---------------- 315 | 316 | This License represents the complete agreement concerning the subject 317 | matter hereof. If any provision of this License is held to be 318 | unenforceable, such provision shall be reformed only to the extent 319 | necessary to make it enforceable. Any law or regulation which provides 320 | that the language of a contract shall be construed against the drafter 321 | shall not be used to construe this License against a Contributor. 322 | 323 | 10. Versions of the License 324 | --------------------------- 325 | 326 | 10.1. New Versions 327 | 328 | Mozilla Foundation is the license steward. Except as provided in Section 329 | 10.3, no one other than the license steward has the right to modify or 330 | publish new versions of this License. Each version will be given a 331 | distinguishing version number. 332 | 333 | 10.2. Effect of New Versions 334 | 335 | You may distribute the Covered Software under the terms of the version 336 | of the License under which You originally received the Covered Software, 337 | or under the terms of any subsequent version published by the license 338 | steward. 339 | 340 | 10.3. Modified Versions 341 | 342 | If you create software not governed by this License, and you want to 343 | create a new license for such software, you may create and use a 344 | modified version of this License if you rename the license and remove 345 | any references to the name of the license steward (except to note that 346 | such modified license differs from this License). 347 | 348 | 10.4. Distributing Source Code Form that is Incompatible With Secondary 349 | Licenses 350 | 351 | If You choose to distribute Source Code Form that is Incompatible With 352 | Secondary Licenses under the terms of this version of the License, the 353 | notice described in Exhibit B of this License must be attached. 354 | 355 | Exhibit A - Source Code Form License Notice 356 | ------------------------------------------- 357 | 358 | This Source Code Form is subject to the terms of the Mozilla Public 359 | License, v. 2.0. If a copy of the MPL was not distributed with this 360 | file, You can obtain one at https://mozilla.org/MPL/2.0/. 361 | 362 | If it is not possible or desirable to put the notice in a particular 363 | file, then You may include the notice in a location (such as a LICENSE 364 | file in a relevant directory) where a recipient would be likely to look 365 | for such a notice. 366 | 367 | You may add additional accurate notices of copyright ownership. 368 | 369 | Exhibit B - "Incompatible With Secondary Licenses" Notice 370 | --------------------------------------------------------- 371 | 372 | This Source Code Form is "Incompatible With Secondary Licenses", as 373 | defined by the Mozilla Public License, v. 2.0. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 |

chibi

3 |

4 | Indie PNG-tuber application made in Rust supporting all major platforms. 5 |

6 | 7 | 8 | 9 | 10 | GitHub License 11 |

12 | 13 | 14 | ## Usage 15 | 1. Place your images in `assets`, named as `1.png` and `2.png` (see example) 16 | 2. Optionally customize the microphone threshold to get the best result 17 | 3. Hide the UI using Escape so you are ready to stream! 18 | 19 | ## Screenshots 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | ## Attribution 28 | The example assets used in this application are created by @chereverie 29 | - Twitter: @mewdokas 30 | - Tumblr: chereverie 31 | - Instagram: chereverie.art 32 | -------------------------------------------------------------------------------- /assets/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/megabytesofrem/chibi/92187282202773ec3042ecfb33241800796e6ae0/assets/1.png -------------------------------------------------------------------------------- /assets/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/megabytesofrem/chibi/92187282202773ec3042ecfb33241800796e6ae0/assets/2.png -------------------------------------------------------------------------------- /chibi: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | [ -f target/debug/chibi ] || cargo build 3 | [ -f target/debug/chibi ] && ./target/debug/chibi 4 | -------------------------------------------------------------------------------- /config.toml: -------------------------------------------------------------------------------- 1 | microphone_threshold = 0.15 2 | deadband_factor = 0.09 3 | flicker_input = false 4 | -------------------------------------------------------------------------------- /screenshots/main_ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/megabytesofrem/chibi/92187282202773ec3042ecfb33241800796e6ae0/screenshots/main_ui.png -------------------------------------------------------------------------------- /screenshots/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/megabytesofrem/chibi/92187282202773ec3042ecfb33241800796e6ae0/screenshots/settings.png -------------------------------------------------------------------------------- /src/app.rs: -------------------------------------------------------------------------------- 1 | // 2 | // chibi: Indie PNG-tuber application made in Rust supporting all major platforms 3 | // Licensed under the MPL-2.0 license 4 | // 5 | 6 | use std::path::Path; 7 | use std::sync::Arc; 8 | use std::sync::Mutex; 9 | 10 | use async_channel::Receiver; 11 | use cpal::SupportedStreamConfig; 12 | use cpal::traits::DeviceTrait; 13 | 14 | use iced::Alignment; 15 | use iced::Event; 16 | use iced::alignment; 17 | use iced::event; 18 | use iced::keyboard::Key; 19 | use iced::keyboard::key::Named; 20 | use iced::widget::Container; 21 | use iced::widget::Space; 22 | use iced::widget::image::Handle; 23 | use iced::widget::toggler; 24 | use iced::widget::{button, column, combo_box, container, image, row, slider, text}; 25 | use iced::{Element, Length}; 26 | 27 | use crate::capture; 28 | use crate::capture::InputDevice; 29 | use crate::config::ChibiConfig; 30 | use crate::lock_and_unlock; 31 | 32 | const APP_VERSION: f32 = 1.1; 33 | 34 | #[derive(Debug, Clone)] 35 | pub enum View { 36 | Home, 37 | Settings, 38 | About, 39 | } 40 | 41 | #[derive(Debug, Clone)] 42 | pub enum Message { 43 | MicActive(bool), 44 | ThresholdChanged(f32), 45 | DeadbandChanged(f32), 46 | InputChanged(InputDevice), 47 | FlickerChanged(bool), 48 | SwitchView(View), 49 | AppEvent(iced::Event), 50 | } 51 | 52 | // Internal application state 53 | pub struct ChibiApp { 54 | // Application configuration 55 | pub config: Arc>, 56 | 57 | images: Arc>, 58 | 59 | // Input device state 60 | pub available_input_devices: combo_box::State, 61 | pub selected_input_device: Option, 62 | pub selected_input_config: SupportedStreamConfig, 63 | 64 | // UI events 65 | mic_activated: bool, 66 | show_buttons: bool, 67 | show_modal: bool, 68 | chroma_key: bool, 69 | 70 | // Currently displayed image 71 | curr_view: View, 72 | curr_image: Option, 73 | pub receiver: Option>, 74 | } 75 | 76 | // App implementation 77 | 78 | fn aligned_button<'a>(text: &'a str) -> button::Button<'a, Message> { 79 | button::Button::new( 80 | text::Text::new(text) 81 | .align_x(alignment::Horizontal::Center) 82 | .width(Length::Fill), 83 | ) 84 | .width(Length::Fill) 85 | .padding(5) 86 | } 87 | 88 | fn detailed_slider<'a, Message>( 89 | label: String, 90 | detail: String, 91 | range: std::ops::RangeInclusive, 92 | value: f32, 93 | message: impl Fn(f32) -> Message + 'a, 94 | ) -> Container<'a, Message> 95 | where 96 | Message: Clone + 'a, 97 | { 98 | container(column![ 99 | text(label).size(14), 100 | text(detail) 101 | .size(12) 102 | .width(Length::Fill) 103 | .color([0.8, 0.8, 0.8]), 104 | container(slider(range, value, move |v| message(v)).step(0.01),), 105 | ]) 106 | } 107 | 108 | impl Default for ChibiApp { 109 | fn default() -> Self { 110 | Self { 111 | config: Arc::new(Mutex::new(ChibiConfig::default())), 112 | images: Arc::new(vec![]), 113 | available_input_devices: combo_box::State::new(capture::get_input_devices()), 114 | selected_input_device: capture::get_default_device(), 115 | selected_input_config: capture::get_default_device() 116 | .unwrap() 117 | .raw_device 118 | .default_input_config() 119 | .unwrap(), 120 | mic_activated: false, 121 | show_buttons: true, 122 | show_modal: false, 123 | chroma_key: false, 124 | curr_view: View::Home, 125 | curr_image: None, 126 | receiver: None, 127 | } 128 | } 129 | } 130 | 131 | impl ChibiApp { 132 | fn view_home<'a>(&self) -> Element { 133 | let avatar_image = self 134 | .curr_image 135 | .clone() 136 | .unwrap_or(self.get_image(0).unwrap().clone()); 137 | 138 | let buttons = if self.show_buttons { 139 | row![ 140 | aligned_button("Settings").on_press(Message::SwitchView(View::Settings)), 141 | aligned_button("About").on_press(Message::SwitchView(View::About)), 142 | ] 143 | .spacing(5) 144 | } else { 145 | row![Space::new(Length::Fill, Length::Fill)] 146 | }; 147 | 148 | let layout = column![ 149 | column![ 150 | image(avatar_image) 151 | .width(Length::Fixed(300.0)) 152 | .height(Length::Fixed(300.0)), 153 | if self.show_buttons { 154 | text(format!("Microphone activated: {}", self.mic_activated)).size(12) 155 | } else { 156 | text("") 157 | } 158 | ] 159 | .align_x(Alignment::Center) 160 | .width(Length::Fill), 161 | Space::new(Length::Fill, Length::Fill), 162 | buttons 163 | ]; 164 | 165 | if self.chroma_key { 166 | container(layout) 167 | .width(Length::Fill) 168 | .height(Length::Fill) 169 | .style(|_| container::Style { 170 | background: Some(iced::Background::Color(iced::Color::from_rgb( 171 | 1.0, 0.0, 1.0, 172 | ))), 173 | ..Default::default() 174 | }) 175 | .padding(15) 176 | .into() 177 | } else { 178 | container(layout) 179 | .width(Length::Fill) 180 | .height(Length::Fill) 181 | .padding(15) 182 | .into() 183 | } 184 | } 185 | 186 | fn view_settings<'a>(&self) -> Element { 187 | let config = crate::lock_and_unlock!(self.config); 188 | 189 | // FIXME: Combobox shows up initially as "default" when nothing is selected 190 | let threshold_slider = detailed_slider( 191 | format!("Microphone threshold: {:.2}", config.microphone_threshold).into(), 192 | "Adjust the microphone detection threshold. \ 193 | Too low of a value may cause the microphone to activate too easily." 194 | .trim() 195 | .into(), 196 | 0.0..=1.0, 197 | config.microphone_threshold, 198 | |value| Message::ThresholdChanged((value * 100.0).round() / 100.0), 199 | ); 200 | 201 | let deadband_slider = detailed_slider( 202 | format!("Deadband factor: {:.2}", config.deadband_factor).into(), 203 | "Adjust the deadband factor. \ 204 | Deadband that determines when the microphone stays active prior to a signal drop off" 205 | .trim() 206 | .into(), 207 | 0.0..=1.0, 208 | config.deadband_factor, 209 | |value| Message::DeadbandChanged((value * 100.0).round() / 100.0), 210 | ); 211 | 212 | let flicker_toggler = column![ 213 | toggler(config.flicker_input) 214 | .label("Flicker between on/off at random intervals") 215 | .on_toggle(Message::FlickerChanged), 216 | text("Can make the microphone appear more visually appealing, but less accurate.") 217 | .color([0.8, 0.8, 0.8]) 218 | .size(12), 219 | ]; 220 | 221 | let combo_input = column![ 222 | text("Select an input device:").size(14), 223 | combo_box( 224 | &self.available_input_devices, 225 | "Input device", 226 | self.selected_input_device.as_ref(), 227 | Message::InputChanged, 228 | ), 229 | text("After selecting an input device, you will need to restart the application.") 230 | .color([0.8, 0.8, 0.8]) 231 | .size(12) 232 | ]; 233 | 234 | let ui_hints = column![ 235 | text("Press 'ESC' to show/hide UI elements") 236 | .color([0.8, 0.8, 0.8]) 237 | .size(12), 238 | text("Press 'c' to toggle chroma key") 239 | .color([0.8, 0.8, 0.8]) 240 | .size(12), 241 | ]; 242 | 243 | let layout = column![ 244 | threshold_slider, 245 | deadband_slider, 246 | flicker_toggler, 247 | combo_input, 248 | Space::new(Length::Fill, Length::Fill), 249 | ui_hints, 250 | text(format!("Microphone activated: {}", self.mic_activated)).size(12), 251 | Space::new(Length::Fill, Length::Fill), 252 | aligned_button("Back").on_press(Message::SwitchView(View::Home)) 253 | ] 254 | .spacing(10) 255 | .padding(15); 256 | 257 | container(layout) 258 | .width(Length::Fill) 259 | .height(Length::Fill) 260 | .into() 261 | } 262 | 263 | fn view_about<'a>(&self) -> Element { 264 | let labels = column![ 265 | text(format!("Chibi {}", APP_VERSION)).size(24), 266 | text("Indie PNG-tuber application made in Rust supporting all major platforms") 267 | .size(12), 268 | text("The example assets used in this application are created by @chereverie").size(12), 269 | text("Licensed under the MPL-2.0 license").size(12), 270 | ] 271 | .align_x(alignment::Horizontal::Center) 272 | .width(Length::Fill) 273 | .spacing(10); 274 | 275 | let layout = column![ 276 | labels, 277 | Space::new(Length::Fill, Length::Fill), 278 | aligned_button("Back").on_press(Message::SwitchView(View::Home)) 279 | ] 280 | .spacing(10); 281 | 282 | container(layout) 283 | .width(Length::Fill) 284 | .height(Length::Fill) 285 | .padding(15) 286 | .into() 287 | } 288 | 289 | pub fn view(&self) -> Element { 290 | match self.curr_view { 291 | View::Home => self.view_home(), 292 | View::Settings => self.view_settings(), 293 | View::About => self.view_about(), 294 | } 295 | } 296 | 297 | pub fn update(&mut self, message: Message) { 298 | let mut config = lock_and_unlock!(self.config); 299 | 300 | match message { 301 | Message::MicActive(active) => { 302 | if active { 303 | self.curr_image = Some(self.get_image(1).unwrap().clone()); 304 | } else { 305 | self.curr_image = Some(self.get_image(0).unwrap().clone()); 306 | } 307 | 308 | self.mic_activated = active; 309 | } 310 | Message::ThresholdChanged(threshold) => { 311 | config.microphone_threshold = threshold; 312 | config.save(); 313 | } 314 | Message::DeadbandChanged(deadband) => { 315 | config.deadband_factor = deadband; 316 | config.save(); 317 | } 318 | Message::SwitchView(view) => { 319 | self.curr_view = view; 320 | } 321 | Message::InputChanged(device) => { 322 | self.selected_input_device = Some(device.clone()); 323 | self.show_modal = true; 324 | } 325 | Message::FlickerChanged(flicker) => { 326 | config.flicker_input = flicker; 327 | config.save(); 328 | } 329 | Message::AppEvent(event) => { 330 | if let Event::Keyboard(iced::keyboard::Event::KeyPressed { key, .. }) = event { 331 | match key { 332 | Key::Named(Named::Escape) => { 333 | self.show_buttons = !self.show_buttons; 334 | } 335 | Key::Character(c) if c == "c" => { 336 | self.chroma_key = !self.chroma_key; 337 | } 338 | _ => {} 339 | } 340 | } 341 | } 342 | } 343 | } 344 | 345 | pub fn subscription(&self) -> iced::Subscription { 346 | // Subscribe to application events 347 | event::listen().map(Message::AppEvent) 348 | } 349 | } 350 | 351 | impl ChibiApp { 352 | pub fn new(config: ChibiConfig, receiver: Option>) -> Self { 353 | Self { 354 | config: Arc::new(Mutex::new(config)), 355 | receiver, 356 | ..Default::default() 357 | } 358 | } 359 | 360 | pub fn load_images(&mut self, path: &Path) { 361 | let images = std::fs::read_dir(path) 362 | .expect("Failed to read directory") 363 | .map(|entry| { 364 | let entry = entry.expect("Failed to read entry"); 365 | let path = entry.path(); 366 | 367 | Handle::from_path(path) 368 | }) 369 | .collect(); 370 | 371 | self.set_images(images); 372 | } 373 | 374 | pub fn set_images(&mut self, images: Vec) { 375 | self.images = Arc::new(images); 376 | } 377 | 378 | pub fn get_image(&self, index: usize) -> Option<&Handle> { 379 | self.images.get(index) 380 | } 381 | } 382 | -------------------------------------------------------------------------------- /src/capture/alsa_util.rs: -------------------------------------------------------------------------------- 1 | use std::collections::HashMap; 2 | use std::ffi::CString; 3 | 4 | #[cfg(target_os = "linux")] 5 | pub fn get_alsa_hint_for(name: &str) -> Option { 6 | let hints = get_alsa_hints(); 7 | hints.get(name).cloned() 8 | } 9 | 10 | #[cfg(target_os = "linux")] 11 | pub fn get_alsa_hints() -> HashMap { 12 | use alsa::Direction; 13 | use alsa::device_name::HintIter; 14 | 15 | let mut hints = HashMap::new(); 16 | 17 | let iface = CString::new("pcm").unwrap(); 18 | let hint_iter = HintIter::new(None, &iface).expect("Failed to get ALSA hints"); 19 | 20 | for hint in hint_iter { 21 | let name = hint.name.expect("Failed to get hint name"); 22 | let desc = hint.desc.expect("Failed to get hint description"); 23 | 24 | if let Some(direction) = hint.direction { 25 | if direction != Direction::Capture { 26 | continue; 27 | } 28 | } 29 | 30 | hints.insert(name.to_string(), desc.to_string()); 31 | } 32 | 33 | hints 34 | } 35 | -------------------------------------------------------------------------------- /src/capture/mod.rs: -------------------------------------------------------------------------------- 1 | mod alsa_util; 2 | 3 | use std::fmt; 4 | use std::sync::{Arc, Mutex}; 5 | use std::time::Duration; 6 | 7 | use crate::config::ChibiConfig; 8 | use crate::lock_and_unlock; 9 | use async_channel::Sender; 10 | use cpal::{ 11 | Device, SupportedStreamConfig, 12 | traits::{DeviceTrait, HostTrait, StreamTrait}, 13 | }; 14 | use rand::Rng; 15 | 16 | /// Abstraction over `cpal::Device` which includes a friendly name 17 | #[derive(Clone)] 18 | pub struct InputDevice { 19 | pub raw_device: cpal::Device, 20 | pub friendly_name: String, 21 | } 22 | 23 | impl fmt::Debug for InputDevice { 24 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 25 | write!(f, "{} ({:?})", self.friendly_name, self.raw_device.name()) 26 | } 27 | } 28 | 29 | impl fmt::Display for InputDevice { 30 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 31 | write!(f, "{}", self.friendly_name) 32 | } 33 | } 34 | 35 | impl InputDevice { 36 | pub fn new(raw_device: cpal::Device, friendly_name: String) -> Self { 37 | Self { 38 | raw_device, 39 | friendly_name, 40 | } 41 | } 42 | } 43 | 44 | /// Root mean square (RMS) amplitude of a signal 45 | fn rms_amplitude(samples: &[f32]) -> f32 { 46 | let sum: f32 = samples.iter().map(|x| x * x).sum(); 47 | (sum / samples.len() as f32).sqrt() 48 | } 49 | 50 | /// Wrapper over `cpal::default_input_device` 51 | pub fn get_default_device() -> Option { 52 | let host = cpal::default_host(); 53 | let default_device = host 54 | .default_input_device() 55 | .expect("Failed to get default input device"); 56 | 57 | let input_device; 58 | 59 | // Query it with ALSA hints on Linux 60 | #[cfg(target_os = "linux")] 61 | { 62 | use crate::capture::alsa_util; 63 | 64 | let dev_name = default_device 65 | .clone() 66 | .name() 67 | .expect("Failed to get device name"); 68 | 69 | input_device = Some(alsa_util::get_alsa_hint_for(&dev_name).map_or_else( 70 | || InputDevice::new(default_device.clone(), dev_name.clone()), 71 | |_| InputDevice::new(default_device.clone(), dev_name.clone()), 72 | )); 73 | } 74 | 75 | // On any other platform, just use the device name 76 | #[cfg(not(target_os = "linux"))] 77 | { 78 | let dev_name = default_device.name().expect("Failed to get device name"); 79 | input_device = Some(InputDevice::new(default_device, dev_name)); 80 | } 81 | 82 | input_device 83 | } 84 | 85 | /// Return a list of input devices tagged with their friendly names 86 | /// 87 | /// On Linux, this will use the `alsa` crate to query hints 88 | /// On any other platform, this will use the device name as returned by `cpal` 89 | pub fn get_input_devices() -> Vec { 90 | let input_devices: Vec; 91 | 92 | let host = cpal::default_host(); 93 | let devices: Vec = host 94 | .input_devices() 95 | .expect("No input devices found") 96 | .collect(); 97 | 98 | // On Linux query ALSA hints for the device description and use that 99 | // This spams some ALSA warnings but it's (probably) fine: 100 | // ALSA lib pcm_dsnoop.c:567:(snd_pcm_dsnoop_open) unable to open slave 101 | // ALSA lib pcm_dmix.c:1000:(snd_pcm_dmix_open) unable to open slave 102 | #[cfg(target_os = "linux")] 103 | { 104 | use crate::capture::alsa_util; 105 | 106 | let hints = alsa_util::get_alsa_hints(); 107 | input_devices = devices 108 | .into_iter() 109 | .map(|dev| { 110 | let dev_name = dev.name().unwrap_or_else(|_| "Unknown".into()); 111 | 112 | InputDevice::new( 113 | dev, 114 | match dev_name.to_lowercase() { 115 | s if s.contains("pipewire") => "Pipewire Media Server".to_string(), 116 | s if s.contains("pulse") => "PulseAudio".to_string(), 117 | _ => hints.get(&dev_name).cloned().unwrap_or(dev_name), 118 | }, 119 | ) 120 | }) 121 | .collect(); 122 | } 123 | 124 | // On any other platform than Linux, just use the device name 125 | #[cfg(not(target_os = "linux"))] 126 | { 127 | input_devices = devices 128 | .iter() 129 | .map(|dev| { 130 | let dev_name = dev.name().expect("Failed to get device name"); 131 | InputDevice::new(dev.clone(), dev_name) 132 | }) 133 | .collect(); 134 | } 135 | 136 | input_devices 137 | } 138 | 139 | fn capture_input( 140 | config: Arc>, 141 | input_device: Arc>, 142 | input_config: Arc>, 143 | buffer: Arc>>, 144 | 145 | sender: Sender, 146 | ) -> Result { 147 | // Future additions: 148 | // TODO: Amplify the signal when we receive it, before calculating RMS 149 | // TODO: DSP processing so the signal is as clean as possible 150 | 151 | let err_fn = |err| eprintln!("Error in audio stream: {}", err); 152 | let mut mic_active = false; 153 | 154 | input_device.lock().unwrap().build_input_stream( 155 | &input_config.lock().unwrap().clone().into(), 156 | move |data: &[f32], _| { 157 | let config = lock_and_unlock!(config); 158 | 159 | let mut rng = rand::rng(); 160 | 161 | // Compute RMS amplitude 162 | let rms = rms_amplitude(data); 163 | 164 | let rms_threshold_on = config.microphone_threshold; 165 | let rms_threshold_off = rms_threshold_on * config.deadband_factor; // Hysteresis, aka "deadband" 166 | 167 | if mic_active { 168 | if rms < rms_threshold_off { 169 | mic_active = false; 170 | } 171 | } else { 172 | if rms >= rms_threshold_on { 173 | mic_active = true; 174 | } 175 | } 176 | 177 | if mic_active { 178 | if config.flicker_input { 179 | // Pick a random duration for the flicker to make it look more natural 180 | let random_duration = Duration::from_millis(rng.random_range(30..=100)); 181 | 182 | sender.try_send(true).ok(); 183 | std::thread::sleep(random_duration); 184 | sender.try_send(false).ok(); 185 | } else { 186 | sender.try_send(true).ok(); 187 | } 188 | } else { 189 | sender.try_send(false).ok(); 190 | } 191 | 192 | // Only process audio if the microphone is active 193 | if !mic_active { 194 | return; 195 | } 196 | 197 | let samples: Vec = data 198 | .iter() 199 | .map(|&sample| { 200 | let clamped = sample.max(-1.0).min(1.0); 201 | (clamped * 32767.0) as i16 202 | }) 203 | .collect(); 204 | 205 | // Append samples to the shared buffer 206 | let mut buf = buffer.lock().unwrap(); 207 | buf.extend_from_slice(&samples); 208 | }, 209 | err_fn, 210 | None, 211 | ) 212 | } 213 | 214 | pub fn spawn_capture_thread( 215 | config: Arc>, 216 | input_device: Arc>, 217 | input_config: Arc>, 218 | sender: Sender, 219 | ) { 220 | let buffer = Arc::new(Mutex::new(Vec::::new())); 221 | 222 | std::thread::spawn(move || { 223 | let stream = capture_input(config, input_device, input_config, buffer.clone(), sender) 224 | .expect("Failed to capture input stream"); 225 | 226 | stream.play().expect("Failed to play stream"); 227 | 228 | loop { 229 | std::thread::sleep(std::time::Duration::from_millis(100)); 230 | } 231 | }); 232 | } 233 | -------------------------------------------------------------------------------- /src/config.rs: -------------------------------------------------------------------------------- 1 | use core::fmt; 2 | use std::fs; 3 | 4 | use serde::ser::Error as SerdeError; 5 | use serde::{Deserialize, Serialize}; 6 | 7 | // Application configuration 8 | #[derive(Clone, Serialize, Deserialize)] 9 | pub struct ChibiConfig { 10 | // TODO: Implement rnnoise as an optional feature, although it will increase 11 | // latency potentially 12 | /// Microphone detection threshold (RMS amplitude) 13 | #[serde(serialize_with = "round_to_hundredths")] 14 | pub microphone_threshold: f32, 15 | 16 | /// Deadband that determines when the microphone stays active prior to a signal drop off 17 | #[serde(serialize_with = "round_to_hundredths")] 18 | pub deadband_factor: f32, 19 | 20 | /// Can appear more visually appealing, but less accurate 21 | pub flicker_input: bool, 22 | } 23 | 24 | impl ChibiConfig { 25 | pub fn new(microphone_threshold: f32) -> Self { 26 | Self { 27 | microphone_threshold, 28 | ..Default::default() 29 | } 30 | } 31 | 32 | pub fn load(&mut self) { 33 | // Create the config file if it doesn't exist 34 | if !fs::metadata("config.toml").is_ok() { 35 | println!("config.toml not found, creating a new one"); 36 | fs::write("config.toml", toml::to_string(self).unwrap()).unwrap(); 37 | } 38 | 39 | // Load the config file 40 | let config_file = fs::read_to_string("config.toml").ok(); 41 | if config_file.is_none() { 42 | println!("Failed to read config.toml"); 43 | return; 44 | } 45 | 46 | println!("Loaded config.toml successfully"); 47 | let config: ChibiConfig = toml::from_str(config_file.as_deref().unwrap()).unwrap(); 48 | self.microphone_threshold = config.microphone_threshold; 49 | self.deadband_factor = config.deadband_factor; 50 | self.flicker_input = config.flicker_input; 51 | } 52 | 53 | pub fn save(&self) { 54 | fs::write("config.toml", toml::to_string(self).unwrap()).expect("Failed to save config"); 55 | } 56 | } 57 | 58 | impl Default for ChibiConfig { 59 | fn default() -> Self { 60 | Self { 61 | microphone_threshold: 0.12, 62 | deadband_factor: 0.30, 63 | flicker_input: false, 64 | } 65 | } 66 | } 67 | 68 | // Custom serializer to get serde to do what I want 69 | fn round_to_hundredths(x: &f32, s: S) -> Result 70 | where 71 | S: serde::Serializer, 72 | { 73 | // Hack to get serde to serialize with two decimal places 74 | 75 | let formatted = format!("{:.2}", x); 76 | let num: f64 = formatted.parse().map_err(S::Error::custom)?; 77 | s.serialize_f64(num) 78 | } 79 | 80 | #[macro_export] 81 | macro_rules! lock_and_unlock { 82 | ($mutex:expr) => { 83 | $mutex.lock().unwrap() 84 | }; 85 | } 86 | -------------------------------------------------------------------------------- /src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod app; 2 | pub mod capture; 3 | pub mod config; 4 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | // 2 | // chibi: Indie PNG-tuber application made in Rust supporting all major platforms 3 | // Licensed under the MPL-2.0 license 4 | // 5 | 6 | use app::{ChibiApp, Message}; 7 | use chibi::{app, capture, config, lock_and_unlock}; 8 | use config::ChibiConfig; 9 | 10 | use iced::{Task, Theme}; 11 | use std::sync::{Arc, Mutex}; 12 | 13 | fn main() -> iced::Result { 14 | // Create a channel to communicate with the detector thread 15 | let (sender, receiever) = async_channel::unbounded(); 16 | let mut app = ChibiApp::new(ChibiConfig::default(), Some(receiever.clone())); 17 | 18 | // Load images from assets in the current directory 19 | let current_dir = std::env::current_dir().expect("Failed to get current directory"); 20 | let assets_dir = current_dir.join("assets"); 21 | 22 | lock_and_unlock!(app.config).load(); 23 | app.load_images(&assets_dir); 24 | 25 | let input_device = Arc::new(Mutex::new(app.selected_input_device.clone().unwrap())); 26 | let input_config = Arc::new(Mutex::new(app.selected_input_config.clone())); 27 | 28 | // Spawn the capture thread 29 | capture::spawn_capture_thread( 30 | app.config.clone(), 31 | Arc::new(Mutex::new(input_device.lock().unwrap().raw_device.clone())), 32 | input_config, 33 | sender, 34 | ); 35 | 36 | // Capture the stream of messages from the capture thread and turn them into messages 37 | let stream_task = Task::stream(receiever).map(Message::MicActive); 38 | 39 | iced::application("chibi", ChibiApp::update, ChibiApp::view) 40 | .theme(move |_| Theme::TokyoNight) 41 | .window(iced::window::Settings { 42 | size: (400.0, 500.0).into(), 43 | resizable: false, 44 | ..Default::default() 45 | }) 46 | .subscription(ChibiApp::subscription) 47 | .run_with(|| (app, stream_task)) 48 | } 49 | --------------------------------------------------------------------------------