Something went wrong. Try again.
Something went wrong. Try again.
1.2 kB · 42 lines
Zig
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243const std = @import("std");const ghostty_vt = @import("ghostty-vt");
pub fn main() !void { var gpa: std.heap.DebugAllocator(.{}) = .init; defer _ = gpa.deinit(); const alloc = gpa.allocator();
// Create a terminal var t: ghostty_vt.Terminal = try .init(alloc, .{ .cols = 150, .rows = 80 }); defer t.deinit(alloc);
// Create a read-only VT stream for parsing terminal sequences var stream = t.vtStream(); defer stream.deinit();
// Read from stdin const stdin = std.fs.File.stdin(); var buf: [4096]u8 = undefined; while (true) { const n = try stdin.readAll(&buf); if (n == 0) break;
// Replace \n with \r\n for (buf[0..n]) |byte| { if (byte == '\n') stream.next('\r'); stream.next(byte); } }
// Use TerminalFormatter to emit HTML const formatter: ghostty_vt.formatter.TerminalFormatter = .init(&t, .{ .emit = .html, .palette = &t.colors.palette.current, });
// Write to stdout var stdout_writer = std.fs.File.stdout().writer(&buf); const stdout = &stdout_writer.interface; try stdout.print("{f}", .{formatter}); try stdout.flush();}