mori — macOSネイティブのワークスペース端末
概要
moriは「プロジェクト」と「ワークツリー」を中心に据えたmacOSネイティブのワークスペース端末です。従来のタブやウィンドウに依存した端末管理ではなく、gitリポジトリ単位で作業環境を永続化します。各ワークツリー(git worktreeで作ったチェックアウト)ごとに専用のtmuxセッションが作られ、複数ウィンドウやペインのレイアウトを保持します。表示はネイティブのサイドバーベースで、端末描画はlibghosttyを用いたGPUアクセラレーションにより高速かつ滑らかに行われます。ユーザーはリポジトリを開くだけでその作業用セッションに復帰でき、生産性の高いマルチプロジェクト開発が可能になります(約300字)。
リポジトリの統計情報
- スター数: 20
- フォーク数: 1
- ウォッチャー数: 20
- コミット数: 30
- ファイル数: 15
- メインの言語: Swift
主な特徴
- gitリポジトリ/worktree中心のワークスペース管理:ワークツリーごとに永続的なtmuxセッションを割り当て。
- ネイティブUIとサイドバー:リポジトリ一覧・ワークツリーを視覚的に切り替え可能。
- GPUアクセラレーション端末描画:libghosttyを用いて高速で滑らかなレンダリングを実現。
- tmux統合によるウィンドウ/ペインレイアウトの復元と並列作業の容易化。
技術的なポイント
moriの設計は「端末=状態を持つワークスペース」としての考えに基づいています。Gitのworktree機能を第一級オブジェクトとして扱うことで、ブランチごとの作業コンテナ(セッション)を明確に分離し、セッションごとのウィンドウ構成とコマンド履歴を保持できます。この実現の核となるのがtmuxで、moriはtmuxセッションを生成・管理して、各worktreeに対応付けます。tmuxの利点(複数ペインやバックグラウンド実行、セッション復帰)をそのまま取り込みつつ、GUI側での見せ方を向上させることでユーザー体験をネイティブ化しています。
端末描画にはlibghosttyを利用しており、これによりGPUを使った文字描画やスクロール処理が可能になります。libghosttyは仮想端末(PTY)の入出力を取り扱い、テキストセルのレンダリングを高速化するライブラリです。Swift製のアプリケーションからはC/C++相当のライブラリをブリッジして呼び出すか、サブプロセスとしてlibghosttyを組み込み、描画レイヤー(MetalやCore Animation)を介してGPUに出力するアーキテクチャが考えられます。これにより、長時間のログ表示や高速な更新が発生するデバッグ時にも滑らかな表示が期待できます。
また、moriはプロジェクトの永続化と復元に配慮しており、tmuxのセッション名やワークツリーのパス情報を内部で管理することで、アプリ起動時に以前の状態へ復帰できます。サブモジュール(.gitmodules)や外部エージェント(.agentsディレクトリ)といった構成ファイルが含まれている点から、プラグイン的な拡張や外部ツールとの連携も想定されています。Swiftをメイン言語に据えているため、macOSネイティブのUIやアクセシビリティ、キーボードショートカットやメニューバー連携などの統合も容易です。一方でtmuxやlibghostty、git worktreeという外部プロセス群の管理(プロセス監視、ログの取り扱い、シグナル処理、エラー回復)のための堅牢な実装が求められます。セキュリティ面ではサブプロセスで動くシェルやコマンドの入出力を扱うため、権限や環境変数、パスの取り扱いに留意する必要があります。
プロジェクトの構成
主要なファイルとディレクトリ:
- .agents: dir
- .gitignore: file
- .gitmodules: file
- CLAUDE.md: file
- LICENSE: file
- README.md: file
- assets/: dir(バナーなどのアセット)
- Sources/: dir(Swiftソースコード)
- Tests/: dir(テストコード)
- Package.swift: file(Swiftパッケージ設定)
- scripts/: dir(ビルドや補助スクリプト)
- docs/: dir(ドキュメント)
- .github/: dir(CIやIssueテンプレート) …他 10 ファイル
README抜粋:アプリは「Projects」と「Worktrees」を中心に設計され、各ワークツリーに専用の永続的tmuxセッションを割り当てることで、リポジトリ単位での作業復元と並列作業をサポートします。GPUアクセラレーションされた端末描画とネイティブのサイドバーにより、視認性と操作性を両立しています。
まとめ
git worktree×tmux×Swiftで構築された、macOS向けの実用的なワークスペース端末。迅速なセッション復帰と視覚的なプロジェクト管理が魅力(約50字)。
リポジトリ情報:
- 名前: mori
- 説明: A native macOS workspace terminal organized around Projects and Worktrees, powered by tmux and libghostty
- スター数: 20
- 言語: Swift
- URL: https://github.com/vaayne/mori
- オーナー: vaayne
- アバター: https://avatars.githubusercontent.com/u/10231735?v=4