A single 306 KB GUI-subsystem binary with no tray icon and no settings window: one hidden popup owns the hotkey, the device-change callbacks and the flyout, and the process sleeps in GetMessageW at 0% CPU in between. Windows exposes no public API for setting the default audio endpoint, so this uses the undocumented IPolicyConfig COM interface, confined to src/policy.rs. Verified working on build 26200. Everything else - enumeration, IMMNotificationClient, RegisterHotKey, the flyout - is documented Win32. The flyout uses the DWM acrylic backdrop and rounded corners the shell uses for its own flyouts, with text drawn via DrawThemeTextEx and DTT_COMPOSITED into a 32-bpp DIB, which is what keeps GDI from leaving black fringes on a composited surface. Console and Multimedia roles move by default; Communications stays put so voice chat keeps its headset. Config is a hand-parsed INI reloaded on the next keypress, keeping the dependency list to the windows crate alone. Built by cross-compiling from a devcontainer with mingw-w64, so nothing is installed on the Windows host and the exe imports only system DLLs. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
157 lines
3.8 KiB
TOML
157 lines
3.8 KiB
TOML
# This file is automatically @generated by Cargo.
|
|
# It is not intended for manual editing.
|
|
version = 4
|
|
|
|
[[package]]
|
|
name = "audioswitch"
|
|
version = "0.1.0"
|
|
dependencies = [
|
|
"windows",
|
|
"windows-core",
|
|
]
|
|
|
|
[[package]]
|
|
name = "proc-macro2"
|
|
version = "1.0.107"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
|
|
dependencies = [
|
|
"unicode-ident",
|
|
]
|
|
|
|
[[package]]
|
|
name = "quote"
|
|
version = "1.0.47"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
|
|
dependencies = [
|
|
"proc-macro2",
|
|
]
|
|
|
|
[[package]]
|
|
name = "syn"
|
|
version = "2.0.119"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
|
|
dependencies = [
|
|
"proc-macro2",
|
|
"quote",
|
|
"unicode-ident",
|
|
]
|
|
|
|
[[package]]
|
|
name = "unicode-ident"
|
|
version = "1.0.25"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "ab72a15cf68d77cb0987d3684aa8a45c5ef827e8cb49ee2f30bfd7ba2feb519f"
|
|
|
|
[[package]]
|
|
name = "windows"
|
|
version = "0.62.2"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580"
|
|
dependencies = [
|
|
"windows-collections",
|
|
"windows-core",
|
|
"windows-future",
|
|
"windows-numerics",
|
|
]
|
|
|
|
[[package]]
|
|
name = "windows-collections"
|
|
version = "0.3.2"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610"
|
|
dependencies = [
|
|
"windows-core",
|
|
]
|
|
|
|
[[package]]
|
|
name = "windows-core"
|
|
version = "0.62.2"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
|
|
dependencies = [
|
|
"windows-implement",
|
|
"windows-interface",
|
|
"windows-link",
|
|
"windows-result",
|
|
"windows-strings",
|
|
]
|
|
|
|
[[package]]
|
|
name = "windows-future"
|
|
version = "0.3.2"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb"
|
|
dependencies = [
|
|
"windows-core",
|
|
"windows-link",
|
|
"windows-threading",
|
|
]
|
|
|
|
[[package]]
|
|
name = "windows-implement"
|
|
version = "0.60.2"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
|
|
dependencies = [
|
|
"proc-macro2",
|
|
"quote",
|
|
"syn",
|
|
]
|
|
|
|
[[package]]
|
|
name = "windows-interface"
|
|
version = "0.59.3"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
|
|
dependencies = [
|
|
"proc-macro2",
|
|
"quote",
|
|
"syn",
|
|
]
|
|
|
|
[[package]]
|
|
name = "windows-link"
|
|
version = "0.2.1"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
|
|
|
|
[[package]]
|
|
name = "windows-numerics"
|
|
version = "0.3.1"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26"
|
|
dependencies = [
|
|
"windows-core",
|
|
"windows-link",
|
|
]
|
|
|
|
[[package]]
|
|
name = "windows-result"
|
|
version = "0.4.1"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
|
|
dependencies = [
|
|
"windows-link",
|
|
]
|
|
|
|
[[package]]
|
|
name = "windows-strings"
|
|
version = "0.5.1"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
|
|
dependencies = [
|
|
"windows-link",
|
|
]
|
|
|
|
[[package]]
|
|
name = "windows-threading"
|
|
version = "0.2.1"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37"
|
|
dependencies = [
|
|
"windows-link",
|
|
]
|