Awesome
[!WARNING] This library is a WIP and may have breaking changes and bugs.
mibu
mibu is pure Zig library for low-level terminal manipulation.
Tested with zig version
0.13.0
Features
- Allocation free.
- UTF-8 support.
- Style (bold, italic, underline, etc).
- Termios / Raw mode.
- 8-16 colors.
- True Color (24-bit RGB).
- Cursor controls.
- Clear(Erase) functions.
- Key events.
- Partial Mouse events. (Click, Scroll, Release)
How to use
First we add the library as a dependency in our build.zig.zon
file.
.dependencies = .{
.string = .{
.url = "https://github.com/xyaman/mibu/archive/refs/heads/main.zip",
//the correct hash will be suggested by the zig compiler, you can copy it from there
}
}
And we add it to build.zig
file.
const mibu_dep = b.dependency("mibu", .{
.target = target,
.optimize = optimize,
});
exe.root_module.addImport("mibu", mibu_dep.module("mibu"));
Now we can use the library in our code.
const std = @import("std");
const mibu = @import("mibu");
const color = mibu.color;
pub fn main() void {
std.debug.print("{s}Hello World in purple!\n", .{color.print.bgRGB(97, 37, 160)});
}
Getting Started
See the examples directory
You can run the examples with the following command:
# Prints text with different colors
zig build color
# Prints what key you pressed, until you press `q` or `ctrl+c`
zig build event
zig build alternate_screen
TODO
- Mouse events
- Left, middle, right click
- Scroll up, down
- Release
- Modifiers (shift, ctrl, alt)
- Move
- Click and move (drag)
- Support all keys events