a modern tui library written in zig
at v0.2.0 79 lines 2.4 kB view raw
1const std = @import("std"); 2const builtin = @import("builtin"); 3 4pub const Vaxis = @import("Vaxis.zig"); 5 6pub const Loop = @import("Loop.zig").Loop; 7pub const xev = @import("xev.zig"); 8 9pub const Queue = @import("queue.zig").Queue; 10pub const Key = @import("Key.zig"); 11pub const Cell = @import("Cell.zig"); 12pub const Segment = Cell.Segment; 13pub const PrintOptions = Window.PrintOptions; 14pub const Style = Cell.Style; 15pub const Color = Cell.Color; 16pub const Image = @import("Image.zig"); 17pub const Mouse = @import("Mouse.zig"); 18pub const Screen = @import("Screen.zig"); 19pub const AllocatingScreen = @import("InternalScreen.zig"); 20pub const Parser = @import("Parser.zig"); 21pub const Window = @import("Window.zig"); 22pub const widgets = @import("widgets.zig"); 23pub const gwidth = @import("gwidth.zig"); 24pub const ctlseqs = @import("ctlseqs.zig"); 25 26/// The target TTY implementation 27pub const Tty = switch (builtin.os.tag) { 28 .windows => @import("windows/Tty.zig"), 29 else => @import("posix/Tty.zig"), 30}; 31 32/// The size of the terminal screen 33pub const Winsize = struct { 34 rows: usize, 35 cols: usize, 36 x_pixel: usize, 37 y_pixel: usize, 38}; 39 40/// Initialize a Vaxis application. 41pub fn init(alloc: std.mem.Allocator, opts: Vaxis.Options) !Vaxis { 42 return Vaxis.init(alloc, opts); 43} 44 45/// Resets terminal state on a panic, then calls the default zig panic handler 46pub fn panic_handler(msg: []const u8, error_return_trace: ?*std.builtin.StackTrace, ret_addr: ?usize) noreturn { 47 if (Tty.global_tty) |gty| { 48 const reset: []const u8 = ctlseqs.csi_u_pop ++ 49 ctlseqs.mouse_reset ++ 50 ctlseqs.bp_reset ++ 51 ctlseqs.rmcup; 52 53 gty.anyWriter().writeAll(reset) catch {}; 54 55 gty.deinit(); 56 } 57 58 std.builtin.default_panic(msg, error_return_trace, ret_addr); 59} 60 61/// the vaxis logo. In PixelCode 62pub const logo = 63 \\▄ ▄ ▄▄▄ ▄ ▄ ▄▄▄ ▄▄▄ 64 \\█ █ █▄▄▄█ ▀▄ ▄▀ █ █ ▀ 65 \\▀▄ ▄▀ █ █ ▄▀▄ █ ▀▀▀▄ 66 \\ ▀▄▀ █ █ █ █ ▄█▄ ▀▄▄▄▀ 67; 68 69test { 70 _ = @import("gwidth.zig"); 71 _ = @import("Cell.zig"); 72 _ = @import("Key.zig"); 73 _ = @import("Parser.zig"); 74 _ = @import("Window.zig"); 75 76 _ = @import("gwidth.zig"); 77 _ = @import("queue.zig"); 78 _ = @import("widgets/TextInput.zig"); 79}