komagataのブログ

Claude CodeをOpenClawっぽく使うためのランチャーをomarchy向けに作りました。

omarchy-claude-launcher

背景

Claude Codeの外部からの利用はAPI経由扱いになったことで、Claude CodeをOpenClawからメインで使ってた我々が死にました。

OpenClawの何が良かったかというと下記の部分です。

  • (Discordなどから使うと)Web UIみたいに複数の話題を並列で簡単に切り替えられる。
  • 新規に別のプロジェクト・話題を作るのが楽。(Claude Codeだと対応するディレクトリが必要)

無いとキツイので急いでOpenClawの使い勝手をClaude Codeに持ってくることを目的にランチャーを作りました。

どういうもの?

Super+I を押すとwalkerのポップアップが出て、プロジェクトを選ぶとそこでClaude Codeが起動します。

walkerのpicker

それぞれのプロジェクトがtmuxの別ウィンドウとして開きます。

tmuxのタブで切り替わる

一度開いたら、2個目以降のプロジェクトはtmux windowとして追加されて、Alt+1Alt+9 で行き来できます。OpenClawをDiscordで使った時のチャンネル切り替えに近い感覚。

tmuxの設定は独自じゃなくて、omarchyはtmuxもかなりデフォルトで活用されているのでそれに乗っかっています。

そのままgithubリポジトリになることが多いので、~/Works(デフォルト)以下に namespace/project-nameというディレクトリが作られて、その中でClaude Codeが立ち上がるだけです。

マシン再起動してもまたSuper+Iすれば前回の会話が自動復元されます。

技術的な話

  • ランチャーUI: walker (omarchyデフォルト、dmenuモード)
  • ターミナル多重化: tmux
  • ターミナル: alacritty
  • ディレクトリ構造: ~/Works/<namespace>/<name>/ の2階層固定

一部、自分の環境特有のハマりどころもあって:

  • ghosttyをサブプロセス起動するとNVIDIAカード(RTX 4070)でmesa llvmpipeフォールバック経由のLLVMクラッシュが起きる → alacrittyで回避
  • ghosttyのgtk-single-instance=detectがあると-eで渡したコマンドが無視されて新規プロセスが即終了する → これも別ターミナル or --gtk-single-instance=falseで回避

普通に動く人の環境ではCLAUDE_LAUNCHER_TERMINALで好きなターミナルに切り替え可能にしてあります。

インストール

omarchyユーザー向けです(walker, tmux, hyprctlが前提)。

git clone https://github.com/komagata/omarchy-claude-launcher.git
cd omarchy-claude-launcher
./install.sh
hyprctl reload

環境変数での設定:

export CLAUDE_LAUNCHER_DEFAULT_NS="yourname" # namespace省略時のデフォルト
export CLAUDE_LAUNCHER_TERMINAL="alacritty"
export CLAUDE_LAUNCHER_CLAUDE_ARGS="--dangerously-skip-permissions"

詳しくはREADMEを見てください。

おまけ: グローバルメモリ

今回OSSにしたのは「ランチャー」部分だけですが、自分の個人環境では ~/.claude/CLAUDE.md@~/.claude/profile.md@~/.claude/active-projects.md をimportして、全プロジェクト横断のメモリを持たせてます。

これで「儲かるビジネス何?」みたいな発散的な質問を投げたら、並行して作業している他のプロジェクトを引き合いに出して、「あの作りかけのサービスを有料化するのがいいのでは?」みたいなOpenClaw的な示唆が返ってくるようになりました。

こういうグローバルメモリ?的なものは既にみんな独自にやってたり、もっと公式なやり方が出たりすると思うので、今回のはあくまで簡単に立ち上げられるランチャーだけにしました。

おまけ2:OpenClawからの引っ越し

~/.claude~/.openclawに旧OpenClawの記憶やスキルやログが残っているので、「引っ越してマージして」って言ったらほとんど受け継ぐことができました。

ただ、定期実行関係はAnthropicのクラウド上で動かすためにスクリプトを修正したりちょっと面倒でした。

Comments


Option