summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxVerevkin <maxxverrr@gmail.com>2023-02-01 17:32:45 +0200
committerMaxVerevkin <maxxverrr@gmail.com>2023-02-01 17:32:45 +0200
commitc5ef072cffec6e97777ae66f1ee8edaaf7a7d84d (patch)
treea82e4fdc8696b5886891bf417c4916113e6d1e52 /src
parent2f9730e919c5e7cd4dc16c4c4f4062f84b0721a3 (diff)
downloadi3bar-mango-c5ef072cffec6e97777ae66f1ee8edaaf7a7d84d.tar.gz
add position config option
Diffstat (limited to 'src')
-rw-r--r--src/config.rs19
-rw-r--r--src/state.rs6
2 files changed, 21 insertions, 4 deletions
diff --git a/src/config.rs b/src/config.rs
index a20f60e..9770858 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -1,4 +1,5 @@
use crate::color::Color;
+use crate::protocol::zwlr_layer_surface_v1;
use anyhow::{Context, Result};
use dirs_next::config_dir;
use pangocairo::pango::FontDescription;
@@ -33,6 +34,7 @@ pub struct Config {
// command
pub command: Option<String>,
// misc
+ pub position: Position,
pub hide_inactive_tags: bool,
pub invert_touchpad_scrolling: bool,
pub show_layout_name: bool,
@@ -61,6 +63,7 @@ impl Default for Config {
blocks_r: 0.0,
blocks_overlap: 0.0,
command: None,
+ position: Position::Top,
hide_inactive_tags: true,
invert_touchpad_scrolling: true,
show_layout_name: true,
@@ -92,6 +95,22 @@ impl Config {
}
}
+#[derive(Deserialize, Debug, Clone, Copy)]
+#[serde(rename_all = "lowercase")]
+pub enum Position {
+ Top,
+ Bottom,
+}
+
+impl From<Position> for zwlr_layer_surface_v1::Anchor {
+ fn from(position: Position) -> Self {
+ match position {
+ Position::Top => Self::Top | Self::Left | Self::Right,
+ Position::Bottom => Self::Bottom | Self::Left | Self::Right,
+ }
+ }
+}
+
#[derive(Debug)]
pub struct Font(pub FontDescription);
diff --git a/src/state.rs b/src/state.rs
index c283678..6844e56 100644
--- a/src/state.rs
+++ b/src/state.rs
@@ -155,18 +155,16 @@ impl State {
let surface = self.wl_compositor.create_surface(conn);
- use zwlr_layer_shell_v1::Layer;
- use zwlr_layer_surface_v1::Anchor;
let layer_surface = self.layer_shell.get_layer_surface_with_cb(
conn,
surface,
output,
- Layer::Top,
+ zwlr_layer_shell_v1::Layer::Top,
wayrs_client::cstr!("i3bar-river").into(),
layer_surface_cb,
);
layer_surface.set_size(conn, 0, self.shared_state.config.height);
- layer_surface.set_anchor(conn, Anchor::Top | Anchor::Left | Anchor::Right); // Top + Left + Right
+ layer_surface.set_anchor(conn, self.shared_state.config.position.into()); // Top + Left + Right
layer_surface.set_exclusive_zone(conn, self.shared_state.config.height as i32 + 5); // TODO: make the margin configurable
// Note: layer_surface is commited when we receive the scale factor of this output