████████╗██╗ ██╗██████╗
╚══██╔══╝██║ ██║██╔══██╗
██║ ██║ ██║██████╔╝
██║ ██║ ██║██╔═══╝
██║ ╚██████╔╝██║
╚═╝ ╚═════╝ ╚═╝
First off, thanks for taking the time to contribute!
Be nice. Be respectful. We're all here to make terminals better.
- Zsh 5.1+
- Git
- A terminal that supports 256 colors
# Fork and clone
git clone https://github.com/YOUR_USERNAME/terminup.git
cd terminup
# Create a feature branch
git checkout -b feature/amazing-feature
# Source for testing
source terminup.zshAfter making changes:
# Reload
terminup reload
# Or source directly
source terminup.zshTest in a fresh shell to catch any issues:
zsh -f
source terminup.zshBefore submitting a bug report:
- Check if it's already reported
- Check if it's a Zsh compatibility issue
- Try with a minimal
.zshrc
Include in your report:
- Zsh version: `echo $ZSH_VERSION`
- Terminal: iTerm2 / Terminal.app / Kitty / etc.
- OS: macOS / Linux / WSL
- Steps to reproduce
- Expected vs actual behavior
Open an issue with:
- Clear description of the feature
- Use case / problem it solves
- Proposed implementation (if any)
- Fork the repo
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit PR
PRs should:
- Focus on one feature/fix
- Include documentation updates
- Follow the style guide
- Pass shellcheck (if available)
components/
├── feature-name.zsh # One file per feature area
# ╭──────────────────────────────────────────────────────────────╮
# │ Section Header │
# ╰──────────────────────────────────────────────────────────────╯
# Use descriptive function names
my_function() {
local variable="value" # Local variables
# Comments explain why, not what
if [[ -n "$variable" ]]; then
echo "Output"
fi
}
# Aliases at the end of files
alias mf='my_function'| Type | Convention | Example |
|---|---|---|
| Functions | snake_case | git_push_animated |
| Variables | UPPER_SNAKE | TERMINUP_CONFIG |
| Local vars | lower_snake | local my_var |
| Aliases | short lowercase | gp, ll |
Use 256-color codes consistently:
# Good
echo -e "\033[38;5;46mGreen text\033[0m"
# Use theme variables when available
echo -e "\033[38;5;${TERM_SUCCESS}mThemed text\033[0m"# Status messages
echo -e " \033[38;5;46m✓\033[0m Success message"
echo -e " \033[38;5;196m✗\033[0m Error message"
echo -e " \033[38;5;226m⚠\033[0m Warning message"
# Headers
echo ""
echo -e " \033[38;5;51m╭───────────────────────────────────────╮\033[0m"
echo -e " \033[38;5;51m│\033[0m Title Here \033[38;5;51m│\033[0m"
echo -e " \033[38;5;51m╰───────────────────────────────────────╯\033[0m"
echo ""Edit components/themes.zsh:
THEMES+=(
my-theme "183,189,245,148,223,210,102"
# │ │ │ │ │ │ └── muted
# │ │ │ │ │ └────── error
# │ │ │ │ └────────── warning
# │ │ │ └────────────── success
# │ │ └────────────────── accent
# │ └────────────────────── secondary
# └────────────────────────── primary
)- Add function to appropriate component file
- Update help in
terminup.zsh - Update README.md
- Add completion if applicable
- Create
components/your-feature.zsh - Add source line to
terminup.zsh - Document in README
Format:
type(scope): short description
Longer explanation if needed.
Fixes #123
Types:
feat: New featurefix: Bug fixdocs: Documentationstyle: Formattingrefactor: Code restructuringperf: Performancetest: Testschore: Maintenance
Examples:
feat(git): add animated rebase command
fix(startup): prevent double boot on nested shells
docs(readme): add FAQ section
style(themes): standardize color code format
Open an issue or discussion. We're happy to help!
╔═════════════════════════════════════════════════════════════╗
║ ║
║ Thanks for contributing to making terminals better! ║
║ ║
╚═════════════════════════════════════════════════════════════╝