添加自定义快捷方式来打开和聚焦应用程序

添加自定义快捷方式来打开和聚焦应用程序

我正在尝试添加热键来快速打开一些应用程序(例如 KeePassXC),我已经做到了我想要的

键盘设置 -> 键盘快捷键 -> /usr/bin/keepassxc ; wmctrl -a keepassxc

这在第一次运行或窗口完全关闭时有效。当窗口未激活而我想激活它并将其置于最前面时,问题就开始了。按下热键时,Ubuntu 只显示程序已就绪的通知,没有激活。我是这个系统的新手,需要帮助找到摆脱该通知的方法,并将所需的应用程序置于最前面并聚焦。

答案1

您可以使用一些GNOME shell 扩展删除“程序已就绪”通知并将新启动的窗口置于焦点,例如

  1. '窗口已准备好'通知移除器
  2. 无烦恼(删除‘Windows 已准备就绪’通知并将窗口置于焦点)
  3. 聚焦我的窗口(同上)

答案2

这可能无法解决该问题中的通知问题。但是,所述命令模式 ( [cmd] ; wmctrl -a [cls]) 可能会启动一个程序的多个实例,而以下脚本可以避免这种情况。要使用,请将其保存在路径中的某个位置,例如~/bin/find_app.sh,并授予其执行权限 ( chmod +x ~/bin/find_app.sh)。

#! /usr/bin/env bash

if [ $# -lt 1 ]; then
   echo "usage: `basename $0` [class-name] [command] [args]"
   echo
   echo "Find and activate window with [class-name]."
   echo "Execute [command] if window cannot be found."
   echo
   echo "If [command] is not given, it is assumed to be [class-name]"
   exit 1
fi

if [ $# -lt 2 ]; then
   # find_app="wmctrl -xa $class"
   class="$1"
   find_app="xdotool search --onlyvisible --class $class windowactivate"
   command="$1"
else
   class="$1"
   find_app="xdotool search --onlyvisible --class $class windowactivate"
   shift
   command="$@"
fi

if (! eval "${find_app}") ; then
   eval "xdotool exec ${command}"
fi

注意:xdotool某些应用程序可能会返回错误:

XGetWindowProperty[_NET_WM_DESKTOP] failed (code=1)

解决该问题的一个方法是添加--desktop 0变量find_app

find_app="xdotool search --desktop 0 --onlyvisible --class $class windowactivate"

相关内容