树莓派编译安装sway

我在 树莓派Raspberry Pi 400 上尝试构建轻量级的桌面系统 sway - i3兼容Wayland compositor 。由于Raspberry Pi OS没有提供直接执行的软件包,所以从源代码安装编译。从源代码编译 sway 需要安装2个组件:

  • wlroots: 基础协议软件,也是很多平铺窗口管理器使用wayland所依赖的组件

  • sway: 窗口管理器

编译wlroots

依赖

  • 安装基础工具:

    sudo apt install build-essential
    sudo apt install git
    sudo apt install python3-pip
    

Meson

wlroots需要使用最新的meson:

pip install --user meson

注意提示:

Installing collected packages: meson
  The script meson is installed in '/home/huatai/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.

所以需要修改 ~/.bashrc 添加以下配置:

export PATH=$HOME/.local/bin:$PATH

然后执行刷新:

source ~/.bashrc
  • 直接安装wlroots依赖软件包:

    sudo apt install wayland-protocols \
    libwayland-dev \
    libegl1-mesa-dev \
    libgles2-mesa-dev \
    libdrm-dev \
    libgbm-dev \
    libinput-dev \
    libxkbcommon-dev \
    libgudev-1.0-dev \
    libpixman-1-dev \
    libsystemd-dev \
    cmake \
    libpng-dev \
    libavutil-dev \
    libavcodec-dev \
    libavformat-dev \
    ninja-build \
    meson
    
  • 以下安装的软件包是可选的,用于支持X11,如果你使用完全wayland安装则不需要。我为了能兼容X11,也安装了以下软件包:

    sudo apt install libxcb-composite0-dev \
         libxcb-icccm4-dev \
         libxcb-image0-dev \
         libxcb-render0-dev \
         libxcb-xfixes0-dev \
         libxkbcommon-dev \
         libxcb-xinput-dev \
         libx11-xcb-dev
    

编译和安装

  • clone软件代码仓库:

    mkdir ~/sway-build
    cd ~/sway-build
    git clone https://github.com/swaywm/wlroots.git
    cd wlroots
    git checkout 0.12.0
    
  • 编译:

    meson build
    

这里在 树莓派Raspberry Pi 400 上会出现wayland版本过低报错:

Found pkg-config: /usr/bin/pkg-config (0.29)
Dependency wayland-server found: NO found 1.16.0 but need: '>=1.18'
Found CMake: /usr/bin/cmake (3.16.3)
Run-time dependency wayland-server found: NO (tried cmake)

meson.build:99:0: ERROR: Invalid version of dependency, need 'wayland-server' ['>=1.18'] found '1.16.0'.
  • 为解决sway的wayland版本要求, 在 树莓派编译wayland

  • 首先卸载刚才安装的系统提供的wayland:

    sudo apt remove wayland-protocols libwayland-dev
    sudo apt autoremove
    

备注

这里不能全部卸载所有 wayland 组件,会导致其他常用的大量应用软件卸载

wayland官方文档提供了 Building Weston 文档,不过比较方便是使用 Wayland Build Tools ,可以自动完成标准的Wayland编译和安装,并且可以自动下载和编译很多所需的上游组件:

  • clone出 wayland-build-tools

    apt-get install -y git
    git clone git://anongit.freedesktop.org/wayland/wayland-build-tools
    

参考