summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-06-19 16:58:45 -0300
committerGabriel Schneider <[email protected]>2026-06-25 11:23:20 -0300
commitc528d9f3e90c6e7a2c3d349ec8e46feb0719d2aa (patch)
tree6a81a71eacd54cfe4f717258401795ced54ede3e
parent91c5a2ac355b166e82d9051a8ba5c4c12dffa816 (diff)
downloadpardes-c528d9f3e90c6e7a2c3d349ec8e46feb0719d2aa.tar.gz
pardes-c528d9f3e90c6e7a2c3d349ec8e46feb0719d2aa.zip
basic pty -> ghostty -> vaxis path
-rw-r--r--main.zig99
1 files changed, 54 insertions, 45 deletions
diff --git a/main.zig b/main.zig
index 0c733eb3..a6027b0c 100644
--- a/main.zig
+++ b/main.zig
@@ -60,35 +60,20 @@ fn fork_pty(argv: [:0]const u8, ws: std.posix.winsize) std.Io.File {
return f;
}
-const nrows = 40;
-const ncols = 6;
+const nrows = 16;
+const ncols = 80;
pub fn main(init: std.process.Init) !void {
- std.debug.print("hello!\n", .{});
const io = init.io;
const gpa = init.gpa;
- const master = fork_pty("/usr/bin/bash", .{
- .row = nrows,
- .col = ncols,
- .xpixel = 0,
- .ypixel = 0,
- });
-
- var read_buf: [0x100]u8 = undefined;
- var reader = master.readerStreaming(io, &read_buf);
- try io.sleep(.fromMilliseconds(100), .real);
- const str = try reader.interface.readAlloc(gpa, 2);
- std.debug.print("\n\nreader: {} {s}\n\n", .{ reader.size orelse 1234, str });
-
var term: ghostty_vt.Terminal = try .init(gpa, .{
.cols = ncols,
.rows = nrows,
});
defer term.deinit(gpa);
- var stream = term.vtStream();
- defer stream.deinit();
- try term.printString("hello there!\nhowdy!");
+ var tty_reader = term.vtStream();
+ defer tty_reader.deinit();
// const str = try term.plainString(gpa);
@@ -99,36 +84,60 @@ pub fn main(init: std.process.Init) !void {
var vx = try vaxis.init(io, gpa, init.environ_map, .{});
defer vx.deinit(gpa, tty.writer());
- // try vx.enterAltScreen(tty.writer());
- // defer vx.exitAltScreen(tty.writer()) catch {};
+ const pty_master = fork_pty("/usr/bin/bash", .{
+ .row = nrows,
+ .col = ncols,
+ .xpixel = 0,
+ .ypixel = 0,
+ });
- // try vx.setMouseMode(tty.writer(), true);
+ var write_buf: [0x100]u8 = undefined;
+ var writer = pty_master.writer(io, &write_buf);
+
+ std.debug.print("written {}\n", .{try writer.interface.write("ls -la /\r\n")});
+ try writer.flush();
+
+ var read_buf: [0x400]u8 = undefined;
+ var reader = pty_master.readerStreaming(io, &read_buf);
- // var loop: Loop = .init(io, &tty, &vx);
- // try loop.start();
- // defer loop.stop();
+ try io.sleep(.fromMilliseconds(200), .real);
+ const str = try reader.interface.readAlloc(gpa, 0x400);
- // while (true) {
- // const event = try loop.nextEvent();
- // const win = vx.window();
- // const win_child = win.child(.{ .border = .{ .where = .all }, .height = 8, .width = 42 });
- // _ = win_child.printSegment(.{ .text = "hey" }, .{});
+ tty_reader.nextSlice(str);
- // switch (event) {
- // .key_press => |key| {
- // if (key.matches('c', .{ .ctrl = true })) {
- // break;
- // }
- // },
- // .mouse => |m| {
- // _ = win.printSegment(.{ .text = str }, .{ .col_offset = 1, .row_offset = 1 });
+ defer gpa.free(str);
- // if (m.type == .press) {}
- // },
- // .winsize => |ws| try vx.resize(gpa, tty.writer(), ws),
- // else => {},
- // }
+ const tty_str = try term.plainString(gpa);
+ defer gpa.free(tty_str);
+
+ // std.debug.print("{s}", .{tty_str});
+
+ // try vx.setMouseMode(tty.writer(), true);
- // try vx.render(tty.writer());
- // }
+ var loop: Loop = .init(io, &tty, &vx);
+ try loop.start();
+ defer loop.stop();
+
+ while (true) {
+ const event = try loop.nextEvent();
+ const win = vx.window();
+ const win_child = win.child(.{
+ .border = .{ .where = .all },
+ .height = nrows,
+ .width = ncols,
+ });
+ _ = win_child.printSegment(.{ .text = tty_str }, .{});
+
+ switch (event) {
+ .key_press => |key| {
+ if (key.matches('c', .{ .ctrl = true })) {
+ break;
+ }
+ },
+ .winsize => |ws| try vx.resize(gpa, tty.writer(), ws),
+ else => {},
+ }
+
+ try vx.render(tty.writer());
+ }
}