PowerToys 0.101 发布:Windows 向 macOS 看齐,新增同应用多窗口间快速切换

原始链接在: PowerToys 0.101 发布:Windows 向 macOS 看齐,新增同应用多窗口间快速切换 - 小众软件

PowerToys 0.101 发布,新增了一个非常实用的功能:Window Hopper,可以通过快捷键在同一个应用的多个窗口之间快速切换。比如同时打开了 5 个文件夹窗口,按下快捷键 alt + `,就能在这5个窗口之间依次切换。@Appinn

与此同时,想切换到其他应用,则依旧使用熟悉的 Alt + Tab 快捷键。

Window Hopper:同应用多窗口间循环切换

在更新完 PowerToys 0.101 之后,就能看到这个新功能了,微软解释说:Window Hopper 允许你在当前聚焦应用程序的窗口之 间循环切换。

什么是同应用多窗口?

比如,你用资源管理器打开了三个文件夹,分别是 C 盘和 D 盘和 Appinn 文件夹,这就是同应用(资源管理器)3窗口。

再比如,你打开了多个 Chrome 窗口(注意不是标签页),按下快捷键之后,只在 Chrome 间切换,不会碰到其他软件。

向 macOS 看齐:Command + `

青小蛙在第一次使用 macOS 的窗口切换时,完完全全不习惯。因为当我按下同键位的 Command + Tab 时,他会在不同应用间切换,但找不到同应用的其他窗口,就很迷糊。

直到学会了 Command + `,并且逐渐搞清楚了使用逻辑,才明白 macOS 把窗口切换细分为了同一应用与所有应用。

现在,PowerToys 算是给 Windows 补上了这块体验。

不同点

Window Hopper 与 macOS 不同的点,它还是会出现一个预览窗口,这一点与 Alt + Tab 相同:

而在 macOS 里,直接切换,没有这个预览。

与 Alt + Tab 的区别是什么?

最后一个问题,与 Alt + Tab 的区别是什么?

打个比分:

假设现在打开了 3 个资源管理器、5 个 Chrome 窗口、1 个微信、2 个Word 文档、一个记事本……

Alt + Tab,这些窗口都会出现在切换列表里。

但如果你现在就在资源管理器里,只想从 C 盘切到刚才打开的 Appinn 文件夹,Window HopperAlt + ` 就只会在那 3 个资源管理器窗口之间循环,而不会出现 Chrome、微信等窗口。

最后,如果你想反着来切换,还能使用 Alt + Shift + Tab 快捷键。

获取


原文:https://www.appinn.com/powertoys-0-101/

你还真别说, 新预览版的资源管理器打开是真的快

这个确实有用,而且比mac更好一点

Mac的窗口管理……没救了

1 个赞

window-switcher.exe
566 KB (580,096 字节)
就能搞定的事情,
powertoys现在这体积实在爱不起来

1 个赞

鍵盤沒有`鍵。

现在的问题是,power倒是够power了,但是不够toy,只想用其中某几个功能但是还得安装一整个软件,太大了

1 个赞

波浪号键

我是68鍵,這鍵換成esc了。

GitHub - akiver/AltBacktick: Switch between windows using ALT+backtick · GitHub 200KB的也可以

标题向macOS看齐, 差点让我两眼一黑, 觉得Windows完蛋了

1 个赞

个人觉得键盘最低也得是75%配列(绝大多数轻薄本的键盘),再低就影响使用了。当然104配列最好

我之前用61,現在用68,工作還是夠用的,打游戲宿舍還有把87。

我也有类似的需求,但是我选择让 AI 帮我整个 AHK 脚本。更轻量。

我把这个脚本放在 VimDesktop 上,免得再开一个软件。

!`::
    ; 获取当前激活窗口的进程名称
    WinGet, active_exe, ProcessName, A
    if (active_exe = "")
        return

    ; 针对文件资源管理器 (explorer.exe) 的特殊处理
    ; 必须限制为 CabinetWClass,否则会把任务栏和桌面当成窗口参与切换
    if (active_exe = "explorer.exe") {
        WinGet, winList, List, ahk_class CabinetWClass
    } else {
        ; 获取当前进程下的所有窗口列表
        WinGet, temp_winList, List, ahk_exe %active_exe%
        
        ; 过滤掉没有标题的隐藏/辅助窗口 (现代浏览器和软件常有此类不可见窗口)
        ValidWinCount := 0
        Loop, %temp_winList%
        {
            current_id := temp_winList%A_Index%
            WinGetTitle, current_title, ahk_id %current_id%
            if (current_title != "") {
                ValidWinCount++
                winList%ValidWinCount% := current_id
            }
        }
        ; 将过滤后的有效窗口数量赋给 winList
        winList := ValidWinCount
    }

    ; 如果同类有效窗口少于 2 个,则无需切换
    if (winList < 2)
        return

    ; AHK 获取的窗口列表是按 Z 轴(从最顶层到最底层)排列的
    ; 我们提取最底部的那个窗口,并将其激活带到前台,即可实现完美的循环切换
    bottomWin := winList%winList%
    WinActivate, ahk_id %bottomWin%
return

看起来不错,但我好像用不上,留个爪印先。