在Openbox中,是否可以在匹配的窗口中执行命令,或者如果不存在匹配则打开一个新窗口?

在Openbox中,是否可以在匹配的窗口中执行命令,或者如果不存在匹配则打开一个新窗口?

本质上,我正在寻找一种方法来保持一个终端打开运行 tmux,并在会话内打开新窗口,而不是生成新终端。

在按下按键序列时,如果没有打开一个新终端,我想打开一个新终端。但如果已经打开了一个,我想在必要时切换到其桌面并聚焦窗口,然后发送命令。

我找到了 Windows 操作的文档If,我希望全局操作也有类似的构造,但我没有看到它。

编辑:解决方案

我最终使用了简化版本jw013 的脚本

原始脚本是为 quake 终端效果编写的,但我想要的更简单:不切换终端,而只是始终在单个 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-spaceopenbox 中,并设置一个应用程序以name=tmux_terminal在第一个桌面上最大化打开。现在,如果终端未打开,W-space将打开它并附加到 tmux,否则,它将简单地切换到现有的 tmux 会话窗口并在其中打开一个新窗口。

答案1

我认为 openbox 不能完全做到这一点,至少现在还不能,但是可以用热键显示/隐藏的类似 quake 的下拉式终端是可以接受的替代品吗? Tilda、Yakuake、Guake 等是专门为具有类似地震功能而设计的终端仿真器。另外(无耻插件),还有这个小脚本我为个人用途而编写的代码,它执行类似的操作xterm- 我已Alt-`映射以运行它,并且我总是在该终端中执行的第一件事是运行screen(类似于tmux)。

相关内容