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

feat: ability to configure popup gap

This commit is contained in:
Jake Stanger 2023-04-07 14:36:12 +01:00
parent 55c06c4766
commit cac064f479
No known key found for this signature in database
GPG key ID: C51FC8F9CB0BEA61
4 changed files with 22 additions and 10 deletions

View file

@ -272,6 +272,7 @@ The following table lists each of the top-level bar config options:
| `position` | `top` or `bottom` or `left` or `right` | `bottom` | The bar's position on screen. | | `position` | `top` or `bottom` or `left` or `right` | `bottom` | The bar's position on screen. |
| `anchor_to_edges` | `boolean` | `false` | Whether to anchor the bar to the edges of the screen. Setting to false centres the bar. | | `anchor_to_edges` | `boolean` | `false` | Whether to anchor the bar to the edges of the screen. Setting to false centres the bar. |
| `height` | `integer` | `42` | The bar's height in pixels. | | `height` | `integer` | `42` | The bar's height in pixels. |
| `popup_gap` | `integer` | `5` | The gap between the bar and popup window. |
| `margin.top` | `integer` | `0` | The margin on the top of the bar | | `margin.top` | `integer` | `0` | The margin on the top of the bar |
| `margin.bottom` | `integer` | `0` | The margin on the bottom of the bar | | `margin.bottom` | `integer` | `0` | The margin on the bottom of the bar |
| `margin.left` | `integer` | `0` | The margin on the left of the bar | | `margin.left` | `integer` | `0` | The margin on the left of the bar |

View file

@ -168,17 +168,17 @@ fn load_modules(
if let Some(modules) = config.start { if let Some(modules) = config.start {
let info = info!(ModuleLocation::Left); let info = info!(ModuleLocation::Left);
add_modules(left, modules, &info)?; add_modules(left, modules, &info, config.popup_gap)?;
} }
if let Some(modules) = config.center { if let Some(modules) = config.center {
let info = info!(ModuleLocation::Center); let info = info!(ModuleLocation::Center);
add_modules(center, modules, &info)?; add_modules(center, modules, &info, config.popup_gap)?;
} }
if let Some(modules) = config.end { if let Some(modules) = config.end {
let info = info!(ModuleLocation::Right); let info = info!(ModuleLocation::Right);
add_modules(right, modules, &info)?; add_modules(right, modules, &info, config.popup_gap)?;
} }
Ok(()) Ok(())
@ -186,8 +186,13 @@ fn load_modules(
/// Adds modules into a provided GTK box, /// Adds modules into a provided GTK box,
/// which should be one of its left, center or right containers. /// which should be one of its left, center or right containers.
fn add_modules(content: &gtk::Box, modules: Vec<ModuleConfig>, info: &ModuleInfo) -> Result<()> { fn add_modules(
let popup = Popup::new(info); content: &gtk::Box,
modules: Vec<ModuleConfig>,
info: &ModuleInfo,
popup_gap: i32,
) -> Result<()> {
let popup = Popup::new(info, popup_gap);
let popup = Arc::new(RwLock::new(popup)); let popup = Arc::new(RwLock::new(popup));
macro_rules! add_module { macro_rules! add_module {

View file

@ -102,6 +102,8 @@ pub struct Config {
pub height: i32, pub height: i32,
#[serde(default)] #[serde(default)]
pub margin: MarginConfig, pub margin: MarginConfig,
#[serde(default = "default_popup_gap")]
pub popup_gap: i32,
/// GTK icon theme to use. /// GTK icon theme to use.
pub icon_theme: Option<String>, pub icon_theme: Option<String>,
@ -117,6 +119,10 @@ const fn default_bar_height() -> i32 {
42 42
} }
const fn default_popup_gap() -> i32 {
5
}
pub const fn default_false() -> bool { pub const fn default_false() -> bool {
false false
} }

View file

@ -19,7 +19,7 @@ impl Popup {
/// Creates a new popup window. /// Creates a new popup window.
/// This includes setting up gtk-layer-shell /// This includes setting up gtk-layer-shell
/// and an empty `gtk::Box` container. /// and an empty `gtk::Box` container.
pub fn new(module_info: &ModuleInfo) -> Self { pub fn new(module_info: &ModuleInfo, gap: i32) -> Self {
let pos = module_info.bar_position; let pos = module_info.bar_position;
let orientation = pos.get_orientation(); let orientation = pos.get_orientation();
@ -34,22 +34,22 @@ impl Popup {
gtk_layer_shell::set_margin( gtk_layer_shell::set_margin(
&win, &win,
gtk_layer_shell::Edge::Top, gtk_layer_shell::Edge::Top,
if pos == BarPosition::Top { 5 } else { 0 }, if pos == BarPosition::Top { gap } else { 0 },
); );
gtk_layer_shell::set_margin( gtk_layer_shell::set_margin(
&win, &win,
gtk_layer_shell::Edge::Bottom, gtk_layer_shell::Edge::Bottom,
if pos == BarPosition::Bottom { 5 } else { 0 }, if pos == BarPosition::Bottom { gap } else { 0 },
); );
gtk_layer_shell::set_margin( gtk_layer_shell::set_margin(
&win, &win,
gtk_layer_shell::Edge::Left, gtk_layer_shell::Edge::Left,
if pos == BarPosition::Left { 5 } else { 0 }, if pos == BarPosition::Left { gap } else { 0 },
); );
gtk_layer_shell::set_margin( gtk_layer_shell::set_margin(
&win, &win,
gtk_layer_shell::Edge::Right, gtk_layer_shell::Edge::Right,
if pos == BarPosition::Right { 5 } else { 0 }, if pos == BarPosition::Right { gap } else { 0 },
); );
gtk_layer_shell::set_anchor( gtk_layer_shell::set_anchor(