# Panasyn
<img src="./assets/brand/background.png" alt="Panasyn terminal preview" width="720">
Panasyn is a lightweight GPU terminal for macOS and Linux.
Core terminal rendering, tabs, selection, scrollback, OSC 8 links, static
background image functionality, and replay/fuzz developer tools are in place.
<img src="./assets/screenshot.png">
## Install
### Install with Cargo
```sh
cargo install panasyn
panasyn
```
`cargo add panasyn` is for adding Panasyn as a dependency inside another Rust
project. For installing and running the terminal app, use `cargo install`.
### Install from GitHub
Use this when you want the current repo version:
```sh
git clone <repo-url>
cd panasyn
cargo install --path .
panasyn
```
Or run it without installing:
```sh
cargo run --release
```
## Configure
Panasyn reads its config from:
```text
~/.config/panasyn/config.toml
```
Create the file if it does not exist:
```sh
mkdir -p ~/.config/panasyn
nano ~/.config/panasyn/config.toml
```
Example:
```toml
[font]
family = "OCR A Extended"
size = 14.0
line_height = 1.4
[appearance]
background = "#02050A"
foreground = "#E6E6E6"
selection_background = "#0066CC"
selection_foreground = "#BFBFBF"
cursor_background = "#00A2FF"
cursor_foreground = "#02050A"
cursor_thin = "#00A2FF"
inverse_background = "#0066CC"
hyperlink_background = "#0066CC"
[appearance.background_image]
path = ""
opacity = 0.18
mode = "cover" # cover, contain, or stretch
max_dimension = 1920 # large images are downscaled before upload
```
After editing the config, restart Panasyn.
## What It Supports
- GPU text rendering through `wgpu` and `glyphon`.
- Native PTY shell sessions.
- Tabs with independent shells.
- Scrollback, selection, paste, cursor styles, SGR colors, and mouse reporting.
- Static background images.
- OSC 8 hyperlinks with an allowlist for safe link opening.
- Headless replay, benchmarks, and ANSI fuzzing for development.
## Release Notes
This is the first version release of Panasyn. For now, distribution is through
the GitHub repo and Cargo. A packaged macOS app/DMG is planned.
## Developer Setup
Install Rust, then run:
```sh
cargo run
```
Useful checks before a pull request:
```sh
cargo fmt --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test
cargo test --all-features
RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --all-features
cargo audit
cargo package --locked
cargo build --release --all-features
```
Developer-only replay tools:
```sh
panasyn replay /path/to/session.jsonl --headless --machine
panasyn bench --frames 3 --pty-bytes 65536 --machine
panasyn fuzz 1000 --categories
```
Repo map:
```text
src/app/ window lifecycle, tabs, config, input
src/ansi/ ANSI/VT parser integration
src/terminal/ terminal grid, cells, scrollback, selection
src/renderer/ GPU renderer and background image layer
src/pty/ platform PTY session management
src/replay/ replay, benchmark, fuzz, and regression tooling
assets/brand/ README and brand artwork
assets/macos/ macOS app icon assets
docs/ architecture and subsystem notes
scripts/ local development helpers
tests/ integration tests
```