4 个版本 (重大变更)
使用旧的 Rust 2015
0.3.0 | 2023 年 8 月 6 日 |
---|---|
0.2.0 | 2023 年 4 月 28 日 |
0.1.0 | 2023 年 3 月 29 日 |
0.0.0 | 2023 年 3 月 12 日 |
#658 in GUI
1.5MB
47K SLoC
libui
Rust 的本机跨平台 UI 工具包
libui
是一个 简单、小巧 且 易于分发 的 GUI 库。它通过利用您的系统 API 而不是实现另一个外观不匹配的渲染器来为您的平台提供本机 UI。因此,所有 libui
应用程序都是轻量级的,具有本机外观和感觉,并且从高度优化的基础开始,该基础与每个平台上的生态系统良好集成。因为它仅实现了这些平台 API 的公共子集,所以您的应用程序将在所有平台上运行,并且不会出现重大行为不一致,无需您进行额外的工作。但是,如果您只计划支持一个平台,则专门的 crate 将提供更好的体验。
技术上,libui
是 C 库 libui-ng
的 "rustification" 包装器,该库实际上抽象了本机 GUI 框架。即 Windows 上的 Win32 API、Mac OS X 上的 Cocoa,以及 Linux 和其他平台上的 GTK3。
示例
使用以下方法将 libui
添加到 cargo.toml
的依赖项列表中:
libui = "0.3.0"
或使用仓库中的最新版本
libui = { git = "https://github.com/libui-rs/libui" }
接下来,我们建议您查看 示例应用程序 或从下面打印的简化示例开始
#![cfg_attr(not(test), windows_subsystem = "windows")]
#![cfg_attr(test, windows_subsystem = "console")]
extern crate libui;
use libui::controls::*;
use libui::prelude::*;
fn main() {
let ui = UI::init()
.expect("Couldn't initialize UI library");
let mut win = Window::new(&ui, "Example", 300, 200,
WindowType::NoMenubar);
let layout = VerticalBox::new();
// add controls to your layout here
win.set_child(layout);
win.show();
ui.main();
}
我们还在 docs.rs 上为所有已发布版本提供了文档。
屏幕截图
在左边可以看到一个在GNOME桌面(GTK 3)上运行的libui
应用程序。在右边是Windows 10下的本地用户界面。
更多截图,请参见此处
。
兼容性
libui
0.2.0可支持到2018版,并在以下系统上成功测试:
- Windows 7 SP1
- Windows 10 22H2
- Debian 12 w/ GNOME 43 & GTK 3.24
- macOS Big Sur 11.6
libui
0.3.0可支持到2021版,并在以下系统上成功测试:
- Debian 12 w/ GNOME 43 & GTK 3.24
- Windows 10 22H2
先决条件 & 构建
要构建底层libui-ng
,您的系统必须安装某些工具,除了Rust工具链。我将尽可能地减少不便。
Linux
- libgtk-3-dev(Debian软件包)- 用于编译
libui-ng
- libclang(Debian软件包)- 用于生成
libui-ng
绑定
Windows
- MSVC(通过Windows SDK或Visual Studio)
- LLVM - 用于生成
libui-ng
绑定
注意:MinGW-64可以编译和链接,但由于MinGW缺少TaskDialog()
,应用程序无法启动。据报道,版本≥5.X时,此功能可用。
致谢
实体 | 致谢 | 更多信息 |
---|---|---|
@pcwalton | 初始作者。在很大程度上塑造了这个库。 | pcwalton/libui-rs |
@NoraCodes和其他人 | 进一步开发和维护。 | rust-native-ui/libui-rs |
@tobia | libui::layout! 宏,以简化UI描述。 |
tobia/iui-builder |
@andlabs | libui 的C库作者。 |
andlabs/libui |
@szanni和@cody271 | libui-ng 的维护者。此包装器的基础库。 |
libui-ng/libui-ng |
依赖项
~0–3MB
~49K SLoC