π A smart command-line tool for managing and executing your frequently used commands across different projects with an interactive menu.
- Why LazyAlias?
- Quick Start
- Installation
- Configuration
- Usage
- Features
- Shell Integration
- Keyboard Shortcuts
- Troubleshooting
- Contributing
Tired of remembering and typing long commands for your different projects? LazyAlias solves this by providing:
- π― Quick access to your most-used commands
- π¨ Interactive menu for easy command selection
- π Project-specific command organization
- β‘οΈ Support for command arguments and options
- π Automatic directory switching
- π One-click command execution
Whether you're working with multiple projects or just want to streamline your workflow, LazyAlias makes command execution faster and more intuitive.
# Install with Homebrew
brew tap sergiorivas/lazyalias https://github.com/sergiorivas/lazyalias
brew install sergiorivas/lazyalias/lazyalias
# Or install with Go
go install github.com/sergiorivas/lazyalias/cmd/lazyalias@latest
# Create your config file
mkdir -p ~/.config/lazyalias
touch ~/.config/lazyalias/config.yaml
# Run LazyAlias
lazyalias
Create a config file at ~/.config/lazyalias/config.yaml
. Here's a basic example:
frontend:
folder: "/projects/frontend"
commands:
- name: "Start Dev Server"
command: "npm run dev"
- name: "Build"
command: "npm run build"
- name: "Test"
command: "npm run test"
api:
folder: "/projects/api"
commands:
- name: "Run Server"
command: "go run main.go"
- name: "Build"
command: "go build -o api"
- name: "Test"
command: "go test ./..."
lazyalias
This will show a menu with the commands configured for that project.
[/projects/frontend]% lazyalias
Welcome to LAZYALIAS πππ
Use the arrow keys to navigate: β β β β
Select Command
Start Dev Server
π Build
Test
β¬
οΈ Back to Projects
--------- Command ----------
Name: Build
Command: npm run build
And then
Welcome to LAZYALIAS πππ
β’ Selected Command: Build
π Command has been copied to clipboard!
π» Command to execute:
npm run build
lazyalias
This will first show a menu to select the project, then show its commands. It will automatically change to the project directory before executing the command.
[/projects]% lazyalias
Welcome to LAZYALIAS πππ
Use the arrow keys to navigate: β β β β
Select Project
π frontend
api
--------- Project ----------
Name: frontend
Commands: 3 available
Folder: /projects/frontend
Then
Welcome to LAZYALIAS πππ
β’ Selected Project: frontend
Use the arrow keys to navigate: β β β β
Select Command
Start Dev Server
π Build
Test
β¬
οΈ Back to Projects
--------- Command ----------
Name: Build
Command: npm run build
And then
Welcome to LAZYALIAS πππ
β’ Selected Project: frontend
β’ Selected Command: Build
Command has been copied to clipboard!
cd '/projects/frontend' && npm run build
- The command will be copied to your clipboard
- You can paste and execute it in your terminal
- If you're outside the project directory, the command will include the necessary
cd
command
Commands can include interactive arguments that will be prompted when executing the command:
- Use args to define a list of arguments for a command
- Each argument requires:
name
: Description of what the argument is foroptions
: Available options for the argument- Use
*
for free text input - Use
|
to separate fixed options (e.g.,option1|option2|option3
)
- Use
- Reference arguments in commands using
$arg_1
,$arg_2
, etc.
Example config.yaml
frontend:
folder: "/projects/frontend"
commands:
- name: "Start Dev Server"
command: "npm run dev"
- name: "Build"
command: "npm run build"
- name: "Test with Coverage"
args:
- name: "Coverage threshold"
options: "80|85|90|95"
command: "npm run test -- --coverage-threshold=$arg_1"
api:
folder: "/projects/api"
commands:
- name: "Run Server"
command: "go run main.go"
- name: "Build with Tags"
args:
- name: "Build tags"
options: "*"
command: "go build -tags $arg_1 -o api"
- name: "Test Package"
args:
- name: "Package path"
options: "*"
- name: "Test flags"
options: "-v|-race|-cover"
command: "go test $arg_2 $arg_1"
docker:
name: "π³ Docker"
commands:
- name: "Run Container"
args:
- name: "Container name"
options: "*"
- name: "Port"
options: "8080|3000|5432"
command: "docker run -p $arg_2:$arg_2 --name $arg_1 $arg_1"
- π¨ Interactive command selection menu
- π Project-specific command sets
- β‘οΈ Command arguments with:
- Free text input
- Predefined options
- Multiple arguments support
- π Automatic directory switching
- π Command copied to clipboard for easy execution
- π Simple YAML configuration
- π οΈ Support for any shell command
- π·οΈ Project aliases/names for better organization
Add this to your Ghostty config (~/.config/ghostty/config
):
keybind=super+shift+l=text:lazyalias && eval "$(pbpaste)"\n
Add this to your Fish config (~/.config/fish/config.fish
):
bind \cs 'lazyalias && eval (pbpaste)'
Add this to your .bashrc
or .zshrc
:
bind '"\C-s": "lazyalias && eval $(pbpaste)\n"'
Contributions are welcome! Feel free to:
- 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
This project is licensed under the MIT License - see the LICENSE file for details.
Give a βοΈ if this project helped you!
β/β
: Navigate through optionsEnter
: Select optionEsc
: Go back/exitCtrl+C
: Exit at any time
-
Command not found
- Ensure LazyAlias is properly installed
- Check if the binary is in your PATH
- Try reinstalling with
brew reinstall lazyalias
orgo install github.com/sergiorivas/lazyalias/cmd/lazyalias@latest
-
Config file not found
- Verify the config file exists at
~/.config/lazyalias/config.yaml
- Check file permissions
- Ensure YAML syntax is correct
- Verify the config file exists at
-
Shell integration not working
- Verify the shell config changes are saved
- Restart your terminal
- Check if the keybinding conflicts with other applications
- Check the GitHub Issues
- Open a new issue with:
- Your OS and version
- Installation method
- Error message
- Steps to reproduce