把 Codex 用量、番茄钟、CPU/内存/网络状态或自定义图片渲染为 142 × 428 JPEG,并通过局域网推送到 Linx68 键盘左侧屏幕。
| 平台 | 新版 Avalonia 应用 | 系统监控 | 登录时启动 | 系统托盘 |
|---|---|---|---|---|
| Windows x64 | 支持 | 支持 | 支持 | 支持 |
| macOS Apple Silicon / Intel | 支持 | 支持 | 支持 | 支持 |
| Linux x64 | 预览支持 | 支持 | 支持 | 取决于桌面环境的 AppIndicator/StatusNotifier 支持 |
跨平台版位于 src/LinxDisplay.Desktop,使用 .NET 10、Avalonia 12.1 和 SkiaSharp。开发早期使用的 WinForms 实现保留在 src/LinxDisplay.Windows,用于功能对照和 Windows 回归测试。
- Codex 用量:显示当前周期剩余、重置次数、重置时间和电脑本地时间。
- 番茄钟:任务名称、专注/短休/长休时长,支持暂停、继续、跳过和重置。
- 系统监控:CPU、内存、下载/上传速度与系统运行时间。
- 自定义图片:自动居中裁切,并为键盘状态栏保留 44–80px 顶部安全区。
- 五套共享主题:深空薄荷、深空橙、明亮极简、霓虹紫、琥珀终端。
- 动态预览与定时推送,图片始终为
142 × 428JPEG 且不超过 512KB。 - 已保存的图像 API 地址失效时,自动发现同一局域网内的键盘并更新地址后继续推送。
- Windows/macOS 关闭窗口后可继续在系统托盘运行;三平台均可配置登录时启动。
- 首次运行新版时会自动迁移开发阶段旧名称目录中的 API 地址、主题、模式、番茄钟状态和图片设置。
- 从 GitHub Releases 下载最新正式版,提供 Windows、macOS Apple Silicon、macOS Intel 和 Linux 文件。
- M1/M2/M3/M4/M5 Mac 选择
macOS-AppleSilicon,Intel Mac 选择macOS-Intel;Windows 用户选择Windows-x64。 - 普通桌面软件应放在 GitHub Releases,而不是 Packages;Packages 主要用于 NuGet、容器等供其他软件依赖的制品。
发布包采用自包含发布,无需预装 .NET。macOS 包暂未使用 Apple Developer ID 公证,首次打开可能需要在“系统设置 → 隐私与安全性”中手动允许。
- 在“关于本机”确认芯片类型:M1/M2/M3/M4/M5 选择
AppleSilicon,Intel 处理器选择Intel。 - 下载对应的
.zip并解压,得到LinxDisplay.app。 - 将
.app拖入“应用程序”后打开。当前版本尚未使用 Apple Developer ID 公证;若系统拦截,请按住 Control 点击应用并选择“打开”,或在“系统设置 → 隐私与安全性”中允许。
发布目录中那个没有后缀的 LinxDisplay 是 .app/Contents/MacOS 内部的 Unix 可执行文件,不是给用户直接双击的安装成品。GitHub Actions 会组装、临时签名并校验完整 .app,再用 macOS 原生方式压缩成 .zip,以保留可执行权限和应用包结构。
| 功能 | WinForms 原实现 | Avalonia 跨平台版 |
|---|---|---|
| Codex 用量、刷新周期、定时/分钟变化推送 | 支持 | 支持 |
| 番茄钟及实时状态、操作后立即推送 | 支持 | 支持 |
| CPU/内存/网络监控及动态推送周期 | 支持 | 支持,并允许 2–60 秒自定义 |
| 自定义图片(含 GIF 首帧) | 支持 | 支持 |
| 五套卡片样式、安全区、JPEG 质量 | 支持 | 支持 |
| 系统托盘打开、立即推送、退出 | 支持 | 支持 |
| 登录时自动启动、旧设置迁移 | Windows | Windows / macOS / Linux |
跨平台版在切换显示模式以及开始、暂停、跳过或重置番茄钟后,会像旧版一样立即向键盘推送当前画面。
安装 .NET 10 SDK 后执行:
dotnet restore LinxDisplay.CrossPlatform.slnx
dotnet run --project src/LinxDisplay.Desktop/LinxDisplay.Desktop.csproj在“图像 API”中填写键盘当前地址,例如:
http://192.168.31.71/image/upload
程序会以 Content-Type: image/jpeg 发送原始 JPEG 请求体。电脑与键盘需要连接在同一局域网。
Codex 用量读取依赖本机 Codex CLI。程序会依次检查应用内填写的“Codex CLI”、CODEX_CLI_PATH、PATH,以及 Homebrew、npm、nvm、fnm、Volta、asdf、mise 和 pnpm 的常见位置(Windows 也支持 codex.exe、.cmd、.bat)。例如:
[Environment]::SetEnvironmentVariable("CODEX_CLI_PATH", "C:\path\to\codex.exe", "User")macOS/Linux 可在 shell 配置中设置:
export CODEX_CLI_PATH=/path/to/codex注意:从 Finder 启动的 macOS .app 不会继承终端 .zshrc 中设置的 PATH 或环境变量。如果仍未自动找到,请在终端执行 which codex,把输出的完整路径直接填入应用的“Codex CLI”一栏;常见结果是 /opt/homebrew/bin/codex 或 /usr/local/bin/codex。
跨平台冒烟测试覆盖五套主题的 Codex、番茄钟、系统监控卡片,JPEG 编解码、番茄钟状态切换以及当前系统的 CPU/内存采样:
dotnet run --project tests/LinxDisplay.CrossPlatform.Tests --configuration ReleaseGitHub Actions 会在 Windows、macOS 和 Ubuntu 上分别构建并运行同一套测试。推送与桌面项目版本一致的标签时会自动发布:vX.Y.Z 创建 Latest 正式版,vX.Y.Z-preview.N 创建 Prerelease:
LinxDisplay-Windows-x64-*.zipLinxDisplay-macOS-AppleSilicon-*.zipLinxDisplay-macOS-Intel-*.zipLinxDisplay-Linux-x64-*.tar.gzSHA256SUMS.txt
正式版和预览版使用同一套跨平台构建、打包、校验和生成流程。
配置、番茄钟状态和自定义图片副本保存在系统的用户应用数据目录:
- Windows:
%APPDATA%\LinxDisplay - macOS:
~/Library/Application Support/LinxDisplay - Linux:
~/.config/LinxDisplay(受XDG_CONFIG_HOME影响)
如果本机存在开发阶段的 CodexLinxDisplay 数据目录,LinxDisplay 会在首次启动时复制仍然有效的设置、番茄钟状态和自定义图片;新目录已有文件时不会覆盖。
程序不会上传 Codex 凭据或原始用量/系统监控数据;只有渲染后的 JPEG 会发送到用户填写的键盘地址。登录时启动分别使用 Windows 当前用户 Run 注册表项、macOS LaunchAgent 和 Linux XDG Autostart 文件。
src/LinxDisplay.Core:设置、Codex 协议、番茄钟、上传和三平台系统服务。src/LinxDisplay.Rendering:基于 SkiaSharp 的142 × 428JPEG 渲染器。src/LinxDisplay.Desktop:Avalonia 跨平台桌面界面与系统托盘。tests/LinxDisplay.CrossPlatform.Tests:三平台共用冒烟测试。src/LinxDisplay.Windows:保留的 WinForms 原实现。.github/workflows/cross-platform-ci.yml:Windows/macOS/Linux 持续集成。.github/workflows/cross-platform-release.yml:跨平台正式版与预览版发布。
需要构建 WinForms 原实现时可执行:
.\scripts\build.ps1它输出到 artifacts/windows-x64,对应冒烟测试位于 tests/LinxDisplay.Windows.SmokeTests。
