https://github.com/sidoshi/gjump
Replace tmux sessions (partly) with ghostty
https://github.com/sidoshi/gjump
ghostty tmux
Last synced: 28 days ago
JSON representation
Replace tmux sessions (partly) with ghostty
- Host: GitHub
- URL: https://github.com/sidoshi/gjump
- Owner: sidoshi
- Created: 2026-03-11T09:13:29.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-03-11T10:09:58.000Z (4 months ago)
- Last Synced: 2026-05-30T17:30:53.474Z (about 1 month ago)
- Topics: ghostty, tmux
- Language: TypeScript
- Homepage:
- Size: 254 KB
- Stars: 4
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# GJump
A [Raycast](https://www.raycast.com/) extension that replaces tmux session workflows with native [Ghostty](https://ghostty.org/) windows.
Ghostty already supports splits, tabs, and windows — the only thing missing is a quick way to jump between project directories (like tmux sessions). GJump fills that gap: browse your repositories, open them in a dedicated Ghostty window with nvim, and instantly switch back to them later.
## How it works
1. GJump scans your configured project directories and lists them in Raycast
2. Projects are grouped into **Running** (open Ghostty window), **Recent**, and **All**
3. Selecting a project either **focuses** its existing window or **spawns** a new Ghostty window for it
4. New windows `cd` into the project directory and open `nvim`
5. You can also open a quick **Scratchpad** terminal or type any name to create an ad-hoc named window
## Setup
### 1. Install the extension
```bash
git clone https://github.com/siddhartdoshi/gjump.git
cd gjump
npm install
npm run dev
```
This opens the extension in Raycast in development mode. Use the "Jump to Project" command from Raycast.
### 2. Add the shell hook (required)
Ghostty doesn't yet support running commands on launch natively, so GJump passes environment variables to the new window and relies on a shell hook to act on them. Add this to your `~/.zshrc`:
```bash
# GJump shell hook — cd into project dir and open nvim for new sessions
# https://github.com/sidoshi/GJump
if [[ -n "$GHOSTTY_LAUNCH_DIR" ]]; then
cd "$GHOSTTY_LAUNCH_DIR"
if [[ -n "$GHOSTTY_LAUNCH_NVIM" && -n "$GHOSTTY_LAUNCH_ID" && ! -f "/tmp/ghostty-launch-$GHOSTTY_LAUNCH_ID" ]]; then
touch "/tmp/ghostty-launch-$GHOSTTY_LAUNCH_ID"
zoxide add "$GHOSTTY_LAUNCH_DIR"
nvim .
fi
fi
```
The touch-file guard (`/tmp/ghostty-launch-*`) prevents nvim from reopening in every new split/tab within the same window.
## Configuration
Open the extension preferences in Raycast to configure:
- **Project Roots** — Comma-separated root directories to scan for projects (default: `~/gh,~/work`)
- **Direct Projects** — Comma-separated directories to add as projects directly (e.g. `~/dotfiles`)
## Disclaimer
This is AI-generated slop and a very hacky solution. It's tuned to my personal workflow and doesn't replace all tmux features — notably long-running sessions, detach/reattach, and remote persistence are not covered. Use at your own risk.