Project Environment Executor, Define your project workspace as code and config.
Creating tmux sessions with preconfigured panes layouts and commands. inspired from tmuxinator
go install github.com/xrehpicx/pee.git@latestpee init myprojectSelect 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>
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: trueeditor 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.
For this example we have a project called ppec with the above config
pee ppecand this should open up ppec tmux session
You can also run
pee lsand select the project from table and click <enter> to open/create the session or <e> to edit the config of the project
- 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

