通用Linux操作系统显示服务协议,经过近30年的发展,正处于从X11到Wayland的技术换代阶段,当前基于Wayland协议的合成器虽取得了一定成果,但依然存在功能不完善、安全性弱、代码架构复杂、升级困难等问题。
为此,由openKylin社区理事长单位麒麟软件旗下多媒体技术团队成立的Wayland SIG组,经过深入调查与技术研究,研发了kylin-wayland-compositor(以下简称wlcom)。wlcom合成器的成功研发,实现了操作系统图形栈底层核心子系统的进一步突破。
一、wlcom架构简介
wlcom是一款基于wlroots的Wayland合成器,以实现高性能、高安全、易维护为目标,具有渲染性能高、安全性高、生态兼容好、功能可灵活定制、第三方依赖少等技术特性。其基本架构如下图所示:
此次开源主要涉及外部插件接口库、功能框架接口库、输入管理插件、特效插件、窗口管理插件、图像渲染合成插件等代码。
二、wlcom特性介绍
wlcom是openKylin 2.0的默认Wayland合成器,与kwin合成器相比,其主要特性提升如下:
01图形渲染提升
优化渲染流程,过滤不可见surface,删除damage重复区域,减少渲染次数,并采用混合渲染方式对窗口装饰及多个damage进行批量渲染,提高渲染效率与渲染性能。如同时运行100个终端程序,CPU使用率wlcom比kwin明显降低。
02安全加固提升
新增Wayland下防截屏安全协议,支持用户指定窗口防截屏及全屏防截屏,实现对截图内容、区域进行管控,对敏感数据强化保护,并提供Qt下防截屏设置接口,方便第三方软件使用等,同时新增水印功能,满足多领域的场景安全需求。
03生态兼容提升
目前国内主流应用还处于由X显示框架向Wayland显示框架切换的过渡阶段,特殊X接口转换的缺失,导致X应用部分功能异常,自研X兼容增强插件,通过桥接转换协议打通特殊X接口到合成器通路,实现X应用广泛兼容。
04交互体验提升
对输入输出等功能进行了细化和增强,新增了多个快捷键、支持应用混合缩放等功能,并构建特效合成框架,统一特效与图形合成接口,新增特效种类、优化特效呈现。
05 功能扩展提升
通过整体设计架构改造,解耦系统关联组件,实现插件式框架结构,全插件式管理,支持功能组件定制灵活、实现更高效。
06 维护易用提升
摒弃现有开发框架,既不依赖KDE、GNOME等成熟桌面环境,也不依赖QT、GTK等UI工具包,仅依赖pixman、libdrm等基础库,解决现有合成器组件相互依赖所导致的升级维护困难问题,实现灵活升级。
三、wlcom场景展示
1.窗口圆角:组件窗口具有圆角特效
2.多窗口堆叠排列:多窗口一次按区域进行有规则堆叠排列
3.窗口毛玻璃:窗口透明区域具有毛玻璃模糊特效
四、wlcom代码仓库地址
代码仓库地址:
https://gitee.com/openkylin/kylin-wayland-compositor
运行时需要使用的库或程序:
● wlroots, wayland, libinput, xkbcommon
● libseat, libdrm, libsystemd, librsvg-2.0
● cairo, pango, pangocairo, pixman-1
● gbm, json-c, libudev
● xwayland, xcb (optional)
依赖安装可通过apt进行(配置了deb-src源)
apt build-dep kylin-wayland-compositor
编译选项见meson_options.txt,简单的编译指令:
meson setup build -Dbuildtype=debugoptimized
ninja -C build
meson install -C build --skip-subprojects
程序参数如下:
"Usage: kylin-wlcom [options] [command]"
" -h, --help Show help message and quit.\n"
" -d, --debug Enables full logging, including debug information.\n"
" -D, --debug <options> noxwayland or logtostdout.\n"
" -s, --session <process> Run session on startup\n"
" -v, --version Show the version number and quit.\n"
" -V, --verbose Enables more verbose logging.\n"
通过-D参数可以方便运行时调试, 支持参数如下:
-Dnoxwayland 关闭xwayland支持
-Dlogtostdout 将日志打印到stdout
-Dloginmtime 使用monotonic time输出日志
默认情况下,日志打印到文件$HOME/.log/kylin-wlcom.log。
五、关于Wayland SIG
openKylin Wayland SIG小组由社区理事长单位麒麟软件发起成立,致力于新一代图形显示服务器相关技术研究,包括Wayland合成器、X兼容等,提供Wayland相关软件包的技术规划、设计、开发、维护和升级服务,共同推动新一代图形服务器技术发展及落地。
-
邮件列表:
wayland@lists.openKylin.top
-
SIG主页:
https://gitee.com/openKylin/community/tree/master/sig/Wayland