macOS 傻逼的窗口管理就不细说了. 单独说一个 case 吧, 我经常遇到, 真的很恼火
第 3 点请问有没有办法实现我期望的逻辑? 这个问题真的很恼火, 我经常浪费大量时间处理这种 case
我用hammerspoon实现了一个替代方案, 用cmd-w关闭窗口的时候, 可以切换到前一个窗口
hs.hotkey.bind({"cmd"}, "w", function()
local win = hs.window.focusedWindow()
local prevWin = hs.window.orderedWindows()[2]
--win:close() -- NOTE: another window of this app will popup
if prevWin ~= nil then
prevWin:focus()
end
win:close()
end)
流程是先切换到上一个窗口, 然后关闭需要关闭的那个窗口, UI表现上有差距, 但是最终目的是一样的了. 主要是如果先关闭当前窗口的话, 就会弹出当前窗口的app的其他窗口, 所以只能先切换再关闭. 暂时只能做到这样.
上一个实现的 hs.window.orderedWindows()[2] 经常会卡, 问题很大, 这里的实现解决这个问题
local wf = hs.window.filter.new()
local previousWindow = nil
local focusedWindow = nil
wf:subscribe(hs.window.filter.windowFocused, function(win)
-- 将当前窗口保存为上一个窗口
previousWindow = focusedWindow
focusedWindow = win
end)
-- 初步实现关闭窗口的时候, 切换到上一个窗口
hs.hotkey.bind({"cmd"}, "w", function()
local win = hs.window.focusedWindow()
local prevWin = previousWindow
--local prevWin = hs.window.orderedWindows()[2]
--win:close() -- NOTE: another window of this app will popup
if prevWin ~= nil and win:application() ~= prevWin:application() then
prevWin:focus()
end
win:close()
end)
这个实现在cmd-w的时候, 几乎无缝地切换app并关闭窗口了, 只是这个前一个窗口可能会不可用. 更完善的实现就是用一个列表保存前一个窗口, 要用的时候遍历寻找第一个有效的前一个窗口
1
GuryYu 2023-08-03 14:36:30 +08:00
可以使用 AltTab 替换掉系统默认的切换
|
2
wsjjacky 2023-08-03 15:18:20 +08:00
如果你愿意尝试 bettertouchtool 的话,这个问题很好解决。将 Command+W 定义为「关闭窗口」+「打开 Finder 」即可。BTT 可以讲任意一个快捷键组合定义为几乎任意动作,只要系统支持就可以。
|
3
Koma 2023-08-03 16:56:39 +08:00 2
如果关闭当前窗口就切到其他应用,经常做 CMD+W 然后 CMD+N 操作的会疯掉
|
4
Goalonez 2023-08-03 17:00:01 +08:00
我现在一般把常用的软件都用 raycast 设置一个快捷键,可以实现类似 cmd+H 的效果,直接唤起或者隐藏对应窗口.
|
5
FozillaMox 2023-08-03 17:54:56 +08:00 via iPhone
不能。
macOS 的窗口管理确实拉胯。 |
6
minami 2023-08-03 18:59:55 +08:00 1
之前用过一年多时间的 macOS ,总体感觉是它就没有窗口管理,它实际上就是应用管理,切到哪个应用就把哪个应用的窗口都拉出来,设计如此,要么忍要么滚了。也许可以试试 ubar ,把 dock 整体换了可以破。有些果粉就别来强调有多么好用了,真的是问就是好用,再问就是推荐一堆效率工具,太真实了
|
7
fanhed OP 看来这个窗口管理还是一如既往地傻逼
|
8
fanhed OP @Koma 其实逻辑应该是, 关掉当前窗口就回到之前的窗口, 我例子只是为了简单描述 case. 反正 Windows 的窗口管理更符合直觉, macOS 的窗口管理就是答辩.
|
9
fanhed OP @wsjjacky 这个思路看起来可以, 我不用 bettertouchtool, 但是我用 hammerspoon, 看起来可以把 cmd+w 定义为关闭当前窗口并切换到之前的一个窗口, 我看下能否实现
|
11
wsjjacky 2023-08-04 00:13:32 +08:00
@fanhed BTT 可以设置某个快捷键仅对某个特定 APP 生效,因此当你设置完之后,在别的 app 中 command+w 就仅仅是关闭当前窗口,不会自动切换到 Finder 窗口(当然如果你愿意的话也可以设置为 universal 快捷键,对所有 app 都适用)。
|
12
FozillaMox 2023-08-04 00:14:48 +08:00
@fanhed 「其实逻辑应该是……」这就是你的不对了。用苹果产品就要做好改变使用习惯的觉悟。😁
|
14
seanzxx 2023-08-04 08:02:34 +08:00
@fanhed 你是在用 Windows 的操作逻辑来操作 macOS ,但其实背后的原理并不一样。
Windows 切换的是窗口,macOS 切换的是应用。 Windows 很多时候关掉窗口,应用就关闭了,但 macOS 关掉窗口,应用依然在运行,哪怕一个窗口都没有,这个应用依旧处于前台活跃状态,顶部的菜单栏依旧是属于当前活跃的应用,所以你关掉了一个应用的窗口,这个应用前一个活跃的窗口就跳出来了,因为你一直都在这个应用中。 你想当前窗口消失回到之前的应用窗口,要么可以 Cmd + Q 退出当前应用,要么可以 Cmd + H 隐藏当前应用,上一个应用的窗口就变活跃了。 |
15
eggsblue 2023-08-04 10:39:49 +08:00
看起来 Wins 可以增加这个功能,提供两个选项:
1. 关闭窗口时,聚焦到上一个窗口中 2. 关闭窗口时,如果应用没有可用其他窗口,是否关闭程序 |
16
GabrielleBellamy 2023-08-04 11:23:25 +08:00
四指下滑可以看到正在打开的窗口,进行同一软件内的窗口管理。这个需要在设置里打开。macOS 不是没有窗口管理,只是做得确实不够好。另外我觉得它做得不好的地方在于它不够开放,使第三方也很难弥补这些缺陷,只能勉强凑合。
|
17
Koma 2023-08-04 12:20:19 +08:00
@justaname 这又涉及到 mac 下大多 app 关闭窗口不是关闭程序的逻辑了,在这个环境下,我不认为“回到上一个同应用窗口”就是符合直觉的。
|
18
DylanMorane 2023-08-04 18:57:23 +08:00
win 大多时候关闭窗口就是退出程序,mac 必须按 CMD+Q 才算彻底退出程序 关闭窗口并不等于退出程序,下面这两个快捷键可以帮助你解决这个问题:
1 、Command-H:隐藏最前面的 App 的窗口。要查看最前面的 App 但隐藏所有其他 App ,请按 Option-Command-H 。 2 、Command-M:将最前面的窗口最小化至“程序坞”。要最小化最前面的 App 的所有窗口,请按 Option-Command-M 。 |
19
DylanMorane 2023-08-04 18:59:31 +08:00
@DylanMorane 补充一点 如果你开启了台前调度 CMD+Q 关闭掉程序后之前应用的窗口就会自动出现
|
20
fanhed OP @Koma 关闭窗口不关闭 app 不就是 Windows 的自带托盘标记的应用而已, 这种在 Windows 下面也是关闭窗口后就切换到之前的窗口了
|
21
fanhed OP @DylanMorane 这个逻辑的答辩之处是, 一般多任务场景下, 人直觉上的管理单元是窗口(不关心这个 app 开了多少个窗口), 而 macOS 的窗口管理单元在窗口之上还强加一个 app
|
22
Koma 2023-08-05 14:51:43 +08:00
@fanhed 并不一样,类似 mac 上也有驻留菜单栏的 App ,这种关闭窗口就是退回前一个应用。这一类几乎全都是这样,Surge 、BTT 、istat menu 都是。
|
23
tbv 2023-08-08 13:39:08 +08:00
典型的个人需求 > 通用需求,我不满意就否定一切…
|
24
fanhed OP @tokeytush 你是真的搞笑, 是否否定一切懒得讨论, 个人需求本身就是 > 通用需求的, 不然各种配置软件是用来干什么的?! karabiner-elements, hanmmerspoon, betertouchtool, moom, 诸如此类
|
26
ambition117 2023-10-23 00:19:30 +08:00
笑死,搜了一圈,果粉自适应不是说说而已
|
27
fanhed OP @ambition117 搞 jb 笑, 换不换只是权衡利弊而已, 换 windows 一样会遇到各种问题
|
28
ambition117 2023-11-16 14:47:03 +08:00 via iPhone
|