# hare-libtui

This package provides widgets and various functions for creating a tui
(terminal user interface).

This currently mostly provides a scrollable list widget with truncated width and various functions to init the ui, print the ui, add listeners, scan a rune, suspend/resume the TUI, clear the screen, etc.

For a messy but functional example of this library's usage see: https://git.sr.ht/~ark/ilhare

**Status**: Incomplete

## Provided modules

- **libtui**: main ui functions and initialization
- **libtui::layout**: common functions for widget containers
- **libtui::vlayout**: widget container focused on vertical layouts (incomplete, untested)
- **libtui::widget**: common functions and types for all widgets
- **libtui::widget::list**: scrollable width-truncated list widget with relevant functions for navigation and selection
- **libtui::widget::ed**: a text editor widget (incomplete, untested)

## Dependencies

- hare-wcwidth: https://git.sr.ht/~ark/hare-wcwidth
- hare-set: https://git.sr.ht/~ark/hare-set

## Installation

### System-wide installation

```
make install
```

To generate html docs:

```
make docs
```

### Vendoring

```
git subtree -P vendor/hare-libtui/ add https://git.sr.ht/~ark/hare-libtui master
```
