NEWS

新闻

了解openKylin最新资讯,关注社区和产品动态。

NEWS

Learn about the latest news.

openKylin wlcom正式开源!Wayland显示合成器革新之作

2024-08-14 09:29:22

通用Linux操作系统显示服务协议,经过近30年的发展,正处于从X11到Wayland的技术换代阶段,当前基于Wayland协议的合成器虽取得了一定成果,但依然存在功能不完善、安全性弱、代码架构复杂、升级困难等问题。

openKylin(开放麒麟)

为此,由openKylin社区理事长单位麒麟软件旗下多媒体技术团队成立的Wayland SIG组,经过深入调查与技术研究,研发了kylin-wayland-compositor(以下简称wlcom)。wlcom合成器的成功研发,实现了操作系统图形栈底层核心子系统的进一步突破。



一、wlcom架构简介


wlcom是一款基于wlroots的Wayland合成器,以实现高性能、高安全、易维护为目标,具有渲染性能高、安全性高、生态兼容好、功能可灵活定制、第三方依赖少等技术特性。其基本架构如下图所示:

openKylin(开放麒麟)
此次开源主要涉及外部插件接口库、功能框架接口库、输入管理插件、特效插件、窗口管理插件、图像渲染合成插件等代码。



二、wlcom特性介绍


wlcom是openKylin 2.0的默认Wayland合成器,与kwin合成器相比,其主要特性提升如下:


01图形渲染提升

优化渲染流程,过滤不可见surface,删除damage重复区域,减少渲染次数,并采用混合渲染方式对窗口装饰及多个damage进行批量渲染,提高渲染效率与渲染性能。如同时运行100个终端程序,CPU使用率wlcom比kwin明显降低。

openKylin(开放麒麟)

02安全加固提升

新增Wayland下防截屏安全协议,支持用户指定窗口防截屏及全屏防截屏,实现对截图内容、区域进行管控,对敏感数据强化保护,并提供Qt下防截屏设置接口,方便第三方软件使用等,同时新增水印功能,满足多领域的场景安全需求。

03生态兼容提升

目前国内主流应用还处于由X显示框架向Wayland显示框架切换的过渡阶段,特殊X接口转换的缺失,导致X应用部分功能异常,自研X兼容增强插件,通过桥接转换协议打通特殊X接口到合成器通路,实现X应用广泛兼容。

04交互体验提升

对输入输出等功能进行了细化和增强,新增了多个快捷键、支持应用混合缩放等功能,并构建特效合成框架,统一特效与图形合成接口,新增特效种类、优化特效呈现。

05 功能扩展提升

通过整体设计架构改造,解耦系统关联组件,实现插件式框架结构,全插件式管理,支持功能组件定制灵活、实现更高效。

06 维护易用提升

摒弃现有开发框架,既不依赖KDE、GNOME等成熟桌面环境,也不依赖QT、GTK等UI工具包,仅依赖pixman、libdrm等基础库,解决现有合成器组件相互依赖所导致的升级维护困难问题,实现灵活升级。


三、wlcom场景展示



1.窗口圆角:组件窗口具有圆角特效
openKylin(开放麒麟)
2.多窗口堆叠排列:多窗口一次按区域进行有规则堆叠排列

openKylin(开放麒麟)

3.窗口毛玻璃:窗口透明区域具有毛玻璃模糊特效

openKylin(开放麒麟)



四、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=debugoptimizedninja -C buildmeson 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