toumei 1.1.0

Detects system tray transparency on macOS, Windows, and Linux
Documentation
use objc2::rc::Retained;
use objc2::runtime::AnyObject;
use objc2_foundation::{ns_string, NSUserDefaults};
use objc2::msg_send;

use crate::{Error, Mode};

pub fn detect_tray_transparency() -> Result<Mode, Error> {
    unsafe {
        let defaults = NSUserDefaults::standardUserDefaults();
        let ua_domain = defaults
            .persistentDomainForName(ns_string!("com.apple.universalaccess"))
            .ok_or(Error::PersistentDomainFailed)?;

        let reduce_transparency = ua_domain
            .objectForKey(ns_string!("reduceTransparency"))
            .map(|value: Retained<AnyObject>| {
                let value: &AnyObject = &*value;
                let reduced: bool = msg_send![value, boolValue];
                reduced
            })
            .unwrap_or(false);

        Ok((!reduce_transparency).into())
    }
}