# nahual

> `nahual` (Nahuatl: *companion spirit*). Everyday "open-with" viewers, in Rust, on [Llimphi](https://github.com/tawasuyu/llimphi).

`nahual` is the set of viewers a desktop user expects — a file shell that dispatches the right viewer by content, plus viewers for text, images, audio, video, SVG, maps, fonts, hex, tables, markdown, archives and more. All render on the same GPU-accelerated Llimphi UI. A **meta-runtime** lets you define a new viewer from a JSON schema, with no Rust.

<p align="center">
  <img src="docs/nahual_showreel.gif" alt="nahual showreel — a Dopus-style file manager: folder tree, session tabs, icon grid with real thumbnails, and browse-and-preview with a content-dispatched viewer" width="900">
  <br>
  <sub>a file manager with real thumbnails + browse-and-preview, the viewer dispatched by content</sub>
</p>

## Run

```sh
cargo run --release -p nahual-shell-llimphi          # the open-with shell (dispatches by content)
cargo run --release -p nahual-file-explorer-llimphi  # file tree
cargo run --release -p nahual-image-viewer-llimphi   # image viewer
cargo run --release -p nahual-text-viewer-llimphi    # text viewer
```

## Viewers

`text` · `image` (PNG/JPEG/WebP) · `audio` · `video` · `svg` · `map` (geo) · `font` (TTF/OTF glyph outlines) · `hex` · `table` · `markdown` · `archive` (zip/tar) · `card` · `gallery` · `tree` — plus `nahual-viewer-core` / `nahual-source-core` / `nahual-thumb-core` and the `meta-runtime` + `meta-schema` libraries.

## How dependencies work

This is a clean front-door repo: it contains **only nahual's own crates**. Everything else is pulled as a git dependency —

- the **Llimphi** UI framework → [`llimphi.git`](https://github.com/tawasuyu/llimphi)
- foundational crates (content discern, media decoders, content-addressed sources, shared leaves) → the [`tawasuyu`](https://github.com/tawasuyu/tawasuyu) monorepo, the suite's source of truth.

No vendoring, no duplication. First build clones those repos (cached afterwards).

## Considerations

- **Viewers, not editors.** To *edit* text use `nada`; to edit an image use `pineal`.
- The media viewers decode AV1/Opus/FLAC/MP3/Vorbis/WebM natively (pure-Rust, no ffmpeg).
- Cross-platform Llimphi UI (Linux/macOS/Windows); viewers also compile inside the Wawa kernel.

## License

MIT. Builds on [Llimphi](https://github.com/tawasuyu/llimphi) and the [tawasuyu](https://github.com/tawasuyu/tawasuyu) suite.
