#wayland-compositor #窗口 #wayland #合成器

nightly fireplace_lib

模块化Wayland窗口管理器库

9个稳定版本

使用旧Rust 2015

3.0.2 2017年3月2日
3.0.1 2017年2月21日
2.0.1 2017年2月19日
1.0.3 2017年2月15日

#16 in #合成器

MIT 许可证

280KB
6K SLoC

Fireplace 构建状态 Crates.io Crates.io 代码行数

谁想在老年时取暖,就必须在年轻时建一个壁炉。

模块化Wayland窗口管理器

壁炉库

本文件夹是关于基于本库提供的功能创建自己的窗口管理器/wayland合成器的模块化壁炉库。

有关实际参考窗口管理器"壁炉"的信息,请访问此处

文档

文档托管在GitHub pages上,因为需要特殊的构建参数 - 查看"用法" - 这使得无法在docs.rs上构建

用法

在你的Cargo.toml

fireplace_lib = "^1.0.0"

fireplace_lib提供多个功能,默认都启用

  • static - 编译wlc并静态链接
  • render - 启用所有渲染
  • gl - 意味着render,提供OpenGL ES渲染的功能
  • graphics - 意味着rendergl,提供使用piston2d-graphics渲染的功能
  • conrod_ui - 意味着renderglgraphics,提供使用conrod渲染的功能

例如,仅使用gl

fireplace_lib = { version = "^1.0.0", default-features = false, features = ["gl"] }

构建

运行时和构建依赖项

  • wlc(不使用static
  • pixman
  • wayland 1.7+
  • wayland-protocols 1.7+
  • libxkbcommon
  • udev
  • libinput
  • libx11 (X11-xcb, Xfixes)
  • libxcb (xcb-ewmh, xcb-composite, xcb-xkb, xcb-image, xcb-xfixes)
  • libgbm (通常由大多数发行版的mesa提供)
  • libdrm
  • libEGL (由GPU驱动程序和mesa提供)
  • libGLESv2 (由GPU驱动程序和mesa提供)
  • libfontconfig1 (具有特性 ui)
  • libfreetype6 (具有特性 ui)

可选

  • dbus (用于logind支持)
  • systemd (用于logind支持)

构建依赖项

  • fontconfig (具有特性 ui)
  • libclang (>=3.8)

如果您在/usr/lib之外的路径中安装了libclang,则在构建二进制文件时必须提供它

LIBCLANG_PATH=/usr/lib64 cargo build --release

请参阅https://github.com/KyleMayes/clang-sys#environment-variables

示例

初始化所有 fireplace_lib 功能的最基本示例保存在fireplace_flavors/code

贡献

只要它们可以通过实现Deserialize的struct轻松配置,我会很高兴接受新的功能或错误修复

  • 通过serde
  • 如果它显著增加了编译时间,并且/或者不太可能被大量用户使用,则将其拆分为单独的feature
  • 除了有良好解释的例外之外,通过cargo clippy通过
  • 使用rustfmt格式化,并使用存储库根目录中的配置
  • 大致遵循现有代码的设计

如果您不确定您的贡献是否符合这些规则,请打开一个issue或pull request,让我们讨论这个问题。

请注意,您可以通过创建另一个rust库crate轻松地将个人更改保留在树外,该crate可以包含在其他分支中,如果您仍然想将其提供给公众,或者如果您只想将您的代码直接添加到您个人的二进制文件中。

这样,您永远不需要首先修改fireplace_lib,您可以更轻松地维护您的分支,同时仍然保持最新功能。

依赖关系

~5–10MB
~170K SLoC