1
0
Fork 0
mirror of https://github.com/Zedfrigg/ironbar.git synced 2025-07-01 18:51:04 +02:00

feat: use top-level config as fallback when using monitor-based config

This allows you to configure a default bar to use, then override specific monitors.

Not setting anything at the top level will hide bars which are not explicitly configured.

This actually came about as a bug in the recent refactorings, but now it's a feature :)
This commit is contained in:
Jake Stanger 2023-12-10 23:10:04 +00:00
parent 56f423e408
commit 659c93dd2a
No known key found for this signature in database
GPG key ID: C51FC8F9CB0BEA61
2 changed files with 10 additions and 2 deletions

View file

@ -95,7 +95,11 @@ Create a map/object called `monitors` inside the top-level object.
Each of the map's keys should be an output name, Each of the map's keys should be an output name,
and each value should be an object containing the bar config. and each value should be an object containing the bar config.
To find your output names, run `wayland-info | grep wl_output -A1`. You can still define a top-level "default" config to use for unspecified monitors.
Alternatively, leave the top-level `start`, `center` and `end` keys null to hide bars on unspecified monitors.
> [!TIP]
> To find your output names, run `wayland-info | grep wl_output -A1`.
<details> <details>
<summary>JSON</summary> <summary>JSON</summary>

View file

@ -276,6 +276,9 @@ fn create_bars(app: &Application, display: &Display, config: &Config) -> Result<
let num_monitors = display.n_monitors(); let num_monitors = display.n_monitors();
let show_default_bar =
config.start.is_some() || config.center.is_some() || config.end.is_some();
let mut all_bars = vec![]; let mut all_bars = vec![];
for i in 0..num_monitors { for i in 0..num_monitors {
let monitor = display let monitor = display
@ -306,12 +309,13 @@ fn create_bars(app: &Application, display: &Display, config: &Config) -> Result<
.iter() .iter()
.map(|config| create_bar(app, &monitor, monitor_name.to_string(), config.clone())) .map(|config| create_bar(app, &monitor, monitor_name.to_string(), config.clone()))
.collect::<Result<_>>()?, .collect::<Result<_>>()?,
None => vec![create_bar( None if show_default_bar => vec![create_bar(
app, app,
&monitor, &monitor,
monitor_name.to_string(), monitor_name.to_string(),
config.clone(), config.clone(),
)?], )?],
None => vec![],
}; };
all_bars.append(&mut bars); all_bars.append(&mut bars);