From 4fd9ccdd2e16a910648b60d8536155ad2b7456e2 Mon Sep 17 00:00:00 2001 From: Jeremy Whiting Date: Mon, 19 May 2025 10:53:33 -0600 Subject: [PATCH] Add screenreader support to steamos-manager. Add ScreenReader1 interface to xml to enable/disable using screen reader. Implements getting and setting pitch, rate, volume, enabled. Restarts orca when any of the above properties are changed. Load values from orca user-settings.conf Use systemd unit to start/stop/restart orca. --- Cargo.lock | 25 +++ Cargo.toml | 1 + com.steampowered.SteamOSManager1.xml | 34 ++++ src/lib.rs | 1 + src/manager/user.rs | 82 ++++++++ src/screenreader.rs | 289 +++++++++++++++++++++++++++ 6 files changed, 432 insertions(+) create mode 100644 src/screenreader.rs diff --git a/Cargo.lock b/Cargo.lock index 2b49a2a..91225db 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -437,6 +437,12 @@ dependencies = [ "either", ] +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + [[package]] name = "lazy_static" version = "1.5.0" @@ -725,6 +731,12 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + [[package]] name = "serde" version = "1.0.219" @@ -745,6 +757,18 @@ dependencies = [ "syn", ] +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + [[package]] name = "serde_repr" version = "0.1.20" @@ -815,6 +839,7 @@ dependencies = [ "num_enum", "regex", "serde", + "serde_json", "strum", "tempfile", "tokio", diff --git a/Cargo.toml b/Cargo.toml index 6b82013..c60a604 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,6 +19,7 @@ nix = { version = "0.30", default-features = false, features = ["fs", "poll", "s num_enum = "0.7" regex = "1" serde = { version = "1.0", default-features = false, features = ["derive"] } +serde_json = "1.0" strum = { version = "0.27", features = ["derive"] } tempfile = "3" tokio = { version = "1", default-features = false, features = ["fs", "io-std", "io-util", "macros", "process", "rt-multi-thread", "signal", "sync"] } diff --git a/com.steampowered.SteamOSManager1.xml b/com.steampowered.SteamOSManager1.xml index e32e03b..fba5e5d 100644 --- a/com.steampowered.SteamOSManager1.xml +++ b/com.steampowered.SteamOSManager1.xml @@ -298,6 +298,40 @@ + + + + + + + + + + + + + + +