ratatui-unity 0.1.1

A Rust native plugin that brings Ratatui's TUI ecosystem to Unity 3D game engine — for all platforms.
Documentation

ratatui-unity

Crates.io docs.rs Build Native Plugin License: MIT Rust Edition 2021 ratatui 0.30 Unity UPM GitHub stars GitHub forks GitHub last commit GitHub issues

Platform macOS Platform iOS Platform Windows Platform Linux Platform Android Platform WebGL

TUI for Unity 3D : ratatui-unity is a Rust native plugin that brings Ratatui's TUI ecosystem to Unity 3D game engine — for all platforms.

Try WebGL Demo on your browser: ratatui-unity-demo.farukcan.dev

UPM Installation

Open Window → Package Manager → + → Add package from git URL and paste:

https://github.com/farukcan/ratatui-unity.git#latest

Or add to Packages/manifest.json:

{
  "dependencies": {
    "com.farukcan.ratatui.unity": "https://github.com/farukcan/ratatui-unity.git#latest"
  }
}

See ratatui-unity.farukcan.dev for full documentation.

Sample Usage

private void RenderHelpArea(RatatuiTerminal term, uint area)
{
    term.Block(area, "About Ratatui + Unity", Borders.All);
    uint inner = term.Inner(area);

    term.BeginStyledParagraph(inner, Alignment.Left, true)
        .Span("ratatui-unity", fg: Color.cyan, modifiers: Modifier.Bold)
        .Span(" — a Rust ")
        .Span("ratatui", fg: Color.yellow, modifiers: Modifier.Italic)
        .Span(" rendering backend for Unity via FFI.").Line().Line()
        .Span("• All widget ", modifiers: Modifier.Bold).Span("data is owned in C#").Line()
        .Span("• Rust acts as a ").Span("pure rendering engine", fg: Color.green).Line()
        .Span("• Zero-copy pixel buffer via raw pointer").Line() .Line()
        .Span("Keyboard", modifiers: Modifier.Bold | Modifier.Underlined).Line()
        .Span("  A / D        ", fg: Color.cyan).Span("switch tabs").Line()
        .Span("  W / S        ", fg: Color.cyan).Span("navigate lists").Line()
        .Span("  Arrows       ", fg: Color.cyan).Span("same as W/S/A/D").Line().Line()
        .Span("Mouse", modifiers: Modifier.Bold | Modifier.Underlined).Line()
        .Span("  Click tab    ", fg: Color.cyan).Span("switch tabs").Line()
        .Span("  Click item   ", fg: Color.cyan).Span("select list item").Line()
        .Span("  Hover item   ", fg: Color.cyan).Span("highlight list item").Line()
        .Span("  Scroll       ", fg: Color.cyan).Span("navigate lists / cycle tabs").Line()
        .Render();
}
private void RenderForecastArea(RatatuiTerminal term, uint area)
{
    var cols = term.Split(area, Direction.Horizontal,
        Constraint.Percentage(50),
        Constraint.Percentage(50)
    );

    // High temps bar chart
    term.Block(cols[0], "Highs °C", Borders.All);
    uint highInner = term.Inner(cols[0]);
    var highSb = new StringBuilder();
    foreach (var f in Forecast) highSb.AppendLine($"{f.Day}\t{f.High}");
    term.SetStyle(new Color(1f, 0.6f, 0f), Color.clear);
    term.BarChart(highInner, highSb.ToString().TrimEnd(), barWidth: 3, barGap: 1);

    // Low temps bar chart
    term.Block(cols[1], "Lows °C", Borders.All);
    uint lowInner = term.Inner(cols[1]);
    var lowSb = new StringBuilder();
    foreach (var f in Forecast) lowSb.AppendLine($"{f.Day}\t{f.Low}");
    term.SetStyle(new Color(0.4f, 0.7f, 1f), Color.clear);
    term.BarChart(lowInner, lowSb.ToString().TrimEnd(), barWidth: 3, barGap: 1);
}

Import built-in samples

The UPM package ships four runnable samples under Packages/com.farukcan.ratatui.unity/Samples~/. Import them via Window → Package Manager → ratatui-unity → Samples → Import.

Sample Folder What it shows
BasicUsage Samples~/BasicUsage/ Full tabbed demo: 9 tabs covering every widget, layout, input, hover, animation.
Developer Console Samples~/Console/ Drop-in runtime console (logs + command registry) auto-bootstrapped before scene load.
Notepad Samples~/Notepad/ Persistent notepad terminal app (TerminalInput title + TerminalTextArea body, F9 toggle).
Profiler Samples~/Profiler/ Read-only telemetry overlay (FPS, GC, rendering, memory) with sparklines; F10 toggle.

Contributing

Contributions are welcome — bug reports, docs, samples, and pull requests. See CONTRIBUTING.md for setup, build instructions, PR workflow, and issue templates.

License

MIT — see Packages/com.farukcan.ratatui.unity/LICENSE.
JetBrains Mono font: SIL Open Font License 1.1.