Was ist jjui?
jjui ist eine Terminal-Oberfläche für Jujutsu, das Git-kompatible Versionskontrollsystem, das du mit dem Befehl jj bedienst. Starte es in einem jj-Repository, und es zeigt den Revisionsgraphen und lässt dich direkt darauf arbeiten: das Revset mit Autovervollständigung ändern, um festzulegen, was angezeigt wird, eine einzelne Revision oder einen ganzen Zweig rebasen, Revisionen squashen, splitten und verwerfen, Bookmarks verschieben, eine Revision öffnen, um ihre Dateien und Diffs zu sehen und Dateien einzeln wiederherzustellen, die Ausgabe von jj show und jj diff neben dem Graphen als Vorschau sehen, über ein Git-Menü pushen und fetchen, und das Operation Log durchsehen oder daraus wiederherstellen. Alles geht per Tastatur oder mit der Maus. jjui ist in Go von Ibrahim Dursun geschrieben und steht unter der MIT-Lizenz.
apt upgrade, und zwar für jjui und das jj, von dem es abhängt, zugleich.
⚡ Hauptfunktionen von jjui
🌳 Der Revisionsgraph, live
jjui öffnet denselben Graphen, den jj log ausgibt, nur kannst du dich darin bewegen, Revisionen auswählen und auf sie anwenden, was du brauchst, und der Graph wird nach jeder Änderung neu gezeichnet.
🔎 Revsets mit Autovervollständigung
Bearbeite das Revset oben am Bildschirm, um auszuwählen, welche Revisionen angezeigt werden; Funktionen und Aliase werden beim Tippen vervollständigt, du musst die Revset-Sprache also nicht im Kopf haben.
✂️ Rebase, Squash, Split, Abandon
Rebase eine einzelne Revision oder einen ganzen Zweig auf eine andere, squashe eine Revision in ihre Elternrevision, teile sie in zwei, verwirf sie oder verschiebe ein Bookmark, alles im Graphen, mit sofort sichtbarem Ergebnis.
📄 Dateien, Diffs und Vorschau
Öffne eine Revision, um die geänderten Dateien aufzulisten, ihre Diffs zu lesen und Dateien interaktiv wiederherzustellen, oder lass ein Vorschaufenster mit der Ausgabe von jj show oder jj diff für die aktuelle Auswahl offen.
🔄 Git-Menü und Operation Log
Pushe und fetche über ein Git-Menü, ohne den Graphen zu verlassen, und sieh im Operation Log nach, was sich geändert hat, um das Repository auf einen früheren Stand zurückzusetzen.
🖱️ Tastatur, Maus, Lua und Themes
Jede Aktion hat eine Tastenbelegung (? listet sie auf), und die Maus funktioniert ebenfalls. Mit Lua-Skripten fügst du eigene Aktionen hinzu, Themes ändern die Farben.
apt upgrade hält dich auf der neuesten Version.
📦 Installation aus deb.griffo.io
Schritt 1: Repository hinzufügen
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(. /etc/os-release; echo ${DEBIAN_CODENAME:-${UBUNTU_CODENAME:-$VERSION_CODENAME}}) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt updateinstall -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(. /etc/os-release; echo ${DEBIAN_CODENAME:-${UBUNTU_CODENAME:-$VERSION_CODENAME}}) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt update🆓 Es gibt einen für immer kostenlosen Spiegel. deb-free.griffo.io liefert Pakete für immer kostenlos — ohne Konto, ohne Abo, höchstens 2 Monate hinter Upstream, Sicherheitsfixes sofort. Derzeit enthält er cliamp, Forgejo Runner, Ghostty, lazydocker, Oh My Posh, Uncloud und Zed; jjui ist nicht dabei, deshalb führt heute nur das Repository oben dorthin — auf Anfrage kann es aufgenommen werden.
Schritt 2: jjui installieren
# Neuestes jjui installieren (zieht jujutsu nach, das jj bereitstellt)
sudo apt install jjui
# Installation prüfen
dpkg -s jjui | grep Version# Neuestes jjui installieren (zieht jujutsu nach, das jj bereitstellt)
apt install jjui
# Installation prüfen
dpkg -s jjui | grep VersionSchritt 3: Der erste Start
# jjui steuert jj, also in einem jj-Repository starten
cd ~/src/myproject
# Ein bestehender Git-Checkout? Zuerst jj daneben einrichten (colocate)
jj git init --colocate
# Den Revisionsgraphen öffnen
jjui
# In jjui listet ? die Tastenbelegungen, q beendet es🎯 Grundlegende Verwendungsbeispiele
jjui starten und konfigurieren:
# Den Revisionsgraphen des aktuellen Repositorys öffnen
jjui
# Die Konfiguration in $EDITOR bearbeiten (Tastenbelegungen, Theme, Lua-Aktionen)
jjui -config
# jjui ruft das jj aus deinem PATH auf; welche Version ist das?
jj --versionIn jjui:
# ? zeigt alle Tastenbelegungen der aktuellen Ansicht
# Das Revset oben (mit Autovervollständigung) ändern, um die Anzeige zu wählen
# Eine Revision auswählen, dann rebasen, squashen, splitten, verwerfen oder ein Bookmark verschieben
# Eine Revision öffnen, ihre Dateien auflisten, Diffs lesen und Dateien einzeln wiederherstellen
# jj show / jj diff neben dem Graphen als Vorschau, oder im Operation Log einen Stand wiederherstellen
# Über das Git-Menü pushen und fetchen, ohne den Graphen zu verlassenAktuell bleiben:
# jjui und jj werden mit dem restlichen System aktualisiert
sudo apt update && sudo apt upgrade
# Welche Versionen installiert sind und welche die neuesten verfügbaren sind
apt policy jjui jujutsu
# Wieder entfernen (jj bleibt installiert)
sudo apt remove jjui# jjui und jj werden mit dem restlichen System aktualisiert
apt update && apt upgrade
# Welche Versionen installiert sind und welche die neuesten verfügbaren sind
apt policy jjui jujutsu
# Wieder entfernen (jj bleibt installiert)
apt remove jjui🔧 Werkzeug-Integrationen
jjui ist ein Frontend für jj und passt überall dorthin, wo jj schon ist:
- Jujutsu: jede Aktion ruft den Befehl
jjauf, jjui sieht also dasselbe Repository, dieselbe Konfiguration und dieselben Revset-Aliase wie jj selbst; das Paket hängt vonjujutsu (>= 0.37)ab, und deb.griffo.io paketiert Jujutsu für jede Version, apt installiert es also zusammen mit jjui - Git-Remotes: in einem colocated Repository gehen Push und Fetch aus dem Git-Menü an deine normalen Git-Remotes, mit den Zugangsdaten, die du schon verwendest
- Dein Editor:
jjui -configöffnet die Konfigurationsdatei in$EDITOR, dort liegen Tastenbelegungen, Theme und eigene Aktionen - Lua-Skripte: schreibe eigene Aktionen in Lua und lege sie auf Tasten, für die jj-Befehle, die du oft ausführst
- Themes: die Farben von Graph, Auswahl und Fenstern kommen aus einem Theme, das du wechseln oder selbst schreiben kannst
- Maus: klicke, um Revisionen auszuwählen, und scrolle durch Graph und Vorschau, in jedem Terminal mit Mausunterstützung
- Dokumentation: upstream liefert keine Manpage, die vollständige Anleitung steht unter idursun.github.io/jjui, und
?listet in jjui die Tastenbelegungen
🚀 Warum deb.griffo.io?
- Offizielles Ubuntu: paketiert jjui nicht,
apt install jjuischlägt auf einem frischen System fehl - Upstream-Downloads: ein Zip mit einer einzigen Binärdatei von der GitHub-Release-Seite, von Hand in deinen PATH kopiert, für jedes Release erneut zu holen, und jj separat zu installieren
- Selbst aus dem Quelltext bauen: eine Go-Toolchain und ein
go installfür jedes Release, und jj muss trotzdem auf anderem Weg installiert werden - deb.griffo.io: neueste Version mit automatischen Updates
- ✅ Die einzige apt-Quelle: jjui ist weder in den Debian- noch in den Ubuntu-Archiven; dieses Repository paketiert das offizielle Upstream-Release
- ✅ jj kommt gleich mit: das Paket hängt von
jujutsu (>= 0.37)ab, dem Minimum von upstream, und deb.griffo.io paketiert Jujutsu für jede Version,sudo apt install jjuiinstalliert also im selben Schritt ein aktuelles jj - ✅ Ehrliche Paketierung: die Upstream-Binärdatei unter
/usr/bin/jjui: upstream liefert weder Manpage noch Shell-Vervollständigungen, also erfindet das Paket auch keine - ✅ Automatische Updates: Pakete werden innerhalb von Stunden nach dem Upstream-Release aktualisiert
- ✅ Zwei Architekturen: amd64 und arm64 auf jeder Version, dasselbe jjui läuft also auf Laptops, Servern und ARM-Boards wie dem Raspberry Pi
- ✅ Multi-Distribution: läuft auf Ubuntu 22.04, 24.04, 25.10 und 26.04
- ✅ Einfache Wartung: Updates mit den üblichen apt-Befehlen
📦 Paket-Build-Repository
Die Ubuntu-Pakete werden in diesem GitHub-Repository automatisch gebaut und gepflegt:
- 🪢 jjui-debian - Builds der neuesten Releases
🔗 Verwandte Pakete
Ebenfalls verfügbar über deb.griffo.io:
- Jujutsu - Das Versionskontrollsystem jj, das jjui steuert, wird mitinstalliert
- lazygit - Eine Terminal-Oberfläche für Git, für die Repositorys, die du noch mit git bedienst
- GitUI - Eine schnelle Terminal-Oberfläche für Git, nur per Tastatur
- difftastic - Ein strukturelles Diff-Werkzeug, das jj für seine Diffs nutzen kann
- serie - Ein ausführlicher Git-Commit-Graph im Terminal