jjui とは
jjui は、jj コマンドで操作する Git 互換のバージョン管理システム Jujutsu のためのターミナル UIです。jj リポジトリの中で起動するとリビジョングラフを表示し、そのまま操作できます。表示する範囲は revset を補完付きで書き換えて選び、リビジョンやブランチ全体のリベース、リビジョンの squash、split、abandon、ブックマークの移動ができます。リビジョンを開けば変更されたファイルと差分を確認し、ファイルを 1 つずつ対話的に元に戻せます。jj show や jj diff の出力をグラフの横でプレビューし、Git メニューから push と fetch を行い、オペレーションログを閲覧して以前の状態に戻すこともできます。すべてキーボードでもマウスでも操作できます。jjui は Ibrahim Dursun が Go で書いたもので、MIT ライセンスです。
apt upgrade で、jjui と、それが依存する jj が一緒に更新されます。
⚡ jjui の主な機能
🌳 動くリビジョングラフ
jjui は jj log が表示するのと同じグラフで開きますが、その中を移動し、リビジョンを選んで操作でき、変更のたびにグラフが描き直されます。
🔎 補完付きの revset
画面上部の revset を書き換えて、表示するリビジョンを選びます。関数やエイリアスは入力中に補完されるので、revset 言語を覚えておく必要はありません。
✂️ リベース、squash、split、abandon
リビジョン 1 つ、またはブランチ全体を別の場所へリベースし、リビジョンを親に squash し、2 つに split し、abandon し、ブックマークを移動する。すべてグラフから行え、結果はすぐに見えます。
📄 ファイル、差分、プレビュー
リビジョンを開くと変更されたファイルの一覧が出て、差分を読み、ファイルを対話的に元に戻せます。選択中のものの jj show や jj diff の出力をプレビューペインに表示しておくこともできます。
🔄 Git メニューとオペレーションログ
グラフを離れずに Git メニューから push と fetch を行い、オペレーションログを閲覧して何が変わったかを確認し、リポジトリを以前の状態に戻せます。
🖱️ キーボード、マウス、Lua、テーマ
すべての操作にキーバインドがあり (? を押すと一覧が出ます)、マウスも使えます。Lua スクリプトで独自のアクションを追加でき、テーマで配色を変えられます。
apt upgrade を実行するだけで、常に最新版を使い続けられます。
📦 deb.griffo.io からインストールする
ステップ 1: リポジトリを追加する
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🆓 ずっと無料のミラーがあります。 deb-free.griffo.io は、アカウントもサブスクリプションもなしでパッケージをずっと無料で配布しています。上流より最大2か月遅れ、セキュリティ修正は即座に公開されます。現在収録しているのは cliamp、Forgejo Runner、Ghostty、lazydocker、Oh My Posh、Uncloud と Zed です。jjui は含まれていないため、今日入手する方法は上のリポジトリだけですが、ご要望があれば追加できます。
ステップ 2: jjui をインストールする
# 最新の jjui をインストール (jj を提供する jujutsu も一緒に入ります)
sudo apt install jjui
# インストールを確認
dpkg -s jjui | grep Version# 最新の jjui をインストール (jj を提供する jujutsu も一緒に入ります)
apt install jjui
# インストールを確認
dpkg -s jjui | grep Versionステップ 3: 最初の起動
# jjui は jj を動かすので、jj リポジトリの中で始めます
cd ~/src/myproject
# 既存の Git のチェックアウトなら、まず jj を同居 (colocate) させる
jj git init --colocate
# リビジョングラフを開く
jjui
# jjui の中で ? を押すとキーバインド、q で終了🎯 基本的な使用例
jjui の起動と設定:
# いまいるリポジトリのリビジョングラフを開く
jjui
# 設定を $EDITOR で編集 (キーバインド、テーマ、Lua アクション)
jjui -config
# jjui は PATH 上の jj を使います。そのバージョンを確認
jj --versionjjui の中で:
# ? を押すと、いまのビューのキーバインドがすべて表示されます
# 上部の revset を補完付きで書き換えて、表示する範囲を選ぶ
# リビジョンを選び、リベース、squash、split、abandon、またはブックマークを移動
# リビジョンを開いてファイルを一覧し、差分を読み、1 つずつ元に戻す
# jj show / jj diff をグラフの横でプレビュー、またはオペレーションログを開いて状態を戻す
# グラフを離れずに、Git メニューから push と fetch最新に保つ:
# jjui と jj はシステムの他の部分と一緒に更新されます
sudo apt update && sudo apt upgrade
# インストール済みのバージョンと、利用可能な最新バージョン
apt policy jjui jujutsu
# アンインストール (jj は残ります)
sudo apt remove jjui# jjui と jj はシステムの他の部分と一緒に更新されます
apt update && apt upgrade
# インストール済みのバージョンと、利用可能な最新バージョン
apt policy jjui jujutsu
# アンインストール (jj は残ります)
apt remove jjui🔧 ツール連携
jjui は jj のフロントエンドなので、jj が使える場所ならどこでもなじみます:
- Jujutsu: すべての操作で
jjコマンドを実行するので、jjui は jj 自身と同じリポジトリ、設定、revset エイリアスを見ます。パッケージはjujutsu (>= 0.37)に依存し、deb.griffo.io はすべてのバージョン向けに Jujutsu をパッケージしているので、apt が jjui と一緒にインストールします - Git リモート: colocate したリポジトリでは、Git メニューからの push と fetch は、いつもの Git リモートに、いま使っている認証情報で届きます
- エディタ:
jjui -configは設定ファイルを$EDITORで開きます。キーバインド、テーマ、独自アクションはここに書きます - Lua スクリプト: よく実行する jj コマンドのために、独自のアクションを Lua で書いてキーに割り当てられます
- テーマ: グラフ、選択、ペインの配色はテーマで決まり、変更することも自分で書くこともできます
- マウス: マウスに対応したターミナルなら、クリックでリビジョンを選び、グラフやプレビューをスクロールできます
- ドキュメント: 上流は man ページを提供していないので、完全なガイドは idursun.github.io/jjui にあり、jjui の中で
?を押すとキーバインドが一覧できます
🚀 deb.griffo.io を選ぶ理由
- 公式 Ubuntu: jjui をパッケージしておらず、標準のシステムでは
apt install jjuiが失敗します - 上流からのダウンロード: GitHub のリリースページにあるバイナリ 1 つの zip を手動で PATH にコピーする形で、リリースのたびに取得し直す必要があり、jj は別途インストールしなければなりません
- ソースからビルド: Go ツールチェーンと、リリースごとの
go installが必要で、jj も別の方法で入れる必要があります - deb.griffo.io: 最新版を自動更新でお届け
- ✅ 唯一の apt ソース: jjui は Debian と Ubuntu のどちらのアーカイブにもありません。このリポジトリが上流の公式リリースをパッケージしています
- ✅ jj も一緒に: パッケージは上流の最低要件である
jujutsu (>= 0.37)に依存し、deb.griffo.io はすべてのバージョン向けに Jujutsu をパッケージしているので、sudo apt install jjuiの 1 ステップで新しい jj も入ります - ✅ 正直なパッケージング: 上流のバイナリを
/usr/bin/jjuiに。上流は man ページもシェル補完も提供していないので、パッケージでも勝手に作りません - ✅ 自動更新: 上流のリリースから数時間以内にパッケージを更新
- ✅ 2 つのアーキテクチャ: すべてのバージョンで amd64 と arm64。ノート PC でも、サーバーでも、Raspberry Pi のような ARM ボードでも同じ jjui が動きます
- ✅ マルチディストリビューション: Ubuntu 22.04、24.04、25.10、26.04 で動作
- ✅ 手間のかからない運用: 更新は通常の apt コマンドだけ
📦 パッケージのビルドリポジトリ
Ubuntu パッケージは、この GitHub リポジトリで自動的にビルド・管理されています:
- 🪢 jjui-debian - 最新リリースのビルド
🔗 関連パッケージ
deb.griffo.io では、こちらも配布しています:
- Jujutsu - jjui が動かすバージョン管理システム jj。jjui と一緒にインストールされます
- lazygit - Git 向けのターミナル UI。まだ git で扱うリポジトリのために
- GitUI - キーボードだけで操作する高速な Git 向けターミナル UI
- difftastic - 構文を理解する差分ツール。jj の差分表示にも使えます
- serie - ターミナルで見る、表現力豊かな Git のコミットグラフ