GabrielleBellamy
2023-01-14 17:23:18 +08:00
最近在做相关功能,所以了解了不少。如果要每个桌面显示当前桌面打开的应用,就我所知,非常难实现。
ActiveDock 2 应该可以为每个单独的桌面添加独立的 dock (记不太清了,记得好像是)。但是之前用的时候觉得这个软件太卡顿,体验不好。Contexts 也是同类软件,但这个软件能不能单独显示当前桌面的窗口我也不太记得了。之前用的时候觉得这个软件还是不太好看,以及似乎太老了,更新动力不足。uBar 是我现在在使用的软件,但我刚看了一下,好像只能分显示屏显示,以及可以根据桌面分组,但是不能一个桌面显示一组。(或者我没摸到诀窍)
从代码角度来说,如果一个软件的窗口被最小化了,那么它会在任何桌面上都被认为是当前桌面的窗口。这样的结果是,没法用“获取当前桌面的活动窗口”的方法获取准确的窗口信息,因为其他桌面的最小化 /隐藏窗口也会被识别进来。如果你使用原生的 AppleScript 去命令就是这样的结果。另外从 10.8 开始 mac 就在 AppleScript 上移除了跳转桌面的变量,原生的命令如果不加上其他语言模拟动作,似乎就无法指令窗口在桌面之间移动。可以理解为,苹果不希望你这么做,它更希望你使用 UI 界面上那些拖拽的方式管理窗口。如果你希望移动窗口到某一个桌面,像 Amethyst 、Stay 这样的软件还有这样的功能。
如果是希望对窗口进行最大化或者最小化的操作,这个也比较困难,因为原生的 AppleScript 指令对一些窗口不管用,另外像 Finder 这样的软件在代码上与其他软件的最小化窗口有不一样的写法(其他窗口用“miniturize”,Finder 用的是“collapse”去命令)。但是像 Wins 这样的软件把一键隐藏全部窗口的功能做得很不错。如果你需要也可以试试。