mirror of
https://github.com/Zedfrigg/ironbar.git
synced 2025-07-02 19:21:03 +02:00
feat: ability to add custom modules instead native modules
Resolves #131
This commit is contained in:
parent
42ae915645
commit
994f4a4a12
21 changed files with 497 additions and 252 deletions
|
@ -27,7 +27,10 @@ use crate::modules::upower::UpowerModule;
|
|||
use crate::modules::volume::VolumeModule;
|
||||
#[cfg(feature = "workspaces")]
|
||||
use crate::modules::workspaces::WorkspacesModule;
|
||||
|
||||
use crate::modules::{AnyModuleFactory, ModuleFactory, ModuleInfo};
|
||||
use cfg_if::cfg_if;
|
||||
use color_eyre::Result;
|
||||
use serde::Deserialize;
|
||||
use std::collections::HashMap;
|
||||
|
||||
|
@ -64,6 +67,49 @@ pub enum ModuleConfig {
|
|||
Workspaces(Box<WorkspacesModule>),
|
||||
}
|
||||
|
||||
impl ModuleConfig {
|
||||
pub fn create(
|
||||
self,
|
||||
module_factory: &AnyModuleFactory,
|
||||
container: >k::Box,
|
||||
info: &ModuleInfo,
|
||||
) -> Result<()> {
|
||||
macro_rules! create {
|
||||
($module:expr) => {
|
||||
module_factory.create(*$module, container, info)
|
||||
};
|
||||
}
|
||||
|
||||
match self {
|
||||
#[cfg(feature = "clipboard")]
|
||||
Self::Clipboard(module) => create!(module),
|
||||
#[cfg(feature = "clock")]
|
||||
Self::Clock(module) => create!(module),
|
||||
Self::Custom(module) => create!(module),
|
||||
#[cfg(feature = "focused")]
|
||||
Self::Focused(module) => create!(module),
|
||||
Self::Label(module) => create!(module),
|
||||
#[cfg(feature = "launcher")]
|
||||
Self::Launcher(module) => create!(module),
|
||||
#[cfg(feature = "music")]
|
||||
Self::Music(module) => create!(module),
|
||||
#[cfg(feature = "notifications")]
|
||||
Self::Notifications(module) => create!(module),
|
||||
Self::Script(module) => create!(module),
|
||||
#[cfg(feature = "sys_info")]
|
||||
Self::SysInfo(module) => create!(module),
|
||||
#[cfg(feature = "tray")]
|
||||
Self::Tray(module) => create!(module),
|
||||
#[cfg(feature = "upower")]
|
||||
Self::Upower(module) => create!(module),
|
||||
#[cfg(feature = "volume")]
|
||||
Self::Volume(module) => create!(module),
|
||||
#[cfg(feature = "workspaces")]
|
||||
Self::Workspaces(module) => create!(module),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, Clone)]
|
||||
pub enum BarEntryConfig {
|
||||
Single(BarConfig),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue