From 2f29434af01440348d69fd3203c1996b295033d3 Mon Sep 17 00:00:00 2001 From: Ben Buhse Date: Thu, 19 Mar 2026 18:16:05 -0500 Subject: [PATCH] Add single_window_ratio to Bar when != 1 This adds single window ratio's percent after the primary ratio into the bar, but only when the ratio isn't 1 (so, on small screens where people are using 100% of the output for windows, it won't be there). --- src/Bar.zig | 16 +++++++++------- src/Output.zig | 3 +++ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/Bar.zig b/src/Bar.zig index 1a0fdf1..f62d104 100644 --- a/src/Bar.zig +++ b/src/Bar.zig @@ -260,13 +260,15 @@ fn draw(bar: *Bar) !void { const output = bar.output; var wm_info_buf: [255:0]u8 = undefined; var wm_info_writer = Io.Writer.fixed(&wm_info_buf); - const ratio_percent: u32 = @intFromFloat(@round(output.primary_ratio * 100)); - try wm_info_writer.print("P:{d}/{d}% W:{d}({d})", .{ - output.primary_count, - ratio_percent, - output.countVisible(), - output.windows.length(), - }); + const primary_ratio_percent: u32 = @intFromFloat(@round(output.primary_ratio * 100)); + try wm_info_writer.print("P:{d}/{d}%", .{ output.primary_count, primary_ratio_percent }); + if (output.single_window_ratio != 1) { + const single_window_ratio_percent: u32 = @intFromFloat(@round(output.single_window_ratio * 100)); + try wm_info_writer.print("({d}%)", .{single_window_ratio_percent}); + } + try wm_info_writer.print(" W:{d}({d})", .{ output.countVisible(), output.windows.length() }); + try wm_info_writer.flush(); + const wm_info_codepoints = try utils.utf8ToCodepoints(wm_info_writer.buffered()); defer utils.gpa.free(wm_info_codepoints); diff --git a/src/Output.zig b/src/Output.zig index c0289fb..2fbe5e9 100644 --- a/src/Output.zig +++ b/src/Output.zig @@ -340,6 +340,9 @@ pub fn manage(output: *Output) void { Config.min_primary_ratio, 1.00, ); + if (output.bar) |*bar| { + bar.pending_render.draw = true; + } } if (output.pending_manage.tags) |new_tags| {