Terminal-style git branch visualizer — built with Rust + Dioxus
git-tree lets you visualize your git history in a clean terminal-style desktop app. open any local repo or clone a remote one, click any commit node to see author, date, message, and diff stats.
──●──●──●──●──●──●──●──
╲ ╱
●─────●
- open local git repos or clone remote URLs
- horizontal branch tree — branches go up and down
- each contributor gets a unique persistent color
- click any commit node → author, date, message, hash, diff stats
- 9 built-in themes with live preview in settings
- default theme: Terminal (black + purple, Oxanium + Space Mono fonts)
1. install system dependencies
Ubuntu / Debian:
sudo apt update
sudo apt install -y \
libgit2-dev \
libwebkit2gtk-4.1-dev \
libgtk-3-dev \
libglib2.0-dev \
libcairo2-dev \
libpango1.0-dev \
libxdo-dev \
pkg-configArch Linux:
sudo pacman -S libgit2 webkit2gtk-4.1 gtk3 base-develFedora:
sudo dnf install libgit2-devel webkit2gtk4.1-devel gtk3-devel2. download the binary
grab the latest release from the Releases page:
wget https://github.com/MahiroJV/git-tree/releases/latest/download/git-tree-linux
chmod +x git-tree-linux
./git-tree-linuxor move it to your PATH for system-wide access:
sudo mv git-tree-linux /usr/local/bin/git-tree
git-treerequirements:
- Rust 1.75+
- Dioxus CLI
- system dependencies (see above)
# clone the repo
git clone https://github.com/MahiroJV/git-tree
cd git-tree
# install dioxus cli
cargo install dioxus-cli
# run in dev mode
dx serve --platform desktop
# build release binary
dx build --platform desktop --release
# binary will be at: dist/git-treeopen a local repo:
- launch git-tree
- make sure
[ LOCAL FOLDER ]tab is selected - type the full path to your repo (e.g.
/home/user/my-project) - click
OPEN →
clone a remote repo:
- click
[ REMOTE URL ]tab - paste a GitHub/GitLab URL (e.g.
https://github.com/user/repo) - click
CLONE → - git-tree clones it to a temp folder and opens it
navigating the tree:
- click any commit node → left panel shows commit info, right panel shows diff stats
- use the toolbar to go back home, refresh, or open settings
- settings → pick from 9 themes, preview updates live
| Name | Description |
|---|---|
| Terminal | black + purple, default |
| Matrix | hacker green |
| Amber | old phosphor monitor |
| Synthwave | 80s retrowave |
| Nord | cold Nordic blues |
| Dracula | popular dark dev theme |
| Gruvbox | warm retro |
| Blood Moon | dark dramatic red |
| Ice Terminal | cold blue cyberpunk |
- Tree visualization
- Click panels (commit info + diff stats)
- 9 themes
- Contributor colors
- Local + remote clone
- Zoom + pan
- App icon
- Search by author / message / hash
- Diff viewer (actual +/- code lines)
- Keyboard navigation (arrow keys between commits)
- Fix font loading (Oxanium offline)
- Recent repositories list
- Copy hash button
- Minimap (corner overview)
- Repo stats (leaderboard + heatmap)
- Export (SVG / PNG)
- CRT scanline overlay (toggleable)
- Open commit in browser (GitHub / GitLab)
- Node pulse animation on click
- GitHub OAuth login
- Private repo access
- Windows + macOS builds (CI)
- Linux AppImage packaging
- Android port (Dioxus mobile)
- Full keyboard shortcut system
- Performance improvements (lazy loading for huge repos)
- Settings panel (font size, animations toggle)
- Community themes
src/
├── main.rs # entry point, window config
├── app.rs # root component + global state
├── theme.rs # 9 themes + contributor color engine
├── components/
│ ├── home_screen.rs # repo open/clone screen
│ ├── toolbar.rs # top navigation
│ ├── tree_canvas.rs # SVG tree visualization
│ ├── left_panel.rs # commit details
│ ├── right_panel.rs # diff stats
│ └── settings.rs # theme selector
└── git/
├── loader.rs # open local / clone remote
└── parser.rs # git history → tree data structures
assets/
└── style.css # terminal theme styling
| Dependency | Version |
|---|---|
| Rust | 1.75+ |
| Dioxus | 0.6 |
| git2 | 0.19 |
| libgit2 | system |
| webkit2gtk | 4.1 (Linux) |
MahiroJV — github.com/MahiroJV
built with Rust + Dioxus 🦀
MIT