1
0
Fork 0

working on stuff

This commit is contained in:
namedkitten 2020-07-19 14:15:36 +01:00
parent f6136e505f
commit 7a8a2f824d
3 changed files with 67 additions and 2 deletions

View file

@ -47,7 +47,7 @@ pub const Bar = struct {
for (self.widgets) |w| {
var thread = try std.Thread.spawn(w, Widget.start);
}
var thread = try std.Thread.spawn(self, Bar.process);
_ = try std.Thread.spawn(self, Bar.process);
// TODO: wait for kill signal to kill bar instead of waiting for thread.
//thread.wait();
@ -231,7 +231,7 @@ pub const Bar = struct {
self.terminal_input_process() catch {};
}
} else {
self.i3bar_input_process() catch {};
try self.i3bar_input_process();
}
}
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,63 @@
const std = @import("std");
const Info = @import("../../types/info.zig");
const MouseEvent = @import("../../types/mouseevent.zig");
const Bar = @import("../../types/bar.zig").Bar;
pub const MarqueeTextWidget = struct {
bar: *Bar,
texts: [][]const u8,
pub fn name(self: *MarqueeTextWidget) []const u8 {
return "mqtemp";
}
pub fn initial_info(self: *MarqueeTextWidget) Info {
return Info{
.name = "mqtemp",
.full_text = "mqtemp",
.markup = "pango",
};
}
pub fn mouse_event(self: *MarqueeTextWidget, event: MouseEvent) void {}
pub fn start(self: *MarqueeTextWidget) anyerror!void {
while (self.bar.keep_running()) {
for (self.texts) |y| {
try self.bar.add(Info{
.name = "mqtemp",
.full_text = y,
.markup = "pango",
});
std.time.sleep(std.time.ns_per_ms * 250);
}
}
}
};
pub inline fn New(bar: *Bar, comptime text: []const u8, comptime width: comptime_int) MarqueeTextWidget {
const marqueedtexts = comptime blk: {
@setEvalBranchQuota(100000000);
comptime var new_text: []const u8 = text;
while ((new_text.len % width) != 1) {
comptime new_text = new_text ++ " ";
}
new_text = new_text ++ new_text[0 .. width - 1];
comptime var new_texts: [new_text.len / width][width]u8 = undefined;
var result: [new_text.len][]const u8 = undefined;
comptime var i: i64 = 0;
while (true) {
result[i] = new_text[i .. i + width];
if (i + width == new_text.len) {
break;
} else {
i = i + 1;
}
}
//for (new_texts) |y, i| result[i] = y[0..];
break :blk result[0..];
};
return MarqueeTextWidget{
.bar = bar,
.texts = marqueedtexts,
};
}