作者因近视做了激光眼部手术,术前发现患有干眼症,眼科医生推荐每 20 分钟看 20 英尺外 20 秒的“20 - 20 - 20 规则”。作者难以遵循该规则,起初设置闹钟但很烦,后找程序但未找到多平台替代,于是自己写了twenty-twenty-twenty程序,用 Go 语言编写是为了学习该语言且其便于构建静态二进制文件,最初用beeep能构建静态二进制文件但 macOS 通知难看,后改用GioUI的notify库,虽能更好集成 macOS 但失去静态二进制文件,又添加声音和托盘图标功能需在 macOS 和 Linux 中使用 CGO。在 Linux 中失去静态二进制文件是大事,推荐用musl构建,Nix 使其容易,通过创建twenty-twenty-twenty.nix文件可构建 Go 模块,用flake.nix
构建,展示 Nix 的强大,正常构建和静态构建仅需更改使用pkgs.pkgsStatic
,需给 Go 编译器传递额外标志,测试时出现警告且声音不工作,可能与使用 PipeWire 有关,还提到了交叉编译,通过pkgsCross
可轻松实现,如pkgs.pkgsCross.aarch64-multiplatform.pkgsStatic.callPackage
可静态交叉编译二进制文件。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。