macOS 可以按住 ⌘ 然后不断的 Tab Q 快速关闭程序,终于发现一个 agent 流畅运行以外的亮点…
Mac的 cmd + grave 也挺好用的,也就是 Exposé
win下得用 ahk 实现,我也写了个,分享下
#Requires AutoHotkey v2.0
; === 无下沉效果的窗口切换器 ===
;
; 实现原理:
; 1. 获取当前应用的所有窗口,并按ID排序以创建稳定的循环顺序
; 2. 找到当前窗口在列表中的位置,计算下一个窗口
; 3. 使用 try-catch 包裹所有可能出错的操作,确保脚本永不崩溃
;
; 这是"窗口不下沉版本",当前窗口不会移到底部
!`::{
try {
ActiveProcessName := WinGetProcessName("A")
windowList := WinGetList("ahk_exe " ActiveProcessName)
; 窗口数量检查
if windowList.Length <= 1
return
; 对窗口ID排序,创建稳定顺序
BubbleSort(windowList)
; 找到当前窗口位置
activeId := WinGetID("A")
activeIndex := 0
for i, hWnd in windowList {
if (hWnd = activeId) {
activeIndex := i
break
}
}
; 如果没找到当前窗口(理论上不应该发生),从第一个开始
if (activeIndex = 0)
activeIndex := 1
; 计算下一个窗口
nextIndex := Mod(activeIndex, windowList.Length) + 1
; 尝试激活下一个窗口,如果失败就尝试下下个,以此类推
attempts := 0
while (attempts < windowList.Length) {
targetIndex := Mod(activeIndex + attempts, windowList.Length) + 1
try {
WinActivate(windowList[targetIndex])
break ; 成功激活,退出循环
} catch {
; 这个窗口激活失败,尝试下一个
attempts++
}
}
} catch {
; 捕获所有其他错误,什么都不做,静默失败
; 这样即使出现任何意外情况,脚本也不会崩溃
}
}
BubbleSort(arr) {
n := arr.Length
loop (n - 1) {
i := A_Index
loop (n - i) {
j := A_Index
if (arr[j] > arr[j + 1]) {
temp := arr[j]
arr[j] := arr[j + 1]
arr[j + 1] := temp
}
}
}
}
Win 何必 Cmd + ~,不合并任务栏不香吗?Mac 的这点深恶痛绝,怀念 Win 的任务栏
这个可能就纯使用习惯了。因为我长期在用Win 10,反而Win 10好像是合并,就是想让多屏幕用不同的任务栏,反而很难实现。我不知道具体是什么场景,反正如果开非常大量的应用。我的任务栏一般有两三页,所以说非常希望不合并。Mac我记得也有解决这个问题,如果你只是怀念Windows的Alt加Tab GitHub - lwouis/alt-tab-macos: Windows alt-tab on macOS · GitHub 应该是这个
就是我觉得expose这个功能还是挺香的,不然怎么在多个同应用窗口之中切换呢?Windows原生应该是没有一个很好的快捷键操作逻辑吧
感谢推荐,不喜欢循环切换这种操作,喜欢快捷键直达或者在任务栏上点,mac 不但没有任务栏,还加一个无法处理掉的标题栏,怨念
确实,Mac想隐藏的操作逻辑就只有全屏了。但是全屏又是一个比较重的操作,这块确实win更灵活一点