From 85f837ae706d6f64769597158a39c49259c8b189 Mon Sep 17 00:00:00 2001 From: Max Verevkin <34583604+MaxVerevkin@users.noreply.github.com> Date: Sat, 26 Aug 2023 17:19:29 +0300 Subject: show current mode on river (can be turned off) (#15) --- src/bar.rs | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'src/bar.rs') diff --git a/src/bar.rs b/src/bar.rs index 45fbc88..7cf53b9 100644 --- a/src/bar.rs +++ b/src/bar.rs @@ -31,9 +31,11 @@ pub struct Bar { pub blocks_btns: ButtonManager<(Option, Option)>, pub tags: Vec, pub layout_name: Option, + pub mode_name: Option, pub tags_btns: ButtonManager, pub tags_computed: Vec<(ColorPair, ComputedText)>, pub layout_name_computed: Option, + pub mode_computed: Option, } #[derive(Debug, PartialEq)] @@ -54,6 +56,11 @@ impl Bar { self.layout_name_computed = None; } + pub fn set_mode_name(&mut self, mode_name: Option) { + self.mode_name = mode_name; + self.mode_computed = None; + } + pub fn click( &mut self, conn: &mut Connection, @@ -223,6 +230,38 @@ impl Bar { } } + // Display mode + if ss.config.show_mode { + if let Some(mode) = &self.mode_name { + let text = self.mode_computed.get_or_insert_with(|| { + ComputedText::new( + mode, + text::Attributes { + font: &ss.config.font, + padding_left: 10.0, + padding_right: 10.0, + min_width: None, + align: Default::default(), + markup: false, + }, + ) + }); + text.render( + &cairo_ctx, + RenderOptions { + x_offset: offset_left, + bar_height: height_f, + fg_color: ss.config.tag_urgent_fg, + bg_color: Some(ss.config.tag_urgent_bg), + r_left: ss.config.tags_r, + r_right: ss.config.tags_r, + overlap: 0.0, + }, + ); + offset_left += text.width; + } + } + // Display the blocks render_blocks( &cairo_ctx, -- cgit v1.3.1