| Crates.io | slint-backend-linuxfb |
| lib.rs | slint-backend-linuxfb |
| version | 0.1.1 |
| created_at | 2025-11-25 09:18:15.299905+00 |
| updated_at | 2025-12-03 08:05:32.35687+00 |
| description | A Slint platform backend for Linux Framebuffer (linuxfb) and evdev |
| homepage | |
| repository | https://github.com/foxxorcat/slint-backend-linuxfb |
| max_upload_size | |
| id | 1949464 |
| size | 192,308 |
这是一个为 Slint UI 工具包提供的 Linux Framebuffer 后端实现。
它允许你在没有 X11 或 Wayland 的嵌入式 Linux 系统上运行 Slint 应用程序,直接渲染到 /dev/fb0,并通过 evdev 读取触摸屏、鼠标和键盘输入。
也可以尝试使用官方的 linuxkms 后端, 不过需要追踪slint#10086
tracing 提供结构化日志。在你的 Cargo.toml 中添加依赖:
[dependencies]
slint = { version = "1.14.1", default-features = false, features = [
"compat-1-2",
"renderer-software",
] }
# 或你使用的版本
slint-backend-linuxfb = { version = "0.1.1" }
# 如果你需要查看日志,建议添加 tracing-subscriber
tracing-subscriber = "0.3"
为了确保键盘输入功能(依赖 xkbcommon)在目标设备上正常工作,目标主机必须包含 xkeyboard-config 数据文件。
你需要将开发机上的 XKB 数据文件复制到目标主机的对应目录中。
示例操作:
# 将本机的 /usr/share/X11/xkb 目录复制到目标主机
# 请根据实际情况修改 SSH 端口、IP 地址和路径
scp -r /usr/share/X11/xkb root@x.x.x.x:/usr/share/X11/xkb
最简单的使用方式是调用 init()。它会自动寻找 /dev/fb0,使用 /dev/tty1,并扫描所有输入设备。
fn main() -> Result<(), Box<dyn std::error::Error>> {
// 1. 初始化后端
slint_backend_linuxfb::init()?;
// 2. 你的 Slint 应用逻辑...
let main_window = MainWindow::new()?;
main_window.run()?;
Ok(())
}
如果你需要指定设备路径、过滤输入设备,可以使用 LinuxFbPlatformBuilder。
use slint_backend_linuxfb::LinuxFbPlatformBuilder;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// 初始化日志打印 (可选,但推荐用于调试)
tracing_subscriber::fmt::init();
// 配置平台
let platform = LinuxFbPlatformBuilder::new()
.with_framebuffer("/dev/fb1") // 指定显示设备
.with_tty("/dev/tty3") // 指定控制台终端
.with_input_autodiscovery(true) // 开启热插拔支持
.with_input_whitelist(vec![ // 仅加载特定的输入设备
"Goodix Capacitive TouchScreen".to_string(),
"My Keyboard".to_string()
])
// .with_input_blacklist(vec!["Mouse".to_string()]) // 或者排除某些设备
.build()?;
// 应用平台
i_slint_core::platform::set_platform(Box::new(platform))?;
// 运行 Slint 应用
// ...
Ok(())
}
除了代码配置,你也使用环境变量来覆盖默认行为(优先级:代码配置 > 环境变量 > 默认值)。
| 环境变量 | 描述 | 默认值 |
|---|---|---|
SLINT_FRAMEBUFFER |
Framebuffer 设备路径 | /dev/fb0 |
SLINT_TTY_DEVICE |
用于图形模式切换的 TTY 路径 | /dev/tty1 (失败则尝试 tty0) |
XKB_DEFAULT_RULES |
XKB 规则文件 | 系统默认 |
XKB_DEFAULT_MODEL |
键盘型号 (Model) | 系统默认 |
XKB_DEFAULT_LAYOUT |
键盘布局 (Layout, 逗号分隔) | 系统默认 |
XKB_DEFAULT_VARIANT |
布局变体 (Variant, 逗号分隔) | 系统默认 |
XKB_DEFAULT_OPTIONS |
额外选项 (Options, 逗号分隔) | 系统默认 |
MIT License