SIGN IN SIGN UP

Replace pulsectl-rs with local pulse module (#241)

* Replace pulsectl-rs with local pulse module

pulsectl-rs is archived and has unfixed bugs: SourceController uses
sink (not source) APIs for get_default_device, set_device_mute_by_index,
and set_device_mute_by_name, causing --input-volume mute-toggle to
silently fail.

Replace it with a focused pulse module (~350 lines) that calls
libpulse-binding directly with the correct sink/source APIs for each
controller. This also removes the substring dependency.

* Use a global Pulse Context instead of recreating it every call

---------

Co-authored-by: Erik Reider <35975961+ErikReider@users.noreply.github.com>
W
William Wernert committed
4a902d14f2ee653d148ea5bd00a42f50c7caa171
Parent: f4f70bd
Committed by GitHub <noreply@github.com> on 6/4/2026, 11:40:48 PM