我正在尝试添加热键来快速打开一些应用程序(例如 KeePassXC),我已经做到了我想要的
键盘设置 -> 键盘快捷键 -> /usr/bin/keepassxc ; wmctrl -a keepassxc
这在第一次运行或窗口完全关闭时有效。当窗口未激活而我想激活它并将其置于最前面时,问题就开始了。按下热键时,Ubuntu 只显示程序已就绪的通知,没有激活。我是这个系统的新手,需要帮助找到摆脱该通知的方法,并将所需的应用程序置于最前面并聚焦。
答案1
您可以使用一些GNOME shell 扩展删除“程序已就绪”通知并将新启动的窗口置于焦点,例如
- '窗口已准备好'通知移除器
- 无烦恼(删除‘Windows 已准备就绪’通知并将窗口置于焦点)
- 聚焦我的窗口(同上)
答案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"