0a8342592c | ||
---|---|---|
config | ||
controller | ||
project-manager | ||
ui | ||
utils | ||
.DS_Store | ||
.gitignore | ||
README.md | ||
go.mod | ||
go.sum | ||
main.go |
README.md
Pee
Project Environment Executor, Define your project workspace as code and config.
Usecase
Creating tmux sessions with preconfigured panes layouts and commands. inspired from tmuxinator
Get Started
Installation
go install git.raj.how/raj/pee.git
Initialize a project
pee init myproject
Select a directory from the file picker by <space>
, the directory that the init is run in will be the default starting directory for the file picker, you can go up and down directories by <backspace>
and <enter>
Configure project
Config is similar to tmuxinator
name: ppec-ui
editor: nvim
root: /Users/raj.sharma/Documents/GitHub/ppec-ui
windows:
- window_name: editor
layout: 8070,202x58,0,0[202x46,0,0,89,202x11,0,47,92]
panes:
- shell_command:
- nvim "+SessionManager load_current_dir_session"
- shell_command:
- echo 'npm run dev'
- window_name: hosts
layout: even-horizontal
shell_command_before:
- cd somewhere && activate env
panes:
- shell_command:
- ssh stg-host1
- shell_command:
- ssh stg-host2
- window_name: git
panes:
- shell_command:
- lazygit
lastopened: 2023-10-22T14:03:54.071678+05:30
attach: true
editor here is used as the default editor for editing the config file.
note: attach here does not tmux attach the new session, instead uses tmux switch-client for faster switching.
Run a project
For this example we have a project called ppec with the above config
pee ppec
and this should open up ppec tmux session
Edit or Run from list
You can also run
pee ls
and select the project from table and click <enter>
to open/create the session or <e>
to edit the config of the project
Roadmap
- Supporting iTerm2 As of now this supports only tmux windows and panes, would want to add support for iterm and other terminals if they have api's to do so.
- Ability to save an opened session into a config or update a config
- Parse cli args to config
- Ability to save custom layouts as named layouts that can be used across multiple projects
- Sync configs across devices
All contributions are welcome