Jujutsu TUI
A TUI for the Jujutsu version control system Our focus here is on:
- Performance: jj_tui should start fast and never slow you down, it should feel extremely snappy to browse your commits and files
- Intuitive: Keybindings should be easily memorizable and quick to commit to muscle memory without uneeded popups
- Interactivity: jj_tui completely re-implements jj's renderer so we can show realtime previews of the graph while you figure out how your rebase should look ( Use
rebasepreview to try it out!)
Press ? to show the help. (commands are different between graph and files view).
Arrows or hjkl to navigate windows/items
Space to select/deselect revisions (multi-select in graph view)
Enter to widen the diff and scroll through it
Key features
Normal jj operations
commitingrebasinggit pushing and pulling- Adding, moving and deleting
bookmarks squashing andsplitting commitsspacecan be used to select multiple commits for copying, rebasing etc, starting anew commit on top of etc
Creating commits from the file view:
spacecan be used to select files tocommit separately ormove to different commit- Files and be sent to
Next orPrevious commits
filtering by revsets
filter by any revset you like
Installing
linux: Grab the latest release. It's statically linked and should work on any linux machine.
mac: Grab a prebuild. Let me know if you have any issues as I can't test on a mac.To open a shell with jj_tui on nix: nix shell github:faldor20/jj_tui
Dependencies
The jujutsu CLI (minimum version 0.30.0) I haven't tested on windows or Mac. I believe it won't work outside Unix so Windows users will currently have to use wsl.Config file:
You can make aconfig.yaml config file in the following directories to customize key inputs
linux: $XDG_CONFIG_HOME/jj_tui/
macos: ~/Library/preferences/jj_tui/
See ./jj_tui/lib/key_map.ml for a spec for the keymap and ./jj_tui/lib/config.ml for the config
The keymap config lets you fully customize all the commands and their sub menus as well as remap the arrow keys.Eg:
`` yaml
key_map:
remap:
h: "left"
j: "down"
k: "up"
l: "right"
graph:
#Simple mapping from key to command_id
p: prev
#Command sub menu
s:
title: "Squash"
sub:
# sub menu command
s: "squash_into_parent"
`If the terminal is smaller than this width, the UI will change to a single pane view
single_pane_width_threshold: 110
Sets the limit to how many commits are ever rendered in jj_tui. Usefull for not slowing down too much when viewing 'all()' revest.
max_commits: 100
For a full list of commands ids see jj_tui/bin/graph_commands.ml and jj_tui/bin/file_commands.ml
logs:
linux: $XDG_STATE_HOME/jj_tui/
macos: ~/Library/logs/jj_tui/Dev
Can be built with nix nix build or open a nix shell with nix develop
NOTE: if you are using the nix dev shell and would like to build with dune use dune build --pkg disabled to build using the deps provided by nix
Can also be built directly with Dune package management via dune build`.--- Tranlated By Open Ai Tx | Last indexed: 2026-07-23 ---