tmuxが接続されているかどうかを確認する方法は?

tmuxが接続されているかどうかを確認する方法は?

私はtmuxセッションでIrssiを実行しており、誰かが私にプライベートメッセージを送信したり、私がtmuxセッションに接続していないときに私に言及したときに私に電子メールを送信するようにIrssiスクリプト(拡張)を作成しています。

これについてのすべては非常に簡単です。一つは抜けました。 tmuxセッションが接続されているかどうかを検出する方法は?

私はこれまでこれをやってきましたが、主にこれが正しい/最善の方法であるかどうかを確認するためにここに来ました。どんな提案にも感謝します!

# Get the current session_name value from tmux
$ tmux display -p '#{session_name}'
2

# Running list-clients while I'm attached yields the following,
# from both the same window as well as another window:
$ tmux list-clients -t 2
(null): 2 [180x42 (null)] 

# As well, running list-clients while detached yields no output:
$ tmux list-clients -t 2
$ 

概して私考えるこれはこの問題を解決する正しい方法ですが、この問題を確認する方法のより良い方法や提案があればいつでも歓迎します。

ベストアンサー1

いいですね。必要な部分はすでに確保しているようです。しかし、これを組み合わせて凝集力のある全体にします。

環境TMUX変数は、現在のプロセスがtmuxで実行されているかどうかを示します。

<~> $ echo $TMUX
/private/var/folders/1s/ff98nkc90mv7pfglffklcv8w0000gn/T/tmux-501/default,27570,8

最後の値(8)はセッションID(セッション名であってもなくてもよい)です。上記の例では、セッションIDは8ですが、「8」というセッションはありません。

<~> $ tmux ls
0: 1 windows (created Sat Nov 23 21:17:45 2013) [80x23]
1: 1 windows (created Sat Nov 23 21:17:45 2013) [120x34]
bar: 2 windows (created Tue Nov 26 03:05:03 2013) [120x34] (attached)
blech: 1 windows (created Tue Nov 26 03:12:46 2013) [120x34] (attached)

ただし、-F形式の文字列を使用してtmuxからこの情報を取得できます。

<~> $ tmux ls -F "#{session_name}: (#{session_id})"
0: ($0)
1: ($1)
bar: ($5)
blech: ($8)

その後、この情報を使用して添付されていることを確認できます。

<~> $ tmux ls -F "#{session_id}: #{?session_attached,attached,not attached}"
$0: not attached
$1: not attached
$5: attached
$8: attached

すべてを一つにまとめるのに助けが必要な場合は、教えてください。

おすすめ記事