Ubuntu 17.10下wmctrl命令toggle,above无法关闭窗口置顶问题
我完全懂你遇到的麻烦——跟着@MichaelTunnell的思路用wmctrl -r :ACTIVE: -b toggle,above来切换活动窗口的置顶状态,结果在Ubuntu 17.10里偏偏没法正常关闭置顶。这个问题大概率和Ubuntu 17.10默认的GNOME Shell 3.26对窗口属性的处理逻辑有关,wmctrl的toggle参数在这里没能正确识别窗口的above状态。
给你几个实用的解决方案:
方案一:用脚本实现精准的add/remove切换
放弃toggle参数,改成先检查窗口当前的置顶状态,再执行对应的添加或移除操作。写个简单的bash脚本:#!/bin/bash # 获取当前活动窗口的ID active_win=$(wmctrl -r :ACTIVE: -i -x | awk '{print $1}') # 检查窗口是否已处于置顶状态 if wmctrl -l -G -p | grep "$active_win" | grep -q "above"; then wmctrl -r :ACTIVE: -b remove,above else wmctrl -r :ACTIVE: -b add,above fi把脚本保存为
toggle_window_top.sh,执行chmod +x toggle_window_top.sh赋予执行权限,再把这个脚本绑定到快捷键上,就能稳定切换置顶状态了。方案二:改用xdotool工具
xdotool在GNOME环境下对窗口属性的兼容性有时候比wmctrl更好,直接用这条命令就能切换置顶:xdotool windowtoggleabove $(xdotool getactivewindow)先确保你安装了xdotool:
sudo apt install xdotool,然后把这个命令绑定到快捷键,测试下来在Ubuntu 17.10里应该能正常工作。方案三:重装wmctrl修复版本bug
有可能是你当前的wmctrl版本存在小bug,尝试重新安装一下:sudo apt update && sudo apt install --reinstall wmctrl安装完成后再测试原来的
toggle命令,说不定就能恢复正常了。
另外提一句:Ubuntu 17.10已经是终止官方支持的旧版本了,如果长期使用的话,建议升级到LTS版本(比如20.04或22.04),不仅兼容性更好,安全性也更有保障。
内容的提问来源于stack exchange,提问作者Frakcool




