https://github.com/nickhartjes/lazyjust
A lazy TUI for just — browse, search, and run recipes without memorizing commands. Built with Bubble Tea.
https://github.com/nickhartjes/lazyjust
bubbletea catppuccin cli command-runner go just justfile terminal tui
Last synced: about 1 month ago
JSON representation
A lazy TUI for just — browse, search, and run recipes without memorizing commands. Built with Bubble Tea.
- Host: GitHub
- URL: https://github.com/nickhartjes/lazyjust
- Owner: nickhartjes
- License: mit
- Created: 2026-04-19T11:31:22.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-04-19T13:22:29.000Z (about 1 month ago)
- Last Synced: 2026-04-19T13:28:01.765Z (about 1 month ago)
- Topics: bubbletea, catppuccin, cli, command-runner, go, just, justfile, terminal, tui
- Language: Go
- Size: 72.3 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# lazyjust
A modern TUI frontend for [just](https://github.com/casey/just) — browse and run recipes without memorizing commands.
```
╭─ lazyjust ─────────────────────────────────────────────────────╮
│ │
│ ╭─ Recipes ──────────────╮ ╭─ Output ────────────────────╮ │
│ │ │ │ │ │
│ │ ┃ General │ │ 📋 build │ │
│ │ ● build │ │ │ │
│ │ Build the project │ │ Build the project │ │
│ │ │ │ │ │
│ │ ○ test │ │ go build -o lazyjust . │ │
│ │ Run all tests │ │ │ │
│ │ │ │ │ │
│ │ ┃ docker │ │ │ │
│ │ ○ docker-up │ │ │ │
│ │ Start containers │ │ │ │
│ │ │ │ │ │
│ ╰─────────────────────────╯ ╰──────────────────────────────╯ │
│ │
│ 📂 backend/justfile ╱ 4 recipes ╱ ↑↓ navigate ╱ ⏎ run │
╰────────────────────────────────────────────────────────────────╯
```
## Features
- **Split-panel layout** — recipes on the left, output on the right
- **Recipe groups** — color-coded headers from `[group]` attributes
- **Body preview** — see recipe commands before running
- **Parameter input** — modal form for recipes with parameters, with defaults pre-filled
- **Confirm support** — `[confirm]` recipes prompt before execution
- **Real-time output** — streaming stdout/stderr with animated spinner
- **Search** — fuzzy filter recipes with `/`
- **Aliases & dependencies** — shown inline next to recipe names
- **Variadic params** — `*args` and `+args` handled in the input modal
- **ANSI color passthrough** — colored output from recipes preserved
- **Catppuccin Mocha** — soft dark theme with polished styling
## Install
### Homebrew
```bash
brew tap nickhartjes/tap
brew install lazyjust
```
### From source
```bash
go install github.com/nickhartjes/lazyjust@latest
```
### Build locally
```bash
git clone https://github.com/nickhartjes/lazyjust.git
cd lazyjust
go build -o lazyjust .
```
### From releases
Download a binary from the [releases page](https://github.com/nickhartjes/lazyjust/releases).
## Usage
```bash
# Run in any directory with a justfile
lazyjust
# Specify a justfile explicitly
lazyjust --justfile path/to/justfile
# Version
lazyjust --version
# Shell completions (see below)
lazyjust --completions zsh
lazyjust --completions bash
lazyjust --completions fish
```
### Shell completions setup
**Zsh** — add to your `~/.zshrc`:
```zsh
# lazyjust completions
eval "$(lazyjust --completions zsh)"
```
Or, to load from a file (faster startup):
```zsh
# Generate once
lazyjust --completions zsh > ~/.zfunc/_lazyjust
# Add to ~/.zshrc (before compinit)
fpath=(~/.zfunc $fpath)
autoload -Uz compinit && compinit
```
**Bash** — add to your `~/.bashrc`:
```bash
# lazyjust completions
eval "$(lazyjust --completions bash)"
```
**Fish** — run once:
```fish
lazyjust --completions fish > ~/.config/fish/completions/lazyjust.fish
```
## Keybindings
| Key | Action |
|-----|--------|
| `↑`/`↓` or `j`/`k` | Navigate recipes (or scroll output when focused) |
| `Enter` | Run selected recipe |
| `/` | Search/filter recipes |
| `Tab` | Switch focus between recipes and output panel |
| `Esc` | Cancel running recipe / close modal / clear search |
| `y`/`n` | Confirm/cancel `[confirm]` recipes |
| `q` | Quit |
| `Ctrl+C` | Force quit |
## Justfile discovery
`lazyjust` finds your justfile the same way `just` does:
1. Looks for `justfile`, `Justfile`, or `.justfile` in the current directory
2. Walks up parent directories until one is found
3. Use `--justfile` to override
## Requirements
- [just](https://github.com/casey/just) must be installed and on your `$PATH`
- A terminal with true color support (for the Catppuccin theme)
## Development
```bash
# Run all checks
just check
# Build with version info
just build-release
# Run the TUI on its own justfile
just run
# Test goreleaser locally
just release-snapshot
```
## License
MIT