阿尼樱奈奈
2023-05-19 07:44 Moderator
感谢分享关于Wayland的知识。
Reply Like 0 View the author
感谢分享关于Wayland的知识。
学习了
非常赞。可以收录到 wiki.deepin.org
板板,辛苦了~
感谢 @berners 对文章的翻译。像了解更多在Wayland中图形组件运行的情况也可以参考ArchWiki
英文版:https://wiki.archlinux.org/title/Wayland#GUI_libraries
中文版:https://wiki.archlinuxcn.org/wiki/Wayland#%E5%9B%BE%E5%BD%A2%E5%BA%93
鉴于大家对Wayland比较关心,国内外的相关资料都比较少,我先尝试翻译一下官网文章,方便大家学习。只涉及一些比较基本的概念,不会特别深入。这个是第一篇,之后会再陆续翻译其他文章。敬请期待。如果大家有想更早看到的内容,可以在楼下直接提出,我会调整一下更新顺序。
本文以意译为主,主要为了让大家能看明白,不会做到每个字词在原文中都有对应。链接后面写「原文」的是我不打算翻译的内容,放上原文链接;「待翻译」的是我将来会发帖翻译,暂时放上原文链接,等翻译完成后会替换成翻译后的链接;「已翻译」的是翻译完工的链接,也会发在deepin论坛上,点进去可以阅读。
本文为Wayland项目主页的文章。原文链接:https://wayland.freedesktop.org/
Wayland
Wayland是「X11窗口系统」协议和架构的替代,目标是更易于开发、扩展和维护。
Wayland是应用程序与显示服务器对话的语言(也可以叫「协议」),来让他们能显示在屏幕上,以及接收用户的输入。Wayland的服务器(server)我们称他为「合成器」(compositor),各种应用程序作为Wayland的客户端(clients)。
我们也会把Wayland当作一种系统架构。合成器和应用程序之间并不是单纯的「服务器-客户端」结构(译注:通常简称为「C/S结构」)。X11协议中有一个统一的服务器「Xorg」,但是Wayland不是这样,每个图形桌面环境都能推出他们自己的Wayland合成器。窗口管理和用户体验就得让各个合成器来负责,而没法再依赖那些各个桌面环境中通用的组件。
Wayland架构中的一个核心部件是libwayland,他是一个进程间交互的库,来把XML语言定义的协议转换成的C语言的API(译注:虽然听起来有点玄幻,但是确实是这样的)。这个库不是Wayland的真身,他仅仅是来编码和解码Wayland中传递的消息。实现Wayland的是各种合成器和创造应用程序的基础工具(toolkit)。
Wayland不会限制使用形式和方式。一个Wayland合成器可能是一个独立的显示服务器,使用Linux内核的KMS和evdev协议的输入设备运行,或者用在其他操作系统。Wayland合成器也可能本身作为X11的客户端,或者自己就是一个Wayland应用程序(客户端),我们称为「嵌套的合成器」(nested compositor)。Wayland甚至能用在应用程序内部的通信,如同一些网页浏览器的设计。
Wayland工程还有一部分是一个Wayland合成器的参考案例,名为Weston。Weston能作为X的客户端或者直接使用Linux KMS运行,附带一些Wayland客户端的演示程序。Weston合成器是一个小巧快速的合成器,适合实用到各种嵌入式设备和移动设备中。
资料:
软件:
开发:(译注:这部分都不翻译,请看原文。)