之前老版本linux使用x11的可以使用这种后来这些使用wayland的可以看后半部分准备工作sudoaptinstallxdotool编写sh脚本#!/bin/bash# 获取所有微信窗口的ID并存储在数组中wechat_windows($(xdotool search-name微信))# 获取当前活动窗口的IDcurrent_window$(xdotool getactivewindow)# 初始化标志判断是否找到匹配的微信窗口found0# 遍历微信窗口ID数组forwindow_idin${wechat_windows[]}do# 如果当前窗口ID与微信窗口ID匹配if[$current_window-eq$window_id];then# 设置标志为1表示找到了匹配的微信窗口found1breakfidone# 如果找到匹配的微信窗口if[$found-eq1];then# 最小化该微信窗口xdotool windowminimize$window_idelse# 否则激活微信窗口forwindow_idin${wechat_windows[]}doxdotool windowactivate$window_iddonefiexit0快捷键egopenWechatbash /home/edwin/文档/PilgrimFiles/openWechat.sh【更新】由于ubuntu26lts这种默认使用wayland造成基于x11开发的linux原生微信使用上述方法不能使用提供以下解决办法当前办法只能唤醒状态栏里的最小化微信当微信窗口出现后最小化还需要winh这种通用最小化按键以后如果有更好的解决方案会同步发布可以关注后续安装 wmctrl这是一个非常小巧的窗口控制工具在 Ubuntu 下直接安装sudoaptinstallwmctrl建立快捷键脚本 openWechat.sh# 1. 检查微信是否在运行ifpgrep-xwechat/dev/null;then# 如果运行了强行将微信窗口激活并推到最前台# 注wechat 对应微信窗口的 Class 名wmctrl-x-awechatelse# 如果没运行则冷启动/usr/bin/wechat %Ufi赋予执行权限并绑定快捷键chmodx openWechat.sh使用./openWechat.sh测试完毕后设置快捷键【注】ubuntu26使用wayland可能安装deb包都失败或者打不开微信所以…看看下文试试如果你需要解决微信或者其他跨平台软件如 Qt/Electron 应用在 Ubuntu 纯 Wayland 或缺少 X11 组件的环境下报错缺少 libxcb-xxx 相关依赖的问题可以一键安装以下这组最完整的 XCB 图形核心依赖包。直接在终端复制并运行以下命令sudoaptupdatesudoaptinstall-y\libxcb-icccm4\libxcb-image0\libxcb-keysyms1\libxcb-render-util0\libxcb-xinerama0\libxcb-xinput0\libxcb-cursor0\libxcb-shape0\libxcb-xfixes0\libxkbcommon-x11-0同理QQ#!/bin/bash# 1. 确保系统安装了 wmctrlif!command-vwmctrl/dev/null;thensudoapt-getinstall-ywmctrl/dev/null21fi# 2. 检查 QQ 进程是否存在 (匹配 qq 或 linuxqq)ifpgrep-xqq/dev/null||pgrep-xlinuxqq/dev/null;then# 3. 使用 wmctrl 寻找 QQ 的窗口# -l 列出所有窗口-x 显示类名-i 打印出十六进制窗口 ID# 微信/QQ 等软件类名大小写敏感这里同时匹配 qq, QQ, linuxqqQQ_WINDOW_ID$(wmctrl-lx|grep-i-Eqq|linuxqq|awk{print $1}|head-n1)if[-n$QQ_WINDOW_ID];then# 4. 获取当前最前台获得焦点的窗口 ID转换为十六进制小写格式方便对比ACTIVE_WINDOW_ID$(printf0x%08x$(xdotool getactivewindow2/dev/null)2/dev/null)# 如果没有 xdotool可以用 wmctrl 替代获取当前激活窗口部分环境适用[-z$ACTIVE_WINDOW_ID]ACTIVE_WINDOW_ID$(wmctrl-v-a:ACTIVE:21|grepActive window|awk{print $NF})# 场景 A如果当前活动窗口就是 QQ则将其最小化if[$ACTIVE_WINDOW_ID$QQ_WINDOW_ID];then# -i 代表使用窗口 ID 操纵-r 指定目标:ACTIVE: 表示将其最小化/隐藏wmctrl-i-r$QQ_WINDOW_ID-badd,hidden# 场景 B如果 QQ 窗口在后台将其激活并推到最前台elsewmctrl-i-a$QQ_WINDOW_IDfielse# 场景 B 兜底如果进程在但 wmctrl 找不到窗口比如缩进了托盘# 此时直接运行 QQ 命令利用 QQ 自身的单实例检测去唤醒托盘中的界面/usr/bin/qq %Ufi# 场景 C如果 QQ 压根没运行直接冷启动else/usr/bin/qq %Ufiexit0chmodx ~/EdwinFiles/open_qq_wmctrl.sh