tmuxポップアップというものを知りました。

YouTubeでオススメされた動画がきっかけで(最近オートダビングのおかげで海外のTips動画を見られるようになったのが素晴らしい)、「ポップアップでLazygitやターミナルを出せる」という使い方が便利そうで。とりあえずLazygit用だけ作っておこうとClaude Codeに相談して、キーバインドを設定してもらうことにしました。

で、既存のMetaキー系ショートカットを確認していたときにOpt+Yを押したら、tmuxのセッションごと落ちてしまいました。

セッションが消えた原因

原因究明をCodexに手伝ってもらったところ、昼間のbrew upgrade後から挙動が変わっていそうで、特にyaziをtmux popup内で起動するところが怪しそう、という話になりました。

最初は設定ファイルの読み込みやターミナル情報の引き継ぎが疑われ、.tmux.confに以下を追加しました。

set -g allow-passthrough on
set -ga update-environment TERM
set -ga update-environment TERM_PROGRAM

この設定だけでは完全には解決しなかったのですが、調査の流れで「消えてしまったセッションをどうにかしたい」という話になり、Codexからtmux-resurrecttmux-continuumというプラグインを勧めてもらってついでに入れてもらいました。セッションの保存と自動保存ができるようになって、これはこれで良かった。

yaziはポップアップじゃなくて一時ウィンドウに

設定を足してもまだyaziでエラーが出てtmuxが落ちるのが続いたので、さらに調べてもらったところ、少なくとも自分の環境ではtmuxポップアップとyaziの相性が悪そうで、結局yaziはポップアップではなく一時ウィンドウで開く形に落ち着きました。

bind -n M-y new-window -c "#{pane_current_path}" -n yazi \
  "~/.config/tmux/yazi-popup.sh #{pane_id}"

(「一時ウィンドウってなんぞ」と思ったけど、開いて閉じたら自動で消えるウィンドウのことらしい)

最終的なキーバインド布陣

お風呂で「Lazygitって結局Neovimの中から使うからそんなに必要ないのでは?」とか考えながら、結局全部Metaキー系で実装しました。

  • M-g:Lazygit
  • M-t:ポップアップターミナル
  • M-s:セッション切り替え(tmuxのセッションはいつも一つなので使わないかも)
  • M-n:メモ(Obsidianの別Vault、iCloud連携でモバイル版Obsidianとも同期)
  • M-y:yazi(一時ウィンドウ)

システムモニターはbtopを導入したら検討しようと思っています。とりあえずこの布陣でしばらく使ってみます。