diff --git a/README.md b/README.md index 3e13cdf..8b1baf4 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,17 @@ This is my terminal based website. It is served as a tui application via ssh and It contains information about me and my projects as well as blog entries about something I feel like writing something about. +## Terminal User Interface + +### Benchmark + +```sh +zig build -Dbenchmark run 2> log +``` + +_Press any button_ at the end of the benchmark (when you are back to the original screen). `log` now contains the frame +delay for each frame in each line of the output. + ## Open tasks - [ ] Improve navigation diff --git a/src/layout/Pane.zig b/src/layout/Pane.zig index 30e75b0..8f15b59 100644 --- a/src/layout/Pane.zig +++ b/src/layout/Pane.zig @@ -31,12 +31,24 @@ pub fn Layout(comptime Event: type) type { } pub fn handle(this: *@This(), event: Event) !*Events { - switch (event) { - else => {}, - } this.events.clearRetainingCapacity(); - if (this.widget.handle(event)) |e| { - try this.events.append(e); + switch (event) { + .resize => |size| { + const widget_event: Event = .{ + .resize = .{ + .cols = size.cols, + .rows = size.rows -| 2, // remove top and bottom rows + }, + }; + if (this.widget.handle(widget_event)) |e| { + try this.events.append(e); + } + }, + else => { + if (this.widget.handle(event)) |e| { + try this.events.append(e); + } + }, } return &this.events; } @@ -44,7 +56,9 @@ pub fn Layout(comptime Event: type) type { pub fn content(this: *@This()) !*std.ArrayList(u8) { const widget_content = try this.widget.content(); this.c.clearRetainingCapacity(); + try this.c.appendSlice("\n"); try this.c.appendSlice(widget_content); + try this.c.appendSlice("\n"); return &this.c; } }; diff --git a/src/main.zig b/src/main.zig index 6a5f95d..d3ba4db 100644 --- a/src/main.zig +++ b/src/main.zig @@ -43,7 +43,7 @@ pub fn main() !void { var instants: std.ArrayList(u64) = undefined; var benchmark_thread: std.Thread = undefined; if (comptime build_options.benchmark) { - instants = try std.ArrayList(u64).initCapacity(allocator, 512); + instants = try std.ArrayList(u64).initCapacity(allocator, 1024); benchmark_thread = try std.Thread.spawn(.{}, benchmark, .{&app}); } @@ -110,7 +110,7 @@ pub fn main() !void { fn benchmark(app: *App) void { std.time.sleep(1 * std.time.ns_per_s); - for (0..511) |_| { + for (0..512) |_| { app.postEvent(.{ .key = .{ .cp = 'j' } }); app.postEvent(.{ .key = .{ .cp = 'k' } }); }