![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【WaylandBook】译文
文章平均质量分 91
夕月风
修身、齐家、治国、平天下...
展开
-
10 . XDG shell 深入探讨
到目前为止,我们已经成功地在顶级应用程序窗口中显示了一些内容,但XDG shell的功能远不止于此。即使是最简单的应用程序也应该正确地实现配置生命周期,而xdg-shell为更复杂的应用程序提供了有用的功能。xdg-shell功能的完整范围包括窗口大小、多窗口层次结构、客户端装饰和上下文菜单等窗口的语义定位的客户端/服务器协商。翻译 2023-12-16 21:52:05 · 235 阅读 · 0 评论 -
7. XDG shell 基础
XDG(跨桌面组)shell是Wayland的标准协议扩展,它描述了应用程序窗口的语义。它定义了两个wl_surface角色:“toplevel”,用于顶层应用程序窗口,以及“popup”,用于上下文菜单、下拉菜单、工具提示等顶级窗口的子项。将它们放在一起,您可以形成surface的树,顶级位于顶部,弹出窗口或额外的顶级位于叶子上。该协议还定义了一个定位器接口,用于帮助定位弹出窗口,并限制有关窗口周围事物的信息。xdg-shell作为协议扩展,不在wayland.xml中定义。翻译 2023-12-15 09:58:25 · 239 阅读 · 0 评论 -
6. Buffer和Surface
显然,这个系统的全部目的是向用户显示信息,并接收他们的反馈以进行额外的处理。在本章中,我们将探讨这些任务中的第一个:在屏幕上显示像素。为此,我们使用两个原始对象,即缓冲区和表面,它们分别由wl_buffer和wl_surface接口管理。缓冲区充当不透明容器,用于存储一些底层像素,并且客户端通过一系列方法提供这些缓冲区 - 最常见的是共享内存缓冲区和GPU句柄。翻译 2023-12-15 09:57:15 · 142 阅读 · 0 评论 -
2. Wayland协议设计
Wayland协议是由几层抽象构建的。它从基本的线路协议格式开始,这是一种可解码的消息流,使用事先商定的接口。然后我们有更高级的程序来列举接口,创建符合这些接口的资源,并交换有关它们的消息-Wayland协议及其扩展。在此之上,我们有一些更广泛的模式,这些模式在Wayland协议设计中经常使用。我们将在本章中介绍所有这些。让我们从下到上开始工作吧。翻译 2023-12-12 11:03:37 · 91 阅读 · 0 评论 -
1.Wayland介绍
Wayland是Unix类系统的下一代显示服务器,由可敬的Xorg-Server的校友设计和建造,是将您的应用程序窗口放到用户屏幕上的最佳方式。过去使用过X11的读者将会对Wayland的改进感到惊喜,而那些在Unix上进行图形处理的新手将会发现它是一个构建图形应用程序和桌面的灵活且强大的系统。这本书将帮助您对Wayland的概念、设计和实现有一个坚实的基础,并为您提供构建自己的Wayland客户端和服务端应用程序的工具。在您的阅读过程中,我们将建立一个对Wayland的心理模型,并建立其设计的理由。翻译 2023-12-12 11:00:33 · 184 阅读 · 0 评论 -
5. 全局对象和注册器
如果你记得第2.1章,每个请求和事件都与一个对象ID相关联,但到目前为止,我们还没有讨论对象是如何创建的。当我们收到Wayland消息时,我们必须知道对象ID代表什么接口才能解码它。我们还必须以某种方式协商可用的对象、创建新对象以及将ID分配给它们。在Wayland中,我们同时解决了这两个问题——当我们绑定一个对象ID时,我们在所有未来的消息中同意它所使用的接口,并将对象ID到接口的映射存储在我们的本地状态中。为了引导这些,服务器提供了一个全局对象的列表。翻译 2023-12-04 11:43:36 · 74 阅读 · 0 评论 -
4. Wayland中的display
现在,我们忽略了Wayland协议如何管理客户端和服务器之间对象的共同所有权的一个重要细节:这些对象是如何创建的。Wayland显示或wl_display在每个Wayland连接上隐式存在。对于普通Wayland用户来说,这些中最有趣的是get_registry,我们将在下一章中详细讨论它。简而言之,注册表用于分配其他对象。接口的其余部分用于维护连接,除非您正在编写自己的libwayland替代品,否则它们通常不重要。翻译 2023-12-01 14:28:09 · 350 阅读 · 0 评论 -
3. Wayland库的实现
我们在1.3章简单介绍过Wayland库——这是最流行的Wayland实现。本书的大部分内容适用于任何实现,但我们将用接下来的两章来让您熟悉这一实现。Wayland软件包包括用于wayland-client和wayland-server的pkg-config规范——请查阅您的构建系统文档以了解如何链接它们。当然,大多数应用程序只会链接到其中一个。该库包括一些简单的原语(例如链表)和预先编译的wayland.xml版本——这是核心的Wayland协议。我们将从介绍原语开始。翻译 2023-11-29 11:31:14 · 303 阅读 · 0 评论