An open API service indexing awesome lists of open source software.

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

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.