[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 = []
lucide-icons = []
svg-rasterize = ["dep:resvg"]
system-icons = [
"dep:freedesktop-icons",
"dep:objc2-core-foundation",
"dep:objc2-core-graphics",
"material-icons",
]
[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"