Shell 扩展 -Qt Wayland Compositor
在 Wayland 中,Shell扩展是提供表面语义的组件。这意味着它们为服务器和客户端就表面进行通信提供了途径。在此语境下,表面通常也被称为“窗口”,这通常是指合成器中对该表面的呈现。
Shell 扩展为客户端和服务器之间就某些事项进行通信提供了工具:
- 它们可以提供一种机制,让客户端向服务器说明一个画面的用途:例如,它是工具提示、弹出菜单,还是普通应用程序窗口?基于此,服务器可以决定窗口的几何尺寸以及用户如何与之交互。
- 它们还可以提供用于操作表面的协议,例如调整大小、移动和隐藏等。
与其他扩展一样,通过将壳扩展实例化为WaylandCompositor 顶级对象的直接子节点,即可在合成器中添加对壳扩展的支持。Qt支持的壳扩展包括:
- XdgShell 是适用于桌面式系统的合适外壳,在该系统中,任意数量的应用程序均可连接,且用户可以手动调整窗口大小并重新定位窗口。
- IviApplication 是一种极简协议,最初旨在用于 In-Vehicle Infotainment(IVI)系统。它适用于嵌入式系统,在该类系统中,预定义的一组应用程序可以运行,且通常具有预先分配的屏幕区域。有关此协议的更多详细信息,请参阅IVI 合成器示例。
- QtShell 是专为 Qt 应用程序设计的专用 shell,支持 Qt 中提供的窗口管理功能。它适用于以下平台:合成器和客户端应用程序均由 Qt 编写,且可确保应用程序不会滥用手动窗口定位和“置前”等功能。
- WlShell 主要用于与第三方应用程序的兼容性。这也是一种桌面风格的 Shell,但现已弃用,并被XdgShell 取代。
在从底层开始设计嵌入式系统时,并没有规定必须使用哪种 shell 扩展。通常会选择XdgShell 或IviApplication 。该决策应根据系统所需的功能,以及是否涉及非 Qt 编写的、具有自身要求的应用程序来决定。
一个Qt Wayland Compositor 还可以同时支持多个 shell 扩展。请参阅Minimal QML 示例,其中支持上述所有三个 shell 扩展。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.