1
0
Fork 0
mirror of https://github.com/Zedfrigg/ironbar.git synced 2025-08-17 14:51:04 +02:00

refactor: split bar/top-level config structs

This allows for some options which are not actually bar-level to be separated, which makes some work moving forward a little easier and keeps things cleaner.
This commit is contained in:
Jake Stanger 2024-03-29 21:48:44 +00:00
parent 4aab6d5061
commit 706e040e25
No known key found for this signature in database
GPG key ID: C51FC8F9CB0BEA61
5 changed files with 81 additions and 56 deletions

View file

@ -64,10 +64,16 @@ pub enum ModuleConfig {
Workspaces(Box<WorkspacesModule>),
}
#[derive(Debug, Deserialize, Clone)]
pub enum BarEntryConfig {
Single(BarConfig),
Monitors(HashMap<String, MonitorConfig>),
}
#[derive(Debug, Clone)]
pub enum MonitorConfig {
Single(Config),
Multiple(Vec<Config>),
Single(BarConfig),
Multiple(Vec<BarConfig>),
}
#[derive(Debug, Deserialize, Copy, Clone, PartialEq, Eq)]
@ -98,7 +104,7 @@ pub struct MarginConfig {
}
#[derive(Debug, Deserialize, Clone)]
pub struct Config {
pub struct BarConfig {
#[serde(default)]
pub position: BarPosition,
#[serde(default = "default_true")]
@ -107,8 +113,6 @@ pub struct Config {
pub height: i32,
#[serde(default)]
pub margin: MarginConfig,
#[serde(default = "default_popup_gap")]
pub popup_gap: i32,
pub name: Option<String>,
#[serde(default)]
@ -119,16 +123,15 @@ pub struct Config {
/// GTK icon theme to use.
pub icon_theme: Option<String>,
pub ironvar_defaults: Option<HashMap<Box<str>, String>>,
pub start: Option<Vec<ModuleConfig>>,
pub center: Option<Vec<ModuleConfig>>,
pub end: Option<Vec<ModuleConfig>>,
pub monitors: Option<HashMap<String, MonitorConfig>>,
#[serde(default = "default_popup_gap")]
pub popup_gap: i32,
}
impl Default for Config {
impl Default for BarConfig {
fn default() -> Self {
cfg_if! {
if #[cfg(feature = "clock")] {
@ -155,20 +158,27 @@ impl Default for Config {
name: None,
start_hidden: None,
autohide: None,
popup_gap: default_popup_gap(),
icon_theme: None,
ironvar_defaults: None,
start: Some(vec![ModuleConfig::Label(
LabelModule::new(" Using default config".to_string()).into(),
)]),
center,
end,
anchor_to_edges: default_true(),
monitors: None,
popup_gap: default_popup_gap(),
}
}
}
#[derive(Debug, Deserialize, Clone, Default)]
pub struct Config {
pub ironvar_defaults: Option<HashMap<Box<str>, String>>,
#[serde(flatten)]
pub bar: BarConfig,
pub monitors: Option<HashMap<String, MonitorConfig>>,
}
const fn default_bar_height() -> i32 {
42
}