本質的に、私は新しい端末を作成するのではなく、tmuxを実行している1つの端末を開いておき、セッション内で新しいウィンドウを開く方法を探しています。
キーシーケンスを押したときにまだ開いていない場合は、新しい端末を開きたいです。ただし、すでに開いている場合はデスクトップに切り替えて、必要に応じてウィンドウに焦点を合わせてからコマンドを送信したいと思います。
私はWindowsタスクに関するドキュメントを見つけて、グローバルタスクとIf
同様の設定を期待していましたが、私は見ませんでした。
編集:ソリューション
結局、単純化されたバージョンを使用するようになりました。jw013のスクリプト。
元のスクリプトは地震端末効果のために書かれていましたが、もっと簡単なことを望んでいました。端末を切り替えることなく、常に単一のtmux端末セッションでウィンドウを開いたままにします。私が見逃したコアコンポーネントはwmctrl
聞いたことがないことです。
jw013のスクリプトをベースにして、次のように単純化しました。
# the variable name for the window (used in openbox rc.xml for the rule as well)
wmclass=tmux_terminal
# if we successfully focus the window then open a new tmux window inside
if wmctrl -a $wmclass -x; then
tmux new-window
# otherwise the window hasn't been opened. open it and attach to tmux.
else
urxvt -name $wmclass -e tmux attach &
fi
その後、それをopenboxにまとめて、最初のデスクトップで最大化するようにW-space
アプリケーションを設定しました。name=tmux_terminal
ターミナルが開いていない場合はW-space
開いてtmuxに接続し、それ以外の場合は単に既存のtmuxセッションウィンドウに切り替えて新しいウィンドウを開きます。
答え1
私はopenboxが少なくともまだこれを行うことができるとは思わない。しかし、ショートカットで表示/非表示にできる地震のようなドロップダウンターミナルは許容可能な代替品になりますか? Tilda、Yakuake、Guakeなどは、地震に似た機能を持つように特別に設計された端末エミュレータです。しかも(恥ずかしいプラグ)こんな小さなものもありますよスクリプト同様のことを行う個人的な目的で書かれたコードを実行するようにマッピングしましxterm
た。Alt-`screen
tmux