Wayland入门教程08.02:运行测试程序
系列索引地址:Wayland入门教程索引
先运行一下看看实际运行效果
先准备一个Linux环境,我的是Ubuntu 20.04.2 LTS。
Wayland under X
Weston是Wayland提供的示例程序。
Ubuntu下安装:
1 |
|
效果为:
独立运行
将环境切换到tty2,或者其他的tty。
一般Ctrl+Alt+F[1-7]表示切换到tty[1-7]。
然后执行
1 |
|
效果为:
这时左上角的按钮可以使用了,点击后会出现新终端界面。
可以看到weston实现了一个完整的桌面,而桌面中可以打开软件(普通系统状态下默认的终端)。
本系列就是探索和实现Weston的所有可能的功能,最后会试探着实现桌面级的窗口管理器(好像窗口管理器就是桌面级的)。
编译运行
本系列文章会逐步实现Weston的功能,为了方便调试,需要了解如何编译运行,以便边开发边查看开发效果。
此部分译自:https://wayland.freedesktop.org/building.html
大多数主要的Linux发行版现在在其包管理系统中包括Wayland和Weston的版本。
您也可以自己手动构建。下面的说明是作为指南提供,但需要适应您正在使用的Linux系统。下面的说明假设我们对git、pkg-config、meson以及构建和运行实验软件有些熟悉。
Wayland是用meson建造的。如有必要,最新的weston可以以用户安装:
1 |
|
Pip3将meson安装在~/.local/
,因此如果还没有添加就需要将~/.local/bin
添加到PATH环境变量中。
硬件/驱动
X输出需要DRI2。X之外的输出需要使用页面翻转ioctl的DRM和内核模式设置(KMS)。所有开源驱动程序都支持这些功能。
设置环境变量
安装到自定义位置
如果不想安装系统范围内的安装,则需要设置以下环境变量,以便适当地链接各种库:
1 |
|
不要将LD_LIBRARY_PATH设置为默认值,它会搞破坏。
您可以将上述内容放在一个脚本中,并在您希望构建的终端中获取软件包。
安装到系统目录
要安装到系统范围内,您需要以不同的方式设置WLD,向每个meson调用添加一些开关,并在安装步骤中使用子组件。根据您的分发和架构选择列表目录(可以是/usr/lib32或/usr/lib64)。
1 |
|
Wayland库
这是必需的,以能够编译meson与wayland EGL平台。
1 |
|
- 您可以使用-Ddocumentation=false避免Doxgen依赖关系。
- 在Arch Linux下,在构建文档时将需要DocBook依赖关系。这些文件包括文档本xml和文档本xsl。
Wayland协议
这包含了一组添加Wayland核心协议中不可用的功能的协议。
1 |
|
Mesa
Mesa EGL和Mesa Vulkan堆栈支持Wayland。Weston的硬件加速(gl-renderer)依赖于EGL GBM平台。许多Wayland应用程序,包括一些Weston demos,依赖于EGL Wayland平台。
有关编译Mesa,请参阅上游建造说明。当配置Mesa以充分利用Weston时,请确保启用了OpenGL ES2和GBM,并且包含wayland的EGL平台。
如果您计划编译XWayland,您可能需要安装它现在需要的任何依赖项。因此,Mesa使用了与xwayland相同的头文件。
libinput
Libinput将evdev事件转化为Wayland事件。它已经从Weston分离出来,以便代码可以被Linux上的任何Wayland合成器重用。前往libinput docs,以获取关于如何编译它的说明。
Weston和示例程序
Weston是一个Wayland合成器的参考实现。它可以在Wayland仓库中找到,并带有一些演示应用程序。
Weston的Meson构建不进行自动检测,它默认启用了所有功能,这意味着您可能在第一次尝试时丢失了依赖项。如果可以通过构建选项避免依赖项,则错误消息应该告诉您可以使用什么选项来避免它。如果要避免某些依赖项,则可能需要禁用多个特性。
1 |
|
meson命令将填充build目录。此步骤可能会由于缺少依赖项而失败。您想要的任何构建选项都可以添加到这一行上,例如meson build/ -prefix=$WLD -Dsimple-dmabuf-drm=intel
。所有的构建选项都可以在文件meson_options.txt中找到。
一旦成功填充了构建目录,您就可以使用meson configure build/
来检查配置。如果您需要更改一个选项,您可以这样做,例如meson configure build/ -Dsimple-dmabuf-drm=intel
。
运行Weston
Weston在所需的环境变量$XDG_RUNTIME_DIR指定的目录中创建其unix套接字文件(例如,wayland-0)。客户端使用相同的变量来找到该套接字。这是由一些发行版(Fedora,Arch自2012年6月或Exherbo)提供的。Ubuntu开始在Quantal版中提供它。Gentoo不提供。
如果$XDG_RUNTIME_DIR没有自动为您设置,您可以设置rundird或pam_rundir。
可选地,复制weston.ini文件并编辑它,以设置您喜欢的背景图像:
1 |
|
如果设置了$DISPLAY,那么Weston将在一个窗口中的X下运行,并从X中获取输入。通过输入以下方式运行合成器:
1 |
|
否则(在X之外),它将在KMS/DRM框架缓冲区上运行,并从evdev设备中获取输入。
如果登录不可用,直接运行Weston将无效。在这种情况下,将需要一个权限助手,weston-launch。它需要setuid-root。
要运行客户端,顶部栏中的第二个按钮将运行weston-terminal,您可以从那里运行客户端。当在硬件上运行时,也可以从不同的VT运行客户端,或者如果在X下运行,则可以从xterm运行客户端。在韦斯顿构建目录中有一些演示客户端可用,但它们都非常简单,主要用于测试wayland协议中的特定特性:
- “weston-terminal” 是一个简单的终端模拟器,不是很兼容但工作得足够好的bash
- “weston-flower” 在屏幕上画了一朵花,测试框架协议
- “weston-gears” wayland的glxgears
- “weston-smoke” 测试SHM缓冲区共享
- “weston-image” 加载在命令行上传递的图像文件并显示它们
- “weston-view” 对pdf文件也有同样的作用
- “weston-resizor” 显示窗口大小(使用上下键)
- “weston-eventdemo” 报告libtoytoolkit的事件到控制台(参见weston-eventdemo --help)
可选的环境变量,这将为您获得更多的调试输出:
1 |
|