1 个不稳定版本

使用旧的 Rust 2015

0.0.0 2017 年 10 月 18 日

#cross-platform-gui 中排名 #130

MIT/Apache

2KB

Limn

Build Status Build status

文档

警告:主要在 X11 上进行了测试,存在严重错误,所有 API 都可能发生变化。代码文档不足,属于原型质量,你可能不想使用这个(目前)。

一个早期阶段、实验性、跨平台的 GUI 库,用 Rust 编写。

Limn 使用 webrender 进行渲染,cassowary 进行布局,以及 winit/glutin 进行窗口处理。

动机

通过提供一个相对低级、高性能的库来构建 GUI,以改善 Rust 的 GUI 编程状态,重点关注可组合性、可扩展性和最小模板。

Limn 希望有一个相对较小、易于学习的核心 API 来定义组件,旨在像 DOM 一样,但具有更少的隐式成本。因此,Limn 在核心上实现为保留的、可变的部件树,而不是将 UI 状态建模为应用程序状态的功能,这最终可以在上面实现,具有差异化和类似虚拟 DOM 的树表示。

长期目标是使能够在单个应用程序中使用用多种范式和多种语言编写的组件,并使用公共 API。例如,您可以在可能的情况下使用编译的 Rust 优化原始组件,同时使用具有函数组件定义(JSX)的解释语言,或者仅用于顶级组件或原型设计。

然而,目前重点在于使核心(布局、样式等)稳定、性能良好和可靠。

Limn 还希望通过在可能的情况下提供功能作为单独的 crate,来填补 Rust GUI 生态系统的某些空白,以便它们最终可以(最终)对其他 GUI 库、框架或应用程序(无论是否使用 limn)有用。目前这些包括 limn-layoutlimn-text-layout

屏幕截图

screenshot

在 NixOS 下运行示例

Winit 在运行时需要 X11 库。要在 NixOS 上获取它们,您可以创建一个包含以下内容的 default.nix 文件

with import <nixpkgs> {}; {
  cargoEnv = stdenv.mkDerivation {
    name = "limn";
    shellHook = with xorg; ''
      export LD_LIBRARY_PATH=/run/opengl-driver/lib/:${lib.makeLibraryPath (with xorg; [libX11 libXcursor libXxf86vm libXi libXrandr xinput zlib])}
    '';
  };
}

然后,运行示例应该可以正常工作

$ nix-shell --run bash
$ cargo run --release --example crud

许可证

根据您的要求,许可方式如下

贡献

除非您明确声明,否则根据Apache-2.0许可证定义的您有意提交以包含在作品中的任何贡献,都应双许可如上,无需任何额外条款或条件。

无运行时依赖