From c05ef98d7764a1a9dafe9002fd8fc3bb17ce40f5 Mon Sep 17 00:00:00 2001 From: LGUG2Z Date: Fri, 30 Oct 2026 23:35:42 -0700 Subject: [PATCH] refactor(bar-core): the BarWidget trait moves into komorebi-bar-core The three-line trait every widget implements is split off widgets/widget.rs (the WidgetConfig enum stays there until every widget it names has moved) and becomes komorebi_bar_core::widgets::widget::BarWidget; each bar's widget.rs re-exports it, so crate::widgets::widget::BarWidget resolves as before. The core's config module re-exports the leaf types (crate::config::LabelPrefix) so that the widgets can later move without a text edit. Verified: Windows cargo clippy --workspace --locked --all-targets -D warnings clean; macOS fake-CC cargo check --locked --workspace --all-targets finished, 0 errors; native cargo test -p komorebi-bar-core 3 unit + 2 oracle passed. No schema type changed. Not verified: rendering. --- crates/komorebi-bar-core/src/config/mod.rs | 2 ++ crates/komorebi-bar-core/src/lib.rs | 2 ++ crates/komorebi-bar-core/src/widgets/mod.rs | 1 + crates/komorebi-bar-core/src/widgets/widget.rs | 7 +++++++ komorebi-bar/src/widgets/widget.rs | 7 +------ komorebi-for-mac/komorebi-bar/src/widgets/widget.rs | 7 +------ 6 files changed, 14 insertions(+), 12 deletions(-) create mode 100644 crates/komorebi-bar-core/src/widgets/mod.rs create mode 100644 crates/komorebi-bar-core/src/widgets/widget.rs diff --git a/crates/komorebi-bar-core/src/config/mod.rs b/crates/komorebi-bar-core/src/config/mod.rs index cd408564..26535e72 100644 --- a/crates/komorebi-bar-core/src/config/mod.rs +++ b/crates/komorebi-bar-core/src/config/mod.rs @@ -1 +1,3 @@ pub mod types; + +pub use types::*; diff --git a/crates/komorebi-bar-core/src/lib.rs b/crates/komorebi-bar-core/src/lib.rs index 96d08e22..b65fd141 100644 --- a/crates/komorebi-bar-core/src/lib.rs +++ b/crates/komorebi-bar-core/src/lib.rs @@ -14,3 +14,5 @@ pub mod statics; pub mod config; pub mod render; + +pub mod widgets; diff --git a/crates/komorebi-bar-core/src/widgets/mod.rs b/crates/komorebi-bar-core/src/widgets/mod.rs new file mode 100644 index 00000000..2e7b8529 --- /dev/null +++ b/crates/komorebi-bar-core/src/widgets/mod.rs @@ -0,0 +1 @@ +pub mod widget; diff --git a/crates/komorebi-bar-core/src/widgets/widget.rs b/crates/komorebi-bar-core/src/widgets/widget.rs new file mode 100644 index 00000000..f992a972 --- /dev/null +++ b/crates/komorebi-bar-core/src/widgets/widget.rs @@ -0,0 +1,7 @@ +use crate::render::RenderConfig; +use eframe::egui::Context; +use eframe::egui::Ui; + +pub trait BarWidget { + fn render(&mut self, ctx: &Context, ui: &mut Ui, config: &mut RenderConfig); +} diff --git a/komorebi-bar/src/widgets/widget.rs b/komorebi-bar/src/widgets/widget.rs index 6da0806b..0b9fa4c6 100644 --- a/komorebi-bar/src/widgets/widget.rs +++ b/komorebi-bar/src/widgets/widget.rs @@ -1,4 +1,3 @@ -use crate::render::RenderConfig; use crate::widgets::applications::Applications; use crate::widgets::applications::ApplicationsConfig; use crate::widgets::battery::Battery; @@ -27,14 +26,10 @@ use crate::widgets::time::Time; use crate::widgets::time::TimeConfig; use crate::widgets::update::Update; use crate::widgets::update::UpdateConfig; -use eframe::egui::Context; -use eframe::egui::Ui; use serde::Deserialize; use serde::Serialize; -pub trait BarWidget { - fn render(&mut self, ctx: &Context, ui: &mut Ui, config: &mut RenderConfig); -} +pub use komorebi_bar_core::widgets::widget::BarWidget; #[derive(Clone, Debug, Serialize, Deserialize)] #[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] diff --git a/komorebi-for-mac/komorebi-bar/src/widgets/widget.rs b/komorebi-for-mac/komorebi-bar/src/widgets/widget.rs index d1b1c0e1..0f78b517 100644 --- a/komorebi-for-mac/komorebi-bar/src/widgets/widget.rs +++ b/komorebi-for-mac/komorebi-bar/src/widgets/widget.rs @@ -1,4 +1,3 @@ -use crate::render::RenderConfig; use crate::widgets::applications::Applications; use crate::widgets::applications::ApplicationsConfig; use crate::widgets::battery::Battery; @@ -23,14 +22,10 @@ use crate::widgets::time::Time; use crate::widgets::time::TimeConfig; use crate::widgets::update::Update; use crate::widgets::update::UpdateConfig; -use eframe::egui::Context; -use eframe::egui::Ui; use serde::Deserialize; use serde::Serialize; -pub trait BarWidget { - fn render(&mut self, ctx: &Context, ui: &mut Ui, config: &mut RenderConfig); -} +pub use komorebi_bar_core::widgets::widget::BarWidget; #[derive(Clone, Debug, Serialize, Deserialize)] #[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]