tmuxが起動時にメッセージを表示しない問題を解決するには?

tmuxが起動時にメッセージを表示しない問題を解決するには?

.tmux.conf私のファイルにはディレクトリがあることを確認し、ディレクトリがない場合はメッセージを表示するコマンドがあります。他のコマンドはシェルスクリプトを実行しようとします。

文書:~/.tmux.conf

# do a check and display message if non-zero exit
if-shell "! [-d $HOME/.tmux]" 'display-message "tmux plugins are not installed"'

# try run a shell script
run-shell ~/.tmux/plugins/tmux-resurrect/resurrect.tmux

問題は、tmuxが起動中に生成されたメッセージを表示しないことです。これは、診断エラーと警告が生成されると予想されるときです。

tmuxを起動すると、tmuxのポケットベルにエラーメッセージが表示されます。

(null):0: no current session 

明らかにメッセージを受信するのが好きではありません。

source-file ~/.tmux-conftmuxセッションで同じコマンドを実行すると、すべてのメッセージが正常に報告されます。起動中にtmuxレポートメッセージを作成するにはどうすればよいですか?

答え1

私はこれが古いことを知っていますが、いくつかのスタートアップメッセージを表示することに興味があり、この問題に直面しました。いくつかの検索の最後についにtmuxフックを見つけました。(tmux 2.2で内部的に導入されました)ワンタイムスタートメッセージを表示するように設定できます(詳細)ここ)。

session-createdこのフックを使用して、新しいセッションでtmuxコマンドを実行できます。display-message -p "message"新しく作成されたウィンドウに直接メッセージを出力します。したがって、次のメッセージを表示できます。

MESSAGE='display-message -p "tmux plugins are not installed" ; \
         display-message -p "please press Leader + I to install" ; \
         set-hook -gu session-created ;'
if-shell "[ ! -d $HOME/.tmux ]" 'set-hook -g session-created ${MESSAGE}'

set-hook -gu session-createdこのメッセージが次にのみ表示されるように、このフックの登録を解除します。最初その後のすべてのセッションではなくセッションが作成されました。

答え2

次のようにコマンドラインで動作しました。

tmux new-session \; if-shell "! [-d $HOME/.tmux]" 'display-message "tmux plugins are not installed"'

関連情報