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