Skip to main content

zerolaunch_plugin_api/services/theme/
theme_provider.rs

1use crate::host::HostApiError;
2
3/// 宿主实际生效的界面主题。
4///
5/// 由宿主在配置模式与系统主题之间完成解析;插件只消费最终的浅色或深色结果。
6#[derive(Debug, Clone, Copy, PartialEq, Eq)]
7pub enum Theme {
8    /// 浅色主题;宿主当前界面使用浅色配色。
9    Light,
10    /// 深色主题;宿主当前界面使用深色配色。
11    Dark,
12}
13
14impl Theme {
15    /// 主题短名称("light"/"dark"),用于事件载荷与日志文本。
16    pub fn as_str(&self) -> &'static str {
17        match self {
18            Theme::Light => "light",
19            Theme::Dark => "dark",
20        }
21    }
22}
23
24/// 提供宿主当前实际生效主题的平台能力。
25///
26/// 由平台层实现并注入 HostApi,PluginHandle 仅负责向插件转发查询结果。
27pub trait ThemeProvider: Send + Sync {
28    /// 查询当前系统主题;宿主显式配置的 light/dark 由 HostApi 在上层优先处理。
29    fn current_system_theme(&self) -> Result<Theme, HostApiError>;
30}