projecto

command module
v1.2.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 16, 2026 License: GPL-3.0 Imports: 14 Imported by: 0

README

Projecto

CI Go Reference Release

projecto

Projecto is a small CLI tool that launches your project folders directly in your editor of choice. Instead of opening a terminal, navigating to the project, and typing an editor command, Projecto keeps an interactive registry of your projects and opens the selected one in a single command.

Features

  • Interactive picker — clean keyboard-driven project list built with Bubble Tea, with fuzzy filtering and name/path columns
  • Recently-used ordering — the projects you open most often float to the top of the picker
  • Per-project editors — assign a dedicated editor to any project, with a global fallback for the rest
  • Cross-platform — single static binary for Linux, macOS, and Windows
  • Simple config — human-readable JSON you can edit directly with projecto edit
  • Shell completions — bash, zsh, fish, and PowerShell

Installation

Go

Requires Go 1.26 or newer:

go install github.com/rubiin/projecto@latest
AUR (Arch Linux)
yay -S projecto-bin

The AUR package ships shell completions for bash, zsh, and fish — they are installed system-wide and picked up automatically on new shells.

From source with just

Requires Go 1.26+ and just:

just build        # produces ./projecto with version info from git describe
just --list       # see all available recipes (test, lint, fmt, completions…)
Prebuilt binaries

Download the archive for your platform from the releases page, extract it, and place the projecto binary somewhere on your PATH.

Usage

Command Description
projecto add [dir] Register a directory as a project (defaults to the current directory)
projecto add [dir] --editor Register a directory and choose a dedicated editor for it
projecto Pick a project from an interactive list and open it (default)
projecto open Same as above — the picker is the default command
projecto open --verbose Open a project, showing the editor command being invoked
projecto rm Remove a project from the registry
projecto seteditor <cmd> Set the global editor used for projects without their own editor (defaults to $EDITOR)
projecto rmeditor Remove the editor override from a project
projecto edit Open the configuration file in the default application
projecto --help Show all available commands

A typical workflow looks like this:

# Inside a project directory, register it and pick its editor
cd ~/projects/api
projecto add --editor

# From anywhere, jump straight into it
projecto open
Shell completions

Projecto can generate completion scripts for bash, zsh, fish, and PowerShell via urfave/cli:

# bash
projecto completion bash | sudo tee /etc/bash_completion.d/projecto >/dev/null

# zsh
projecto completion zsh > "${fpath[1]}/_projecto"

# fish
projecto completion fish > ~/.config/fish/completions/projecto.fish

# powershell
projecto completion powershell > projecto.ps1
Editors

Editors are stored as shell commands, so anything your terminal can launch works — for example code, vim, idea, or subl. When adding a project with projecto add --editor, you can pick a preset (VS Code, Atom, Sublime Text) or enter a custom command.

Development

This repository ships a justfile with common tasks:

Recipe Description
just build Build ./projecto with version info from git describe
just test Run all tests
just test-race Run tests with the race detector
just vet Run go vet
just fmt Format code with gofmt
just lint Run golangci-lint
just completions <shell> Print the completion script for a shell
just clean Remove build artifacts

Configuration

Projecto stores its data in a projecto subdirectory of your user configuration directory (~/.config/projecto/ on Linux, ~/Library/Application Support/projecto/ on macOS, %AppData%\projecto on Windows), with the configuration file at projecto.json inside it.

{
	"commandToOpen": "code",
	"projects": [
		{
			"name": "projecto",
			"path": "/home/user/projecto",
			"editor": "vim"
		}
	]
}

When opening a project, Projecto uses the project's editor if set, and falls back to commandToOpen otherwise. The file is created with these defaults on first run and can be edited by hand with projecto edit.

Default editor

On first run, the global editor (commandToOpen) is taken from the EDITOR environment variable when set — only the command name is kept, so EDITOR="code --wait" stores code. If EDITOR is unset, it defaults to code. The same applies to projecto seteditor without an argument: it resets the global editor to $EDITOR (or code).

On Linux and macOS, Projecto follows the XDG Base Directory Specification: $XDG_CONFIG_HOME is honored when set (it must be an absolute path), making the config $XDG_CONFIG_HOME/projecto/projecto.json, and falling back to ~/.config/projecto/. On macOS this means setting XDG_CONFIG_HOME moves the config to ~/.config/projecto/ instead of ~/Library/Application Support/projecto/.

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

License

GPL-3.0

Made with ❤️ for opensource.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package helper provides configuration, filesystem, and terminal helpers used by projecto.
Package helper provides configuration, filesystem, and terminal helpers used by projecto.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL