MinUI 🌒
MinUI is a minimal terminal-based game and UI engine written in Rust. This project is a work in progress, currently in its very early stages!
Motivation
MinUI was born from a desire to create terminal-based games in Rust, specifically a terminal Tetris clone in my case. While several terminal UI libraries/frameworks exist for Rust, none quite offered the perfect balance of simplicity, performance, and game-focused features that I was looking for. MinUI aims to fill this gap by providing a fast, easy-to-use framework that makes terminal game and UI development a joy.
Planned Features
- 🚀 Fast: Built for performance with gaming in mind
- 🎮 Game-focused, TUI-ready: API designed around common game development needs
- 🎯 Minimalist: Clean, intuitive API with zero unnecessary complexity
- ⌨️ Input Handling: Robust keyboard event system
- 🧰 Safe: Proper error handling and automatic resource cleanup
Project Status
MinUI is in early development, and I'm actively working on adding more features:
- Full color support
- Simple and customizable widget system
- Container widget
- Label widget
- Text block widget
- Panel widget
- Table widget
- Input widget
- Predefined common widget layouts
- Robust error handling
- Buffered drawing for smooth and efficient updates
- Built-in game loop utilities
- Simplified character/sprite and map management utilities
- Easy character/sprite movement support with common Unicode characters built-in
- Cell management with collision detection options
- Support for various input methods (customizable key binds with crokey, mouse support, etc.)
Getting Started
Simply add the MinUI crate to your cargo.toml as follows:
[]
= "0.1.2"
Then you can get started using one of the simple, provided example programs.
Basic Example
use ;
// This example shows the minimal workflow, how to:
// - Create a window
// - Write some text
// - Enter an input loop
// - Handle different types of input events
// - Clean up automatically when done
Run the example program with the command: cargo run --example basic_usage
Building Terminal Games with MinUI
MinUI is designed to make terminal game development straightforward. Here's what makes it great for games:
- Minimal Dependencies: Built on crossterm with minimal additional dependencies
- Game First: Designed primarily for terminal-based game development, with great UI capabilities as well
- Easy to Learn: Clean, intuitive API that gets out of your way
- Performance Focused: Built with game performance requirements in mind
Building TUI Apps with MinUI
MinUI also has a focus on simplifying the task of building TUI applications. Here's some of what it has to offer:
- Simple Widget System: Easy-to-use widgets with all the features you need and nothing you don't
- Example Programs: Several examples to help you get started with the widgets
- Customizable: I'm trying to make every widget I add as configurable as possible, while not overwhelming you with options
Games Built with MinUI
- Coming Soon: Tet.rs
Acknowledgments
Built using: