之前在一篇帖子里介绍了我个人开发的一个 All-in-One 菜单栏 app -- OnlySwitch, 获得了很多朋友的关注。从第一次 commit 这个项目的代码,不知不觉已经过去 2 年了。这期间 OnlySwitch 冲上过 github swift trending 的日榜周榜第一名,获得了 2600 多个 stars ,也被全球非常多的科技网站转载。很多网友也热心的为 OnlySwitch 做了多语言的贡献,并为新功能建言献策。再次非常感谢大家的支持。 今天想介绍一下 OnlySwitch 的新功能,并且回顾总结一下开发心得。
除了一些基础的系统设置开关,很多用户有一些工具类功能的需求。
OnlySwitch 作为一款开源软件,非常关注扩展性和开放性。 在 Monterey 之后,OnlySwitch 开始支持系统的快捷指令功能,用户可以在 app 中执行勾选的快捷指令或者为他们设置热键。用户也可以在 OnlySwitch 上贡献自己开发的快捷指令。这大大加强了 OnlySwitch 的扩展性和可玩性,更像是一个快捷功能的平台。但是由于快捷指令本身只能在沙盒中运行,很多命令并不能正常的执行。
后来总结了一下自己开发的很多开关,本身都是通过一些 shell 和 apple script 命令来执行的,所以 OnlySwitch 加入了个性的开关开发平台--Evolution 。用户可以自己通过添加一些命令行脚本来制作自己想要的开关,并且可以分享到 OnlySwitch 上来,这样不需要再次发版,OnlySwitch 也可以轻松的扩展新的功能。
Sonoma 开始支持可交互的小组件,本来 OnlySwitch 也打算支持一下,但是由于其也只能运行在沙盒里,只好无奈放弃。
OnlySwitch 是使用 SwiftUI 进行开发的,最初由于没有见过企业级的 SwiftUI 项目,代码写的非常混乱。架构也换了很多方案,一直在不停的重构。年初入职了德国慕尼黑的一家大厂,感觉在欧洲似乎越来越开始流行 SwiftUI+the composable architecture ( TCA )的开发 pattern 。后来也将其应用在了 OnlySwitch 上,比如 Evolution 和置顶便签的代码。但是依然又很多的技术债需要重构,还有很多自动化需要加入。
虽然写了十几年的 iOS 开发,OnlySwitch 算是我第一款开发的 macOS 应用,感觉还有很多东西需要学习,手机应用和桌面应用还是有很多逻辑上的差异,无论是交互使用还是生命周期。甚至为了兼容不同的 mac 系统版本,需要在 3 个实体 MacBook 上调试,之前还遇到过美国用户只在 mac mini 上 crash 的奇怪案例。感觉作为个人开发者还是有许多困难需要克服。
未来的开发方向会是打磨很多功能的细节,重构大部分代码,如果大家有什么好的点子,我有时间也会帮大家实现。
brew install only-switch
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.