我想创建一个快捷方式来 1) 启动尚未启动的应用程序,以及 2) 显示(或将应用程序的窗口放在前面)如果它已经启动。
例如:F10 用于启动 Stardict。我用命令“stardict”和键F10创建了一个自定义快捷方式,所以每次按F10时,系统都会启动一个新的Stardict实例,但这不是我想要的。
有人可以帮忙吗?
先感谢您。
更新:另外,我想添加一些类似的东西:如果窗口已经显示,按下快捷键(始终相同)会将其最小化到系统托盘。
非常感谢desgua在下面提供的完整解决方案(答案部分)。顺便说一句,在desgua发布他的解决方案之前,我找到了另一个解决方案,但没有测试:http : //ubuntuforums.org/showthread.php?t=1464311
启动应用程序或在已启动时显示其窗口或在聚焦时最小化
1) 安装 wmctrl: sudo apt-get install wmctrl
2)安装xdotool: sudo apt-get install xdotool
3)编写脚本:
gedit ~/.focusshortcut #!/bin/bash
#
# 该脚本执行以下操作:
# 如果应用程序尚未启动,则启动该应用程序,
# 如果应用程序启动但未聚焦,则聚焦应用程序,
# 如果有焦点,则最小化应用程序。
#
# by desgua - 2012/04/29,最后更新:2012/12/11
# 指示
name=$(echo $0 | sed 's/.*\///')
如果 [ $# -ne 1 ]; 然后
回声"
该脚本执行以下操作:
# 如果应用程序尚未启动,则启动该应用程序,
# 如果应用程序启动但未聚焦,则聚焦应用程序,
# 如果有焦点,则最小化应用程序。
用法:$name 应用程序
例子:
$name gcalctool
”
出口 1
菲
# 让我们检查是否安装了所需的工具:
工具1=$(哪个xdotool)
tool2=$(wmctrl)
如果 [ -z $tool1 ]; 然后
echo "需要Xdotool,你现在要安装吗?[是/否]"
读一个
如果 [[ $a == "Y" || $a == "y" || $a = "" ]]; 然后
须藤 apt-get 安装 xdotool
别的
echo "那么退出..."
出口 1
菲
菲
如果 [ -z $tool2 ]; 然后
echo "需要wmctrl,你现在要安装吗?[是/否]"
读一个
如果 [[ $a == "Y" || $a == "y" || $a = "" ]]; 然后
sudo apt-get install wmctrl
别的
echo "那么退出..."
出口 1
菲
菲
# 检查应用程序是否正在运行
pid=$(pidof $1)
# 如果没有启动,则启动
如果 [ -z $pid ]; 然后
1 美元
退出 0
别的
# 如果它被启动然后检查它是否被聚焦
foc=$(xdotool getactivewindow getwindowpid)
if [[ $pid == $foc ]]; 然后
# 如果是焦点,则最小化
xdotool getactivewindow 窗口最小化
退出 0
别的
# 如果它没有聚焦,则获得聚焦
wmctrl -x -R $1
退出 0
菲
菲
退出 0
chmod +x ~/.focusshortcut 3) 让你的快捷方式指向 /home/ <user>/.focusshortcut app_to_show
4) 享受;-)