开发 LineXinBar:文档、源代码、翻译
文档
完整的用户和开发者参考资料就在代码旁边的 docs/ 中。所有指南:
开始使用系统要求、权限、构建、嵌套和原生会话
打包Arch、Debian 和 Ubuntu、Fedora 以及 Nix 软件包
配置所有设置,以及按应用程序的设置
项目概览设计目标、Gamescope、已知限制
应用程序、媒体和文件主栏、搜索、货架和文件
Steam登录、游戏库、启动、好友和邀请
Epic Games通过 Heroic:登录、安装、云存档
RetroArchROM 文件夹、核心、BIOS 文件和游戏光盘
PlayStation 3RPCS3、软件包、光盘密钥和奖杯
桌面设置外观、显示器、电源、声音、网络、系统
操控手柄、键盘、鼠标、触控、屏幕键盘
指南和菜单应用切换、快捷设置、混合器、摇杆指针
桌面集成截图、共享、文件对话框、各种请求
更新来源、恢复和自定义更新提供者
架构源代码结构、Shell 协议、音频、玻璃
本地化语言、翻译目录和添加翻译
它是怎样构建的
两个程序,都用 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 光标主题也是如此。本网站是代码仓库的一部分,采用相同的许可证。