如何在Gnome/X11/Ubuntu24.04中恢复、最大化并聚焦通知区最小化窗口
问题:恢复最小化到通知区的窗口并聚焦
我有一段通过窗口标题查找并聚焦窗口的代码:
winid=$(wmctrl -l | grep $1 | cut -f1 -d' ') xdotool windowactivate $winid
这段代码对被其他窗口遮挡的窗口有效,但对于最小化到通知区的窗口(例如Slack),无法将其恢复。尝试了以下命令也无效:
# Ensure the window is mapped (visible) xdotool windowmap $winid 2>/dev/null # Raise the window to the top of the stack xdotool windowraise $winid 2>/dev/null # Bring the window to the foreground xdotool windowactivate $winid 2>/dev/null # (Optional) Force refresh with wmctrl wmctrl -i -R $winid 2>/dev/null
环境:Ubuntu 24.04,X11
解决方法
1. 确保正确获取窗口ID
最小化到通知区的窗口通常不会出现在wmctrl -l输出中,因为这类应用会隐藏窗口而非普通最小化。可以用xwininfo遍历所有窗口(包括隐藏的)来定位:
winid=$(xwininfo -root -tree | grep -i "slack" | awk '{print $1}')
若匹配到多个ID,可结合窗口类名精确过滤:
winid=$(xprop -root _NET_CLIENT_LIST | awk -F'#' '{print $2}' | tr ',' '\n' | while read id; do xprop -id $id WM_CLASS | grep -q "Slack" && echo $id done)
2. 强制恢复隐藏窗口并聚焦
先检查窗口状态,若为隐藏则先映射显示,再用wmctrl激活:
# 检查窗口是否隐藏 if xprop -id $winid _NET_WM_STATE | grep -q "_NET_WM_STATE_HIDDEN"; then xdotool windowmap $winid 2>/dev/null fi # 激活并置顶窗口 wmctrl -i -R $winid xdotool windowactivate $winid
3. 针对托盘应用的DBus调用
部分托盘应用(如Slack)需要通过DBus接口触发窗口显示,先找到应用的DBus名称:
gdbus call --session --dest org.freedesktop.DBus --object-path /org/freedesktop/DBus --method org.freedesktop.DBus.ListNames | grep -i slack
找到后调用对应的激活方法(以Slack为例):
gdbus call --session --dest com.slack.Slack --object-path /com/slack/Slack --method com.slack.Slack.ActivateWindow
可使用d-feet工具可视化查看应用的DBus接口,方便定位调用方法。
4. 完整通用脚本
整合上述逻辑,编写一个可复用的脚本:
#!/bin/bash TARGET_APP="$1" # 通过窗口类名查找目标窗口ID winid=$(xprop -root _NET_CLIENT_LIST | awk -F'#' '{print $2}' | tr ',' '\n' | while read id; do xprop -id $id WM_CLASS | grep -qi "$TARGET_APP" && echo $id && break done) if [ -z "$winid" ]; then echo "未找到目标窗口" exit 1 fi # 恢复隐藏窗口 xprop -id $winid _NET_WM_STATE | grep -q "_NET_WM_STATE_HIDDEN" && xdotool windowmap $winid # 激活并聚焦窗口 wmctrl -i -R $winid xdotool windowactivate $winid
保存为focus-app.sh,执行chmod +x focus-app.sh赋予权限,使用时运行./focus-app.sh Slack即可。
内容的提问来源于stack exchange,提问作者Persimmonium
相关产品推荐
相关产品推荐

