mod commands; #[cfg(target_os = "macos")] mod mac; use crate::commands::{set_theme, set_title}; use std::sync::atomic::AtomicBool; use tauri::{generate_handler, plugin, plugin::TauriPlugin, Manager, Runtime}; pub trait AppHandleMacWindowExt { /// Sets whether to use the native titlebar fn set_native_titlebar(&self, enable: bool); } impl AppHandleMacWindowExt for tauri::AppHandle { fn set_native_titlebar(&self, enable: bool) { self.state::().native_titlebar.store(enable, std::sync::atomic::Ordering::Relaxed); } } pub(crate) struct PluginState { native_titlebar: AtomicBool, } pub fn init() -> TauriPlugin { plugin::Builder::new("yaak-mac-window") .setup(move |app, _| { app.manage(PluginState { native_titlebar: AtomicBool::new(false) }); Ok(()) }) .invoke_handler(generate_handler![set_title, set_theme]) .on_window_ready(move |window| { #[cfg(target_os = "macos")] { mac::setup_traffic_light_positioner(&window); } }) .build() }