我想要几个应用程序的快捷方式来执行以下操作:
- 如果应用程序尚未运行,则启动该应用程序。
- 如果应用程序位于后台,则将其置于前台。
- 将应用程序的下一个实例置于前台(如果存在)。
我正在使用 Debian 和 KDE。实现这一点的最佳方法是什么?
答案1
分解为几个步骤,您可以先按名称查找任务,如果未找到则运行该任务:
APPID=`pgrep <taskname>`
if [ $APPID == "" ] ; then
<app-command-with-options>
exit 0
fi
如果必须运行应用程序,脚本现在将退出,否则继续寻找窗户属于任务:
known_windows=$(xwininfo -root -children|sed -e 's/^ *//'|grep -E "^0x"|awk '{ print $1 }')
for id in ${known_windows}
do
xp=$(xprop -id $id _NET_WM_PID)
if test $? -eq 0; then
pid=$(xprop -id $id _NET_WM_PID|cut -d'=' -f2|tr -d ' ')
if test "x${pid}" = x${APPID}
then
echo "Windows Id: $id"
fi
fi
done
此时,脚本已遍历匹配窗口列表。您可以简单地在循环后添加一个命令来激活由“$id”表示的窗口;这将切换到列表中的最后一个窗口,并应将其提升到顶部......
xdotool windowactivate $id
您可以找出不同的策略来按对您有用的顺序选择窗口。此外,通过更巧妙地使用命令xdotool
及其搜索选项,可以简化脚本。