TUI for Jujutsu/jj. Built in Rust with Ratatui. Interacts with jj CLI.
lazyjj.mp4
- Log
- Scroll through the jj log and view change details in side panel
- Create new changes from selected change with
n - Edit changes with
e - Desribe changes with
d - Abandon changes with
a - Toggle between color words and git diff with
p - See different revset with
r - Set a branch to selected change with
b - Fetch/push with
f/p
- Files
- View files in current change and diff in side panel
- See a change's files from the log tab with
Enter - View conflicts list in current change
- Toggle between color words and git diff with
w
- Branches
- View list of branches, including from all remotes with
a - Create with
c, rename withr, delete withd, forget withf - Track branches with
t, untrack branches withT
- View list of branches, including from all remotes with
- Command log: View every command lazyjj executes
- Config: Configure lazyjj with your jj config
- Help: See all key mappings with
h/?
Make sure you have jj installed first.
- With
cargo binstall:cargo binstall lazyjj - With
cargo install:cargo install lazyjj(may take a few moments to compile) - With pre-built binaries: View releases
- For Arch Linux:
pacman -S lazyjj
To build and install a pre-release version: cargo install --git https://github.com/Cretezy/lazyjj.git --locked
You can optionally configure the following options through your jj config:
lazyjj.higlight-color: Changes the highlight color. Can use named colors. Defaults to#323264lazyjj.diff-format: Change the default diff format. Can becolor-wordsorgit. Defaults tocolor_words- If
lazyjj.diff-formatis not set butui.diff.formatis, the latter will be used
- If
lazyjj.branch-prefix: Change the branch name prefix for generated branch names. Defaults topush-- If
lazyjj.branch-prefixis not set butgit.push-branch-prefixis, the latter will be used
- If
Example: jj config set --user lazyjj.diff-format "color-words" (for storing in user config file, repo config is also supported)
To start lazyjj for the repository in the current directory: lazyjj
To use a different repository: lazyjj --path ~/path/to/repo
To start with a different default revset: lazyjj -r '::@'
See all key mappings for the current tab with h or ?.
- Quit with
q - Change tab with
1/2/3 - Scrolling in left panel
- Scroll down/up by one line with
j/kor down/up arrow - Scroll down/up by half page with
J/Kor down/up arrow
- Scroll down/up by one line with
- Scrolling in right panel
- Scroll down/up by one line with
Ctrl+e/Ctrl+y - Scroll down/up by a half page with
Ctrl+d/Ctrl+u - Scroll down/up by a full page with
Ctrl+f/Ctrl+b
- Scroll down/up by one line with
- Select current change with
@ - View change files in files tab with
Enter - Display different revset with
r(jj log -r) - Change right panel diff format between color words (default) and Git with
w - Toggle right panel wrapping with
W - Create new change after highlighted change with
n(jj new)- Create new change and describe with
N(jj new -m)
- Create new change and describe with
- Edit highlighted change
e(jj edit) - Abandon a change with
a(jj abandon) - Describe the highlighted change with
d(jj describe)- Save with
Ctrl+s - Cancel with
Esc
- Save with
- Set a branch to the highlighted change with
b(jj branch set)- Scroll in branch list with
j/k - Create a new branch with
c - Use auto-generated name with
g
- Scroll in branch list with
- Git fetch with
f(jj git fetch)- Git fetch all remotes with
F(jj git fetch --all-remotes)
- Git fetch all remotes with
- Git push with
p(jj git push)- Git push all branches with
P(jj git push --all)
- Git push all branches with
- Select current change with
@ - Change right panel diff format between color words (default) and Git with
w - Toggle right panel wrapping with
W
- Show branches with all remotes with
a(jj branch list --all) - Create a branch with
c(jj branch create) - Rename a branch with
r(jj branch rename) - Delete a branch with
d(jj branch delete) - Forget a branch with
f(jj branch forget) - Track a branch with
t(only works for branches with remotes) (jj branch track) - Untrack a branch with
T(only works for branches with remotes) (jj branch untrack) - Change right panel diff format between color words (default) and Git with
w - Toggle right panel wrapping with
W - Create a new change after the highlighted branch's change with
n(jj new)- Create a new change and describe with
N(jj new -m)
- Create a new change and describe with
- Select latest command with
@ - Toggle right panel wrapping with
W
- Install Rust and
- Clone repository
- Run with
cargo run - Build with
cargo build --release(output intarget/release) - You can point it to another jj repo with
--path:cargo run -- --path ~/other-repo
lazyjj has 2 debugging tools:
- Logging: Enabled by setting
LAZYJJ_LOG=1when running. Produces alazyjj.loglog file - Tracing: Enabled by setting
LAZYJJ_TRACE=1when running. Producestrace-*.jsonChrome trace file, forchrome://tracingor ui.perfetto.dev