I'm currently working on refactoring, and I'll be updating it frequently over the next several weeks. Thanks for your patience!
A macOS Quick Action that streamlines your workflow startup. Instead of manually opening a terminal, navigating to a project, and then launching your editor, this script lets you right-click any project folder and ask: "Which terminal should we use today?"
- Features
- Installation
- Usage
- Configuration
- CLI Usage
- Documentation
- Troubleshooting
- Contributing
- License
- Interactive Picker: Uses native macOS dialogs to choose your terminal on the fly
- Multi-Editor Support: Configure multiple editors and pick the right one for each project
- Custom Launch Arguments: Pass specific flags to your terminals and editors
- External Configuration: JSON config file for easy customization without editing code
- Memory System: Remembers your terminal/editor choices per project
- Context Aware: Opens the terminal directly to the selected folder
- Comprehensive Logging: Optional rotating logs for troubleshooting
- Lightweight & Fast: Zero dependencies, launches in under 2 seconds
- Highly Customizable: 13+ configuration options to match your workflow
- Two-dialog workflow: Pick terminal → pick editor → both launch
- Optional combined mode via
combined_dialog: truein config - Faster workflow when both apps needed
- Maintains full backward compatibility
Add to ~/.zshrc:
dev() { python3 "$HOME/github_repo/macos-dev-launcher/open_dev_env.py" "${1:-.}" }Reload:
source ~/.zshrcUse:
dev . # Current directory dev my-project # Searches common paths dev ~/full/path/project # Full pathWhen you run dev, it:
- Opens your terminal in the project directory
- Asks which terminal you want (Ghostty, Kitty, Warp, etc.)
- Asks which editor you want (VSCodium, etc.)
- Remembers your choices for next time
git clone https://github.com/KnowOneActual/macos-dev-launcher.git ~/github_repo/macos-dev-launcher cd ~/github_repo/macos-dev-launcher python3 open_dev_env.py --create-configAdd this to ~/.zshrc or ~/.bash_profile:
dev() { python3 "$HOME/github_repo/macos-dev-launcher/open_dev_env.py" "${1:-.}" }Then reload:
source ~/.zshrcdev .dev my-projectSearches in: ~/github_repo, ~/projects, ~/work, ~/dev, ~/src
dev ~/any/path/to/projectpython3 open_dev_env.py --testEdit ~/.config/macos-dev-launcher/config.json:
{ "terminals": ["Ghostty", "Kitty", "Warp", "Wave"], "editors": ["VSCodium"], "behavior": { "auto_open_editor": true, "remember_choices": true, "combined_dialog": true }, "logging": { "enabled": true, "level": "INFO", "file": "~/Library/Logs/macos-dev-launcher.log" } }| Setting | Default | What it does |
|---|---|---|
terminals | List of apps | Terminal apps to choose from |
editors | ["VSCodium"] | Editor apps to choose from |
auto_open_editor | true | Open editor after terminal |
remember_choices | false | Save your terminal/editor choice per project |
combined_dialog | true | Single dialog for both selections |
logging.enabled | true | Log to file |
✅ Smart app detection - Only shows installed apps ✅ Project memory - Remembers your last choices ✅ Combined dialog - One screen for terminal + editor ✅ Validation - Checks paths and apps before launching ✅ Logging - Tracks what happens ✅ Config file - Customize everything ✅ Error handling - Clear messages if something goes wrong
Assuming projects are in ~/github_repo/:
dev my-web-app # Opens ~/github_repo/my-web-app dev . # Opens current directoryEdit your shell config to add more search directories:
dev() { # Add your custom paths here by editing the Python script python3 "$HOME/github_repo/macos-dev-launcher/open_dev_env.py" "${1:-.}" }Or create a custom config at ~/.config/macos-dev-launcher/config.json.
Enable in config:
{ "behavior": { "remember_choices": true } }Now when you open a project, next time it remembers if you chose Ghostty + VSCodium.
- You run:
dev my-project - Script finds:
~/github_repo/my-project - Dialog appears: Pick terminal (Ghostty, Kitty, Warp?)
- Dialog appears: Pick editor (VSCodium, none, other?)
- Terminal opens: At project directory
- Editor opens: (if you chose one)
- Saved: Your choices for next time (if enabled)
Make sure you added the function to ~/.zshrc and ran source ~/.zshrc.
Check that the repo is at ~/github_repo/macos-dev-launcher and the file exists there.
Make sure project is in one of these directories:
~/github_repo/~/projects/~/work/~/dev/~/src/
Or use the full path: dev ~/any/path/to/project
Install one of these:
Phase 1: Path validation, app checking, error handling Phase 2: Config files, project memory, logging Phase 3.1: Combined dialog for terminal + editor Phase 4: Simple shell command dev
- macOS 10.14+
- Python 3.7+
- At least one terminal app installed
- (Optional) An editor app
MIT
Found a bug? Have an idea? Open an issue on GitHub.
That's it. Simple, clean, ready to use. ⚡