waylib 是一个 Wayland 合成器开发库,基于 qwlroots 开发,提供 Qt 风格的开发接口。其设计目标是与 QtQuick 深度结合,利用 QtQuick 的 Scene Graphics 模型,以简化窗口管理的复杂度。在 waylib 中,一个 QQuickWindow 上可以被附加一个或多个 Wayland Output,一个 QQuickItem 上会附加一个对应的 Wanyland Surface,可将其与 QtQuick 的图形组件混合使用,并且支持 QRHI,只需要一份代码即可兼容 OpenGL 和 Vulkan。
使用 waylib 可以简单并高效的创建一个 Wayland 合成器,其在 wlroots 之上,提供了:
基于以上功能,合成器开发者只需聚焦于窗口管理的业务需求,可以像实现一个普通的应用程序那样开发窗口合成器。
步骤一:编译安装 wlroots 和 qwlroots
waylib 需要安装开发版本(0.17)的 wlroots, 需要自行编译安装, Archlinux 用户可以安装 aur 提供的 wlroots-git。
qwlroot 目前推荐使用 submodule 提供的版本,当然也可以自行编译安装。 如果使用 submodule 的版本,注意以下 2 点:
git clone git@github.com:vioken/waylib.git --recursive
步骤二:安装其他依赖
Debian
# apt install pkg-config qt6-base-private-dev qt6-base-dev-tools qt6-declarative-private-dev wayland-protocols libpixman-1-dev
Archlinux
# pacman -Syu --noconfirm qt6-base qt6-declarative cmake pkgconfig pixman wayland-protocols ninja
NixOS
推荐使用 nix-direnv 管理依赖,也可以使用 nix develop
命令进入构建环境。
使用 nix build -v -L
可以完成打包构建。
步骤三:运行以下命令
cmake -B build -DWITH_SUBMODULE_QWLROOTS=ON
cmake --build build
此项目默认您已经拥有 Qt
和 wlroots
库的使用经验,为了能更好的融合 Qt 和 wlroots,waylib 在接口风格上遵守Qt的相关规范,在底层的设计理念上遵守 wlroots 的模块化设计,上层与 wlroots 无直接关联的部分则遵守Qt的封装+分层的设计。
在遵守 waylib 的设计理念和以下几类要求的前提下,您可以自由地向此项目提交任意的代码贡献。
git clone
拉取fork之后的项目git push
推送到您的项目中此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。