‹ 主屏幕开发

开发 LineXinBar:文档、源代码、翻译

文档

完整的用户和开发者参考资料就在代码旁边的 docs/ 中。所有指南:

它是怎样构建的

两个程序,都用 Rust 编写:lxb 是基于 Smithay 构建的小型 Wayland 合成器,lxb-desktop 是 Shell,通过 wgpu 在 GPU 上绘制。

  • 合成器通过 DRM/KMS 直接驱动显示器 — 每个接口都是一个真正的输出,拥有自己的交换链和由垂直同步驱动的循环 — 开发时也可以嵌套在窗口中运行。它通过一个私有的 Xwayland 运行 X11 程序。
  • Shell 是一个 layer-shell 客户端,所以它也能在其他实现了 layer-shell 的合成器上运行。它通过一个私有协议 lxb_shell_v1 与合成器通信,只有会话自己的程序才能使用该协议。
  • 外观是计算出来的,而不是画出来的。壁纸是关于观察位置的一个解析函数,逐像素计算;每个标记都是一个白色剪影,先测量成距离场,再由着色器立成一颗水珠。本网站运行的正是这两个着色器的移植版本。
  • 围绕它们的还有:负责屏幕共享、文件对话框和其余桌面门户功能的 lxb-portal;更新协调器 lxb-updates;以及 RetroArch、Heroic 和 RPCS3 的可选辅助程序。

翻译

Shell 显示的每一个词都来自 Fluent 翻译目录,共十种语言:德语、英式和美式英语、西班牙语、法语、印地语、波兰语、巴西葡萄牙语、俄语和简体中文。

翻译目录是 crates/lxb-desktop/locales/ 中的纯文本文件。修正一处翻译就是编辑一行;新增一种语言就是新增一个目录,测试会检查每个目录都包含相同的消息和相同的参数。登录界面和兄弟应用也有各自同样格式的翻译目录。

报告问题

在 GitHub 上提交 issue,并附上能让问题复现的四项信息:

  • 您的发行版及其版本;
  • 您的显卡和驱动;
  • 您是如何启动 LineXinBar 的 — 从登录界面、在控制台运行 lxb --shell,还是嵌套运行;
  • 出错时刻前后的日志 — 会话使用 journalctl --user -b,嵌套运行则使用终端输出。

如果是手柄问题,提供手柄的品牌和型号,并说明是有线连接还是蓝牙连接,会更容易排查。

参与贡献

欢迎提交问题报告、进行硬件测试、参与翻译和贡献代码。

  • 眼下最重要的是硬件测试:其他显卡厂商、掌机、多 GPU,以及不常见的显示器和手柄。
  • 翻译:修正您的语言中读起来不对的地方,或者添加一种新语言。
  • 代码:构建命令是 cargo build --release --locked,测试命令是 cargo test,而嵌套会话是查看改动效果的方式。

许可证

LineXinBar 是自由软件,以 GNU 通用公共许可证第 3 版(仅限该版本)授权。

随附的 Roboto 和 Roboto Mono 字体使用它们各自的开放许可证,Shell 为印地语和中文携带的 Noto 字体以及 Bibata 光标主题也是如此。本网站是代码仓库的一部分,采用相同的许可证。