Tash
Tash is a TUI (Text User Interface) application for viewing and executing tasks from Taskfiles. It provides an interactive terminal interface to work with tasks defined in Taskfile.dev format.

Features
- Browse and view task information from Taskfiles
- Execute tasks with real-time output display
- Interactive split-screen interface with task list and output panels
- Task information display including ID, description, and aliases
- Visual feedback for task execution status
- Keyboard-driven navigation and control
Installation
Prerequisites
- Go 1.23 or later
- A working installation of Task
From Source
Clone the repository and build:
git clone https://github.com/Aj4x/tash
cd tash
task build
# or
go build -o tash ./cmd/tash
Using Go Install
go install github.com/Aj4x/tash/cmd/tash@latest
Usage
Run tash in a directory that contains a Taskfile.yml:
tash
Key Controls
-
Navigation:
Tab - Switch focus between task list and output viewport
↑/↓ or j/k - Navigate up and down in focused panel
PgUp/PgDn - Scroll output viewport by pages
-
Actions:
Enter or e - Execute selected task
i - Show detailed information about selected task
Ctrl+l - Clear the output viewport
Ctrl+r - Refresh task list from Taskfile
Ctrl+x - Cancel running task
-
Application:
q, Esc, or Ctrl+c - Quit application
Interface
Tash features a split-screen interface:
-
Left Panel - Task Table:
- Lists all available tasks with their ID, description, and aliases
- Highlights currently selected task
- Shows focused state with colored border
-
Right Panel - Output Viewport:
- Displays command output in real-time
- Supports scrolling for long outputs
- Different colors for application messages, command output, and errors
-
Help Bar - Bottom of screen:
- Shows available keyboard shortcuts
How It Works
Tash runs the task --list-all command to gather information about available tasks in the current directory. It parses this output to create an interactive task list.
When you execute a task, Tash runs the corresponding task <taskname> command and displays the output in real-time in the right panel.
Development
Dependencies
Tash is built with these primary libraries:
Building from Source
- Clone the repository
- Install dependencies:
go mod tidy
- Build the application:
task build
# or
go build -o tash ./cmd/tash
Project Structure
cmd/tash/main.go - Main application entry point
internal/task/ - Task management functionality
internal/ui/ - User interface components
docs/assets/ - Documentation assets
examples/ - Example files
README.md - Documentation
Taskfile.yml - Project tasks for development
go.mod, go.sum - Go module files
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature)
- Commit your changes (
git commit -m 'Add some amazing feature')
- Push to the branch (
git push origin feature/amazing-feature)
- Open a Pull Request
License
Distributed under the MIT License. See LICENSE for more information.
Acknowledgements
- Taskfile for the amazing task runner
- Charm for the excellent terminal UI libraries