A standalone project switcher for development environments, inspired by virtualenvwrapper's workon command.
- Quick switching between development projects
- Automatic virtual environment activation (.venv)
- Custom init commands per project
- Tab completion for project names
- Simple JSON configuration
- Cross-platform (Linux, macOS, Windows)
cargo install --path .cargo install dev-onThe dev-on binary handles configuration management and project lookup.
Add to your .bashrc or .bash_profile:
source /path/to/dev-on/shell/devon.bashOr copy the wrapper to your dotfiles and source it from there.
dev-on initThis creates ~/.devon.json with an empty project list.
# Simple project (auto-activates .venv if present)
dev-on add myproject /path/to/myproject
# With custom init command
dev-on add myproject /path/to/myproject --init "source .venv/bin/activate"
# With multiple init commands
dev-on add myproject /path/to/myproject --init "source .venv/bin/activate" --init "export DEBUG=true"devon myprojectThis will:
- Change to the project directory
- Run any configured init commands
- Auto-activate
.venvif no init commands are specified
devon-list
# or
dev-on listdevon-edit
# or
dev-on editOpens ~/.devon.json in your $EDITOR.
dev-on remove myprojectConfiguration is stored in ~/.devon.json:
{
"projects": {
"myproject": {
"path": "/home/user/projects/myproject",
"init": [
"source .venv/bin/activate",
"export DJANGO_SETTINGS_MODULE=myproject.settings.dev"
]
},
"another": {
"path": "/home/user/projects/another",
"init": []
}
}
}dev-on init- Initialize config filedev-on get <project>- Get project path and init commands (used by shell wrapper)dev-on list- List all projectsdev-on add <alias> <path> [--init <cmd>]- Add a projectdev-on remove <alias>- Remove a projectdev-on edit- Edit config file
devon <project>- Switch to projectdevon-list- List projectsdevon-add- Add project (passes through to dev-on add)devon-edit- Edit config (passes through to dev-on edit)
- Single fast binary with no runtime dependencies
- Cross-platform support
- Type-safe configuration handling
- Easy distribution via cargo
MIT