Convert Bar to use river-shell-surface

I want to implement more functionality to the bar, similar to what
machi has in its bar, but it seems a lot easier to just handle the bar
with the rest of the manage/render loop that rwm and beansprout use.

To do that, I had to convert the bar to use river-shell-surface instead
of zwlr-layer-shell.

In that process, I also removed support for zwlr-layer-shell exclusive
zones. It made calculating the usable area for the layout more annoying.
If someone *really* wants, I would consider adding it back, but the only
thing I can think of that requires exclusive area is a bar, and we don't
really support other bars, so I don't think it's needed.

I also switched a couple of places to use saturating subtraction on
unsigned ints.
This commit is contained in:
Ben Buhse 2026-02-26 16:34:48 -06:00
commit a9473204ad
No known key found for this signature in database
GPG key ID: 7916ACFCD38FD0B4
6 changed files with 159 additions and 153 deletions

View file

@ -146,9 +146,8 @@ fn run(wl_display: *wl.Display, context: *Context) !void {
var it = context.wm.outputs.iterator(.forward);
while (it.next()) |output| {
if (output.bar) |*bar| {
bar.render() catch |err| {
log.err("Bar timer render failed: {}", .{err});
};
bar.pending_render.draw = true;
context.wm.river_window_manager_v1.manageDirty();
}
}
}