V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xcodebuild
V2EX  ›  macOS

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

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

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

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

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

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

    介绍文章

    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 软件( 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 四指切换除了慢了点没毛病,另外外接键盘鼠标的时候就只能用触发角了,触摸板太贵了🤣
    sobigfish
        23
    sobigfish  
       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
    挺好用的,但是图标看着难受😂
    cjzlol
        51
    cjzlol  
       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
    期待可以把最小化的窗口包括进来
    cjzlol
        57
    cjzlol  
       2019-04-21 18:37:22 +08:00
    @codefalling #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 上面的整体颜值,哈哈
    cjzlol
        62
    cjzlol  
       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   ·   我们的愿景   ·   实用小工具   ·   1099 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 18:34 · PVG 02:34 · LAX 11:34 · JFK 14:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.