2001Yのプロフォール画像

2001Y@Y20010920T

結論(先に)

  • “素の状態”のリソース(CPU/RSS)だけを見ると、tmux が軽いケースが多い
    例: “空セッションで Zellij 80MB / tmux 6MB” という報告。([GitHub][1])
  • ただし tmux も設定次第で重くなる(特にステータスで外部コマンドを高頻度実行)。([man7.org][2])
  • Zellij は UI/機能込み(プラグイン等)なので、軽さを取りにいくなら UI/プラグイン・永続化・バッファの設定を見直す。

なぜ Zellij が重くなり得るか(設計要因)

1) UI も「プラグイン(Wasm)」として動く

  • Zellij のプラグインは「ターミナルペインと同格」で UI を描画でき、状態変化にも反応できる。([Zellij][3])
  • さらに Wasm プラグインは .wasmwasmtime ランタイムで実行する、という解説(= ランタイム分のコストが乗る)。([Maple4ever][4])

2) デフォルトで “tab-bar / status-bar” が UI として常駐

  • tab-bar はデフォルトで内部 zellij:tab-bar を読み、画面上端 1 行を使う。([Zellij][5])
  • status-bar も内部 zellij:status-bar を読み、画面下端 2 行を使う。([Zellij][6])
    何もしなくても描画・状態同期が走る余地がある。

3) 長時間稼働でメモリ/CPU の課題報告がある

  • 0.40.1 で「1〜2日でメモリが大きく増える」「アイドルでも CPU が数%」という報告。([GitHub][7])

tmux が軽く感じやすいポイント(ただし罠あり)

tmux は “ステータス更新”が重さの主因になりがち

  • status-interval はデフォルト 15 秒で更新。0 にすると間隔更新の再描画を無効化。([man7.org][2])
  • status-left / status-right には #(cmd) を埋め込める(外部コマンドを実行)。([man7.org][2])
    → ここに重いコマンド(git、ネットワーク、センサー系)をたくさん置いて 更新間隔を短くすると、tmux が “重い” 側に倒れる。

体感レイテンシ(ESC遅延)も誤認しがち

  • escape-time は ESC 入力後に待つ時間(シーケンス判定のため)で、デフォルト 500ms。([man7.org][2])
    → これが大きいと「なんか遅い」になる(軽さではなくキー解釈の遅延)。

設定で “Zellij を軽く寄せる” チェックリスト

1) スクロールバッファを絞る

  • scroll_buffer_size(各ペインのスクロールバック保持行数、デフォルト 10000)。([Zellij][8])
    例(攻めるなら 2000〜5000 とか):
scroll_buffer_size 5000

2) マウス機能・UIを削る(使ってないなら)

  • mouse_mode(デフォルト true)。([Zellij][8])
  • advanced_mouse_actions(ホバー等、デフォルト true)。([Zellij][8])
  • simplified_ui(プラグインに簡易UI要求)。([Zellij][8])
mouse_mode false
advanced_mouse_actions false
simplified_ui true

3) セッション永続化(シリアライズ)を切る/頻度を下げる

  • session_serialization はデフォルト true。([Zellij][8])
  • serialization_interval は「高いリソース利用になり得る」旨の注意あり。([Zellij][8])
session_serialization false
# 使うなら間隔を長くする(例)
serialization_interval 300

4) デフォルトUIプラグイン(status/tab bar)を減らす

  • 「デフォルトを“無効化”したいなら、status bar が無い構成を作る(dump-configして plugin セクションを空にする等)」という案内。([GitHub][9])
    (=レイアウト/設定を作って、読み込むプラグインを明示的に減らす)

“tmux を軽く保つ” チェックリスト(重くしがちな原因を潰す)

1) ステータス更新の頻度を下げる / 止める

# デフォルトは 15 秒。重いなら 30〜60 秒へ。0 は間隔更新での再描画を無効。:contentReference[oaicite:17]{index=17}
set -g status-interval 30

2) #(cmd) を見直す(数・重さ・更新頻度)

  • ステータスに #(sysctl ...) など外部コマンドを埋め込める。([man7.org][2])
    → 重いコマンドはキャッシュする、回数を減らす、更新頻度を落とす。

3) ESC遅延を詰めて “遅い錯覚” を消す

# escape-time は ESC 後の待ち(デフォルト 500ms)。:contentReference[oaicite:19]{index=19}
set -sg escape-time 10