# ghzinga
`ghzinga` is a small terminal UI for keeping one GitHub pull request or issue
open on the side while you work.
It is not trying to be a full GitHub client. It is for maintainers who want a
faster-than-the-web-UI view of the current status, comments, checks, files, and
links for one PR or issue, with automatic refresh. It is similar in spirit to
[`gh dash`](https://github.com/dlvhdr/gh-dash), but focused on a single item
instead of a dashboard list.
`ghzinga` is inspired by [`Herdr`](https://herdr.dev/) and built with
[`Ratatui`](https://ratatui.rs/) and
[`Crossterm`](https://github.com/crossterm-rs/crossterm), so the terminal UI is
interactive: click tabs and links, expand rows, scroll with the mouse wheel,
drag the scrollbar, or use keyboard shortcuts.
https://github.com/user-attachments/assets/1078941e-f83f-4d6f-aceb-695a22015580
## Install
Install from crates.io:
```sh
cargo install ghzinga
```
Install from a local checkout:
```sh
cargo install --path .
```
This installs two equivalent commands:
- `gzg`
- `ghzinga`
## Usage
Open a pull request or issue:
```sh
gzg openclaw/openclaw#81834
gzg https://github.com/openclaw/openclaw/pull/81834
gzg https://github.com/openclaw/openclaw/issues/88499
```
`ghzinga` reuses your existing GitHub CLI login through `gh auth token`. You can
also set `GH_TOKEN` or `GITHUB_TOKEN` to override that token. Public repositories
can fall back to unauthenticated GitHub data when credentials are unavailable.
## What You Get
For pull requests, ghzinga shows:
- overview and conversation
- author, labels, branches, review state, and merge/check status
- activity, reviews, review comments, and linked issues or PRs
- commits
- checks and status contexts
- changed files with expandable patch context
For issues, ghzinga shows:
- overview and conversation
- author, labels, assignees, state, milestones, and projects
- timeline activity and comments
- linked issues or PRs
## Interaction
The UI is built for active terminal use:
- click tabs to switch views
- click GitHub links to open or navigate
- click rows and `[more]` controls to expand details
- click footer actions for refresh, copy, open, settings, help, and quit
- scroll with the mouse wheel or keyboard
- drag the scrollbar when content is long
- press `?` in the app for the full keyboard help
Common keys:
- `q` or `Ctrl-C`: quit
- `r`: refresh
- `Tab`, `Shift+Tab`, `Left`, `Right`: switch tabs
- `Up`, `Down`, `PageUp`, `PageDown`, `Home`, `End`: scroll
- `Enter`: activate the first visible link or action
- `y`: copy the first visible GitHub URL
- `o`: open the first visible GitHub URL
- `s`: settings
- `?`: help
## Configuration
The config file is:
```text
~/.config/ghzinga/config.toml
```
Default config:
```toml
[ui]
theme = "default"
symbols = "emoji"
spacing = "comfortable"
width_mode = "fixed"
fixed_width = 118
scrollbar = "on-scroll"
```
You can change theme, symbols, spacing, width, and scrollbar behavior from the
settings view inside the app.
## Refresh
`ghzinga` refreshes automatically every 300 seconds by default. Use
`--refresh-seconds 0` to disable automatic refresh, or press `r` to refresh
manually.
When a resource has more data than the normal GitHub API depth loads, ghzinga
shows a full-depth action so you can fetch the rest without restarting the app.
## License
[MIT](LICENSE)