An highly opinionated projects manager
zp
lets you create and manage projects. It works by maintaining a global project directory which hosts
all your projects. It also integrates with fzf for quickly selecting projects,
Zellij to provide multiplexing support and workspace
persistence and git to easily import external repositories.
zp
works for only certain set of people:
- Your development IDE is basically a terminal and Vim/Neovim.
- You use Zellij/Tmux for persisting project sessions and multiplexing.
If you don't satisfy any of the above conditions, don't use this and go away.
You are probably looking into this because
- You have to deal with >= 5 active projects and a dozen side projects.
- You are a total hipster who wants to overcomplicate typing 3-4 commands everyday on the terminal.
- You are fine hacking and maintaining a project manager by yourself.
If you don't satisfy any of the above conditions, don't use this and go away, and yes its a repetition..
Only one: type as less as possible in the terminal for project related tasks, let the fuzzy finder type for you.
- Python >= 3.13
- fzf
- Zwllij
- Have a global project directory under which you host all your projects. By default, it is assumed to be
$HOME/projects/
but can be overriden by theZP_PROJECTS_DIR
enviroment variable
- Clone thw repo
- Run
pip install .
zp new [PROJECT_NAME]
This will create a new directory under your global projects directory and start a zellij session inside that project directory.
zp
Opens fzf and lets you select and switch to a project.
If executed inside an already registered project, will immediately run Zellij inside that directory. To force use the fuzzy finder rather than switching instantly, use the -f
flag
zp sw [PROJECT_NAME]
Do not use this unless you are writing a shell script or you've gone insane and want to keep hitting your fingers on your keyboard.
zp rm [PROJECT_NAME]
- By default,
zp
removes the associated session from Zellij, use the--no-session
to also keep the session. - Zellij leaves the project directory as it is, essentially deregistering it from
zp
. Use the--dir
flag to also remove it from the global projects directory.
zp import [PROJECT_NAME]
zp import gh:[USERNAME]/[REPONAME]
zp import gl:[USERNAME]/[REPONAME]
zp import [URL starting with http:// or https://]
Clone it, change it, enjoy your life
Create a new file under src/
directory, defining two functions switch_session()
and delete_session()
and import it in the src/main.py
instead of the zellij.py
file. Use the zellij.py
for an example.
Don'd send PRs unless its a bug or feature that everyone can benefit from.
All contributions are under the BSD 3 Clause license. See the LICENSE file.