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