From 2508919d931465a7961dfcdcefe250ae9019ef76 Mon Sep 17 00:00:00 2001 From: Jeremy Whiting Date: Tue, 17 Jun 2025 18:02:13 -0600 Subject: [PATCH] Tell orca to reload settings after we change them. Use SIGUSR1 to tell orca to reload the settings we just wrote. --- src/screenreader.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/screenreader.rs b/src/screenreader.rs index 8d6f3a1..c463783 100644 --- a/src/screenreader.rs +++ b/src/screenreader.rs @@ -293,6 +293,7 @@ impl<'dbus> OrcaManager<'dbus> { self.set_orca_option(PITCH_SETTING, pitch).await?; self.pitch = pitch; + self.reload_orca().await?; Ok(()) } @@ -305,6 +306,7 @@ impl<'dbus> OrcaManager<'dbus> { self.set_orca_option(RATE_SETTING, rate).await?; self.rate = rate; + self.reload_orca().await?; Ok(()) } @@ -317,6 +319,7 @@ impl<'dbus> OrcaManager<'dbus> { self.set_orca_option(VOLUME_SETTING, volume).await?; self.volume = volume; + self.reload_orca().await?; Ok(()) } @@ -423,6 +426,19 @@ impl<'dbus> OrcaManager<'dbus> { Ok(()) } + #[cfg(test)] + async fn reload_orca(&self) -> Result<()> { + Ok(()) + } + + #[cfg(not(test))] + async fn reload_orca(&self) -> Result<()> { + // TODO: Use dbus api to tell orca to reload settings once dbus api is packaged. + let pid = self.get_orca_pid()?; + signal::kill(pid, signal::Signal::SIGUSR1)?; + Ok(()) + } + fn get_orca_pid(&self) -> Result { let mut system = System::new(); system.refresh_all();