Easily open and manage your local coding projects inside kitty terminal.
- Fuzzy search for all or just recent projects using fzf.
- Open projects with your default terminal editor.
- Open preconfigured sets of named windows for different project types.
- Automatic closing of windows when exiting your editor.
- Create new project folders based on your chosen directory structure
- Edit the script to point to your project folders (
maxdepth
is hard coded to2
):
level_1_dir="$HOME/Documents/"
level_2_dirs=("$level_1_dir"/business "$level_1_dir"/personal "$level_1_dir"/apps-sites)
├── Documents
│ ├── apps-sites
│ │ └── rust < maxdepth 2 searches for projects below
│ │ ├── project-1
│ │ └── project-2
│ ├── business
│ │ └── documents <
│ │ └── project-3
│ └── personal
│ └── blog <
If you created projects as above the search results would be:
- project-1
- project-2
- project-3
- Decide on which terminal windows to open based on which files or directories are in the project root.
├── Documents
│ ├── apps-sites
│ │ └── rust
│ │ └── project-1
│ │ ├── src
│ │ │ ├── modules
│ │ │ │ ├── model.js
│ │ │ │ └── view.js
│ │ │ └── main.js
│ │ ├── package.json < detects JS/TS in project root
│ │ ├── README.md
│ │ └── .gitignore
For example, to open an additional terminal window for Rust and JS/TS projects the included default is:
if [ -f "Cargo.toml" ] || [ -f "package.json" ]; then
kitty @ launch --title "Terminal:$project_name" --keep-focus --cwd="$selected_dir"
fi
Make sure to close them again at the end of the script:
kitty @ close-window --match title:^"Terminal:$project_name" --ignore-no-match
- To achieve the recommended workflow, add the following to your
kitty.conf
file:
enabled_layouts stack,tall
Now you can easily toggle each window between full screen and split screen with
ctrl+shift l
If you find it easier to use just ctrl
than ctrl+shift
then the following
remapping is recommended:
map ctrl+t launch --cwd=current --type=tab
map ctrl+enter launch --cwd=current
map ctrl+1 first_window
map ctrl+2 second_window
map ctrl+3 third_window
map ctrl+4 fourth_window
map ctrl+5 fifth_window
map ctrl+6 sixth_window
map ctrl+] next_window
map ctrl+[ previous_window
- Copy the
ep
script into your$PATH
. - Run the command
ep
in your terminal. - Follow the prompts to search and open your desired project or create a new
project folder. A
README.md
file is placed inside new folders by default. - Start coding in your preconfigured and organized workspace.
- Quit using your editor to close the other windows.
Requirements:
Optional requirements:
Example Helix config for Rust:
[keys.normal.space]
c = { r = ":sh kitty @ send-text --match 'title:^Terminal' cargo run \\\\n", t = ":sh kitty @ send-text --match 'title:^Terminal' 'clear \\ncargo test \\n'" }