tilix端末エミュレータでtmuxセッションを実行する

tilix端末エミュレータでtmuxセッションを実行する

背景:私はTilixをデフォルトの端末エミュレータとして使用します。 Tilix環境設定(スクリーンショット付き)で、Tilixの起動時に次のコマンドを実行するように設定しました。

/usr/bin/zsh -c "if [[ $(tmux ls 2>/dev/null | grep -q -E '^main.*attached.*'; echo $?) -ne 0 ]]; then tmux attach -t main || tmux new -s main; else /usr/bin/zsh; fi"

Tilixの環境設定

以下を確認してください。

  • tmux セッション名がmain次の場合
    • 失敗した場合は、次のtmuxセッションに接続しようとします。main
      • 失敗した場合は、名前付きの新しいtmuxセッションを作成してmain接続します。
    • それ以外の場合(成功した場合)、一般を開始します。zsh

この複雑さがすべて発生する理由は、最初にtilixを起動したときにtmuxが実行され、接続されて起動されるためです。どの新しいtilixセッションまたは新しいタイリックスウィンドウlauched は main という既存の tmux セッションを作成したり、接続しようとしません。 (Tilixには独自のマルチウィンドウとウィンドウがあるため、tmuxセッションと混同しないでください)

上記のコードブロックを圧縮できるのか、それとも上記のコードブロックのより良いバージョンを思い出すことができるのか疑問に思います。

答え1

コマンドの置き換えは少し過ぎましたが、それ以外はかなり良いようです。終了コードを使用してください。if

^main.*attached.*パターンが見つかるとそのパターンも^main.*attached見つかり、同様に長いパターンが見つからないと短いパターンも見つかりません。より短いパターンのマッチングはより速いかもしれません。

/usr/bin/zsh -c "if ! tmux ls 2>/dev/null | grep -q -E '^main.*attached'; then tmux attach -t main || tmux new -s main; else /usr/bin/zsh; fi"

答え2

tmuxが十分に新しい場合は、次のことができます。

[ "$(tmux display -pt=main: '#{session_attached}' 2>/dev/null)" -gt 0 ] && exec tmux new -Asmain || exec zsh

関連情報