This guide covers all installation methods for proj.
git clone https://github.com/s33g/proj.git
cd proj
make installAfter releases are published:
curl -sSL https://raw.githubusercontent.com/s33g/proj/main/scripts/install.sh | bash- Go 1.24 or later
- Make
- Git
-
Clone the repository:
git clone https://github.com/s33g/proj.git cd proj -
Build and install:
make install
-
The installer will:
- Build the binary
- Check for existing proj installations
- Ask before removing old versions
- Install to
~/.local/bin/proj - Display shell integration instructions
# Install to /usr/local/bin (may need sudo)
PREFIX=/usr/local make install
# Install to ~/bin
PREFIX=$HOME make installDownload from the releases page:
-
Download the binary for your platform:
proj-linux-amd64- Linux x86_64proj-linux-arm64- Linux ARM64proj-darwin-amd64- macOS Intelproj-darwin-arm64- macOS Apple Silicon
-
Install manually:
# Download (example for Linux amd64) curl -LO https://github.com/s33g/proj/releases/latest/download/proj-linux-amd64 # Make executable chmod +x proj-linux-amd64 # Move to bin directory mv proj-linux-amd64 ~/.local/bin/proj
The install script automates downloading and setup:
curl -sSL https://raw.githubusercontent.com/s33g/proj/main/scripts/install.sh | bashThe script will:
- Detect your OS (Linux/macOS) and architecture (amd64/arm64)
- Download the latest release
- Install to
~/.local/bin - Optionally set up shell integration
INSTALL_DIR=/usr/local/bin curl -sSL https://raw.githubusercontent.com/s33g/proj/main/scripts/install.sh | bashIf you have Go installed:
go install github.com/s33g/proj/cmd/proj@latestThis installs to $GOPATH/bin or $HOME/go/bin.
proj --versionExpected output:
proj version v1.0.0
If proj is not found, add the installation directory to your PATH.
For ~/.local/bin:
Add to ~/.bashrc or ~/.zshrc:
export PATH="$HOME/.local/bin:$PATH"Then reload:
source ~/.bashrc # or ~/.zshrcproj --initThis creates ~/.config/proj/config.json with default settings.
proj --set-path ~/codeReplace ~/code with your actual projects directory.
# Launch the TUI
proj
# List projects
proj --list
# Open config
proj --configcd proj
git pull
make installThe installer will detect the existing installation and ask before overwriting.
Download the new version and replace the existing binary:
curl -LO https://github.com/s33g/proj/releases/latest/download/proj-linux-amd64
chmod +x proj-linux-amd64
mv proj-linux-amd64 ~/.local/bin/projcd proj
make uninstall~/.config/proj/scripts/uninstall.sh# Remove binary
rm ~/.local/bin/proj
# Remove configuration (optional)
rm -rf ~/.config/proj
# Remove shell integration from ~/.bashrc or ~/.zshrc
# (delete the proj() function)The installation directory is not in your PATH.
Solution:
export PATH="$HOME/.local/bin:$PATH"Add this to your ~/.bashrc or ~/.zshrc to make it permanent.
The binary doesn't have execute permissions.
Solution:
chmod +x ~/.local/bin/projShell integration is not set up.
Solution:
- See Shell Integration section below
- Reload your shell:
source ~/.bashrcor start a new terminal - Use
proj(the function) not~/.local/bin/proj(the binary)
There might be multiple installations.
Solution:
# Find all installations
which -a proj
# Remove old ones manually, or use:
make install # Will detect and offer to remove old versionsConfiguration hasn't been initialized.
Solution:
proj --initThe projects path might be incorrect.
Solution:
# Check current path
cat ~/.config/proj/config.json | grep reposPath
# Set correct path
proj --set-path ~/your/projects/directoryGo might not be installed or is outdated.
Solution:
# Check Go version
go version
# Should be 1.24 or later
# Install/update Go from https://golang.org/dl/- Standard installation works on most distributions
- May need
sudofor/usr/local/bininstallation
- Works on both Intel and Apple Silicon
- May need to allow in Security & Privacy on first run
- Homebrew installation coming soon
Windows is not supported. Use WSL (Windows Subsystem for Linux) instead:
# In WSL
git clone https://github.com/s33g/proj.git
cd proj
make installShell integration allows proj to change your current directory when you navigate to a project. This feature is optional but highly recommended.
The install script will automatically detect your shell and offer to set up integration:
curl -sSL https://raw.githubusercontent.com/s33g/proj/main/scripts/install.sh | bashIf automatic setup doesn't work or you prefer manual setup:
# Download the integration script
curl -sSL https://raw.githubusercontent.com/s33g/proj/main/scripts/shells/bash.sh -o ~/.config/proj/bash_integration.sh
# Add to ~/.bashrc
echo 'source ~/.config/proj/bash_integration.sh' >> ~/.bashrc
# Reload shell
source ~/.bashrc# Download the integration script
curl -sSL https://raw.githubusercontent.com/s33g/proj/main/scripts/shells/zsh.sh -o ~/.config/proj/zsh_integration.sh
# Add to ~/.zshrc
echo 'source ~/.config/proj/zsh_integration.sh' >> ~/.zshrc
# Reload shell
source ~/.zshrc# Download the integration script
curl -sSL https://raw.githubusercontent.com/s33g/proj/main/scripts/shells/fish.fish -o ~/.config/fish/conf.d/proj.fish
# Integration will be active in new fish sessionsFor shells not listed above (PowerShell, Nushell, Elvish, etc.), you can:
- Contribute support: See Adding Shell Support
- Manual integration: Create your own wrapper function based on the examples
- Use without integration:
projworks fine without shell integration, you just won't get automatic directory changes
Shell integration works by:
- Creating a wrapper function that replaces the
projcommand - Running the actual
projbinary with your arguments - Checking for a temporary file containing the target directory
- Changing to that directory if it exists
- Cleaning up the temporary file
The temporary file is created at ~/.config/proj/.proj_last_dir when you select a project in the TUI.
| Location | Description |
|---|---|
~/.local/bin/proj |
Default binary location |
~/.config/proj/config.json |
Configuration file |
~/.config/proj/plugins/ |
Plugin directory |
- Check the README
- Review Configuration
- Open an issue on GitHub