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

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

我想创建一个快捷方式来: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)享受;-)

相关内容