use crate::cli::DeleteArgs; use crate::error::Result; use crate::pw::{loopback, PwGraph}; use crate::state::{self, VmicState}; use crate::ui; pub fn run(args: DeleteArgs) -> Result<()> { let conn = state::open_db()?; let name = state::normalize(&args.name); let mut state = VmicState::load(&conn, &name)?; let graph = PwGraph::connect()?; if let Some(loopback_id) = state.loopback_id { loopback::unload_pulse_module(loopback_id)?; } // Unlink a mixed-in hardware source explicitly; the links would also // die with the nodes below. super::unsource(&graph, &mut state)?; if let Some(pid) = state.mix_pid { loopback::terminate_stage(pid, &state.mix_name)?; } if let Some(pid) = state.sink_pid { loopback::terminate_stage(pid, &state.sink_name)?; } VmicState::delete(&conn, &name)?; ui::ok(&format!("Deleted virtual mic '{name}'.")); Ok(()) }