是否可以在 Gnome3 中使用键盘快捷键来打开窗口?

是否可以在 Gnome3 中使用键盘快捷键来打开窗口?

我最近从 KDE4 转向了 Gnome3。在 KDE 中,您可以创建特定于应用程序的键盘快捷键来升起窗口。我通常为 Firefox、Thunderbird、我的终端等创建一个。这样在窗口之间切换就快如闪电。 Gnome好像没有这样的功能。另外我不喜欢 Gnome3 的窗口切换方案(alt-tab)。

所以我想知道是否可以通过DBUS升起窗户?如果是,那么就可以编写一个脚本并为其分配键盘快捷键。

答案1

我在 Fluxbox wiki 上找到了一个脚本,该脚本用于wmctrl查找应用程序并在其已运行时提升其窗口。否则,脚本将启动应用程序。我正在使用该脚本并进行调整以支持我所拥有的参数记录在我的博客上

  1. 确保wmctrl已安装。

    sudo apt-get install wmctrl
    
  2. 将以下脚本添加到您的路径(可能在 中$HOME/bin/find_app.sh),并使其可执行。

    #!/bin/bash
    # Find_app
    
    # Author: Lucas van Staden (lvs at dedmeet.com / http://www.dedmeet.com)
    # This little script will try and find the application attempting to start
    # in the running processes, and if found, focus the application
    # if not found, a new instance will start
    
    # usage:
    # find_app.sh <application with full path>
    
    # params
    # 1 - application to start (full path)
    
    # helper applications
    DOLLARONE=$(echo $1 | sed -e 's/[\t ]*$//') #Delete trailing spaces
    WMCTRL=`which wmctrl`;
    GREP=`which grep`;
    APPLICATION=$(echo $DOLLARONE | cut -d ' ' -f 1)
    if [ "x$APPLICATION" != "x$DOLLARONE" ]; then
      APPARGS=$(echo $DOLLARONE | cut -d ' ' -f 2)
    fi
    BASENAME=`basename $APPLICATION`;
    BASENAME=`echo $BASENAME | tr "[:upper:]" "[:lower:]"`
    FOUND=0;
    function findwindow {
    # 1 = BASENAME
    # 2 = WMCTRL
    # 3 = GREP
            IFS=$'\n';
            for RUNNING in `$2 -l -x`
            do
                    if [ `echo $RUNNING | tr "[:upper:]" "[:lower:]" | $3 -c $DOLLARONE` -gt 0 ]
                    then
                            HOSTNAME=`hostname`
                            WINDOW=${RUNNING#*${HOSTNAME} }
                            $2 -a $WINDOW
                            FOUND=1;
                    fi;
            done
    }
    if [ "x$APPARGS" = "x" ]; then
      findwindow $BASENAME $WMCTRL $GREP;
      if [ $FOUND -eq 0 ]
      then
              $APPLICATION &
              sleep 2;
              # Try and find the application, after opened
              findwindow $BASENAME $WMCTRL $GREP;
              if [ $FOUND -eq 0 ]
              then
                      # Still not found, wait a bit more, and try again
                      sleep 3;
                      findwindow $BASENAME $WMCTRL $GREP;
              fi
      fi
    else
      $APPLICATION $APPARGS &
    fi
    
  3. 更新您想要具有单一快捷方式启动和启动的应用程序的桌面入口文件,以便通过上述脚本调用应用程序。

    例如:

    cp /usr/share/applications/firefox.desktop ~/.local/share/applications/
    

    编辑并更改该firefox.desktop行以引用:~/.local/share/applications/Execfind_app.sh

    Exec=find_app.sh "firefox %u"
    
  4. 现在为您的默认浏览器添加键盘快捷键:

    系统设置|键盘|快捷方式 |发射器|启动网页浏览器

  5. 重新启动 gnome shell:按下Alt r可显示运行对话框。键入r并按Enter

您现在应该能够使用单个键盘快捷键启动/启动浏览器。

答案2

有一个类似的工具叫做xdo工具。看起来和wmctrl很像。相对于后者的主要优点可能是它使用 X Window ID 而不是字符串来处理窗口。我不知道这对你的情况是否重要。但是,假设您使用的是 Chrome,在一个网站上打开,该网站的标题带有 Mozilla,那么您可能无法从窗口标题识别该应用程序。

相关内容