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

[开源自荐]一款更适合程序员的 macOS 下的应用切换器 DevSwitcher2

  •  
  •   Vaspike · 1 天前 · 1822 次点击

    在我的 macOS 使用经验中,一直被窗口切换所困扰。我尝试过市面上许多工具,大致可分为两类:

    1. 模仿 Windows 的 Alt+Tab 功能的(如 AltTab, HyperSwitch 等)
    2. 列表形式展示所有窗口文字信息的(如 Contexts 等)

    我总结了这么几个问题:

    1. 隐私; 辅助功能权限能获取到的数据是可怕的,被授予此权限的应用可以监听你的键盘的每次输入, 如果这个应用不是开源的, 那谁能保证它会不会收集你的信息另作他用? 如果这个应用还需要录屏权限(显示预览图的应用这个权限是必须的), 那可能会更严重

    2. 预览图; 当切换器基于预览图,而我在使用 IDE 时, 预览图不能让我快速认出哪个窗口是我想要的, 因为对于代码而言的预览图是几乎不可用的, 而这个场景几乎占据了我使用时间的 80%;

    3. 文字信息; 既然预览图不行, 那我看文字信息行不行呢? 答案是依然不完美, 以 vscode 为例, 当你打开的是一个代码文件时, 窗口标题是这种画风: DeliveryPendingAndRedemptionService.java——pending, 这时对我而言能让我快速分辨目标窗口的是项目名,也就是——后面的内容; 不同的 IDE 项目名在窗口标题中处于的位置又是不同的, 比如 IDEA 的项目名就在开头; 同时支持自定义切换器视图文字信息提取和指定应用提取规则的应用以我的了解基本没有

    4. 我习惯使用系统自带的[command + 反引号]来在一个应用内(比如 VSCode)切换窗口, 当同一个应用打开了两个以上的窗口时, 这个功能就缺少了一些提示信息和切换方式让我快速切换到目标窗口

    综上, 我开源了一个 macOS 窗口切换器 DevSWitcher2

    官网: DevSWitcher2

    特点:

    • 摒弃掉预览图; 采用图标 + 丰富的文字信息 让切换时可以快速获取到关键信息
    • 分离应用内窗口切换应用间窗口切换, 我这么设计的原因是在切换窗口时, 90%的情况都是清楚到底是要应用内还是应用间切换的, 因此分离两个场景反而会提高效率(两套快捷键)
    • 支持针对每个应用设置不同的关键信息提取策略, 提供配置信息一键导出和导入的功能
    • 虽然依然需要辅助功能权限, 但代码开源透明, 不会收集和发送使用者的任何信息, 没有任何网络请求的代码
    • 切换器 UI 简洁现代(SwiftUI 写的,是否能支持液态玻璃我不确定,主力机还不敢升级 26,欢迎 V 友尝试)
    • 优化后的内存占用调度: 后台内存占用不超过 40MB(切换器视图出现时会有个峰值内存占用,但也在 90MB 左右,且切换完成后内存占用会迅速降回来)

    帖子很长了我就不贴图, 官网和 Github 都有预览图, 应用只有 2.5M

    求各位 V 友在 Github 给个星星, 欢迎下载使用提出任何建议~

    51 条回复    2025-08-01 00:41:26 +08:00
    Vaspike
        1
    Vaspike  
    OP
       1 天前
    没人回复诶,很伤心
    楼下不随机发送打赏
    nealHuang
        2
    nealHuang  
       1 天前   ❤️ 1
    感觉不如鼠标右键选的快
    Vitta
        3
    Vitta  
       1 天前   ❤️ 1
    之前好像见过类似的,不过已经习惯了 MAC 的这个切换方式也就没怎么用过了
    Vaspike
        4
    Vaspike  
    OP
       1 天前
    @nealHuang 是自定义宏吗?
    Vaspike
        5
    Vaspike  
    OP
       1 天前
    @Vitta 那我邀请您尝试下, 基本不会改变现在的习惯:
    原来的 cmd + tab -> 快捷键不变, 图标同样显示,增加更多应用窗口信息
    原来的 cmd + ` -> 快捷键不变, 增加切换器窗口展示应用内窗口的更多窗口信息
    sslyxhz
        6
    sslyxhz  
       1 天前   ❤️ 1
    需求/习惯不大一样,原生的两个切换机制个人觉得够用了。raycast 作为应用间切换也还行?
    72D
        7
    72D  
       1 天前   ❤️ 1
    macos 自带的四指上滑 ,应用位置会变动,每次切换 都需要 重新分辨 并选择对应 app,很不方便,如果 有什么应用能 固定住 app 的位置,这样靠自己的记忆 就可以 不需要分辨 直接 盲操作 会省心省力 很多,毕竟 切换应用的操作 非常频繁
    Vaspike
        8
    Vaspike  
    OP
       1 天前
    @sslyxhz 你的描述与没有还没开发 DevSwitcher2 的我一模一样, 虽然现在我也还在用 raycast; 我开发是就朝着不改变习惯为目标的
    xixibb
        9
    xixibb  
       1 天前   ❤️ 1
    可以设计的更漂亮点。。。
    Vaspike
        10
    Vaspike  
    OP
       1 天前
    @72D 这个可能很难介入改变, 我在开发 DevSwitcher2 时了解到的机制是 macOS 中每个窗口间是有前后关系信息的(我的图层在你之上), 四指上滑视图的算法应该与这个有关
    Vaspike
        11
    Vaspike  
    OP
       1 天前
    @xixibb 感谢建议, 我有过很多想法, 现在实现的算是我心中的 MVP 版本,精力实在有限; 后面再更新会往 UI 上努力
    rainboat
        12
    rainboat  
       1 天前   ❤️ 1
    我日常应用间切换使用的是 Alfred ,唤出搜索框+输入关键字,常用应用形成肌肉记忆后可以在 1s 内切换,闭着眼睛都能完成,非常迅速,不过 Alfred 暂时没有比较好的应用内切换,一直还是用的 MacOS 自带的切换方式。楼主有没有考虑实现一下这种切换方式。
    Immortal
        13
    Immortal  
       1 天前   ❤️ 1
    我现在是 Raycast 里直接给常用的应用设置了快捷键(Command + 1-10)
    感觉指哪打哪
    Vaspike
        14
    Vaspike  
    OP
       1 天前
    @rainboat 是能实现的, 不过应用内切换时会在输入框输入什么呢, 窗口标题关键字? 项目名?
    "一直还是用的 MacOS 自带的切换方式"
    友友可以安装 DevSwitcher2 试一下, 偏好设置中可以仅开启应用内切换增强的功能, 对于自带的应用内切换, DevSwitcher2 是绝对有体验升级的
    Vaspike
        15
    Vaspike  
    OP
       1 天前
    @Immortal 同应用内窗口切换 raycast 有什么好方式吗
    lizhian
        16
    lizhian  
       1 天前   ❤️ 1
    来试试了
    =
    lizhian
        17
    lizhian  
       1 天前   ❤️ 1
    虽然但是,你的这些功能,好像 AltTab 都有,alt+tab 切换应用,alt+`切换应用不用窗口,关闭预览图,是不是跟你的软件效果差不多啦
    Immortal
        18
    Immortal  
       1 天前
    @Vaspike #15
    同应用的窗口 Command+`就可以互相切换了呀
    Vaspike
        19
    Vaspike  
    OP
       1 天前
    @lizhian #17 感谢使用! 是的, AltTab 使用久了可能有内存泄漏发生, 这也是我开发 DevSwitcher2 的一个原因, 内存管理会好很多
    Vaspike
        20
    Vaspike  
    OP
       1 天前
    @Vaspike #19 这个内存泄漏问题站内有过讨论: https://ex.noerr.eu.org/t/1142312
    Vaspike
        21
    Vaspike  
    OP
       1 天前
    @Immortal #18 如果窗口超过两个, 原生的这个切换就是灾难(对于我而言), 我被折磨了好久, 这是我下定决心写 ds2 的最大原因
    smartruid
        22
    smartruid  
       1 天前   ❤️ 1
    看起来还行 下个试试
    Immortal
        23
    Immortal  
       1 天前
    @Vaspike #21
    可能会有这种情况.
    主要平时使用场景我同应用很少多开,偶尔浏览器会,但也就 2 个.
    pakholeung372
        24
    pakholeung372  
       1 天前   ❤️ 1
    @Vaspike 把窗口渲染关了就没有了吧,我都是只用图标。其实我用这类应用主要是同应用多窗口切换方便。command+·切换不够快
    Rico802
        25
    Rico802  
       1 天前   ❤️ 1
    我都是触发角设置的调度中心
    yyf1234
        26
    yyf1234  
       1 天前 via iPhone   ❤️ 1
    @lizhian 虽然但是,AltTab 会导致 windowserver 内存泄露噢
    @Vaspike 不知道你这个怎么样
    Vitta
        27
    Vitta  
       1 天前
    @Vaspike #5 cmd + ` 不错,就是我 cmd tab 的话感觉会有 1s 的延迟才出来
    lizhian
        28
    lizhian  
       1 天前
    @Vaspike #20 这个还真不知道
    zacard
        29
    zacard  
       1 天前   ❤️ 1
    支持。但是被 Keyboard Maestro 吊打,我都不用看图标列表选择,定义好快捷键,直接把要用的应用切到前台
    KorenKrita
        30
    KorenKrita  
       1 天前   ❤️ 1
    试用了下 提几个建议
    1.ui 感觉还是太占面积了 上面横栏的描述+空白占地面积太大且无实际作用 这种悬浮窗类的工具比较忌讳的就是覆盖面积太大还没什么用
    2.ui 要支持一些基础的调节 至少弹出位置,透明度和长宽要能改 既然选择做上下滑而不是官方的那种无限平铺就不要有一定要展示 x 个这种限制 每个人对屏幕的利用率诉求不同
    3.软件的名称和窗口标题一致时 把软件名称上下各显示一次看起来信息很冗余 1 个窗口可能没有必要刻意标识出来 包括切换窗口时如果就一个可以完全不触发 类似官方一样
    4.深色模式下小字的灰色看着比较累+糊,在不支持主题颜色自定义情况下预设的颜色还是可以再优化下的
    5.我个人对这种系统同功能优化类工具软件的诉求就是一定要能解决痛点,我比较需求的功能是对某些应用在切换时的屏蔽,有一些需要挂在后台的软件事实上我没有主动切出来的意愿,alttab 是支持进行单个应用多情况的黑名单配置的,这个虽然是个比较重的功能,但是我认为也是对系统功能比较重要的补全
    Vaspike
        31
    Vaspike  
    OP
       1 天前
    @KorenKrita 是很用心的建议, 非常感谢! 都很有帮助, 我会考虑逐渐进行优化/功能增加
    924412409
        32
    924412409  
       1 天前   ❤️ 1
    支持,体验挺好的
    遇到一个小问题,在双屏状态下,编辑器在屏幕 a ,但是触发的应用切换菜单却显示在屏幕 b ,重启了一下就好了
    希望可以支持:应用内切换,在打开菜单后可以通过 1234... 编号直接切换,不然需要一直按 trigger key 选择下一个
    Vaspike
        33
    Vaspike  
    OP
       1 天前   ❤️ 1
    @924412409

    十分感谢使用! 感谢评价~
    1. 第一个问题我也发现了哈哈, 产生的原因是我开发的时候是在家, 没有多屏显示器, 这个问题我很快会修复
    2. 很棒的建议, 我会加入新功能计划
    steveway
        34
    steveway  
       1 天前   ❤️ 1
    十分好用,解决了我在一堆 vscode 窗口切换的蛋疼体验
    Vaspike
        35
    Vaspike  
    OP
       23 小时 55 分钟前
    @zacard 我去学习下
    FarmerChillax
        36
    FarmerChillax  
       23 小时 52 分钟前
    @steveway vscode 打开 Native Tabs 这个功能或许体验会比切换更好
    linxinote
        37
    linxinote  
       23 小时 16 分钟前   ❤️ 1
    已 star
    july1995
        38
    july1995  
       23 小时 0 分钟前   ❤️ 1
    支持一下,下载看看。
    majiang2133
        39
    majiang2133  
       22 小时 7 分钟前   ❤️ 1
    支持一下
    tog
        40
    tog  
       21 小时 41 分钟前   ❤️ 1
    up 主有了解过 alfred 吗? 你说的这些功能它好像基本都能实现了。
    https://www.alfredapp.com/
    geekzhu
        41
    geekzhu  
       21 小时 1 分钟前   ❤️ 1
    在同应用切换的时候,如果想取消切换,点击 Esc ,并没有取消
    llllliu
        42
    llllliu  
       20 小时 38 分钟前   ❤️ 1
    支持一下. 顺便请问 官网是怎么做的?
    Aprilming
        43
    Aprilming  
       20 小时 28 分钟前   ❤️ 1
    用着挺好的。
    Greendays
        44
    Greendays  
       20 小时 15 分钟前   ❤️ 1
    macos 的这种小插件真多啊,回去装上看看
    Vaspike
        45
    Vaspike  
    OP
       20 小时 10 分钟前
    @geekzhu 确实是 bug, 会尽快修复
    Vaspike
        46
    Vaspike  
    OP
       20 小时 5 分钟前   ❤️ 1
    @llllliu 让 AI 读取的我 Github 的 README, 然后给一些风格和布局的要求写出来的
    Richared
        47
    Richared  
       18 小时 10 分钟前   ❤️ 1
    有一个应用叫 alfred ,但是也支持下,开源不易
    MrZhangLo
        48
    MrZhangLo  
       15 小时 25 分钟前
    秒切应用的时候,窗口能不能不出现,像原生的一样?
    achira
        49
    achira  
       15 小时 19 分钟前
    没有比 win+数字键调用任务栏顺序窗口以及启动更方便的方式,这一点 MACOS 呗吊打
    geekzhu
        50
    geekzhu  
       13 小时 2 分钟前
    建议增加开机自启选项
    devtiange
        51
    devtiange  
       10 小时 19 分钟前
    感谢开源! 不过好像并没有找到比 AltTab 强的地方?
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5454 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 03:00 · PVG 11:00 · LAX 20:00 · JFK 23:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.