You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu 17.10下wmctrl命令toggle,above无法关闭窗口置顶问题

解决Ubuntu 17.10中wmctrl切换置顶失效的问题

我完全懂你遇到的麻烦——跟着@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

火山引擎 最新活动