akarpovskii
tuile
Zig

A cross-platform Text UI (TUI) library in Zig

Last updated Jun 2, 2026
217
Stars
9
Forks
4
Issues
0
Stars/day
Attention Score
28
Language breakdown
Zig 100.0%
โ–ธ Files click to expand
README

Tuile

A Text User Interface library for Zig.
Breaking changes are possible.
Explore the docs ยป

View Examples ยท Report Bug ยท Request Feature

Table of Contents

About The Project

Tuile is a Text User Interface library written in Zig.

Tuile uses crossterm backend by default which works on all UNIX and Windows terminals and supports cross-compilation (powered by build.crab).

See Backends for the list of supported backends, or file a feature request if you want to have another one added.

Demo VHS recording

Checkout the other examples here.

(back to top)

Getting Started

Prerequisites

  • Zig 0.12.0+
  • Non-default backends may have additional requirements.

Installation

  • Add dependency to your build.zig.zon
zig fetch --save https://github.com/akarpovskii/tuile/archive/refs/tags/v0.1.3.tar.gz
  • Import Tuile in build.zig:
const tuile = b.dependency("tuile", .{});
exe.root_module.addImport("tuile", tuile.module("tuile"));

(back to top)

Usage

const tuile = @import("tuile");

pub fn main() !void { var tui = try tuile.Tuile.init(.{}); defer tui.deinit();

try tui.add( tuile.block( .{ .border = tuile.Border.all(), .border_type = .rounded, .layout = .{ .flex = 1 }, }, tuile.label(.{ .text = "Hello World!" }), ), );

try tui.run(); }

You can find more examples in the examples folder

(back to top)

Cross-compilation

To compile an application that uses Tuile for another target, just add -Dtarget=<desired target> when building your app and make sure to forward it to Tuile:

build.zig

const target = b.standardTargetOptions(.{});
const tuile = b.dependency("tuile", .{
  .target = target
});

(back to top)

Roadmap

In no particular order:

  • [ ] Documentation
  • [ ] Grid layout
  • [ ] Windows and dialogs
  • [ ] Menu bar
  • [ ] More widgets
See the [open issues][issues-url] for a full list of proposed features (and known issues).

(back to top)

Contributing

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks!

  • Fork the Project
  • Create your Feature Branch (git checkout -b feature/amazing-feature)
  • Commit your Changes (git commit -m 'Add some Amazing Feature')
  • Push to the Branch (git push origin feature/amazing-feature)
  • Open a Pull Request

(back to top)

License

Distributed under the MIT License. See [LICENSE][license-url] for more information.

(back to top)

Acknowledgments

(back to top)

[contributors-shield]: https://img.shields.io/github/contributors/akarpovskii/tuile.svg?style=for-the-badge [contributors-url]: https://github.com/akarpovskii/tuile/graphs/contributors [forks-shield]: https://img.shields.io/github/forks/akarpovskii/tuile.svg?style=for-the-badge [forks-url]: https://github.com/akarpovskii/tuile/network/members [stars-shield]: https://img.shields.io/github/stars/akarpovskii/tuile.svg?style=for-the-badge [stars-url]: https://github.com/akarpovskii/tuile/stargazers [issues-shield]: https://img.shields.io/github/issues/akarpovskii/tuile.svg?style=for-the-badge [issues-url]: https://github.com/akarpovskii/tuile/issues [license-shield]: https://img.shields.io/github/license/akarpovskii/tuile.svg?style=for-the-badge [license-url]: https://github.com/akarpovskii/tuile/blob/master/LICENSE.txt [examples-url]: https://github.com/akarpovskii/tuile/tree/main/examples [linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555 [linkedin-url]: https://linkedin.com/in/akarpovskii [product-screenshot]: images/screenshot.png

๐Ÿ”— More in this category

ยฉ 2026 GitRepoTrend ยท akarpovskii/tuile ยท Updated daily from GitHub