diff --git a/PKGBUILD.kwin b/PKGBUILD.kwin index 05404a9..8ae53c5 100644 --- a/PKGBUILD.kwin +++ b/PKGBUILD.kwin @@ -1,11 +1,26 @@ # Maintainer: Wayne Heaney -pkgname=breezy-desktop-kwin-git +_pkgbase=breezy-desktop +pkgname="${_pkgbase}"-kwin-git pkgver=2.8.2.4 pkgrel=1 -pkgdesc="Breezy Desktop - KWin Plugin for virtual desktop environments with XR glasses" +pkgdesc="Breezy KWin - XR desktop" arch=('x86_64' 'aarch64') url="https://github.com/wheaney/breezy-desktop" -license=('GPL-3.0-or-later') +license=('GPL-3.0') +makedepends=( + 'git' + 'cmake' + 'extra-cmake-modules' + 'kf6-kconfig' + 'kf6-kconfigwidgets' + 'kf6-kcoreaddons' + 'kf6-kglobalaccel' + 'kf6-ki18n' + 'kf6-kcmutils' + 'kf6-kwindowsystem' + 'kf6-kxmlgui' + 'qt6-tools' +) depends=( 'kwin' 'qt6-base' @@ -21,75 +36,44 @@ depends=( 'kf6-kwindowsystem' 'kf6-kxmlgui' 'python' + 'xr-driver-git>=2.0.0' ) -makedepends=( - 'git' - 'cmake' - 'extra-cmake-modules' - 'kf6-kconfig' - 'kf6-kconfigwidgets' - 'kf6-kcoreaddons' - 'kf6-kglobalaccel' - 'kf6-ki18n' - 'kf6-kcmutils' - 'kf6-kwindowsystem' - 'kf6-kxmlgui' - 'qt6-tools' -) -optdepends=( - 'xr-driver-breezy-kwin-git: XR driver backend (recommended)' -) -provides=('breezy-desktop-kwin') -conflicts=('breezy-desktop-kwin') -source=( - "git+https://github.com/wheaney/breezy-desktop.git" - "git+https://github.com/wheaney/sombrero.git" - "git+https://github.com/wheaney/PyXRLinuxDriverIPC.git" -) -sha256sums=('SKIP' 'SKIP' 'SKIP') +source=("git+${url}") +md5sums=(SKIP) pkgver() { - cd "${srcdir}/breezy-desktop" + cd "${srcdir}/${_pkgbase}" # Read version from VERSION file and replace hyphens with dots version=$(cat VERSION) echo "${version}" | tr '-' '.' } prepare() { - cd "${srcdir}/breezy-desktop" - - # Set up submodule directories - mkdir -p modules/sombrero - mkdir -p ui/modules/PyXRLinuxDriverIPC - - # Copy sombrero assets if available - if [ -d "${srcdir}/sombrero" ]; then - find "${srcdir}/sombrero" -name "*.png" -exec cp {} modules/sombrero/ \; + USER=${SUDO_USER:-$USER} + if [ -n "$USER" ]; then + USER_HOME=$(getent passwd $USER | cut -d: -f6) + if [ -e "$USER_HOME/.local/bin/breezy_kwin_uninstall" ]; then + echo "Please uninstall Breezy Desktop first using $USER_HOME/.local/bin/breezy_kwin_uninstall, then reattempt the AUR installation" + exit 1 + fi fi - - # Copy PyXRLinuxDriverIPC if available - if [ -d "${srcdir}/PyXRLinuxDriverIPC" ]; then - find "${srcdir}/PyXRLinuxDriverIPC" -name "*.py" -exec cp {} ui/modules/PyXRLinuxDriverIPC/ \; - fi - - # Copy required files for build - if [ -f ui/modules/PyXRLinuxDriverIPC/xrdriveripc.py ]; then - cp ui/modules/PyXRLinuxDriverIPC/xrdriveripc.py kwin/src/xrdriveripc/xrdriveripc.py - fi - - cp VERSION kwin/ - - # Copy sombrero assets to qml directory if they exist - if [ "$(find modules/sombrero -name '*.png' 2>/dev/null | wc -l)" -gt 0 ]; then - cp modules/sombrero/*.png kwin/src/qml/ - fi - - cp ui/data/icons/hicolor/scalable/apps/com.xronlinux.BreezyDesktop.svg kwin/src/kcm/ } build() { - cd "${srcdir}/breezy-desktop/kwin" + cd ${_pkgbase} + + # init submodules (only required ones) + git submodule update --init --recursive modules/sombrero + git submodule update --init --recursive ui/modules/PyXRLinuxDriverIPC + # Copy required files for build + cp ui/modules/PyXRLinuxDriverIPC/xrdriveripc.py kwin/src/xrdriveripc/xrdriveripc.py + cp VERSION kwin/ + cp modules/sombrero/*.png kwin/src/qml/ + cp ui/data/icons/hicolor/scalable/apps/com.xronlinux.BreezyDesktop.svg kwin/src/kcm/ + + # Build KWin plugin + cd kwin cmake -B build \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr \ @@ -100,14 +84,11 @@ build() { } package() { - cd "${srcdir}/breezy-desktop/kwin" + cd "${srcdir}/${_pkgbase}/kwin" DESTDIR="${pkgdir}" cmake --install build # Install scripts - install -Dm755 "${srcdir}/breezy-desktop/kwin/bin/breezy_kwin_uninstall" \ + install -Dm755 "${srcdir}/${_pkgbase}/kwin/bin/breezy_kwin_uninstall" \ "${pkgdir}/usr/bin/breezy_kwin_uninstall" - - # Install desktop entries for Wayland helpers (if SteamOS support is needed) - # These would typically be in the setup script, but we include them for reference } diff --git a/PKGBUILD.kwin.README.md b/PKGBUILD.kwin.README.md index 7d3ebe7..93143bf 100644 --- a/PKGBUILD.kwin.README.md +++ b/PKGBUILD.kwin.README.md @@ -26,18 +26,17 @@ After installation: 2. Enable "Breezy Desktop" from the Desktop Effects in System Settings 3. Launch the Breezy Desktop application to configure settings +**Important**: If you have previously installed Breezy Desktop using the setup script, you must uninstall it first using `~/.local/bin/breezy_kwin_uninstall` before installing via AUR. + ## Dependencies The package requires: - KDE Plasma 6 (KWin) with Wayland support - Qt6 (base and declarative modules) -- KDE Frameworks 6 (config, configwidgets, coreaddons, globalaccel, i18n, kcmutils, windowsystem, xmlgui) +- KDE Frameworks 6 (kconfig, kconfigwidgets, kcoreaddons, kglobalaccel, ki18n, kcmutils, kwindowsystem, kxmlgui) - Python 3 - libepoxy and libxcb - -## Optional Dependencies - -- `xr-driver-breezy-kwin-git` - XR driver backend (recommended for full functionality) +- xr-driver-git >= 2.0.0 (XR driver backend) ## Manual Build @@ -60,13 +59,25 @@ To publish or update this package on AUR: - This package builds from the latest git source - The version is automatically derived from the VERSION file in the repository +- Git submodules (sombrero, PyXRLinuxDriverIPC) are automatically initialized during build - The package installs to system directories (/usr) following Arch Linux packaging standards - Users must be on Wayland to use virtual display features - For X11 users, only physical display features will work +- The prepare() step checks for existing script-based installations and will exit if found + +## Structure + +This PKGBUILD follows the same structure as the GNOME variant: +- Uses `_pkgbase` variable for consistency +- Initializes git submodules in build() step +- Checks for existing installations in prepare() step +- Uses md5sums for checksums +- License format matches GNOME package (GPL-3.0) ## See Also - Main repository: https://github.com/wheaney/breezy-desktop - GNOME variant: [breezy-desktop-gnome-git](https://aur.archlinux.org/packages/breezy-desktop-gnome-git) (already available in AUR) -- XR Driver: [xr-driver-breezy-gnome-git](https://aur.archlinux.org/packages/xr-driver-breezy-gnome-git) (for GNOME; KWin variant may vary) +- XR Driver: [xr-driver-git](https://aur.archlinux.org/packages/xr-driver-git) +