关注JEECG发展历程 关注最新动态和版本, 记录JEECG成长点滴 更新日志 - 技术支持 - 招聘英才

JEECG最新版本下载 JEECG智能开发平台 - 显著提高开发效率 常见问题 - 入门视频 - 参与开源团队

商务QQ: 69893005、418799587 商务热线(5*8小时): 010-64808099 官方邮箱: jeecg@qq.com

查看: 2|回复: 0

One Switch 开源替代 QuickSwitch:免费开源的 Mac 菜单栏开关工具

[复制链接]
发表于 7 分钟前 | 显示全部楼层 |阅读模式

QuickSwitch:Mac 菜单栏开关工具

一个小需求:把常用开关放到手边

用 Mac 久了,总有几个设置隔三差五要切一下:开会前静音,投屏前把乱糟糟的桌面藏起来,晚上开夜览,跑长任务时不让电脑睡着,演示时把程序坞收起来……

这些开关散落在「系统设置」的不同角落,有的甚至只能靠终端命令改(比如显示隐藏文件)。每次都要点开设置、翻好几层菜单,或者去搜一条 defaults write 命令。

Mac 上有个很受欢迎的工具专门解决这件事:Fireball Studio 出的 One Switch,把各种开关集中到菜单栏,点一下就切换。不过它是付费软件,单设备买断 4.99 美元起,也可以通过 Setapp 订阅使用。

如果你只需要最常用的那几个开关,不想付费,也想清楚知道这个常驻菜单栏的小工具到底做了什么,可以试试今天要介绍的开源项目:QuickSwitch 开关栏。

以前 vs 现在:从翻设置到一个菜单

QuickSwitch 长什么样

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

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 个操作放进菜单栏,点一下就切换。它不追求功能大而全,胜在免费、开源、单文件、不联网,代码一眼能看完,想加功能自己动手改就行。

如果你一直想要 One Switch 这样的工具,又不想为几个开关付费,不妨装上试试。觉得好用的话,去 GitHub 给项目点个 Star,也欢迎提 Issue 或 PR,分享你想要的新开关。


本文为 JeecgBoot AI 专题研究系列文章。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表