File plasmazones.spec of Package plasmazones
# PlasmaZones RPM Spec File for openSUSE Tumbleweed
# FancyZones-style window tiling for KDE Plasma
# SPDX-License-Identifier: GPL-3.0-or-later
#
# Build: rpmbuild -ba plasmazones.spec
# Clean build: osc build openSUSE_Tumbleweed x86_64 plasmazones.spec
Name: plasmazones
Version: 2.3.16
Release: 0
Summary: FancyZones-style window tiling for KDE Plasma
License: GPL-3.0-or-later
URL: https://github.com/fuddlesworth/PlasmaZones
# Source code tarball
Source0: https://github.com/fuddlesworth/PlasmaZones/archive/refs/tags/v%{version}.tar.gz#/PlasmaZones-%{version}.tar.gz
Source1: plasmazones-rpmlintrc
# Plasma 6 / Wayland only
ExclusiveArch: x86_64
# Build tools
BuildRequires: cmake >= 3.16
BuildRequires: ninja
BuildRequires: extra-cmake-modules >= 6.0.0
BuildRequires: gcc-c++
BuildRequires: gettext-tools
# Qt6
BuildRequires: cmake(Qt6Core) >= 6.6.0
BuildRequires: cmake(Qt6DBus)
BuildRequires: cmake(Qt6Gui)
BuildRequires: cmake(Qt6Qml)
BuildRequires: cmake(Qt6Quick)
BuildRequires: cmake(Qt6Widgets)
BuildRequires: cmake(Qt6Concurrent)
BuildRequires: cmake(Qt6QuickControls2)
BuildRequires: cmake(Qt6ShaderTools)
BuildRequires: cmake(Qt6Test)
BuildRequires: qt6-gui-private-devel
BuildRequires: qt6-shadertools-private-devel
# KDE Frameworks 6
BuildRequires: cmake(KF6Config) >= 6.0.0
BuildRequires: cmake(KF6ConfigWidgets)
BuildRequires: cmake(KF6CoreAddons)
BuildRequires: cmake(KF6DBusAddons)
BuildRequires: cmake(KF6I18n)
BuildRequires: cmake(KF6KCMUtils)
BuildRequires: cmake(KF6WindowSystem)
BuildRequires: cmake(KF6GlobalAccel)
BuildRequires: cmake(KF6Notifications)
BuildRequires: cmake(KF6ColorScheme)
# Plasma/KWin
BuildRequires: kwin6-devel
BuildRequires: cmake(LayerShellQt) >= 6.0.0
# Optional
BuildRequires: cmake(PlasmaActivities)
# Systemd
BuildRequires: pkgconfig(systemd)
# Runtime dependencies
# Most dependencies are auto-detected by RPM from shared library dependencies
Requires: kwin6
Requires: hicolor-icon-theme >= 0.10
%description
PlasmaZones brings FancyZones-style window tiling to KDE Plasma 6.
Features:
- Drag windows to predefined zones
- Custom zone layouts with visual editor
- Modifier key activation (Shift, Ctrl, etc.)
- Multi-monitor support
- Keyboard navigation between zones
- Activity-based layout switching
- Wayland-native using Layer Shell
%prep
%autosetup -n PlasmaZones-%{version}
%build
%cmake_kf6 \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DBUILD_TESTING=OFF
%cmake_build
%install
%kf6_install
%post
# Refresh KDE service cache
%{_bindir}/kbuildsycoca6 --noincremental 2>/dev/null || :
# Update icon cache
%{_bindir}/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%service_add_post plasmazones.service
echo ""
echo "PlasmaZones: the KWin effect is enabled by default, but KWin must"
echo "be restarted to load it. Log out and back in, or run:"
echo " kwin_wayland --replace &"
echo ""
%preun
%service_del_preun plasmazones.service
%postun
%{_bindir}/kbuildsycoca6 --noincremental 2>/dev/null || :
%{_bindir}/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%service_del_postun plasmazones.service
%files
%license LICENSE
%doc README.md
# Directories that must be declared (prevent "directories not owned" rpmlint errors)
%dir %{_libdir}/environment.d
%dir %{_libdir}/qt6/plugins/kwin
%dir %{_libdir}/qt6/plugins/kwin/effects
%dir %{_libdir}/qt6/plugins/kwin/effects/plugins
%dir %{_datadir}/icons/hicolor-light
%dir %{_datadir}/icons/hicolor-light/scalable
%dir %{_datadir}/icons/hicolor-light/scalable/apps
%dir %{_datadir}/systemsettings
%dir %{_datadir}/systemsettings/categories
# Executables
%{_bindir}/plasmazonesd
%{_bindir}/plasmazones-editor
# Libraries
%{_libdir}/libplasmazones_core.so
%{_libdir}/libplasmazones_core.so.*
%{_libdir}/libplasmazones_rendering.so
# KWin effect plugin
%{_libdir}/qt6/plugins/kwin/effects/plugins/kwin_effect_plasmazones.so
# D-Bus interfaces
%{_datadir}/dbus-1/interfaces/org.plasmazones.*.xml
# Desktop files - daemon and editor
%{_datadir}/applications/org.plasmazones.editor.desktop
%{_datadir}/applications/org.plasmazones.daemon.desktop
# KCM plugins (System Settings modules)
%{_libdir}/qt6/plugins/plasma/kcms/systemsettings/kcm_plasmazones_*.so
# KCM desktop files
%{_datadir}/applications/kcm_plasmazones_*.desktop
# Data files
%{_datadir}/plasmazones/
# Icons
%{_datadir}/icons/hicolor/*/apps/plasmazones*.svg
%{_datadir}/icons/hicolor-light/scalable/apps/plasmazones*.svg
# KConfig
%{_datadir}/config.kcfg/plasmazones.kcfg
# System Settings category
%{_datadir}/systemsettings/categories/settings-windowmanagement-plasmazones.desktop
# Systemd user service
%{_userunitdir}/plasmazones.service
# Snap Assist: env.d config for KWin screenshot auth
%{_libdir}/environment.d/99-plasmazones-screenshot.conf
# Translations
%{_datadir}/locale/*/LC_MESSAGES/plasmazones*.mo
%{_datadir}/locale/*/LC_MESSAGES/kcm_plasmazones*.mo
%changelog
# Generated from CHANGELOG.md by packaging/generate-changelog.sh during CI.
# Do not edit manually — entries below are overwritten on release.