JeecgBoot AI专题研究 | Mac 效率工具推荐:QuickSwitch 开关栏,One Switch 的免费开源替代

一个小需求:把常用开关放到手边
用 Mac 久了,总有几个设置隔三差五要切一下:开会前静音,投屏前把乱糟糟的桌面藏起来,晚上开夜览,跑长任务时不让电脑睡着,演示时把程序坞收起来……
这些开关散落在「系统设置」的不同角落,有的甚至只能靠终端命令改(比如显示隐藏文件)。每次都要点开设置、翻好几层菜单,或者去搜一条 defaults write 命令。
Mac 上有个很受欢迎的工具专门解决这件事:Fireball Studio 出的 One Switch,把各种开关集中到菜单栏,点一下就切换。不过它是付费软件,单设备买断 4.99 美元起,也可以通过 Setapp 订阅使用。
如果你只需要最常用的那几个开关,不想付费,也想清楚知道这个常驻菜单栏的小工具到底做了什么,可以试试今天要介绍的开源项目:QuickSwitch 开关栏。
- 协议:MIT,完全免费,源码开放,可以随便用、随便改

QuickSwitch 长什么样
装好后,菜单栏会多一个方框闪电图标。点开就是一个中文菜单,打勾表示当前处于开启状态:

它不占程序坞,也没有主窗口,平时完全感觉不到它的存在,需要的时候点一下菜单栏就行。
能切换哪些开关
8 个常用开关
| 开关 | 作用 |
|---|---|
| 静音 | 一键静音 / 恢复系统声音 |
| 隐藏桌面文件 | 桌面图标全部隐藏,文件没删,访达里的「桌面」文件夹照常能看到 |
| 夜览 | 屏幕色温变暖,晚上看屏幕更舒服 |
| 台前调度 | 开启后屏幕左侧显示最近使用的应用 |
| 深色模式 | 深色 / 浅色外观来回切 |
| 防止休眠 | 屏幕保持常亮;退出 QuickSwitch 后自动恢复 |
| 自动隐藏程序坞 | 程序坞自动收起,腾出屏幕空间 |
| 显示隐藏文件 | 访达里显示 . 开头的隐藏文件 |
其中「隐藏桌面文件」在投屏、录屏、开线上会议时特别实用,一点就能把满屏的截图和临时文件藏起来,用完再点一下就回来了。
3 个一键操作
- 屏幕清洁:所有屏幕变黑,同时屏蔽键盘和鼠标,可以放心擦屏幕、擦键盘。按住 Esc 2 秒退出,就算忘了,2 分钟后也会自动退出,不会把自己困住。
- 推出外接磁盘:U 盘、移动硬盘、SD 卡、磁盘映像一键全部推出。只有插着外接磁盘时这一项才会出现。
- 退出投屏:取消显示器镜像。同样只在镜像状态下才显示。
另外还有「开机启动」选项,勾上之后开机就在菜单栏待命。
和 One Switch 比一比
| 对比项 | One Switch | QuickSwitch |
|---|---|---|
| 价格 | 付费(单设备 4.99 美元起,或 Setapp 订阅) | 免费 |
| 源码 | 闭源 | MIT 开源 |
| 开关数量 | 多,还能一键连接 AirPods 等 | 8 个开关 + 3 个操作 |
| 界面语言 | 多语言 | 中文 |
| 安装方式 | 下载安装包 | 克隆源码,一条命令编译 |
如果你需要 One Switch 那么全的功能,比如一键连 AirPods,花几美元买正版完全值得。但如果你常用的就是上面这几个开关,QuickSwitch 已经够用了,而且多了一点「看得见」的安心:全部代码就在一个文件里,想知道它点下去执行了什么,翻一下源码就清楚。
打开菜单不卡、状态不会错
这类开关工具最容易出两个问题:一是菜单显示的状态和系统实际状态对不上(比如你在系统设置里改过,菜单还显示旧状态);二是每次点开菜单都要等一下。
QuickSwitch 的处理方式是:每次打开菜单,都直接去读系统当前的状态,而且读取走的是系统原生接口,不额外启动进程:
- 静音状态通过 CoreAudio 读取默认输出设备的静音属性
- 深色模式、程序坞、访达这些偏好设置,直接调用
CFPreferences读取,读之前先同步一次,拿到别的进程刚写入的值 - 投屏状态用 CoreGraphics 判断显示器是否处于镜像
- 开机启动用的是 macOS 13 起提供的
SMAppService
所以就算你在别处改过设置,下次点开菜单,打勾状态也是准的。
安装:一条命令编译
QuickSwitch 目前没有提供打包好的安装包,需要自己编译,不过非常简单。要求 macOS 13 及以上,先装好 Xcode 命令行工具:
xcode-select --install
然后克隆并编译:
git clone https://github.com/prompt2app/QuickSwitch.git
cd QuickSwitch
./build.sh
build.sh 会完成编译、ad-hoc 签名,把应用装到 /Applications/QuickSwitch.app 并直接启动。
- 更新:
git pull && ./build.sh - 卸载:退出 QuickSwitch,删掉
/Applications/QuickSwitch.app即可
自己编译还有个好处:装进电脑的程序就是从你看得到的源码编出来的,不用担心安装包里夹带别的东西。
权限与已知限制
权限方面很克制:只有第一次切换「深色模式」时,系统会弹窗询问是否允许控制「系统事件」,因为 macOS 只能通过系统事件切换外观,点「允许」即可。其他功能都不需要额外授权。
使用前也了解一下这几个限制:
- 夜览调用的是系统私有框架 CoreBrightness,以后的 macOS 版本可能会失效
- 退出投屏只是取消镜像,AirPlay 连接本身不会断开,电视会变成一块扩展屏;要彻底断开,还得去「系统设置 → 显示器」
- 屏幕清洁屏蔽不了亮度、音量、电源、触控 ID 这些硬件按键
- 切换「隐藏桌面文件」「显示隐藏文件」会重启访达,切换「自动隐藏程序坞」会重启程序坞,界面闪一下是正常的
- 因为是 ad-hoc 签名,重新编译后需要重新勾选一次「开机启动」
想加自己的开关?改一处就行
整个项目只有一个 main.swift,大约 450 行,没有任何第三方库。想加新开关,只要在 switches 数组里加一项:
Switch(title: "名称", symbol: "SF Symbol 名称",
isOn: {
/* 返回当前是否开启 */ },
set: {
on in /* 执行开启或关闭 */ })
title 是菜单上显示的文字,symbol 是 SF Symbols 里的图标名,isOn 返回当前状态,set 负责真正切换。很多系统开关本质上就是一条 defaults write 加重启对应进程,比如项目里「自动隐藏程序坞」的实现就是改 com.apple.dock 的 autohide 再重启程序坞。照着这个模式,把你平时在终端里敲的那几条命令包装成菜单项,一个属于自己的开关栏就有了。
连应用图标都是用代码画的(icon/make_icon.swift),整个仓库很适合拿来学习 macOS 菜单栏应用怎么写。
总结
QuickSwitch 做的事情很简单:把 Mac 上最常用的 8 个开关和 3 个操作放进菜单栏,点一下就切换。它不追求功能大而全,胜在免费、开源、单文件、不联网,代码一眼能看完,想加功能自己动手改就行。
本文为 JeecgBoot AI 专题研究系列文章。