Window-Manager
在 Openbox 中,是否可以在匹配視窗中執行命令,或者如果不存在匹配則打開一個新命令?
本質上,我正在尋找一種方法來保持一個終端打開執行 tmux,並在會話內部打開新視窗,而不是生成新終端。
在按下按鍵序列時,如果沒有打開一個新終端,我想打開一個新終端。但是如果已經打開了一個,我想在必要時切換到它的桌面並聚焦視窗,然後發送命令。
我找到了
If
windows 操作的文件,我希望全域操作也有類似的構造,但我沒有看到它。編輯:解決方案
我最終使用了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
然後我將它綁定到
W-space
openbox 中,並設置一個應用程序name=tmux_terminal
以在第一個桌面上打開最大化。現在,如果終端沒有打開,W-space
將打開它並附加到 tmux,否則,它將簡單地切換到現有的 tmux 會話視窗並在其中打開一個新視窗。
我不認為 openbox 可以做到這一點,至少現在還不能,但是可以使用熱鍵顯示/隱藏的類似地震的下拉式終端是否可以接受?一些像 Tilda、Yakuake、Guake 等是終端仿真器,專門設計為具有類似地震的能力。此外(無恥的外掛),還有一個我為個人使用而編寫的小腳本
xterm
,它做了類似的事情——我已經Alt-``映射來執行它,我總是在那個終端做的第一件事就是執行
screen(類似於
tmux`)。