A simple python-based CLI tool for rapidly navigating multiple project directories.
To view full options, run pm help
USAGE:
$ pm <sub-command|project-name> [args]
SUB COMMANDS:
add <name> <path> ............. Add a project to the db
ls ............................ List all projects in db
rm <name> ..................... Remove project <name>
chdir <name> <path> ........... Change a project's path
rename <old-name> <new-name> .. Rename a project
help .......................... Display this menu
The project manager config file is, by default, located at ~/.config/pm/. There are two files in this directory: config.json, which stores the project manager config settings, and projects.json, which is the "db" of projects.
Currently, the terminal which is launched can be set by the user. To do this, the key "term" must be set in the config file. Two values will be automatically filled in by the project manager:
TNAME: Will be filled in with the name of the project.TWD: Will be set to the project's associated directory (terminal worki9ng directory).
"term":[
"/usr/bin/gnome-terminal",
"--title", "TNAME",
"--working-directory", "TWD",
"--tab"
]
"term":[
"/usr/bin/konsole",
"--workdir", "TWD",
"--new-tab"
]
"term":[
"wt.exe",
"new-tab",
"--title", "TNAME",
"--startingDirectory", "TWD",
"wsl"
]
NEW! in v1.1 (2026-04-18)
The <path> argument for projects can now also be used to run commands. If the path starts with #! (a shebang), then the string loaded as the path will be executed as a command in a shell. Otherwise, the previous behavior of opening a terminal at the specified <path> is followed. There is no change to the config or db format version in this update.
An example might be to launch your project tracking spreadsheet: pm add stat '#!/usr/bin/libreoffice -o /my/amazing/spreadsheet.ods'