[package] name = "joule_tray" version = "0.1.0" edition.workspace = true publish.workspace = true license = "GPL-3.0-or-later" [lints] workspace = true # The Joule Code system tray: a status-bar/notification-area item showing the # local agent-mei fleet (daemons + GUI editors registered in the instance dir) at # a glance, with Quit. Each OS backend is written directly against the platform — # macOS AppKit (objc2), Windows Shell_NotifyIcon (the windows crate), Linux # StatusNotifierItem over D-Bus (zbus) — no third-party UI framework, so it owns # its layer like the rest of the stack. [[bin]] name = "joule-tray" path = "src/main.rs" [dependencies] serde_json.workspace = true # Windows: notification-area icon via the official Win32 bindings. [target.'cfg(target_os = "windows")'.dependencies] windows = { version = "0.62", features = [ "Win32_Foundation", "Win32_UI_WindowsAndMessaging", "Win32_UI_Shell", "Win32_System_LibraryLoader", # WNDCLASSW/RegisterClassW pull in HBRUSH/HICON/HCURSOR from Gdi. "Win32_Graphics_Gdi", ] } # Linux: freedesktop StatusNotifierItem + dbusmenu over the session bus. [target.'cfg(target_os = "linux")'.dependencies] zbus = "5" [target.'cfg(target_os = "macos")'.dependencies] objc2 = "0.6" objc2-foundation = { version = "0.3", default-features = false, features = [ "std", "NSString", "NSArray", "NSEnumerator", ] } objc2-app-kit = { version = "0.3", default-features = false, features = [ "std", # CGFloat for statusItemWithLength / NSVariableStatusItemLength. "objc2-core-foundation", "NSApplication", # NSApplicationActivationPolicy is defined alongside NSRunningApplication. "NSRunningApplication", "NSResponder", "NSStatusBar", "NSStatusItem", "NSStatusBarButton", "NSButton", "NSControl", "NSView", "NSMenu", "NSMenuItem", ] }