Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git
rivercompat: change border color on focus
rivercompat/Config.zig | 3 ++-
rivercompat/Window.zig | 32 +++++++++++++++++++++++---------
2 files changed, 25 insertions(+), 10 deletions(-)
diff --git a/rivercompat/Config.zig b/rivercompat/Config.zig
index b81bb24..52e6e28 100644
--- a/rivercompat/Config.zig
+++ b/rivercompat/Config.zig
@@ -22,7 +22,8 @@ const assert = std.debug.assert;
const gpa = std.heap.c_allocator;
border_width: u31 = 3,
-border_color: u32 = 0x586e75,
+border_color_unfocused: u32 = 0x586e75,
+border_color_focused: u32 = 0x93a1a1,
main_count: u31 = 1,
main_location: enum { left, right, top, bottom } = .left,
diff --git a/rivercompat/Window.zig b/rivercompat/Window.zig
index 4a30d3e..def241f 100644
--- a/rivercompat/Window.zig
+++ b/rivercompat/Window.zig
@@ -134,15 +134,6 @@ pub fn updateWindowing(window: *Window) void {
if (window.windowing.new) {
window.window_v1.useSsd();
- window.window_v1.setBorders(
- .{ .left = true, .bottom = true, .top = true, .right = true },
- wm.config.border_width,
- @as(u32, (wm.config.border_color >> 16) & 0xff) * (0xffff_ffff / 0xff),
- @as(u32, (wm.config.border_color >> 8) & 0xff) * (0xffff_ffff / 0xff),
- @as(u32, (wm.config.border_color >> 0) & 0xff) * (0xffff_ffff / 0xff),
- 0xffff_ffff,
- );
-
if (if (wm.seats.first()) |seat| seat.focused_output else null) |output| {
window.output = output;
window.tags = output.tags;
@@ -177,6 +168,29 @@ pub fn updateRendering(window: *Window) void {
window.shadow_decoration.syncNextCommit();
window.shadow_surface.commit();
}
+
+ {
+ var it = wm.seats.iterator(.forward);
+ while (it.next()) |seat| {
+ if (seat.focused == window) {
+ window.setBorders(wm.config.border_color_focused);
+ break;
+ }
+ } else {
+ window.setBorders(wm.config.border_color_unfocused);
+ }
+ }
+}
+
+fn setBorders(window: *Window, rgb: u32) void {
+ window.window_v1.setBorders(
+ .{ .left = true, .bottom = true, .top = true, .right = true },
+ wm.config.border_width,
+ @as(u32, (rgb >> 16) & 0xff) * (0xffff_ffff / 0xff),
+ @as(u32, (rgb >> 8) & 0xff) * (0xffff_ffff / 0xff),
+ @as(u32, (rgb >> 0) & 0xff) * (0xffff_ffff / 0xff),
+ 0xffff_ffff,
+ );
}
pub const Box = struct {