A fast, native Wayland git history viewer built with Rust.
Features • Install • Usage • Why • License
gitk is a Tcl/Tk app from 2005. On Wayland it needs XWayland, has stale X11 selection bugs, and looks like it time-traveled from Windows 98.
gitkay is what gitk would be if it was written today:
- Native Wayland — no XWayland, no Tk, no X11 selection bugs
- Starts in under 200ms — lazy loading, precomputed ref maps
- Catppuccin Mocha dark theme that matches your rice
- Written in Rust, single binary, zero config
- Color-coded branch lanes with consistent colors across column shifts
- Merge/branch diagonals rendered cleanly — no stubs, no gaps, no false branches
- Lane-based layout: first parent always continues straight down
- Convergence detection when multiple branches meet at one commit
- Virtual scrolling with lazy loading — handles repos with thousands of commits
- Syntax-highlighted diffs: additions in green, deletions in red, hunk headers in blue, file headers in yellow
- File list sidebar with per-file
+/-stats - Click a file to jump to its diff section
- Commit header with author, date, full message
- Full-width search bar — filter by SHA, author, commit message, branch name, tag name
- Just start typing — any keypress focuses the search bar instantly
- Press Enter to cycle through matches with
3/42counter - Graph auto-scrolls to the matched commit
- Matching commits marked with a yellow accent bar
- Click a commit to copy its SHA to both clipboard and primary selection
- Auto-select first commit on startup with diff shown
- Lazy loading — starts with 200 commits, loads more as you scroll
- Unique author colors — each contributor gets a distinct color
- Unique ref colors — each branch/remote gets its own color with readable contrast
- Ref badges — colored labels for HEAD, branches, remotes, tags
- Hover effects — file list highlights on hover with full path tooltip
git clone https://github.com/Marenz/gitkay
cd gitkay
cargo build --release
sudo cp target/release/gitkay /usr/local/bin/openSUSE Tumbleweed:
sudo zypper install gtk4-devel libgraphene-devel openssl-develUbuntu / Debian:
sudo apt install libgtk-4-dev libgraphene-1.0-dev libssl-dev pkg-config cmakeFedora:
sudo dnf install gtk4-devel graphene-devel openssl-develrpmbuild -ba packaging/gitkay.spec
sudo rpm -i ~/rpmbuild/RPMS/x86_64/gitkay-*.rpmdpkg-buildpackage -us -uc -b
sudo dpkg -i ../gitkay_*.deb# Inside a git repo
gitkay
# Or specify a path
gitkay /path/to/repo| Action | Effect |
|---|---|
| Click commit | Select, show diff, copy SHA to clipboard |
| Scroll | Browse history (lazy loads more commits) |
| Start typing (anywhere) | Focus search bar and filter by SHA / author / message / branch / tag |
| Enter in search | Cycle through matches, graph scrolls to match |
| Click file in sidebar | Jump to file's diff section |
| Hover file in sidebar | Full path tooltip |
Single-file Rust app (~2100 lines) with 16 unit tests:
- egui + eframe — native Wayland window with wgpu rendering
- git2 (libgit2) — repository access, revwalk, diff
- chrono — date formatting
- arboard — clipboard (both clipboard and primary selection)
The graph layout uses a pipe-based algorithm where each lane tracks an OID and a persistent color index. First parent always continues in the same column. Colors survive column shifts. Convergence is detected when multiple lanes point to the same commit.
