%global debug_package %{nil} %global _build_id_links none %{!?zoeyos_version: %global zoeyos_version 44.1.0} %{!?zoeyos_release: %global zoeyos_release 1} %{!?copr_user: %global copr_user shooey623} %{!?copr_project: %global copr_project zoeyos} Name: zoeyos-desktop Version: %{zoeyos_version} Release: %{zoeyos_release}%{?dist} Summary: ZoeyOS Chiikawa Meadow Edition KDE Plasma 6 Suite, Plasmoids, QML Shell & Daemon License: MIT URL: https://copr.fedorainfracloud.org/coprs/%{copr_user}/%{copr_project} Source0: %{name}-%{version}.tar.gz Requires: bash Requires: python3 Requires: rsync %description Official ZoeyOS (Chiikawa Meadow Edition) desktop environment package. Provides the 15 Chiikawa KDE Plasma 6 Plasmoids (TopBar pills, BottomDock, and Desktop widgets), Wallpaper plugin, Plasma DesktopTheme, Look-and-Feel, shared org.chiikawa.shell QML module, chiikawa-daemon Rust KWin/telemetry bridge, chiikawa-ctl CLI, and VS Code Chiikawa Meadow theme suite. %prep %setup -q -n %{name}-%{version} %build # chiikawa-daemon is pre-built or built during source tarball preparation true %install rm -rf %{buildroot} # 1. System-wide KDE Plasma 6 Plasmoids, Wallpaper, DesktopTheme, Look-and-Feel install -d -m 0755 %{buildroot}%{_datadir}/plasma/plasmoids install -d -m 0755 %{buildroot}%{_datadir}/plasma/wallpapers install -d -m 0755 %{buildroot}%{_datadir}/plasma/desktoptheme install -d -m 0755 %{buildroot}%{_datadir}/plasma/look-and-feel cp -a plasma/plasmoids/* %{buildroot}%{_datadir}/plasma/plasmoids/ cp -a plasma/wallpapers/* %{buildroot}%{_datadir}/plasma/wallpapers/ cp -a plasma/desktoptheme/* %{buildroot}%{_datadir}/plasma/desktoptheme/ cp -a plasma/look-and-feel/* %{buildroot}%{_datadir}/plasma/look-and-feel/ # 2. Shared org.chiikawa.shell QML Module in system Qt6 QML path + /usr/share/chiikawa-shell install -d -m 0755 %{buildroot}%{_libdir}/qt6/qml/org/chiikawa/shell cp -a \ qmldir \ Theme.qml \ GlobalState.qml \ shell.qml \ components \ services \ modules \ scripts \ inspiration \ plasma \ vscode-extension \ %{buildroot}%{_libdir}/qt6/qml/org/chiikawa/shell/ if [ -d bin ]; then cp -a bin %{buildroot}%{_libdir}/qt6/qml/org/chiikawa/shell/ fi install -d -m 0755 %{buildroot}%{_datadir}/chiikawa-shell/qml/org/chiikawa ln -sfn %{_libdir}/qt6/qml/org/chiikawa/shell %{buildroot}%{_datadir}/chiikawa-shell/qml/org/chiikawa/shell # 3. Daemon & CLI Controller in /usr/bin install -d -m 0755 %{buildroot}%{_bindir} if [ -f bin/chiikawa-daemon ]; then install -m 0755 bin/chiikawa-daemon %{buildroot}%{_bindir}/chiikawa-daemon fi cat > %{buildroot}%{_bindir}/chiikawa-ctl << 'EOF' #!/usr/bin/env bash exec "%{_libdir}/qt6/qml/org/chiikawa/shell/scripts/chiikawa-ctl.sh" "$@" EOF chmod 0755 %{buildroot}%{_bindir}/chiikawa-ctl # 4. Systemd User Unit for chiikawa-daemon install -d -m 0755 %{buildroot}%{_userunitdir} cat > %{buildroot}%{_userunitdir}/chiikawa-daemon.service << 'EOF' [Unit] Description=Chiikawa Meadow KWin Scripting & Telemetry Daemon After=graphical-session.target plasma-kwin_wayland.service PartOf=graphical-session.target [Service] Type=simple ExecStart=%{_libdir}/qt6/qml/org/chiikawa/shell/scripts/run-daemon.sh kwin-bridge Restart=on-failure RestartSec=2 [Install] WantedBy=plasma-workspace.target graphical-session.target EOF # 5. System-wide QML import profile hook install -d -m 0755 %{buildroot}%{_sysconfdir}/profile.d cat > %{buildroot}%{_sysconfdir}/profile.d/chiikawa-qml.sh << 'EOF' export QML2_IMPORT_PATH="$HOME/.local/share/chiikawa-shell/qml:/usr/lib64/qt6/qml:/usr/share/chiikawa-shell/qml:${QML2_IMPORT_PATH:-}" export QML_IMPORT_PATH="$HOME/.local/share/chiikawa-shell/qml:/usr/lib64/qt6/qml:/usr/share/chiikawa-shell/qml:${QML_IMPORT_PATH:-}" EOF chmod 0644 %{buildroot}%{_sysconfdir}/profile.d/chiikawa-qml.sh # 6. ZoeyOS COPR DNF Repository definition (so `sudo dnf update` always pulls future updates) install -d -m 0755 %{buildroot}%{_sysconfdir}/yum.repos.d cat > %{buildroot}%{_sysconfdir}/yum.repos.d/zoeyos-copr.repo << 'EOF' [copr:copr.fedorainfracloud.org:%{copr_user}:%{copr_project}] name=ZoeyOS Official Chiikawa Meadow Repository (COPR %{copr_user}/%{copr_project}) baseurl=https://download.copr.fedorainfracloud.org/results/%{copr_user}/%{copr_project}/fedora-$releasever-$basearch/ type=rpm-md skip_if_unavailable=True gpgcheck=1 gpgkey=https://download.copr.fedorainfracloud.org/results/%{copr_user}/%{copr_project}/pubkey.gpg repo_gpgcheck=0 enabled=1 enabled_metadata=1 metadata_expire=300 priority=1 EOF %posttrans # Sync updated Chiikawa Plasmoids, Wallpaper, Theme, QML Module, and Daemon into # /etc/skel and all existing user accounts in /home/* so ~/.local copies never shadow # RPM updates when the user runs `sudo dnf update`. QML_SRC="%{_libdir}/qt6/qml/org/chiikawa/shell" if [ -x "$QML_SRC/scripts/install-plasma.sh" ]; then bash "$QML_SRC/scripts/install-plasma.sh" --skel /etc/skel >/dev/null 2>&1 || true for u in $(awk -F: '$3 >= 1000 && $3 < 60000 {print $1}' /etc/passwd 2>/dev/null); do uhome="$(getent passwd "$u" | cut -d: -f6)" ugid="$(getent passwd "$u" | cut -d: -f4)" uid="$(getent passwd "$u" | cut -d: -f3)" if [ -n "$uhome" ] && [ -d "$uhome" ]; then bash "$QML_SRC/scripts/install-plasma.sh" --skel "$uhome" >/dev/null 2>&1 || true chown -R "$u:$ugid" \ "$uhome/.local/share/chiikawa-shell" \ "$uhome/.local/share/plasma" \ "$uhome/.local/bin" \ "$uhome/.config/plasma-workspace" \ "$uhome/.config/systemd/user" \ "$uhome/.vscode" 2>/dev/null || true # Restart chiikawa-daemon for active user sessions if [ -S "/run/user/$uid/bus" ]; then runuser -u "$u" -- env XDG_RUNTIME_DIR="/run/user/$uid" DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$uid/bus" \ systemctl --user daemon-reload >/dev/null 2>&1 || true runuser -u "$u" -- env XDG_RUNTIME_DIR="/run/user/$uid" DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$uid/bus" \ systemctl --user restart chiikawa-daemon.service >/dev/null 2>&1 || true fi fi done fi exit 0 %files %{_datadir}/plasma/plasmoids/org.chiikawa.* %{_datadir}/plasma/wallpapers/org.chiikawa.wallpaper %{_datadir}/plasma/desktoptheme/chiikawa-meadow %{_datadir}/plasma/look-and-feel/org.chiikawa.meadow.desktop %{_libdir}/qt6/qml/org/chiikawa/shell %{_datadir}/chiikawa-shell %{_bindir}/chiikawa-daemon %{_bindir}/chiikawa-ctl %{_userunitdir}/chiikawa-daemon.service %config(noreplace) %{_sysconfdir}/profile.d/chiikawa-qml.sh %config(noreplace) %{_sysconfdir}/yum.repos.d/zoeyos-copr.repo %changelog * Thu Oct 22 2026 Sho - %{zoeyos_version}-%{zoeyos_release} - ZoeyOS Chiikawa Meadow Edition desktop suite release