macOS 的窗口切换太难用,所以写了个软件 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xcodebuild
V2EX    macOS

macOS 的窗口切换太难用,所以写了个软件

  •  2
     
  •   xcodebuild 2019-04-20 15:04:38 +08:00 11167 次点击
    这是一个创建于 2369 天前的主题,其中的信息可能已经有所发展或是发生改变。

    由于 macOS 的窗口切换逻辑过于感人:

    • 不同应用切换用 Cmd+Tab
    • 同应用不同窗口切换用 Cmd+`

    导致总是不小心切错窗口,甚至某些设置窗口之类的压根就切不到了。四指上滑倒是没有这些问题,就是速度慢了点。

    参考了一些收费软件后,抽空写了个软件解决这个问题,把 Cmd+Tab 换成了和 Windows 切换窗口类似的逻辑,Cmd+Tab 就能在所有的窗口间进行切换。/p>

    介绍文章

    https://www.jianshu.com/p/4f6bb60fe675

    下载地址

    https://github.com/xtab-app/xtab

    截图

    img

    第 1 条附言    2019-04-20 15:48:44 +08:00

    感兴趣的 v 友欢迎进群交流

    img

    76 条回复    2020-08-04 08:35:03 +08:00
    shell233
        1
    shell233  
       2019-04-20 15:28:46 +08:00
    水军来了
    ilumer
        2
    ilumer  
       2019-04-20 15:31:56 +08:00   1
    最新版体验很好,切换不同窗口时比较爽。
    hhyvs111
        3
    hhyvs111  
       2019-04-20 15:34:41 +08:00   1
    有点丑啊,能自己改成 cmd+ esc 吗 hhkb 没有 `
    xell
        4
    xell  
       2019-04-20 15:37:32 +08:00
    感谢开源。请问和免费(但一直在 beta )的 HyperSwitch [1] 相比有什么优点吗?

    [1]: https://bahoom.com/hyperswitch
    xcodebuild
        5
    xcodebuild  
    OP
       2019-04-20 15:38:56 +08:00
    @hhyvs111 emmm 不需要 ` 了,` 是 macOS 自己的逻辑

    xTab 就只需要 Cmd+Tab 就能应付所有需求了

    外观这个问题嘛我还没想出更合适的样子,如果有设计大手子求改进。目前可能那个预览的样式比较随意一些
    xcodebuild
        6
    xcodebuild  
    OP
       2019-04-20 15:43:58 +08:00
    @xell 啊我得澄清一下其实并没有开源,只是 release 是托管在 Github 的(发布比较方便)。因为以前开源过一个 mac 软件( < target="_blank" href="https://github.com/MacGesture/MacGesture" rel="nofollow noopener">https://github.com/MacGesture/MacGesture ) GPL 协议结果被人抄去做成了闭源软件。。感觉比较没意思

    和 HyperSwitch 的基础功能非常接近,都是实现和 Windows 一致的切换逻辑。但是我期望更倾向于高效的窗口切换而不仅仅是和 Windows 一样(例如后面会加入窗口搜索功能等),所以你会发现他的界面更像 Contexts。

    // 还有也比较担心哪天 HyperSwitch beta 结束了收费怎么破(就是给自己造轮子找个理由)
    sunocean
        7
    sunocean  
       2019-04-20 16:31:28 +08:00 via iPhone
    我来吹 hammerspoon 开源,免费,可定制。窗口管理只是一个小功能。其他的你想到的想不到的都有。
    xcodebuild
        8
    xcodebuild  
    OP
       2019-04-20 16:45:44 +08:00   1
    @sunocean hammerspoon 确实很强,适合高度定制的玩家

    其实本质上我也是在用 XCode 定制自己的需求
    missdeer
        9
    missdeer  
       2019-04-20 17:00:38 +08:00   1
    `其实本质上我也是在用 XCode 定制自己的需求 `
    赞这句!
    aborigine
        10
    aborigine  
       2019-04-20 17:10:57 +08:00   1
    希望加个功能,能在 manu bar 隐藏,用着还是不错的
    aborigine
        11
    aborigine  
       2019-04-20 17:11:34 +08:00
    @aborigine #10 menu bar
    xcodebuild
        12
    xcodebuild  
    OP
       2019-04-20 17:15:05 +08:00
    @aborigine menubar 隐藏后一些配置之类的地方(例如配置 menubar 隐藏这个操作本身)就比较麻烦了

    话说这里可以推荐另外一个软件: https://github.com/Mortennn/Dozer,我是用这个清理 menubar 的
    aborigine
        13
    aborigine  
       2019-04-20 17:20:06 +08:00
    @codefalling #12 感谢,我去试试
    xell
        14
    xell  
       2019-04-20 19:30:34 +08:00
    @codefalling #6 多谢说明。
    THaGKI9
        15
    THaGKI9  
       2019-04-20 19:38:59 +08:00 via iPhone
    有个软件叫做 Contexts … 和你这个差不多…不过人家收费
    xcodebuild
        16
    xcodebuild  
    OP
       2019-04-20 20:59:58 +08:00
    @THaGKI9 对的,有试用过。。。然后到期了干脆自己写了个
    lazyyz
        17
    lazyyz  
       2019-04-20 21:06:35 +08:00 via Android
    rmbp 触摸板 表示四指切换很方便
    azoon
        19
    azoon  
       2019-04-20 21:24:45 +08:00   1
    不错,用上了。macOS 的窗口管理真是不够人性化。
    orangeade
        20
    orangeade  
       2019-04-20 21:38:55 +08:00
    就因为 macOS 糟糕的窗口管理和 Finder,对 mac 一直喜欢不上来
    目前是用 HyperSwitch+Maget 解决的
    xcodebuild
        21
    xcodebuild  
    OP
       2019-04-20 21:44:23 +08:00
    @orangeade Finder 我也是不喜欢,窗口管理用的 Spectacle,切换的话现在就用 xTab 了

    但是 Finder 似乎还是没什么好方案
    xcodebuild
        22
    xcodebuild  
    OP
       2019-04-20 21:45:47 +08:00
    @lazyyz 四指切换除了慢了点没毛病,另外外接键盘鼠标的时候就只能用触发角了,触摸板太贵了
    run2
        23
    run2  
       2019-04-20 22:31:37 +08:00
    关键是这些获取已打开的窗口,并能切换到它的 这些 api lz 怎么找到的 能教下方法么 谢谢
    xcodebuild
        24
    xcodebuild  
    OP
       2019-04-20 22:42:54 +08:00   1
    @sobigfish 主要是 Stack Overflow 和 Apple 的文档(并看不懂)和一些 Cocoa 相关的论坛,基本上就靠一手 SearchFu

    不得不吐槽一句,微软的技术文档比起来真的是业界良心
    elone
        25
    elone  
       2019-04-20 22:48:20 +08:00
    我就想借楼问下,有没有办法在 dock 栏显示同一软件的多个实例图标。比如说我用 vscode 打开两个项目,只是在 dock 栏里只显示一个 vscode,切换起来很痛苦。
    xcodebuild
        26
    xcodebuild  
    OP
       2019-04-20 22:59:34 +08:00
    @elone 如果坚持要用 dock 切换的话,目测只能和 xTab 的思路一样再实现一个 dock 栏,不太可能改变系统本身的设定,苹果在这个层面留下的可定制性几乎没有。

    我就是为了解决切换 VSCode 这类需求开发的 xTab,不过我习惯用键盘切换而不是 dock
    elone
        27
    elone  
       2019-04-20 23:41:11 +08:00
    @codefalling 刚安装了应用,也给了相应的权限,为何打开后一片空白? 10.14.2
    xcodebuild
        28
    xcodebuild  
    OP
       2019-04-20 23:46:25 +08:00
    @elone 啊抱歉刚刚为了修复一个 bug 发了一个错误的版本上去,现在已经修复了,得麻烦你手动重新安装一下: https://github.com/xtab-app/xtab/releases/tag/1.0.4
    elone
        29
    elone  
       2019-04-20 23:51:44 +08:00   1
    @codefalling 可以了。非常感谢 。这确实是我非常需要的东西。
    lrigi
        30
    lrigi  
       2019-04-21 00:00:12 +08:00 via iPhone
    我是把鼠标中键设成了和触摸板四指上划一样的功能
    这样 command+tab 就可以愉快的使用了
    youthcould
        31
    youthcould  
       2019-04-21 00:51:50 +08:00 via iPhone   1
    @codefalling 隐藏 menubar 后的设置可以参考 scroll reverser
    littleMaple
        32
    littleMaple  
       2019-04-21 02:53:14 +08:00 via iPhone
    @hhyvs111 HHKB 键盘的最右上角那个键就是“`”啊
    TonyLiu2ca
        33
    TonyLiu2ca  
       2019-04-21 04:06:49 +08:00
    强烈支持楼主!
    还没有使用,主要是,想问问:如何干净地卸载?
    xcodebuild
        34
    xcodebuild  
    OP
       2019-04-21 09:29:12 +08:00 via iPhone
    @TonyLiu2ca 从 menubar 退出,把程序拖到垃圾桶就干净的卸载了。不用担心篡改了系统功能什么的,这是运行时实现的,退出就没有了
    xcodebuild
        35
    xcodebuild  
    OP
       2019-04-21 09:32:41 +08:00 via iPhone
    @youthcould 嗯,以前就实现过类似的逻辑。因为比较麻烦导致经常有 bug。

    还是交给专门的软件处理好
    TonyLiu2ca
        36
    TonyLiu2ca  
       2019-04-21 10:09:25 +08:00
    @codefalling 应该还会在注入~/Library 中有其它的可以清除的吧?
    ladit
        37
    ladit  
       2019-04-21 11:39:10 +08:00 via iPhone
    @elone hyperdock 可以让鼠标悬浮在 dock 的每个图标时显示可用窗口,调整成低延迟和大窗口后可能是最符合你需求的折中方案了。
    xcodebuild
        38
    xcodebuild  
    OP
       2019-04-21 12:03:04 +08:00 via iPhone
    @TonyLiu2ca 这一类就是常规的应用配置了,对系统不会有什么影响。可以用 appcleaner 直接清理
    POPOEVER
        39
    POPOEVER  
       2019-04-21 12:20:18 +08:00
    哦,我倒是一直觉得挺习惯的,哈哈
    visitant
        40
    visitant  
       2019-04-21 12:34:23 +08:00
    感谢楼主让我知道了“同应用不同窗口切换用 Cmd+`”
    konakona
        41
    konakona  
       2019-04-21 12:35:43 +08:00
    我已经用了几年的 mac 了,我已经喜欢了,不会按错这个 2 个快捷键,2333
    xcodebuild
        42
    xcodebuild  
    OP
       2019-04-21 12:59:14 +08:00 via iPhone
    @visitant 哈哈哈我刚开始也是不知道,经常切懵
    xcodebuild
        43
    xcodebuild  
    OP
       2019-04-21 13:02:04 +08:00 via iPhone
    @konakona 用了两年多还是没适应,其实 Apple 家一贯如此,有些设定只要接受了也还是不错的
    TonyLiu2ca
        44
    TonyLiu2ca  
       2019-04-21 13:03:10 +08:00
    @codefalling
    [Imgur]( )
    彻底清楚地话,上图中所有 xTab 相关的文件需要删除。

    其它的关于 studentd 和钥匙串中的一个新建的密码项不知是否相关,可能是相关,也应该可以删除。
    TonyLiu2ca
        45
    TonyLiu2ca  
       2019-04-21 13:12:44 +08:00   2
    @codefalling 有个问题,当一个打开的窗口最小化后,无法切换,这与 macOS 原来的 +` 的问题一样。
    xcodebuild
        46
    xcodebuild  
    OP
       2019-04-21 13:15:59 +08:00
    @TonyLiu2ca

    AppCleaner 看到的是这些,一般就用这个清理就 ok 了,不过我个人不是很关注这个问题,一般都是把 .app 拖进垃圾箱完事

    xcodebuild
        47
    xcodebuild  
    OP
       2019-04-21 13:18:10 +08:00
    @TonyLiu2ca 这个貌似是个问题,我来看一下。

    不过最小化的窗口是否应该被切换到?因为貌似只有手动操作才会把窗口最小化掉(以至于我几乎没用过)
    hackpro
        48
    hackpro  
       2019-04-21 13:54:09 +08:00
    非常非常棒 建议添加 Homebrew 支持
    另外 Finder 多个标签情况下 似乎 Cmd+`循环会出现有一次所有的 Windows 都未被选中的状况?
    xcodebuild
        49
    xcodebuild  
    OP
       2019-04-21 14:08:40 +08:00 via iPhone
    @hackpro 有道理,可以加一个 brew cask 的支持

    第二句话没理解,cmd ` 和 xTab 没关系。

    我试了下 finder 多 tab (指的是其中一个窗口有多个 tab 对吧)。似乎 xTab 和系统的 cmd` 都没问题。他们都不会把 finder 的 tab 当做窗口处理。
    rikka
        50
    rikka  
       2019-04-21 15:33:06 +08:00
    挺好用的,但是图标看着难受
    KHfqLAYYS6BKJT3R
        51
    KHfqLAYYS6BKJT3R  
       2019-04-21 16:01:01 +08:00
    最小化后就不管用了- -
    其实最难受的是最小化后,想切换回来
    xcodebuild
        52
    xcodebuild  
    OP
       2019-04-21 16:08:56 +08:00
    @rikka 哈哈哈这个我再修一修
    xcodebuild
        53
    xcodebuild  
    OP
       2019-04-21 16:10:11 +08:00
    @cjzlol 我研究下最小化的问题,我自己是不怎么去主动最小化来着
    hackpro
        54
    hackpro  
       2019-04-21 16:10:56 +08:00
    @codefalling 举个例子
    将如有两个 Finder Window(比如名字分别叫 W1/W2) 不是 Cmd+T 新建的 Tab
    通过 Cmd+`切换的正常逻辑应该为 W1/W2,但是我这边复现的结果是 W1->W2->None selected->W1->W2->None selected... 菜单栏的标题倒一直是 Finder 希望排查以下
    xcodebuild
        55
    xcodebuild  
    OP
       2019-04-21 17:19:24 +08:00
    @hackpro Cmd + ` 不是我实现的。。是苹果自己的,所以我排查不了

    说来我这边也没有复现出这个情况
    youthcould
        56
    youthcould  
       2019-04-21 17:53:12 +08:00
    期待可以把最小化的窗口包括进来
    KHfqLAYYS6BKJT3R
        57
    KHfqLAYYS6BKJT3R  
       2019-04-21 18:37:22 +08:00
    @codefallng #52 能有最小化就完美了
    xcodebuild
        58
    xcodebuild  
    OP
       2019-04-21 20:30:15 +08:00   2


    @cjzlol @youthcould @TonyLiu2ca 新版本已经支持切换最小化窗口了

    @rikka 新版图标也修了

    下载: https://github.com/xtab-app/xtab/releases
    rikka
        59
    rikka  
       2019-04-21 20:49:58 +08:00
    @codefalling #58 这两个地方故意设计黑色边框没连上,还是疏忽啊,我比较颜控,看着还是有点扎眼,即便把黑色边框连上,这个图标还是
    xcodebuild
        60
    xcodebuild  
    OP
       2019-04-21 20:54:26 +08:00
    @rikka 哈哈哈我受不了你了其实是故意的但是作为图标确实有点扎眼,下个版本再改了
    rikka
        61
    rikka  
       2019-04-21 20:58:54 +08:00
    @codefalling #60 这个图标拉低了我 launchpad 上面的整体颜值,哈哈
    KHfqLAYYS6BKJT3R
        62
    KHfqLAYYS6BKJT3R  
       2019-04-21 22:39:26 +08:00
    @codefalling #57 等明天试试,刚刚关机 233
    gesse
        63
    gesse  
       2019-04-22 08:34:58 +08:00
    cmd+shift+tab 还是能弹出原生切换
    PopeyeLau
        64
    PopeyeLau  
       2019-04-22 08:41:01 +08:00
    挺好用的..
    就是跟 `CheatSheet` 有冲突..
    xcodebuild
        65
    xcodebuild  
    OP
       2019-04-22 09:03:40 +08:00 via iPhone
    @gesse 下个版本解决

    @PopeyeLau 没用过 cheatsheet,我得试试看
    1ychee
        66
    1ychee  
       2019-04-22 13:28:25 +08:00
    我用 TotalSpaces 来划分桌面

    xTab 运行后,在桌面 A 中通过 Cmd+Tab 呼出的菜单中,只显示「在桌面 A 中运行的 APP 们」;在桌面 B 中只显示「在桌面 B 中运行的 APP 们」。

    所以暂时用不了。但我相信用 TotalSpaces 的人还是比较少的,所以应该不影响。
    eddiechen
        67
    eddiechen  
       2019-04-22 16:49:57 +08:00
    我倒是想把 mac 的切换窗口挪到 win 去,习惯了比 win 好用很多
    xcodebuild
        68
    xcodebuild  
    OP
       2019-04-22 18:03:14 +08:00
    @1ychee Space 的问题比较难搞,Apple 几乎没提供任何相关的 API,还得再研究研究
    xcodebuild
        69
    xcodebuild  
    OP
       2019-04-22 18:04:08 +08:00 via iPhone
    @eddiechen 你也可以用 visual studio 定制一个
    xcodebuild
        70
    xcodebuild  
    OP
       2019-04-23 21:42:52 +08:00
    lunare
        71
    lunare  
       2019-04-24 10:19:44 +08:00
    关注一下
    lunacory
        72
    lunacory  
       2019-04-24 14:33:19 +08:00
    cmd+tab cmd+` 分开了明明很好使啊
    xcodebuild
        73
    xcodebuild  
    OP
       2019-04-24 14:34:50 +08:00
    @lunacory 哈对我自己来说,总是要思考一下是 tab 还是 ` 有点难受
    icecream
        74
    icecream  
       2020-03-22 10:13:20 +08:00
    这个项目是关掉了吗?下载不了了的,contexts 在 mac 15 下快捷键没法用。
    youthcould
        75
    youthcould  
       2020-04-14 17:19:27 +08:00
    @icecream 推荐你用 hyperswitch,10.15.4 下依旧好用
    codeplay
        76
    codeplay  
       2020-08-04 08:35:03 +08:00 via iPhone
    @elone HyperDock 好像可以
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5814 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 43ms UTC 03:05 PVG 11:05 LAX 20:05 JFK 23:05
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86