TUI for running frequently used commands from markdown files
Find a file
2026-06-15 12:47:51 +02:00
examples Ghostty: run commands directly via base64 to avoid Gatekeeper prompts; translate README; anonymize examples 2026-06-15 12:47:51 +02:00
src Ghostty: run commands directly via base64 to avoid Gatekeeper prompts; translate README; anonymize examples 2026-06-15 12:47:51 +02:00
tests Ghostty: run commands directly via base64 to avoid Gatekeeper prompts; translate README; anonymize examples 2026-06-15 12:47:51 +02:00
.gitignore Initial commit 2026-06-15 10:46:15 +02:00
Cargo.lock Ghostty: run commands directly via base64 to avoid Gatekeeper prompts; translate README; anonymize examples 2026-06-15 12:47:51 +02:00
Cargo.toml Ghostty: run commands directly via base64 to avoid Gatekeeper prompts; translate README; anonymize examples 2026-06-15 12:47:51 +02:00
README.md Ghostty: run commands directly via base64 to avoid Gatekeeper prompts; translate README; anonymize examples 2026-06-15 12:47:51 +02:00

lines

A TUI app for quickly running frequently used commands — ideal for SSH scripts, updates, and anything you run regularly from the terminal.

Installation

brew install janvete/tools/lines

Usage

lines              # opens the TUI
lines --dir /path  # use a different data directory

Data structure

Data is stored as plain .md files in ~/.lines. Groups are subdirectories.

~/.lines
├── Servers
│   └── web.md
└── Scripts
    └── update.md

.md format

Each section starts with # Command name. Command lines follow the heading.

# Web server
ssh admin@web.example.com

# Database
ssh admin@db.example.com

A section without command lines means "run all commands in this file".

# Run all

# Docker update
ssh admin@host1.example.com /opt/app/update.sh
ssh admin@host2.example.com /opt/app/update.sh

Configuration

Create ~/.lines/config.toml:

terminal = "Ghostty"   # options: Terminal, Ghostty, iTerm

The default terminal is Terminal (macOS Terminal.app).

Controls

Key Action
↑/↓ or j/k move
←/→ or h/l switch panel
Enter run selected command / all commands
e open current .md file in $EDITOR
r reload data
q / Esc quit

Backup

The entire ~/.lines folder is plain text. Copy it to a disk, Git repo, or iCloud. On a new Mac, move it to the same location and lines works immediately.

License

MIT