启动应用程序或显示其窗口(如果已启动)的命令

Khu*_*hue 5 shortcut-keys

我想创建一个快捷方式来 1) 启动尚未启动的应用程序,以及 2) 显示(或将应用程序的窗口放在前面)如果它已经启动。

例如:F10 用于启动 Stardict。我用命令“stardict”和键F10创建了一个自定义快捷方式,所以每次按F10时,系统都会启动一个新的Stardict实例,但这不是我想要的。

有人可以帮忙吗?

先感谢您。

更新:另外,我想添加一些类似的东西:如果窗口已经显示,按下快捷键(始终相同)会将其最小化到系统托盘。

非常感谢desgua在下面提供的完整解决方案(答案部分)。顺便说一句,在desgua发布他的解决方案之前,我找到了另一个解决方案,但没有测试:http : //ubuntuforums.org/showthread.php?t=1464311

des*_*gua 8

启动应用程序或在已启动时显示其窗口或在聚焦时最小化

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) 享受;-)