A Rust-based Terminal User Interface for the Jujutsu (jj) version control system.
jujutui is designed to provide a smooth, visual experience for managing your jj workflow, inspired by tools like lazygit and jujutsu.nvim.
- Interactive Log View: Navigate your commit graph with ease.
- Non-Adjacent Multi-Selection: Select multiple, non-adjacent revisions to perform batch operations.
- Rich Diff View: Integrated, syntax-highlighted diffs using
jj's own color output. - Vim-like Keybindings:
h/lto move between panes,j/kto navigate. - Command Palette: Quick discovery and execution of
jjcommands via:. - Multiple Themes: 8 built-in color themes, configured via
config.toml. - Visual Feedback: Distinct styling for working copy, immutable, empty, and conflicted revisions.
- Rust (latest stable)
- Jujutsu (jj) installed and in your PATH.
cargo install --git https://github.com/larpios/jujutuiRun jujutui within any directory managed by Jujutsu:
jujutuiPress ? at any time to open the keybinding reference.
| Key | Action |
|---|---|
j / ↓ |
Move down |
k / ↑ |
Move up |
g |
Jump to top |
G |
Jump to bottom |
l |
Focus diff pane |
Space / v |
Toggle selection |
Esc |
Clear selection |
| Key | Action |
|---|---|
n |
New revision after cursor |
e |
Edit (set working copy to cursor) |
d |
Describe — edit commit message |
a |
Abandon cursor or all selected |
s |
Squash selected into parent |
D |
Duplicate revision |
r |
Rebase — navigate to destination, Enter to confirm |
u |
Undo last operation |
R |
Refresh log |
| Key | Action |
|---|---|
j / ↓ |
Scroll down 3 lines |
k / ↑ |
Scroll up 3 lines |
Ctrl+D |
Page down (works from either pane) |
Ctrl+U |
Page up (works from either pane) |
h |
Return to log pane |
| Key | Action |
|---|---|
? |
Toggle keybinding help overlay |
: |
Open command palette |
q |
Quit |
Press : to open the palette. Accepted commands:
| Command | Alias | Action |
|---|---|---|
abandon |
a |
Abandon selected |
squash |
s |
Squash selected |
new |
n |
New revision |
edit |
e |
Edit revision |
describe |
d |
Describe revision |
duplicate |
D |
Duplicate revision |
undo |
u |
Undo last operation |
refresh |
r |
Refresh log |
quit |
q |
Exit |
jujutui reads its configuration from:
~/.config/jujutui/config.toml
($XDG_CONFIG_HOME/jujutui/config.toml if XDG_CONFIG_HOME is set.)
The file is created automatically on first run if it does not exist.
# Color theme.
# Available values:
# catppuccin-mocha (default) — dark, pastel, warm
# catppuccin-latte — light variant of Catppuccin
# tokyo-night — deep blue/purple dark theme
# dracula — classic purple and pink
# gruvbox-dark — warm earthy tones
# nord — cool arctic blues
# one-dark — Atom/VS Code One Dark
# solarized-dark — Ethan Schoonover's classic
theme = "catppuccin-mocha"Example — switching to Tokyo Night:
theme = "tokyo-night"Restart jujutui after editing the config for changes to take effect.
src/main.rs— TUI application loop, state, rendering, theme system, config.src/jj.rs— Typed wrappers around thejjCLI.
MIT