XWayland开发入门系列4:XServer

系列索引地址:X11/Wayland开发入门系列教程索引

上一篇:XWayland开发入门系列3:Wayland架构

本文译自:XServer

Wayland下X clients(XWayland)

Wayland本身是一个完整的窗口系统,但即便如此,如果我们要从X迁移,有一个良好的向后兼容性故事是有意义的。只要有一些更改,Xorg服务器就可以被修改为使用wayland输入设备进行输入,并将根窗口或单个顶级窗口作为wayland表面进行转发。服务器仍然运行相同的2D驱动程序,并具有与本地运行时相同的加速代码。主要的区别是wayland处理窗口的表示,而不是KMS。

x-on-wayland

编译XWayland

查看编译XWayland

libepoxy

XWayland服务端依赖libepoxy

1
2
3
4
5
git clone https://github.com/anholt/libepoxy.git
cd libepoxy
./autogen.sh --prefix=$WLD
make && make install
cd ..

X Server

XWayland支持已于2014年4月4日并入主X.Org分支,并与xserver1.16一起首次发布。已经不再需要单独的X.Org video ddxes了。有了这个配置,将只安装Xwayland二进制文件和少数其他文件:

1
2
3
4
5
6
7
git clone git://anongit.freedesktop.org/xorg/xserver
cd xserver
./autogen.sh --prefix=$WLD --disable-docs --disable-devel-docs \
--enable-xwayland --disable-xorg --disable-xvfb --disable-xnest \
--disable-xquartz --disable-xwin
make && make install
cd ..
  • 可以从git://anongit.freedesktop.org/xorg/proto/*proto找到glproto,xproto等等
  • libxtrans在git://anongit.freedesktop.org/xorg/lib/libxtrans
  • libxkbfile在git://anongit.freedesktop.org/xorg/lib/libxkbfile

路径

没有这个,您将得到错误“XKB:Failed to compile keymap”。Weston使用xconfig-keyboard来查找这些文件,但XServer需要这些链接:

1
2
3
mkdir -p $WLD/share/X11/xkb/rules
ln -s /usr/share/X11/xkb/rules/evdev $WLD/share/X11/xkb/rules/
ln -s /usr/bin/xkbcomp $WLD/bin/

weston.ini

将下文添加到~/.config/weston.ini(或者使用–xwayland命令行参数)

1
2
[core]
xwayland=true

如果weston的xwayland的默认搜索路径不正确,您需要通过weston编译选项xwayland-path或将其添加到~/.config/weston.ini来修复它:

1
2
[xwayland]
path=/path/to/bin/Xwayland

运行

按照Wayland编译指导在X下运行Weston,或者运行weston-launch在KMS/DRM/X外。

Weston日志输出将包括“xserver listening on display :1”。在Weston终端内,你会发现$DISPLAY已经设置。运行任何X客户端。

Weston侦听X套接字,直到客户端尝试连接,然后启动X服务器。

下一篇:XWayland开发入门系列5:调试工具