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.
- 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
- Go 1.23 or later
- A working installation of Task
Clone the repository and build:
git clone https://github.com/Aj4x/tash
cd tash
task build
# or
go build -o tash ./cmd/tashgo install github.com/Aj4x/tash/cmd/tash@latestRun tash in a directory that contains a Taskfile.yml:
tash-
Navigation:
Tab- Switch focus between task list and output viewport↑/↓orj/k- Navigate up and down in focused panelPgUp/PgDn- Scroll output viewport by pages
-
Actions:
Enterore- Execute selected taski- Show detailed information about selected taskCtrl+l- Clear the output viewportCtrl+r- Refresh task list from TaskfileCtrl+x- Cancel running task
-
Application:
q,Esc, orCtrl+c- Quit application
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
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.
Tash is built with these primary libraries:
- BubbleTea - Terminal UI framework
- Bubbles - UI components (table, viewport)
- Lipgloss - Styling primitives
- Clone the repository
- Install dependencies:
go mod tidy
- Build the application:
task build # or go build -o tash ./cmd/tash
cmd/tash/main.go- Main application entry pointinternal/task/- Task management functionalityinternal/ui/- User interface componentsdocs/assets/- Documentation assetsexamples/- Example filesREADME.md- DocumentationTaskfile.yml- Project tasks for developmentgo.mod,go.sum- Go module files
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
Distributed under the MIT License. See LICENSE for more information.
