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

OnlySwitch 两周年更新

  •  
  •   Jacklandrin · 2023-10-31 01:25:58 +08:00 · 2403 次点击
    这是一个创建于 391 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前在一篇帖子里介绍了我个人开发的一个 All-in-One 菜单栏 app -- OnlySwitch, 获得了很多朋友的关注。从第一次 commit 这个项目的代码,不知不觉已经过去 2 年了。这期间 OnlySwitch 冲上过 github swift trending 的日榜周榜第一名,获得了 2600 多个 stars ,也被全球非常多的科技网站转载。很多网友也热心的为 OnlySwitch 做了多语言的贡献,并为新功能建言献策。再次非常感谢大家的支持。 今天想介绍一下 OnlySwitch 的新功能,并且回顾总结一下开发心得。

    Sits in the status bar

    新功能

    工具类

    除了一些基础的系统设置开关,很多用户有一些工具类功能的需求。

    • 键盘与屏幕的清洁,屏幕检测 这些是很多用户呼吁的功能,但是我并不想像 OneSwitch 一样将他们拆开成不同的开关,而是寻找这些功能的一些共性,将他们合成在屏幕检测这一个开关中。
    • 背景噪音 App 中的电台和番茄时钟功能获得了很多用户的好评,所以后来加入了背景噪音功能帮助用户在工作和学习中保持更加的专注。
    • 隐藏菜单栏图标 受一个叫Hidden Bar的 app 启发开发的功能,可以隐藏一些菜单栏上面过多的无用图标
    • 置顶便签 虽然 macOS 系统里自带了一个便签功能,但是默认并不是置顶漂浮的。所以最近加入了一个永远置顶的便签,可以方便的记录一下临时而紧急文本内容。

    快捷指令和 Evolution

    OnlySwitch 作为一款开源软件,非常关注扩展性和开放性。 在 Monterey 之后,OnlySwitch 开始支持系统的快捷指令功能,用户可以在 app 中执行勾选的快捷指令或者为他们设置热键。用户也可以在 OnlySwitch 上贡献自己开发的快捷指令。这大大加强了 OnlySwitch 的扩展性和可玩性,更像是一个快捷功能的平台。但是由于快捷指令本身只能在沙盒中运行,很多命令并不能正常的执行。

    后来总结了一下自己开发的很多开关,本身都是通过一些 shell 和 apple script 命令来执行的,所以 OnlySwitch 加入了个性的开关开发平台--Evolution 。用户可以自己通过添加一些命令行脚本来制作自己想要的开关,并且可以分享到 OnlySwitch 上来,这样不需要再次发版,OnlySwitch 也可以轻松的扩展新的功能。

    Sits in the status bar

    Sonoma 开始支持可交互的小组件,本来 OnlySwitch 也打算支持一下,但是由于其也只能运行在沙盒里,只好无奈放弃。

    开发心得

    OnlySwitch 是使用 SwiftUI 进行开发的,最初由于没有见过企业级的 SwiftUI 项目,代码写的非常混乱。架构也换了很多方案,一直在不停的重构。年初入职了德国慕尼黑的一家大厂,感觉在欧洲似乎越来越开始流行 SwiftUI+the composable architecture ( TCA )的开发 pattern 。后来也将其应用在了 OnlySwitch 上,比如 Evolution 和置顶便签的代码。但是依然又很多的技术债需要重构,还有很多自动化需要加入。

    虽然写了十几年的 iOS 开发,OnlySwitch 算是我第一款开发的 macOS 应用,感觉还有很多东西需要学习,手机应用和桌面应用还是有很多逻辑上的差异,无论是交互使用还是生命周期。甚至为了兼容不同的 mac 系统版本,需要在 3 个实体 MacBook 上调试,之前还遇到过美国用户只在 mac mini 上 crash 的奇怪案例。感觉作为个人开发者还是有许多困难需要克服。

    未来的开发方向会是打磨很多功能的细节,重构大部分代码,如果大家有什么好的点子,我有时间也会帮大家实现。

    通过 Homebrew 安装

    brew install only-switch
    

    手动下载

    download

    16 条回复    2024-04-23 10:05:23 +08:00
    Pin
        1
    Pin  
       2023-10-31 02:47:59 +08:00
    和 oneswitch 好像,加油!
    jjxtrotter
        2
    jjxtrotter  
       2023-10-31 06:37:46 +08:00 via iPhone
    很好的东西,用来替代 one switch 。

    缺点:UI 简陋
    husldlq
        3
    husldlq  
       2023-10-31 06:55:19 +08:00 via iPhone
    居然有广告
    Jacklandrin
        4
    Jacklandrin  
    OP
       2023-10-31 08:00:39 +08:00
    @husldlq 广告可以在设置中关闭
    ovtfkw
        5
    ovtfkw  
       2023-10-31 08:35:27 +08:00
    这不跟 oneswitch 一模一样吗
    gps949
        6
    gps949  
       2023-10-31 08:41:28 +08:00
    UI 可以学一下果子自带的控制中心那样,只是个开关的话没必要那么宽那么高。。。
    另外名叫 onlyswitch 结果里面还好几个 button :doge
    Jacklandrin
        7
    Jacklandrin  
    OP
       2023-10-31 10:14:06 +08:00
    @gps949 控制中心的一个问题是功能的位置无法调整(现在双排显示就有这个问题),要么就得做成跟 iPhone 一样那种只有 icon 的小方块,但这样的话,很多功能无法从 icon 中了解其用途。带上文字之后的问题是,中文可能还好,现在支持十几种语言之后,发现很多语言的文字太长了,不做成宽高的显示不开。
    Ch1hao
        8
    Ch1hao  
       2023-10-31 11:04:56 +08:00
    大佬能支撑一个台前调度和屏幕镜像吗,这样就能把系统自带的图标干掉了
    oxoxoxox
        9
    oxoxoxox  
       2023-10-31 12:23:28 +08:00
    如果能支持显示其他品牌的蓝牙耳机的信息就更好了
    Jacklandrin
        10
    Jacklandrin  
    OP
       2023-10-31 17:12:52 +08:00 via iPhone
    @Ch1hao 台前调度是有的,你可以在设置- Evolution 里找到 Stage Manager 。屏幕镜像由于每个人 external screen 的数量不确定,很难做一个统一的开关出来。你要是会 apple script 可以自己在 Evolution 里加一个
    Jacklandrin
        11
    Jacklandrin  
    OP
       2023-10-31 17:13:40 +08:00 via iPhone
    @oxoxoxox 我手头没有那么多测试设备😂
    neochen13
        12
    neochen13  
       2023-10-31 17:28:02 +08:00
    请问一下和 oneswitch 有什么区别额
    Jacklandrin
        13
    Jacklandrin  
    OP
       2023-10-31 17:58:38 +08:00 via iPhone
    @neochen13 多了很多开关和工具,你也可以自己通过脚本或者快捷指令添加新的开关。开源免费
    yellowstrong
        14
    yellowstrong  
       2023-11-03 16:54:23 +08:00
    希望能做一个切换高动态范围的开关
    pc10300
        15
    pc10300  
       2023-11-03 23:52:29 +08:00
    好像没有看懂屏幕检测是什么意思,点击以后直接锁屏输入密码了。。
    lilyaki
        16
    lilyaki  
       215 天前
    刚买 oneswitch 然后看到这篇...是我孤陋寡闻了,希望 oneswitch 能更新点好的功能哇
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   892 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:40 · PVG 05:40 · LAX 13:40 · JFK 16:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.