#[cfg(all(not(target_arch = "wasm32"), target_os = "macos"))]
fn query() -> bool {
std::process::Command::new("defaults")
.args(["read", "com.apple.universalaccess", "reduceMotion"])
.output()
.map(|o| o.status.success() && String::from_utf8_lossy(&o.stdout).trim() == "1")
.unwrap_or(false)
}
#[cfg(all(not(target_arch = "wasm32"), target_os = "linux"))]
fn query() -> bool {
std::process::Command::new("gsettings")
.args(["get", "org.gnome.desktop.interface", "enable-animations"])
.output()
.map(|o| o.status.success() && String::from_utf8_lossy(&o.stdout).trim() == "false")
.unwrap_or(false)
}
#[cfg(all(not(target_arch = "wasm32"), target_os = "windows"))]
fn query() -> bool {
std::process::Command::new("reg")
.args([
"query",
r"HKCU\Control Panel\Desktop\WindowMetrics",
"/v",
"MinAnimate",
])
.output()
.map(|o| {
o.status.success()
&& String::from_utf8_lossy(&o.stdout)
.trim()
.split_whitespace()
.next_back()
== Some("0")
})
.unwrap_or(false)
}
#[cfg(all(
not(target_arch = "wasm32"),
not(any(target_os = "macos", target_os = "linux", target_os = "windows"))
))]
fn query() -> bool {
false
}
#[cfg(not(target_arch = "wasm32"))]
pub(crate) fn os_reduce_motion() -> bool {
query()
}
#[cfg(all(test, not(target_arch = "wasm32")))]
mod tests {
#[test]
fn os_reduce_motion_never_panics() {
let _ = super::os_reduce_motion();
}
}