切换桌面/空间时,能否禁用全局应用窗口的自动后置排序?
解决全局桌面应用切换桌面时被后置的问题
我完全懂这种突兀又闹心的体验——把终端这类应用设为「分配至所有桌面」,本来是想在任何桌面都能快速用到,结果切个桌面它就从顶层掉到底层,每次都得手动再点出来,太影响效率了。针对这个问题,我整理了不同系统下的解决方案,核心思路就是让全局窗口同时保持「始终在顶层」的属性,这样切换桌面时系统就不会把它后置:
macOS 系统(对应「Assign to All Desktops」功能)
1. 应用原生设置(优先尝试)
很多自带或常用应用本身就有「保持顶层」的选项,以终端为例:
- 打开终端,点击顶部菜单栏的「终端」→「偏好设置」
- 切换到「窗口」选项卡,找到并勾选「当切换应用时保持窗口在顶层」(不同macOS版本表述可能略有差异,找类似描述的选项即可)
这样设置后,终端作为全局窗口,切换桌面时就能一直留在顶层。
2. 第三方工具兜底(应用无原生选项时)
如果目标应用没有自带顶层设置,可以用Hammerspoon(一款开源的macOS自动化工具)来实现:
- 先安装Hammerspoon(可以通过Homebrew:
brew install hammerspoon,或者官网下载) - 打开Hammerspoon的配置文件(
~/.hammerspoon/init.lua),添加以下脚本:
-- 监听指定应用的窗口创建,自动设置为始终顶层 local function keepOnTop(window) window:setAlwaysOnTop(true) end -- 替换成你需要设置的应用名称,比如"Terminal"、"Microsoft Edge" hs.window.filter.new("Terminal"):subscribe(hs.window.filter.windowCreated, keepOnTop)
- 保存后重启Hammerspoon,目标应用的窗口就会自动保持顶层,切换桌面也不会被后置。
Windows 系统(对应「显示在所有桌面」功能)
1. 应用原生设置
部分Windows应用支持「始终在顶层」,以Windows终端为例:
- 右键终端窗口的标题栏,选择「始终在顶层」(如果没有这个选项,试试右键任务栏的终端图标,看看有没有相关设置)
2. AutoHotkey 脚本实现
如果应用无原生选项,用AutoHotkey来设置:
- 安装AutoHotkey后,新建一个
.ahk脚本文件,写入以下内容:
; 按Ctrl+Shift+T切换终端的始终顶层状态(可自定义快捷键) ^+T:: WinSet, AlwaysOnTop, Toggle, ahk_exe WindowsTerminal.exe return
- 运行脚本后,按快捷键就能让终端保持顶层,切换桌面时不会被后置。
Linux 桌面环境(以GNOME为例,对应「显示在所有工作区」功能)
1. 桌面环境原生设置
GNOME中,右键目标窗口的标题栏,勾选「始终在顶层」,这样设置为全局工作区的窗口就不会在切换时被后置。
2. 命令行工具 wmctrl
如果需要批量或脚本化设置,用wmctrl:
- 先安装wmctrl(比如Debian/Ubuntu:
sudo apt install wmctrl) - 执行以下命令获取目标窗口ID:
wmctrl -l | grep Terminal
- 替换
WINDOW_ID为实际ID,设置窗口始终顶层:
wmctrl -i -r WINDOW_ID -b add,above
这些方案都能解决你遇到的全局窗口切换桌面后被后置的问题,根据你用的系统选对应的方法就行~
内容的提问来源于stack exchange,提问作者arsenius




