mirror of
https://github.com/Zedfrigg/ironbar.git
synced 2025-07-01 10:41:03 +02:00
Merge pull request #103 from JakeStanger/feat/popup-gap-config
feat: ability to configure popup gap
This commit is contained in:
commit
4b4f1ffc21
4 changed files with 22 additions and 10 deletions
|
@ -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 |
|
||||||
|
|
15
src/bar.rs
15
src/bar.rs
|
@ -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: >k::Box, modules: Vec<ModuleConfig>, info: &ModuleInfo) -> Result<()> {
|
fn add_modules(
|
||||||
let popup = Popup::new(info);
|
content: >k::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 {
|
||||||
|
|
|
@ -104,6 +104,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>,
|
||||||
|
@ -119,6 +121,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
|
||||||
}
|
}
|
||||||
|
|
10
src/popup.rs
10
src/popup.rs
|
@ -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(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue