Kobo 电子阅读器新玩法:开源平台 Cobalt 上线,畅玩多应用!

Kobo 电子阅读器新玩法:开源平台 Cobalt 上线,畅玩多应用! 在 Kobo 上运行每个应用都是一个静态 ARM 二进制文件以无特权进程的形式在原生硬件上运行。应用商店通过 Wi-Fi 安装、更新和卸载应用并在启动任何应用之前验证其签名。在电子墨水屏上阅读 arXiv 论文和使用编码助手这些都是设备的实拍照片而非模拟器截图。arXiv 应用可以读取自 2023 年 12 月以来 arXiv 发布的每篇论文的 HTML 渲染版本包括摘要、章节、数学公式和结果表格并会根据电子墨水屏进行分页处理。应用以下每张截图均来自 Kobo Clara BW。应用商店中的应用版本与平台版本相互独立其他应用则随平台安装包一同提供。[启动器](https://github.com/BandarLabs/Cobalt/blob/main/examples/launcher/README.md)用于打开已安装的应用并始终保留返回 Kobo 阅读器的入口。[应用商店](https://github.com/BandarLabs/Cobalt/blob/main/docs/APP_STORE.md)通过 Wi-Fi 安装、更新、卸载和重新安装经过签名的应用。[arXiv](https://github.com/BandarLabs/Cobalt/tree/main/apps/arxiv)浏览某个学科的最新预印本并在电子墨水屏上阅读全文。[数独](https://github.com/BandarLabs/Cobalt/tree/main/apps/sudoku)该应用设计为仅可从应用商店获取安装它证明了可以交付 USB 安装包中未包含的应用。[摩尔斯电码](https://github.com/BandarLabs/Cobalt/tree/main/apps/morse)通过前灯以摩尔斯电码发送输入的消息一次显示一个字母覆盖整个屏幕。[有声读物工作室](https://github.com/BandarLabs/Cobalt/blob/main/examples/audiobook/README.md)搜索、创作、朗读并播放原创有声读物。[Gutenbird](https://github.com/BandarLabs/Cobalt/blob/main/examples/gutenbird/README.md)可阅读任何 OPDS 图书馆的书籍包括 Project Gutenberg、Standard Ebooks、Open Library 或你自己的图书馆。[Hacker News](https://github.com/BandarLabs/Cobalt/blob/main/examples/hn/README.md)显示热门、最新、问答和展示等类型的故事并提供完整的评论线程。[订阅源](https://github.com/BandarLabs/Cobalt/blob/main/examples/rss/README.md)发现网站的订阅源并以简洁的方式展示文章不包含网站的原始布局。[每日简报](https://github.com/BandarLabs/Cobalt/blob/main/examples/brief/README.md)在你使用其他应用时在后台收集当天的新闻故事。[AI 命令中心](https://github.com/BandarLabs/Cobalt/blob/main/examples/chat/README.md)提出问题并将答案转换为便于触摸阅读的格式。[Sidekick](https://github.com/BandarLabs/Cobalt/blob/main/examples/sidekick/README.md)在无需使用键盘的情况下批准或拒绝编码助手的请求。[终端](https://github.com/BandarLabs/Cobalt/blob/main/examples/terminal/README.md)一个原生的屏幕 shell按键输入即时生效。[组件](https://github.com/BandarLabs/Cobalt/blob/main/examples/gallery/README.md)展示 UI 工具包的控件、布局、排版和状态。[设置](https://github.com/BandarLabs/Cobalt/blob/main/examples/settings/README.md)用于管理网络连接、硬件设置和平台更新与应用商店分开管理。[待办事项](https://github.com/BandarLabs/Cobalt/blob/main/examples/todo/README.md)一个持久的列表支持触摸输入和标记已完成事项。[井字棋](https://github.com/BandarLabs/Cobalt/blob/main/examples/tictactoe/README.md)支持双人游戏单个单元格可进行局部刷新。[磁铁感应](https://github.com/BandarLabs/Cobalt/blob/main/examples/magnet/README.md)定位边框后面的霍尔传感器并报告其状态变化。SDK一个应用只需一个 Rust 文件实现 KoboApp 接口以声明式方式描述屏幕运行时环境将处理布局、电子墨水屏刷新计划、返回导航和生命周期管理。应用不会直接访问设备资源而是通过请求的方式获取。网络、存储、音频、前灯和 Wi-Fi 等功能都需要权限控制如果请求被拒绝应用可以处理返回的结果。电子墨水屏 UI支持文本、图块、对话框、键盘、分页和局部刷新计划模拟器提供浏览器和运行时模拟器并带有布局诊断功能异步工作支持 HTTPS、范围下载、可取消任务和定时唤醒状态管理每个应用都有独立的原子键值存储发布应用以经过签名的静态 ARMv7 二进制文件形式发布当应用的 PR 合并后即可自动发布kobo new my-appcd my-appkobo dev[查看 SDK 文档](sdk.html)use kobo_sdk::{ActionId, Context, KoboApp, ScreenBuilder,};[derive(Default)]struct Hello { taps: u32 }impl KoboApp for Hello {fn on_start(mut self, ctx: mut Context) {self.show(ctx);}fn on_action(mut self, ctx: mut Context, a: ActionId,) {if a kobo_sdk::action_id(tap) {self.taps 1;}self.show(ctx);}}impl Hello {fn show(self, ctx: mut Context) {let screen ScreenBuilder::new(hello).top_bar(Hello).heading(format!({} taps, self.taps)).button(tap, Tap me).build();ctx.set_screen(screen);}}fn main() {let app Hello::default();let _ kobo_sdk::run(hello, app);}应用商店签名包启动前验证应用商店从一个固定的 GitHub 版本中读取经过签名的目录。每个包包含一个 ARM 可执行文件和一个经过签名的规范清单。运行时环境会在应用启动前验证目录、包、已安装的清单和二进制文件。应用发布与平台发布相互独立合并应用的 PR 后会为 ARM 平台构建应用、进行签名并更新目录。无需升级 Cobalt 版本也无需重新安装应用会直接在应用商店中显示。Cobalt 平台本身也可以通过 Wi-Fi 进行更新在设置中选择与应用目录不同的更新通道。USB 电缆仅在首次安装时需要使用。安装和目录事务具有恢复安全性即使更新中断阅读器仍会保留之前的版本。[发布你自己的应用 →](https://github.com/BandarLabs/Cobalt/blob/main/docs/CONTRIBUTING_APPS.md)数独游戏通过 Wi-Fi 安装。图 1Clara BW N365从源代码安装1. **为 Kobo Clara BW (N365) 充电** 并通过 USB 连接。不支持其他型号请勿尝试猜测。2. **运行安装脚本**git clone https://github.com/BandarLabs/Cobalt.gitcd Cobaltrustup target add armv7-unknown-linux-musleabihfcargo run -p kobo-cli -- setup3. **重启阅读器**并从 Kobo 菜单中打开 **Cobalt**。4. **打开应用商店**。从这里开始所有内容都将通过 Wi-Fi 下载。完整的安装指南包括恢复步骤可参考 [docs/INSTALL.md](https://github.com/BandarLabs/Cobalt/blob/main/docs/INSTALL.md)。贡献应用贡献应用只需提交常规的 Pull Request。如果应用能在你的设备上运行并且 PR 中展示了运行效果就会被合并并发布。1. **构建应用**将应用作为工作区包添加到 apps/应用 ID/ 目录下并在 apps/catalog.json 中注册。2. **测试应用**添加单元测试和布局测试并在浏览器和运行时模拟器中运行。3. **在自己的设备上运行**使用真实的 Clara BW 设备而不仅仅是模拟器。4. **提交 PR**附上应用运行的 GIF 或照片。审核并合并后发布工作流会对应用进行签名并将其添加到应用商店中无需发布新的平台版本。如果你使用的是其他 Kobo 型号也欢迎进行 [移植](https://github.com/BandarLabs/Cobalt/blob/main/docs/PORTING.md)请先创建一个 issue以便确定设备配置文件。详细信息可参考 [docs/CONTRIBUTING_APPS.md](https://github.com/BandarLabs/Cobalt/blob/main/docs/CONTRIBUTING_APPS.md)。设备支持与安全Cobalt 不会替换 Kobo 的启动链。设备写入操作会根据精确的硬件和固件匹配进行控制重启后阅读器将恢复为原生系统。首次安装时会修改用户存储分区上的文件本项目不提供任何形式的保证。目前仅对 Clara BW 型号进行了硬件测试。在其他型号有 [经过审核和硬件测试的配置文件](https://github.com/BandarLabs/Cobalt/blob/main/docs/PORTING.md) 之前请勿安装。Cobalt 是一个独立项目与 Rakuten Kobo 无关。Cobalt · AGPL - 3.0 · [BandarLabs/Cobalt](https://github.com/BandarLabs/Cobalt)[SDK 文档](sdk.html)[安装指南](https://github.com/BandarLabs/Cobalt/blob/main/docs/INSTALL.md)[贡献应用](https://github.com/BandarLabs/Cobalt/blob/main/docs/CONTRIBUTING_APPS.md)[安全说明](https://github.com/BandarLabs/Cobalt/blob/main/SECURITY.md)