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/tash
go install github.com/Aj4x/tash/cmd/tash@latest
Run 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:
Enter
ore
- 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.