diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 11011e3..1bc2692 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -4,6 +4,7 @@ name: Checks on: + pull_request: push: branches: - "**" @@ -33,3 +34,60 @@ jobs: - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 #v6.0.3 - name: REUSE Compliance Check uses: fsfe/reuse-action@676e2d560c9a403aa252096d99fcab3e1132b0f5 #v6.0.0 + + compile: + name: Compile + runs-on: ${{ matrix.architecture }} + strategy: + fail-fast: false + matrix: + target: + - distro: ubuntu + version: "25.04" + - distro: ubuntu + version: "25.10" + - distro: ubuntu + version: "26.04" + - distro: fedora + version: "40" + - distro: fedora + version: "41" + - distro: fedora + version: "42" + - distro: fedora + version: "43" + - distro: fedora + version: "44" + - distro: fedora + version: "45" + architecture: [ubuntu-26.04, ubuntu-26.04-arm] + container: + image: ghcr.io/kando-menu/kwin-dev-containers-${{ matrix.target.distro }}-${{ matrix.target.version }}:latest + steps: + - name: Print KWin Version + id: kwin_version + shell: bash + run: | + VERSION="unknown" + + # Ubuntu / Debian containers + if command -v dpkg-query >/dev/null 2>&1; then + VERSION="$(dpkg-query -W -f='${Version}' kwin-dev 2>/dev/null || echo unknown)" + fi + + # Fedora / RPM containers + if [[ "$VERSION" == "unknown" ]] && command -v rpm >/dev/null 2>&1; then + VERSION="$(rpm -q --qf '%{VERSION}' kwin-devel 2>/dev/null || echo unknown)" + fi + + VERSION="${VERSION%%-*}" + VERSION="${VERSION#*:}" + VERSION="${VERSION//[^0-9A-Za-z._-]/_}" + + echo "KWin Version: $VERSION" + - name: Checkout Repository + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 #v6.0.3 + - name: Compile + run: | + cmake -S . -B build + cmake --build build --config Release diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 157ad58..1723a63 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -34,6 +34,8 @@ jobs: version: "43" - distro: fedora version: "44" + - distro: fedora + version: "45" architecture: [ubuntu-26.04, ubuntu-26.04-arm] container: image: ghcr.io/kando-menu/kwin-dev-containers-${{ matrix.target.distro }}-${{ matrix.target.version }}:latest diff --git a/changelog.md b/changelog.md index ab931c2..b2a7937 100644 --- a/changelog.md +++ b/changelog.md @@ -14,6 +14,15 @@ Security - in case of vulnerabilities. This changelog uses [semantic versioning](https://semver.org) and follows the rules of [Keep a Changelog](http://keepachangelog.com/). +## [KWin Integration 0.3.0](https://github.com/kando-menu/kwin-integration/releases/tag/v0.3.0) + +**Release Date:** 2026-07-15 + +### :tada: Added + +- Support for KWin 6.7. Thanks to [@Henry-Denny](https://github.com/Henry-Denny) for this contribution. +- Pre-built binaries for the current version of the upcoming Fedora 45. + ## [KWin Integration 0.2.0](https://github.com/kando-menu/kwin-integration/releases/tag/v0.2.0) **Release Date:** 2026-06-17 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1734613..6b98251 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -31,4 +31,9 @@ elseif(DEFINED KWin_VERSION AND KWin_VERSION VERSION_GREATER_EQUAL "6.3.0") KANDO_KWIN_HAS_TABLET_TOOL_AXIS_PROXIMITY_TABLET_EVENT) else() target_compile_definitions(kandointegration PRIVATE KANDO_KWIN_HAS_TABLET_TOOL_EVENT) +endif() + +# KWin 6.7 changed EffectHandler::clientArea() and removed the screen argument. +if(DEFINED KWin_VERSION AND KWin_VERSION VERSION_GREATER_EQUAL "6.7.0") + target_compile_definitions(kandointegration PRIVATE KANDO_KWIN_HAS_CLIENT_AREA_TWO_ARGS) endif() \ No newline at end of file diff --git a/src/plugin/KandoKWinIntegrationPlugin.cpp b/src/plugin/KandoKWinIntegrationPlugin.cpp index 4b76d0d..e8577cc 100644 --- a/src/plugin/KandoKWinIntegrationPlugin.cpp +++ b/src/plugin/KandoKWinIntegrationPlugin.cpp @@ -10,7 +10,6 @@ #include "KandoKWinIntegrationPlugin.h" -#include #include #include @@ -57,7 +56,7 @@ QVariantMap KandoKWinIntegrationPlugin::getWMInfo() const { const auto windowName = activeWindow ? activeWindow->caption() : QString(); const auto appName = activeWindow ? activeWindow->windowClass() : QString(); -#if (PROJECT_VERSION_MAJOR >= 6) && (PROJECT_VERSION_MINOR >= 7) +#if defined(KANDO_KWIN_HAS_CLIENT_AREA_TWO_ARGS) QRectF workArea = KWin::effects->clientArea(KWin::MaximizeArea, pointerPos.toPoint()); #else QRectF workArea =