native-theme 0.5.6

Cross-platform native theme detection and loading for Rust GUI applications
Documentation
[package]
name = "native-theme"
version.workspace = true
edition.workspace = true
license.workspace = true
rust-version.workspace = true
repository.workspace = true
homepage.workspace = true
keywords.workspace = true
categories.workspace = true
readme = "README.md"
description = "Cross-platform native theme detection and loading for Rust GUI applications"

[features]
kde = ["dep:configparser"]
portal = ["dep:ashpd"]
portal-tokio = ["portal", "ashpd/tokio"]
portal-async-io = ["portal", "ashpd/async-io"]
windows = ["dep:windows"]
macos = ["dep:objc2", "dep:objc2-foundation", "dep:objc2-app-kit", "dep:block2"]
linux = ["kde", "portal-tokio"]
linux-async-io = ["kde", "portal-async-io"]
native = ["linux", "macos", "windows"]
native-async-io = ["linux-async-io", "macos", "windows"]
watch = ["dep:notify", "dep:zbus"]
material-icons = [] # Bundle Material Symbols SVGs as cross-platform fallback
lucide-icons = [] # Bundle Lucide SVGs as optional icon set
svg-rasterize = ["dep:resvg"] # Optional SVG-to-RGBA rasterization via resvg
system-icons = [
    "dep:freedesktop-icons",
    "dep:objc2-core-foundation",
    "dep:objc2-core-graphics",
    "material-icons",
] # Platform icon theme lookup with bundled fallback

[dependencies]
resvg = { version = "0.47", optional = true, default-features = false }
serde.workspace = true
serde_with.workspace = true
toml.workspace = true

[target.'cfg(target_os = "macos")'.dependencies]
objc2 = { version = "0.6.4", optional = true }
objc2-foundation = { version = "0.3.2", optional = true, features = [
    "NSString",
    "NSUserDefaults",
    "NSDistributedNotificationCenter",
    "NSNotification",
    "NSRunLoop",
    "NSOperation",
    "block2",
] }
objc2-app-kit = { version = "0.3.2", optional = true, features = [
    "NSColor",
    "NSColorSpace",
    "NSAppearance",
    "NSFont",
    "NSFontDescriptor",
    "NSScroller",
    "objc2-core-foundation",
    "NSImage",
    "NSImageRep",
    "NSGraphicsContext",
    "objc2-core-graphics",
    "NSWorkspace",
    "NSAccessibility",
] }
block2 = { version = ">=0.6.2, <0.8.0", optional = true }
objc2-core-foundation = { version = "0.3.2", optional = true, features = [
    "CFCGTypes",
    "CFRunLoop",
    "CFDate",
] }
objc2-core-graphics = { version = "0.3.2", optional = true, features = [
    "CGBitmapContext",
    "CGColorSpace",
    "CGContext",
    "CGGeometry",
    "CGImage",
] }

[target.'cfg(target_os = "linux")'.dependencies]
ashpd = { version = "0.13.9", optional = true, default-features = false, features = [
    "settings",
] }
configparser = { version = "3.1.0", optional = true }
freedesktop-icons = { version = "0.4", optional = true }
notify = { version = "8.2", optional = true, default-features = false }
zbus = { version = "5.14", optional = true, default-features = false, features = [
    "blocking-api",
] }

[target.'cfg(target_os = "windows")'.dependencies]
windows = { version = "0.62.2", optional = true, default-features = false, features = [
    "UI_ViewManagement",
    "Win32_UI_WindowsAndMessaging",
    "Win32_UI_Accessibility",
    "Win32_UI_HiDpi",
    "Win32_Graphics_Gdi",
    "Win32_Graphics_Dwm",
    "Win32_UI_Shell",
    "Foundation_Metadata",
    "Win32_System_Com",
    "Win32_System_Threading",
] }

[dev-dependencies]
proptest = "1.11"
serde_json = "1.0.149"