Skip to content

faldor20/jj_tui

Repository files navigation

Jujutsu TUI

nix A TUI for the Jujutsu version control system

jj_tui-ezgif com-optimize

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

  • commiting
  • rebasing
  • git pushing and pulling
  • Adding, moving and deleting bookmarks
  • squashing and splitting commits
  • space can be used to select multiple commits for copying, rebasing etc, starting a new commit on top of etc

Creating commits from the file view:

  • space can be used to select files to commit seperately or move to different commit
  • Files and be sent to Next or Previous commits

filtering by revsets

  • filter by any revest you like

List of graph commands:

jj_tui commands

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 a config.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:

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 For non-nix the project is currently not setup to build with dune or opam. Sorry, I'll get there one day.