https://github.com/noahbclarkson/rgitui
A GPU-accelerated desktop Git client built in Rust with GPUI
https://github.com/noahbclarkson/rgitui
catppuccin-mocha catppucin cross-platform desktop-app git git-client github gpu-accelerated gpui open-source rust
Last synced: about 3 hours ago
JSON representation
A GPU-accelerated desktop Git client built in Rust with GPUI
- Host: GitHub
- URL: https://github.com/noahbclarkson/rgitui
- Owner: noahbclarkson
- License: mit
- Created: 2026-03-05T07:03:42.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-04-13T05:50:49.000Z (5 days ago)
- Last Synced: 2026-04-13T07:27:16.924Z (5 days ago)
- Topics: catppuccin-mocha, catppucin, cross-platform, desktop-app, git, git-client, github, gpu-accelerated, gpui, open-source, rust
- Language: Rust
- Homepage:
- Size: 3.25 MB
- Stars: 141
- Watchers: 2
- Forks: 6
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
rgitui
A GPU-accelerated desktop Git client built with GPUI and Rust.
---
> [!WARNING]
> **rgitui is still in early, active development.** Expect bugs, rough edges, and breaking changes between releases. If you run into something, please [open an issue](https://github.com/noahbclarkson/rgitui/issues) — it genuinely helps.
---
## Highlights
- **GPU-accelerated** rendering via [GPUI](https://github.com/zed-industries/zed/tree/main/crates/gpui) (Zed's UI framework) — smooth 60 fps, even on large repos
- **Multi-repo tabs** — open several repositories at once and switch between them
- **Interactive rebase** — pick, squash, reword, fixup, and drop commits visually
- **AI commit messages** — optional Google Gemini integration to draft commit messages from your staged diff
- **Cross-platform** — Windows, Linux (AppImage), and macOS (Intel + Apple Silicon)
## Features
### Git operations
| Category | Operations |
|----------|-----------|
| **Working tree** | Stage / unstage / discard at file, hunk, and line level |
| **Commits** | Commit, amend, cherry-pick, revert |
| **Branches** | Create, checkout, rename, delete, switch |
| **Tags** | Create (annotated & lightweight), delete, checkout |
| **Stash** | Save, pop, apply, drop, create branch from stash |
| **Remote** | Fetch, pull, push, force push; multi-remote support |
| **Merge** | Merge with conflict detection; accept ours / theirs resolution |
| **Rebase** | Interactive rebase with pick / squash / reword / fixup / drop |
| **Bisect** | Start, good, bad, skip, reset |
| **Worktrees** | Create, list, switch |
| **Submodules** | Init, update, manage |
| **Other** | Clean untracked files, undo stack, crash recovery |
### Views
- **Commit graph** — animated lane-based visualization with Bezier-curve edges and commit search
- **Diff viewer** — unified, side-by-side, and three-way conflict modes with syntax highlighting (syntect)
- **Blame view** — per-line author info with avatars
- **File history** — commit history filtered to a single file
- **Reflog** — reference log browser
- **Global search** — full-repo search via `git grep`
- **Detail panel** — commit metadata, file list with diff stats, cherry-pick controls
### GitHub integration
- Device-flow authentication
- Create pull requests from the UI
- Browse issues and pull requests (cached with 60s TTL)
### UI
- Drag-resizable sidebar, detail panel, diff viewer, and commit panel
- Command palette (`Ctrl+P`) with context-aware commands
- Toolbar with one-click fetch, pull, push, branch, stash, create PR, and more
- Status bar showing branch, ahead/behind, staged/unstaged counts, and operation status
- Toast notifications and confirmation dialogs for destructive actions
- Animated splash screen
### Theming
Built-in themes:
- **Catppuccin Mocha** (default)
- **Catppuccin Latte**
- **One Dark**
- Custom JSON themes via the config directory
### Performance
- Pre-computed trig tables for graph rendering
- LRU caching for styled diff rows, blame, file history, and avatars
- Diff prefetching (±25 commits, 200-entry cache)
- Parallelized diff stats, stash, and worktree enumeration
- All git operations run on a background executor to keep the UI thread free
## Installation
### Pre-built binaries
Download the latest release for your platform from the [Releases](https://github.com/noahbclarkson/rgitui/releases) page:
| Platform | Artifact |
|----------|----------|
| **Windows** | `.zip` (portable) or `.exe` installer (adds to PATH, integrates with Add/Remove Programs) |
| **Linux** | `.AppImage` (recommended) or `.tar.gz` |
| **macOS Apple Silicon** | `.dmg` (aarch64) |
Each release includes a `SHA256SUMS.txt` file for verification.
> **Note:** Binaries are not code-signed. On Windows, click "More info" then "Run anyway" in SmartScreen. On macOS, right-click the app and choose "Open", or run `xattr -cr /Applications/rgitui.app` from the terminal. **macOS builds are experimental** — the `.dmg` may trigger Gatekeeper warnings. Building from source (`cargo build --release`) is reliable and recommended for macOS users.
### Build from source
**Prerequisites:**
- Rust stable toolchain
**Linux system dependencies:**
```bash
sudo apt-get install -y \
build-essential cmake clang lld pkg-config \
libasound2-dev libfontconfig-dev libfreetype-dev libgit2-dev \
libglib2.0-dev libssl-dev libsqlite3-dev libva-dev \
libvulkan1 libvulkan-dev libwayland-dev libx11-xcb-dev \
libxcb1-dev libxkbcommon-x11-dev libxkbcommon-dev \
libxcomposite-dev libxdamage-dev libxext-dev libxfixes-dev \
libxrandr-dev libxi-dev libxcursor-dev libdrm-dev \
libgbm-dev libzstd-dev vulkan-tools
```
**Build and run:**
```bash
git clone https://github.com/noahbclarkson/rgitui.git
cd rgitui
cargo build --release
./target/release/rgitui # or: cargo run --release
```
Open a specific repository:
```bash
rgitui /path/to/repo
```
## Keyboard shortcuts
### Global
| Key | Action |
|-----|--------|
| `Ctrl+P` | Command palette |
| `Ctrl+,` | Settings |
| `Ctrl+O` | Open repository |
| `Ctrl+F` | Search commit graph |
| `Ctrl+Shift+F` | Global search (`git grep`) |
| `Ctrl+Shift+R` | Fetch |
| `Ctrl+G` | Generate AI commit message |
| `Ctrl+Enter` | Commit staged changes |
| `Ctrl+S` | Stage all |
| `Ctrl+U` | Unstage all |
| `Ctrl+B` | Create branch |
| `Ctrl+Z` | Stash save |
| `Ctrl+Shift+Z` | Stash pop |
| `Ctrl+Tab` | Next tab |
| `Ctrl+W` | Close tab |
| `F5` | Refresh |
| `?` | Shortcuts help |
### Navigation
| Key | Action |
|-----|--------|
| `j` / `k` | Move down / up in active list |
| `g` / `Shift+G` | Jump to first / last item |
| `[` / `]` | Previous / next hunk (diff) or commit (detail panel) |
| `Tab` / `Shift+Tab` | Cycle panel focus |
| `Alt+1`..`Alt+4` | Focus sidebar / graph / detail / diff |
| `Ctrl+[` / `Ctrl+]` | Resize detail panel |
| `Ctrl+Up` / `Ctrl+Down` | Resize diff viewer |
| `/` | Search in focused panel |
### Diff viewer
| Key | Action |
|-----|--------|
| `d` | Toggle unified / side-by-side |
| `p` | Toggle line-selection mode |
| `s` | Stage selected hunks/lines |
| `u` | Unstage selected hunks/lines |
| `Ctrl+C` | Copy selected lines |
| `Ctrl+A` | Select all |
### Sidebar
| Key | Action |
|-----|--------|
| `Enter` / `Space` | Activate selected item |
| `s` | Stage / unstage selected file |
| `x` / `Delete` | Delete branch, tag, stash, or discard file |
### Other views
| Key | Action |
|-----|--------|
| `b` | Open blame view |
| `h` | Open file history view |
| `d` | Switch to diff view |
| `Shift+D` | Toggle diff display mode |
| `y` | Copy commit SHA |
| `Shift+C` | Copy commit message |
## Architecture
Cargo workspace with 9 crates:
| Crate | Purpose |
|-------|---------|
| `rgitui` | Binary entry point, splash screen, window management |
| `rgitui_workspace` | Root workspace view — sidebar, toolbar, panels, dialogs, command palette |
| `rgitui_git` | Git operations via `git2` (local) and shell `git` (network), repository state |
| `rgitui_graph` | Commit graph visualization — lane layout, Bezier edges, canvas rendering |
| `rgitui_diff` | Virtualized diff viewer — unified, side-by-side, three-way conflict modes |
| `rgitui_ui` | Reusable component library — buttons, labels, badges, modals, toasts, text inputs |
| `rgitui_theme` | Theme system with semantic color tokens and JSON theme loader |
| `rgitui_ai` | AI commit message generation (Google Gemini) |
| `rgitui_settings` | Settings persistence (JSON config), keychain integration, workspace snapshots |
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.
## License
[MIT](LICENSE)