A minimal desktop app built with Fyne for managing git worktrees.
Repository: github.com/jigarthacker24/git-worktree-manager
- Open a cloned repository by path (with recent repos)
- List worktrees: directory, branch, path
- Pin up to 3 worktrees per repository
- Copy branch name or worktree path
- Open a worktree in VS Code, Cursor, or Claude Code (icons disabled when not installed)
- Create worktrees from an existing branch (searchable) or a new branch
- Remove worktrees (with confirmation and optional force)
- Go 1.22+
gitin your PATH- C compiler (for Fyne; Xcode CLI tools on macOS)
gitin your PATH- Optional IDEs (install any you want to use; unavailable IDEs show as disabled icons):
- VS Code:
codein PATH or/Applications/Visual Studio Code.app(macOS) - Cursor:
cursorin PATH or/Applications/Cursor.app(macOS) - Claude Code:
claudeCLI and/orclaude-cli://URL handler (installed by the native installer). The Claude desktop chat app alone does not include Code on the free plan (Pro/Max required for desktop Code).
- VS Code:
go install fyne.io/tools/cmd/fyne@latest
fyne install github.com/jigarthacker24/git-worktree-manager@latestfyne install builds from source on Linux and can fail on Ubuntu with a _FORTIFY_SOURCE CGO error. Use the pre-built release instead:
VERSION=v1.0.0
ARCH=amd64 # use arm64 on Apple Silicon Linux / aarch64 machines
curl -LO "https://github.com/jigarthacker24/git-worktree-manager/releases/download/${VERSION}/git-worktree-manager-${VERSION}-linux-${ARCH}.tar.xz"
sudo tar -xJf "git-worktree-manager-${VERSION}-linux-${ARCH}.tar.xz" -C /Then launch Git Worktree Manager from your app menu, or run:
git-worktree-managerSee Releases for all versions and architectures.
git clone https://github.com/jigarthacker24/git-worktree-manager.git
cd git-worktree-manager
go run .go build -o git-worktree-manager .This project uses Fyne packaging and optional fyne-cross for cross-platform builds.
make install-tools
# or
go install fyne.io/tools/cmd/fyne@latest
go install github.com/fyne-io/fyne-cross@latestmake package-local
# or
./scripts/package.sh localOutput goes to dist/.
Requires Docker for fyne-cross.
# All platforms
make package-all
# Or one platform at a time
make package-linux
make package-windows
make package-darwin
# Or via script
./scripts/package.sh all
./scripts/package.sh linux| Platform | Typical output |
|---|---|
| macOS | git-worktree-manager.app (.app bundle) |
| Windows | git-worktree-manager.exe |
| Linux | git-worktree-manager binary + .tar.xz archive |
Artifacts are collected under dist/ (and fyne-cross/dist/ during cross builds).
Push a version tag to build packages via GitHub Actions:
git tag v1.0.0
git push origin v1.0.0The workflow in .github/workflows/release.yml uploads Linux .tar.xz packages to the GitHub release.
If you build from source with fyne install or go run ., you may need:
sudo apt install gcc libgl1-mesa-dev xorg-dev libxcursor-dev libxrandr-dev libxinerama-dev libxi-dev libxxf86vm-dev
CGO_CFLAGS="-U_FORTIFY_SOURCE" fyne install github.com/jigarthacker24/git-worktree-manager@latestList on apps.fyne.io
After the repo is public and fyne install github.com/jigarthacker24/git-worktree-manager@latest works, submit the app at developer.fyne.io/submit.
Packaging metadata lives in FyneApp.toml (name, ID, version, icon).
main.go # Fyne UI
FyneApp.toml # Package metadata
Icon.png # App icon
internal/gitops/ # git worktree commands
internal/ide/ # Open in Cursor
internal/ui/ # Icons, hints, window maximize
scripts/package.sh # Packaging helper
Makefile # build / package targets