Answers:
好吧,在sudo apt-get install wmctrl
-ing 之后,您可以使用以下bash脚本进行播放:
#! /bin/bash
WINTITLE="Mail/News" # Main Thunderbird window has this in titlebar
PROGNAME="mozilla-thunderbird" # This is the name of the binary for t-bird
# Use wmctrl to list all windows, count how many contain WINTITLE,
# and test if that count is non-zero:
if [ `wmctrl -l | grep -c "$WINTITLE"` != 0 ]
then
wmctrl -a "$WINTITLE" # If it exists, bring t-bird window to front
else
$PROGNAME & # Otherwise, just launch t-bird
fi
exit 0
我在这里找到的
if ! wmctrl -l | grep -q "$WINTITLE"
wmctrl
有一个-i
选项,它支持使用带有其十六进制标识符的窗口。因此,您可以执行此操作wmctrl -lp|grep 'whatever incomplete name'|cut -d' ' -f1|xargs wmctrl -ai
-类似操作
使用时xdotool
,似乎很难带来前所有仅使用一个命令就可以将给定应用程序或类的窗口。通过将其包装在for
Shell级别的循环中,最终得到了更好的结果。使用Bash:
for WINDOW in $(xdotool search --desktop 0 Firefox); do
xdotool windowactivate ${WINDOW}
done
几句话:
xdotool search
将Firefox
在窗口名称,类和类名中搜索模式(此处为)。如果你想限制你的搜索空间,使用相关的--class
,--name
或--classname
选项。--desktop 0
选项将搜索限制为第一个桌面。这似乎是一种避免XGetWindowProperty[_NET_WM_DESKTOP] failed (code=1)
某些注释中提及的解决方法。xdotool
项目自2015年以来一直处于停滞状态。它仍然是我选择的工具。由于个人原因,Jordan Sissel(原始作者)并不像过去那样活跃,因此请为该项目做出贡献。
xdotool windowraise
将窗口移到最前面,但不将焦点放在窗口上或通过窗口切换到桌面。相反,windowactivate
将同时完成这三个操作。