creek

A malleable and minimalist status bar for the River compositor

git clone https://git.8pit.net/creek.git

 1const std = @import("std");
 2const mem = std.mem;
 3
 4const wl = @import("wayland").client.wl;
 5
 6const Buffer = @import("Buffer.zig");
 7const Widget = @This();
 8
 9const state = &@import("root").state;
10
11surface: *wl.Surface,
12subsurface: *wl.Subsurface,
13buffers: [2]Buffer,
14
15pub fn init(background: *wl.Surface) !Widget {
16    const compositor = state.wayland.compositor.?;
17    const subcompositor = state.wayland.subcompositor.?;
18
19    const surface = try compositor.createSurface();
20    const subsurface = try subcompositor.getSubsurface(surface, background);
21
22    return Widget{
23        .surface = surface,
24        .subsurface = subsurface,
25        .buffers = .{ .{}, .{} },
26    };
27}
28
29pub fn deinit(self: *Widget) void {
30    self.subsurface.destroy();
31    self.surface.destroy();
32    self.buffers[0].deinit();
33    self.buffers[1].deinit();
34}