From 97ba997f78e1fe4340875aa44d422618b67a6e32 Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Sat, 28 Jun 2025 20:07:44 +0200 Subject: pkgs/i3bar-river-patched: Base on my branch and rebase the block in middle patch This should avoid having to update both of the patches in the future, as the pull request patch fetch is not stable, and changes if I push something new to the pr. --- ...bar-Put-the-leftmost-block-in-the-middle-.patch | 110 ++++++++++++++++++++ ...bar-Put-the-leftmost-block-in-the-middle-.patch | 111 --------------------- pkgs/by-name/i3/i3bar-river-patched/package.nix | 21 ++-- 3 files changed, 116 insertions(+), 126 deletions(-) create mode 100644 pkgs/by-name/i3/i3bar-river-patched/0001-feat-crate-bar-Put-the-leftmost-block-in-the-middle-.patch delete mode 100644 pkgs/by-name/i3/i3bar-river-patched/0002-feat-crate-bar-Put-the-leftmost-block-in-the-middle-.patch diff --git a/pkgs/by-name/i3/i3bar-river-patched/0001-feat-crate-bar-Put-the-leftmost-block-in-the-middle-.patch b/pkgs/by-name/i3/i3bar-river-patched/0001-feat-crate-bar-Put-the-leftmost-block-in-the-middle-.patch new file mode 100644 index 00000000..7bfdd7bc --- /dev/null +++ b/pkgs/by-name/i3/i3bar-river-patched/0001-feat-crate-bar-Put-the-leftmost-block-in-the-middle-.patch @@ -0,0 +1,110 @@ +From 8ae692a461fad2f23231d50b78bb706408facfe6 Mon Sep 17 00:00:00 2001 +From: Benedikt Peetz +Date: Tue, 20 May 2025 19:58:57 +0200 +Subject: [PATCH] feat(crate::bar): Put the leftmost block in the middle of the + bar + +This is a workaround for the limitation in the i3 blocks protocol, as +this does not allow for centred blocks. +--- + src/bar.rs | 63 ++++++++++++++++++++++++++++++++++++++++++++---------- + 1 file changed, 52 insertions(+), 11 deletions(-) + +diff --git a/src/bar.rs b/src/bar.rs +index 96533e3..76f8025 100644 +--- a/src/bar.rs ++++ b/src/bar.rs +@@ -338,16 +338,55 @@ impl Bar { + } + + // Display the blocks +- render_blocks( +- &cairo_ctx, +- &ss.config, +- palette, +- ss.blocks_cache.get_computed(), +- &mut self.blocks_btns, +- offset_left, +- width_f, +- height_f, +- ); ++ { ++ if !ss.blocks_cache.get_computed().is_empty() { ++ let first_block = &ss.blocks_cache.get_computed()[0]; ++ ++ let blocks = &ss.blocks_cache.get_computed()[1..]; ++ ++ let other_start = render_blocks( ++ &cairo_ctx, ++ &ss.config, ++ palette, ++ blocks, ++ &mut self.blocks_btns, ++ offset_left, ++ width_f, ++ height_f, ++ ); ++ ++ // Draw the first block _after_ the other ones, so that we can nudge it more to the ++ // left, if the others are spanning over the middle. ++ let mut start = (width_f / 2.0) - (first_block.full.width / 2.0); ++ if start + first_block.full.width > other_start { ++ start = other_start ++ - first_block.full.width ++ - first_block.block.separator_block_width as f64; ++ } ++ ++ first_block.full.render( ++ &cairo_ctx, ++ RenderOptions { ++ x_offset: start, ++ bar_height: height_f, ++ fg_color: first_block.block.color.unwrap_or(palette.color), ++ bg_color: first_block.block.background, ++ r_left: ss.config.blocks_r, ++ r_right: ss.config.blocks_r, ++ overlap: ss.config.blocks_overlap, ++ }, ++ ); ++ ++ self.blocks_btns.push( ++ start, ++ first_block.full.width, ++ ( ++ first_block.block.name.clone(), ++ first_block.block.instance.clone(), ++ ), ++ ); ++ } ++ } + + self.viewport + .set_destination(conn, self.width as i32, self.height as i32); +@@ -422,7 +461,7 @@ fn render_blocks( + offset_left: f64, + full_width: f64, + full_height: f64, +-) { ++) -> f64 { + context.rectangle(offset_left, 0.0, full_width - offset_left, full_height); + context.clip(); + +@@ -507,6 +546,7 @@ fn render_blocks( + } + + // Render blocks ++ let leftmost_start = full_width - blocks_width; + buttons.clear(); + for series in blocks_computed { + let s_len = series.blocks.len(); +@@ -550,6 +590,7 @@ fn render_blocks( + } + + context.reset_clip(); ++ leftmost_start + } + + fn layer_surface_cb(ctx: EventCtx) { +-- +2.49.0 + diff --git a/pkgs/by-name/i3/i3bar-river-patched/0002-feat-crate-bar-Put-the-leftmost-block-in-the-middle-.patch b/pkgs/by-name/i3/i3bar-river-patched/0002-feat-crate-bar-Put-the-leftmost-block-in-the-middle-.patch deleted file mode 100644 index 6f4bd528..00000000 --- a/pkgs/by-name/i3/i3bar-river-patched/0002-feat-crate-bar-Put-the-leftmost-block-in-the-middle-.patch +++ /dev/null @@ -1,111 +0,0 @@ -From b8568a2b626bd4d5f50ee24c304d19177bda5d4b Mon Sep 17 00:00:00 2001 -From: Benedikt Peetz -Date: Tue, 20 May 2025 19:58:57 +0200 -Subject: [PATCH] feat(crate::bar): Put the leftmost block in the middle of the - bar - -This is a workaround for the limitation in the i3 blocks protocol, as -this does not allow for centred blocks. ---- - src/bar.rs | 64 ++++++++++++++++++++++++++++++++++++++++++++---------- - 1 file changed, 53 insertions(+), 11 deletions(-) - -diff --git a/src/bar.rs b/src/bar.rs -index fb88150..e66c2cf 100644 ---- a/src/bar.rs -+++ b/src/bar.rs -@@ -344,16 +344,56 @@ impl Bar { - } - - // Display the blocks -- render_blocks( -- &cairo_ctx, -- ss, -- &self.output, -- ss.blocks_cache.get_computed(), -- &mut self.blocks_btns, -- offset_left, -- width_f, -- height_f, -- ); -+ { -+ if !ss.blocks_cache.get_computed().is_empty() { -+ let first_block = &ss.blocks_cache.get_computed()[0]; -+ -+ let blocks = &ss.blocks_cache.get_computed()[1..]; -+ -+ let other_start = render_blocks( -+ &cairo_ctx, -+ ss, -+ &self.output, -+ blocks, -+ &mut self.blocks_btns, -+ offset_left, -+ width_f, -+ height_f, -+ ); -+ -+ // Draw the first block _after_ the other ones, so that we can nudge it more to the -+ // left, if the others are spanning over the middle. -+ let mut start = (width_f / 2.0) - (first_block.full.width / 2.0); -+ if start + first_block.full.width > other_start { -+ start = other_start - first_block.full.width - first_block.block.separator_block_width as f64; -+ } -+ -+ first_block.full.render( -+ &cairo_ctx, -+ RenderOptions { -+ x_offset: start, -+ bar_height: height_f, -+ fg_color: first_block -+ .block -+ .color -+ .unwrap_or(sfo!(ss, &self.output, color)), -+ bg_color: first_block.block.background, -+ r_left: ss.config.blocks_r, -+ r_right: ss.config.blocks_r, -+ overlap: ss.config.blocks_overlap, -+ }, -+ ); -+ -+ self.blocks_btns.push( -+ start, -+ first_block.full.width, -+ ( -+ first_block.block.name.clone(), -+ first_block.block.instance.clone(), -+ ), -+ ); -+ } -+ } - - self.viewport - .set_destination(conn, self.width as i32, self.height as i32); -@@ -428,7 +468,7 @@ fn render_blocks( - offset_left: f64, - full_width: f64, - full_height: f64, --) { -+) -> f64 { - context.rectangle(offset_left, 0.0, full_width - offset_left, full_height); - context.clip(); - -@@ -513,6 +553,7 @@ fn render_blocks( - } - - // Render blocks -+ let leftmost_start = full_width - blocks_width; - buttons.clear(); - for series in blocks_computed { - let s_len = series.blocks.len(); -@@ -560,6 +601,7 @@ fn render_blocks( - } - - context.reset_clip(); -+ leftmost_start - } - - fn layer_surface_cb(ctx: EventCtx) { --- -2.49.0 - diff --git a/pkgs/by-name/i3/i3bar-river-patched/package.nix b/pkgs/by-name/i3/i3bar-river-patched/package.nix index 87f78248..f6c3b5fd 100644 --- a/pkgs/by-name/i3/i3bar-river-patched/package.nix +++ b/pkgs/by-name/i3/i3bar-river-patched/package.nix @@ -13,32 +13,23 @@ rustPlatform, pkg-config, pango, - fetchpatch2, }: rustPlatform.buildRustPackage { pname = "i3bar-river-patched"; version = "1.1.0-unstable-2025-05-20"; src = fetchFromGitHub { - owner = "MaxVerevkin"; + owner = "bpeetz"; repo = "i3bar-river"; - rev = "73446cac559b10adf4beb5567a816d1be5273457"; - hash = "sha256-NxlFKTnd2erHtSG56aWlZEkWVzBqe2hqQuVAWDdBq2c="; + rev = "bdaf362f24c143beeb92b783af15d3b99a0490e4"; + hash = "sha256-jOv/DmXBpUCV/zbkWSKSYQ+yXcZZQY+T03rNre9hjn8="; }; - useFetchCargoVendor = true; - cargoHash = "sha256-8sub8cXC/1iDY6v/9opO4FiLAo9CFrGJSDPNQydGvhQ="; + cargoHash = "sha256-jIB4XH67FmtPxAatHkuW8v5mNgr/KsyriaBNZ5t2dLo="; cargoPatches = [ - # Add a separate theme for unfocused outputs. - (fetchpatch2 { - name = "Add support for special theme for unfocused outputs"; - url = "https://patch-diff.githubusercontent.com/raw/MaxVerevkin/i3bar-river/pull/44.patch"; - hash = "sha256-HMNR/4Q2wDnqbN0ziXrG5DFeWgczOcw5AzLvGbJZKdo="; - }) - - # TODO(@bpeetz): Open an issues, whether something like that could be upstreamed. <2025-05-20> - ./0002-feat-crate-bar-Put-the-leftmost-block-in-the-middle-.patch + # TODO(@bpeetz): Open an issues, whether something like that could be up-streamed. <2025-05-20> + ./0001-feat-crate-bar-Put-the-leftmost-block-in-the-middle-.patch ]; # Remove the WMs that I don't use. -- cgit 1.4.1