diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
new file mode 100644
index 0000000..c6dbedd
--- /dev/null
+++ b/.github/workflows/ci.yaml
@@ -0,0 +1,86 @@
+name: Build KRunner Plugins
+
+on:
+ push:
+ branches:
+ - master
+ - github_actions
+ pull_request:
+ branches:
+ - master
+
+jobs:
+ build:
+ strategy:
+ fail-fast: false
+ matrix:
+ os:
+ - name: ubuntu
+ image: invent-registry.kde.org/neon/docker-images/plasma:user
+ - name: ubuntu
+ image: ubuntu:24.04
+ - name: opensuse
+ image: opensuse/tumbleweed
+ - name: fedora
+ image: fedora
+ plasma_version: [plasma5, plasma6]
+ exclude:
+ - os:
+ image: invent-registry.kde.org/neon/docker-images/plasma:user
+ plasma_version: plasma5
+ - os:
+ image: ubuntu:24.04
+ plasma_version: plasma6
+
+ runs-on: ubuntu-latest
+ container:
+ image: ${{ matrix.os.image }}
+ options: --user root
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v3
+
+ - name: Install dependencies
+ shell: bash
+ run: |
+ echo "Dependencies for install-${{ matrix.os.name }}-${{ matrix.plasma_version }}"
+ CMD=$(sed -n '/```bash install-${{ matrix.os.name }}-${{ matrix.plasma_version }}/,/```/p' README.md | head -n -1 | tail -n +2 |sed 's/sudo //')
+ if [[ "${{ matrix.os.name }}" == "ubuntu" ]]; then
+ apt update
+ export DEBIAN_FRONTEND=noninteractive
+ echo 'APT::Get::Assume-Yes "true";' >> /etc/apt/apt.conf
+ echo 'APT::Get::force-yes "true";' >> /etc/apt/apt.conf
+ elif [[ "${{ matrix.os.name }}" == "fedora" ]]; then
+ echo "defaultyes=True" >> /etc/dnf/dnf.conf
+ elif [[ "${{ matrix.os.name }}" == "opensuse" ]]; then
+ zypper refresh
+ CMD=$(echo $CMD | sed 's/zypper/zypper --non-interactive/')
+ else
+ echo "Unsupported OS: ${{ matrix.os.name }}"
+ exit 1
+ fi
+ echo "$CMD"
+ eval $CMD
+
+ - name: Create build directory
+ run: |
+ mkdir -p build
+ cd build
+
+ - name: Build and install
+ shell: bash
+ run: |
+ cd build
+ if [[ "${{ matrix.plasma_version }}" == "plasma6" ]]; then
+ cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_QT6=ON
+ else
+ cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_QT6=OFF
+ fi
+ cmake --build .
+ cmake --install .
+
+ - name: Run tests
+ run: |
+ cd build
+ ctest --output-on-failure
+
diff --git a/README.md b/README.md
index 7a747aa..534c971 100644
--- a/README.md
+++ b/README.md
@@ -18,11 +18,11 @@ but having the library installed is recommended.
Debian/Ubuntu
Plasma5:
-```bash
+```bash install-ubuntu-plasma5
sudo apt install git cmake extra-cmake-modules build-essential libkf5runner-dev qtdeclarative5-dev gettext libxdo-dev libkf5kcmutils-dev libkf5dbusaddons-bin
```
Plasma6:
-```bash
+```bash install-ubuntu-plasma6
sudo apt install git cmake extra-cmake-modules build-essential libkf6runner-dev libxdo-dev libkf6kcmutils-dev kf6-kdbusaddons
```
@@ -32,11 +32,11 @@ sudo apt install git cmake extra-cmake-modules build-essential libkf6runner-dev
OpenSUSE
Plasma5:
-```bash
+```bash install-opensuse-plasma5
sudo zypper install git cmake extra-cmake-modules ki18n-devel krunner-devel kconfigwidgets-devel kcmutils-devel gettext-tools xdotool-devel kdbusaddons-tools
```
Plasma6:
-```bash
+```bash install-opensuse-plasma6
sudo zypper install git cmake kf6-extra-cmake-modules kf6-ki18n-devel kf6-krunner-devel gettext-tools xdotool-devel kf6-kconfigwidgets-devel kf6-kcmutils-devel kf6-kdbusaddons-tools
```
@@ -46,11 +46,11 @@ sudo zypper install git cmake kf6-extra-cmake-modules kf6-ki18n-devel kf6-krunne
Fedora
Plasma5:
-```bash
+```bash install-fedora-plasma5
sudo dnf install git cmake extra-cmake-modules kf5-ki18n-devel kf5-krunner-devel gettext xdotool kf5-kcmutils-devel
```
Plasma6:
-```bash
+```bash install-fedora-plasma6
sudo dnf install git cmake extra-cmake-modules kf6-ki18n-devel kf6-krunner-devel kf6-kcmutils-devel gettext xdotool
```