Name: oreon-kde-defaults Version: 10.0 Release: 3%{?dist} Summary: Oreon KDE default configuration files License: GPLv2+ URL: https://oreonproject.org Source0: %{name}-%{version}.tar.gz BuildArch: noarch BuildRequires: systemd-rpm-macros Requires: plasma-workspace Requires: plasma-desktop # This package provides custom defaults that should take precedence Provides: kde-defaults-oreon = %{version}-%{release} %description This package provides custom KDE Plasma configuration files for Oreon. It includes a custom panel layout and plasma theme configuration that will be preserved across KDE updates. %prep %setup -q %build # Nothing to build %install rm -rf $RPM_BUILD_ROOT # Create directory structure mkdir -p $RPM_BUILD_ROOT%{_datadir}/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/ mkdir -p $RPM_BUILD_ROOT%{_datadir}/plasma/desktoptheme/breeze-dark/ # Install configuration files install -m 644 layout.js $RPM_BUILD_ROOT%{_datadir}/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js install -m 644 plasmarc $RPM_BUILD_ROOT%{_datadir}/plasma/desktoptheme/breeze-dark/plasmarc # Create backup directory and store original files if they exist mkdir -p $RPM_BUILD_ROOT%{_datadir}/oreon-kde-defaults/backup/ %files %defattr(-,root,root,-) %dir %{_datadir}/oreon-kde-defaults %dir %{_datadir}/oreon-kde-defaults/backup %config(noreplace) %{_datadir}/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js %config(noreplace) %{_datadir}/plasma/desktoptheme/breeze-dark/plasmarc %pre # Backup original files before installation if [ -f %{_datadir}/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js ]; then cp %{_datadir}/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js \ %{_datadir}/oreon-kde-defaults/backup/layout.js.orig 2>/dev/null || : fi if [ -f %{_datadir}/plasma/desktoptheme/breeze-dark/plasmarc ]; then cp %{_datadir}/plasma/desktoptheme/breeze-dark/plasmarc \ %{_datadir}/oreon-kde-defaults/backup/plasmarc.orig 2>/dev/null || : fi %post # Set higher priority for our configuration files # This ensures they take precedence over default KDE configurations if [ -x /usr/bin/update-alternatives ]; then update-alternatives --install %{_datadir}/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js \ plasma-default-layout %{_datadir}/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js 50 || : update-alternatives --install %{_datadir}/plasma/desktoptheme/breeze-dark/plasmarc \ plasma-breeze-dark-config %{_datadir}/plasma/desktoptheme/breeze-dark/plasmarc 50 || : fi # Trigger plasma configuration reload for existing users if [ -x /usr/bin/systemctl ]; then # Signal all running plasma sessions to reload configuration systemctl --user daemon-reload 2>/dev/null || : fi # Create a marker file to indicate oreon defaults are installed touch %{_datadir}/oreon-kde-defaults/.oreon-defaults-installed %preun if [ $1 -eq 0 ]; then # Package is being removed, restore original files if they exist if [ -f %{_datadir}/oreon-kde-defaults/backup/layout.js.orig ]; then cp %{_datadir}/oreon-kde-defaults/backup/layout.js.orig \ %{_datadir}/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js 2>/dev/null || : fi if [ -f %{_datadir}/oreon-kde-defaults/backup/plasmarc.orig ]; then cp %{_datadir}/oreon-kde-defaults/backup/plasmarc.orig \ %{_datadir}/plasma/desktoptheme/breeze-dark/plasmarc 2>/dev/null || : fi # Remove alternatives if [ -x /usr/bin/update-alternatives ]; then update-alternatives --remove plasma-default-layout \ %{_datadir}/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js 2>/dev/null || : update-alternatives --remove plasma-breeze-dark-config \ %{_datadir}/plasma/desktoptheme/breeze-dark/plasmarc 2>/dev/null || : fi # Remove marker file rm -f %{_datadir}/oreon-kde-defaults/.oreon-defaults-installed fi %postun if [ $1 -eq 0 ]; then # Trigger plasma configuration reload after removal if [ -x /usr/bin/systemctl ]; then systemctl --user daemon-reload 2>/dev/null || : fi fi %triggerpostun -- plasma-workspace, plasma-desktop, kde-settings # This trigger runs after KDE packages are updated # It ensures our configuration files are restored if overwritten if [ -f %{_datadir}/oreon-kde-defaults/.oreon-defaults-installed ]; then # Restore our configuration files if [ -f %{_datadir}/oreon-kde-defaults/backup/layout.js ]; then cp %{_datadir}/oreon-kde-defaults/backup/layout.js \ %{_datadir}/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js 2>/dev/null || : fi if [ -f %{_datadir}/oreon-kde-defaults/backup/plasmarc ]; then cp %{_datadir}/oreon-kde-defaults/backup/plasmarc \ %{_datadir}/plasma/desktoptheme/breeze-dark/plasmarc 2>/dev/null || : fi # Re-establish alternatives if needed if [ -x /usr/bin/update-alternatives ]; then update-alternatives --install %{_datadir}/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js \ plasma-default-layout %{_datadir}/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js 50 || : update-alternatives --install %{_datadir}/plasma/desktoptheme/breeze-dark/plasmarc \ plasma-breeze-dark-config %{_datadir}/plasma/desktoptheme/breeze-dark/plasmarc 50 || : fi fi