CI: add sway compositor to CI tests, to prepare for better Wayland testing

closes: #17162

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index fc6cd96..cdc0562 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -29,6 +29,7 @@
       LOG_DIR: ${{ github.workspace }}/logs
       TERM: xterm
       DISPLAY: ':99'
+      WAYLAND_DISPLAY: 'wayland-1'
       DEBIAN_FRONTEND: noninteractive
 
     strategy:
@@ -114,6 +115,7 @@
         run: |
           # This is added by default, and it is often broken, but we don't need anything from it
           sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
+
           PKGS=( \
             gettext \
             libgtk2.0-dev:${{ matrix.architecture }} \
@@ -123,6 +125,7 @@
             libxt-dev:${{ matrix.architecture }} \
             locales-all \
             software-properties-common \
+            sway \
           )
           if ${{ matrix.features == 'huge' }}; then
             LUA_VER=${{ matrix.lua_ver || '5.4' }}
@@ -143,6 +146,7 @@
               libattr1-dev
             )
           fi
+
           sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get install -y "${PKGS[@]}"
 
       - name: Install gcc-${{ env.GCC_VER }}
@@ -232,6 +236,8 @@
           sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=0
           sudo usermod -a -G audio "${USER}"
           sudo bash ci/setup-xvfb.sh
+          # Sway requires user session
+          bash ci/setup-sway.sh
 
       - name: Check autoconf
         if: contains(matrix.extra, 'unittests')
diff --git a/Filelist b/Filelist
index c5b3c4f..a7a937c 100644
--- a/Filelist
+++ b/Filelist
@@ -25,6 +25,7 @@
 		ci/if_ver*.vim \
 		ci/if_feat_check.vim \
 		ci/setup-xvfb.sh \
+		ci/setup-sway.sh \
 		ci/remove_snap.sh \
 		src/Make_all.mak \
 		src/README.md \
diff --git a/ci/setup-sway.sh b/ci/setup-sway.sh
new file mode 100644
index 0000000..060b7f9
--- /dev/null
+++ b/ci/setup-sway.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+set -e
+
+# Using a systemd user service doesn't work because it seems like github actions
+# doesn't support user sessions? Just run sway in the background and disown it.
+WLR_BACKENDS=headless sway &
+disown