%global commit 2ca59a1fbe7cd8c4b9c0b9fd960edca6788425c5 %global kwin_version 6.8.2 Name: nextkde Version: 0.1.1 Release: 5%{?dist} Summary: Quickshell desktop shell for KDE Plasma Wayland License: GPL-3.0-only AND GPL-2.0-or-later AND MIT AND BSD-3-Clause AND Apache-2.0 URL: https://github.com/NextKde/NextKde Source0: https://codeload.github.com/NextKde/NextKde/tar.gz/%{commit}#/nextkde-%{commit}.tar.gz Source1: nextkde-vendor.tar.gz # License of the Material Color Utilities code ported in Cam16Hct.mjs. Source2: material-color-utilities-LICENSE Patch0: nextkde-system-paths.patch ExclusiveArch: aarch64 BuildRequires: cmake BuildRequires: ninja-build BuildRequires: gcc-c++ BuildRequires: golang >= 1.26 BuildRequires: extra-cmake-modules BuildRequires: gettext BuildRequires: desktop-file-utils BuildRequires: python3 BuildRequires: systemd-rpm-macros BuildRequires: qt6-qtbase-devel BuildRequires: qt6-qtbase-private-devel BuildRequires: qt6-qtdeclarative-devel BuildRequires: qt6-qtwayland-devel BuildRequires: qt6-qtshadertools BuildRequires: kwin-devel = %{kwin_version} BuildRequires: kdecoration-devel BuildRequires: kf6-kcoreaddons-devel BuildRequires: kf6-kconfig-devel BuildRequires: kf6-kiconthemes-devel BuildRequires: kf6-kglobalaccel-devel BuildRequires: kf6-kio-devel BuildRequires: kf6-ki18n-devel BuildRequires: kf6-kguiaddons-devel BuildRequires: kf6-kcmutils-devel BuildRequires: pkgconfig(libdrm) BuildRequires: pkgconfig(gbm) BuildRequires: vulkan-loader-devel BuildRequires: kf6-kwindowsystem-devel BuildRequires: pkgconfig(epoxy) BuildRequires: pkgconfig(xcb) BuildRequires: pkgconfig(wayland-client) BuildRequires: pkgconfig(wayland-protocols) Requires: quickshell%{?_isa} >= 0.3.2 Requires: quickshell%{?_isa} < 0.4 # KWin plugins use its private ABI; rebuild for each KWin version. Requires: kwin%{?_isa} = %{kwin_version} Requires: plasma-workspace%{?_isa} Requires: qt6-qt5compat%{?_isa} Requires: qt6-qtquick3d%{?_isa} Requires: qt6-qtsvg%{?_isa} Requires: qt6-qtimageformats%{?_isa} Requires: kpipewire%{?_isa} Requires: pulseaudio-utils Requires: wireplumber Requires: wl-clipboard Requires: cliphist Requires: systemd Recommends: spectacle Recommends: NetworkManager Recommends: bluez Provides: bundled(golang(github.com/fsnotify/fsnotify)) = 1.10.1 Provides: bundled(golang(golang.org/x/sys)) = 0.13.0 %description NextKDE (KOS Desktop Shell) provides a top bar, dock, launcher, search, notifications and settings on KDE Plasma Wayland. This is independent downstream packaging of upstream NextKDE, using Fedora's Plasma packages. User services are installed but are not enabled or started by the RPM. Optional standalone applications, the lock screen, SDDM theme and ONNX spatial wallpaper engine are not included. %prep %autosetup -n NextKde-%{commit} -p1 tar -xf %{SOURCE1} -C services/data-service %build export GOPROXY=off GOSUMDB=off GOTOOLCHAIN=local export GOFLAGS='-mod=vendor -trimpath -buildvcs=false' export GOCACHE="$PWD/.go-cache" QSB=%{_libdir}/qt6/bin/qsb sh shared/qml/wallpapers/compile.sh for shader in shell/desktop/shaders/*.frag shell/desktop/shaders/*.vert shell/desktop/modules/wallpaper/shaders/*.frag shell/desktop/modules/wallpaper/shaders/*.vert; do %{_libdir}/qt6/bin/qsb --qsbversion 64 --qt6 -o "$shader.qsb" "$shader" done %cmake -GNinja \ -DBUILD_TESTING=OFF \ -DKOS_BUILD_SPATIAL=OFF \ -DKOS_BUILD_KWIN_PLUGINS=ON \ -DCMAKE_SKIP_RPATH=ON %cmake_build cmake -S kwin/glass-effect -B glass-build -GNinja \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_INSTALL_PREFIX=%{_prefix} \ -DCMAKE_INSTALL_LIBDIR=%{_lib} \ -DCMAKE_SKIP_RPATH=ON -DGLASS_X11=OFF cmake --build glass-build --parallel %{_smp_build_ncpus} (cd services/data-service && CGO_ENABLED=0 go build -ldflags="-B gobuildid" -o kos-data-service .) %install %cmake_install DESTDIR=%{buildroot} cmake --install glass-build install -Dm0755 services/data-service/kos-data-service %{buildroot}%{_libexecdir}/kos-data-service mkdir -p %{buildroot}%{_datadir}/nextkde cp -a shell %{buildroot}%{_datadir}/nextkde/ mkdir -p %{buildroot}%{_datadir}/nextkde/shared cp -a shared/qml %{buildroot}%{_datadir}/nextkde/shared/ rm -rf %{buildroot}%{_datadir}/nextkde/shell/native find %{buildroot}%{_datadir}/nextkde \ \( -name CMakeLists.txt -o -name 'test_*.mjs' -o -name '*.test.mjs' -o -name '*.py' -o -name '*.sh' -o -name '*test*.cpp' \) -delete install -d %{buildroot}%{_userunitdir} %{buildroot}%{_datadir}/applications sed -e 's|%%h/.local/libexec|%{_libexecdir}|g' \ -e 's|%%h/.local/share|%{_datadir}|g' \ packaging/systemd/kos-platform.service > %{buildroot}%{_userunitdir}/kos-platform.service sed 's|@CMAKE_INSTALL_FULL_LIBEXECDIR@|%{_libexecdir}|g' \ services/data-service/systemd/kos-data.service.in > %{buildroot}%{_userunitdir}/kos-data.service sed -e 's|@QS_EXEC@ --no-duplicate -c kos|%{_bindir}/quickshell --no-duplicate --path %{_datadir}/nextkde/shell|g' \ -e 's|^Environment=QML2_IMPORT_PATH=.*|Environment=QML2_IMPORT_PATH=%{_datadir}/nextkde/shell:%{_libdir}/qt6/qml|' \ packaging/systemd/kos-shell.service.in > %{buildroot}%{_userunitdir}/kos-shell.service sed -i '/^\[Service\]/a Environment=KOS_SHELL_DIR=%{_datadir}/nextkde/shell' \ %{buildroot}%{_userunitdir}/kos-platform.service cp packaging/desktop/kos-settings.desktop.in %{buildroot}%{_datadir}/applications/kos-settings.desktop sed 's|@KOS_PLATFORM_EXEC@|%{_libexecdir}/kos-platform|g' \ packaging/desktop/org.kos.Platform.desktop.in > %{buildroot}%{_datadir}/applications/org.kos.Platform.desktop cat > %{buildroot}%{_datadir}/nextkde/release.json <<'EOF' {"version":"%{version}","revision":"%{commit}","dirty":false,"tag":"v%{version}"} EOF install -d %{buildroot}%{_licensedir}/%{name}/bundled cp services/data-service/vendor/github.com/fsnotify/fsnotify/LICENSE %{buildroot}%{_licensedir}/%{name}/bundled/fsnotify-LICENSE cp services/data-service/vendor/golang.org/x/sys/LICENSE %{buildroot}%{_licensedir}/%{name}/bundled/x-sys-LICENSE cp shared/qml/wallpapers/vendor/flow/LICENSE %{buildroot}%{_licensedir}/%{name}/bundled/flow-LICENSE cp shared/qml/wallpapers/vendor/black-hole/LICENSE %{buildroot}%{_licensedir}/%{name}/bundled/black-hole-LICENSE cp kwin/glass-effect/LICENSE %{buildroot}%{_licensedir}/%{name}/bundled/glass-LICENSE cp %{SOURCE2} %{buildroot}%{_licensedir}/%{name}/bundled/material-color-utilities-LICENSE %check mkdir packaging-check cat > packaging-check/CMakeLists.txt <<'EOF' cmake_minimum_required(VERSION 3.21) project(nextkde_packaging_check LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_AUTOMOC ON) find_package(Qt6 REQUIRED COMPONENTS Core Gui Test) add_executable(backend ../apps/settings/tests/backend/ModulesTest.cpp ../apps/settings/src/SettingsProbeTasks.cpp ../apps/settings/src/ShellIpcClient.cpp ../apps/settings/src/WallpaperLibrary.cpp) target_include_directories(backend PRIVATE ../apps/settings/src) target_compile_definitions(backend PRIVATE SETTINGS_SHELL_DIR="/usr/share/nextkde/shell") target_link_libraries(backend PRIVATE Qt6::Core Qt6::Gui Qt6::Test) EOF cmake -S packaging-check -B packaging-check/build -GNinja cmake --build packaging-check/build --parallel %{_smp_build_ncpus} packaging-check/build/backend export GOPROXY=off GOSUMDB=off GOTOOLCHAIN=local export GOFLAGS='-mod=vendor -trimpath -buildvcs=false' export GOCACHE="$PWD/.go-cache" (cd services/data-service && go test ./...) desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop grep -q '"EnabledByDefault": false' kwin/kos-bridge/metadata.json test -x %{buildroot}%{_libexecdir}/kos-platform test -x %{buildroot}%{_libexecdir}/kos-data-service test -x %{buildroot}%{_bindir}/kos-settings test -f %{buildroot}%{_libdir}/qt6/qml/Kos/SurfaceShape/libkos_surface_shape.so test -f %{buildroot}%{_libdir}/qt6/plugins/kwin/effects/plugins/glass.so test -f %{buildroot}%{_datadir}/nextkde/shell/Kos/Ui/foundation/AppTheme.qml test -f %{buildroot}%{_datadir}/nextkde/apps/settings/main.qml test -z "$(find %{buildroot} -xtype l -print -quit)" ! grep -R -E '@QS_EXEC@|@KOS_PLATFORM_EXEC@|%%h/\.local|%%h/\.config' \ %{buildroot}%{_userunitdir}/kos-*.service %{buildroot}%{_datadir}/applications/*.desktop %files %license LICENSE %license %{_licensedir}/%{name}/bundled/ %doc README.md %{_bindir}/kos-settings %{_libexecdir}/kos-platform %{_libexecdir}/kos-data-service %{_libdir}/qt6/qml/Kos/SurfaceShape/ %{_libdir}/qt6/plugins/kwin/effects/plugins/*.so %{_libdir}/qt6/plugins/kwin/effects/configs/*.so %{_libdir}/qt6/plugins/org.kde.kdecoration3/*.so %{_datadir}/nextkde/ %{_datadir}/kos/platform/ %{_datadir}/applications/kos-settings.desktop %{_datadir}/applications/org.kos.Platform.desktop %{_userunitdir}/kos-platform.service %{_userunitdir}/kos-data.service %{_userunitdir}/kos-shell.service %{_datadir}/locale/*/LC_MESSAGES/kwin_effects_glass.mo %changelog * Sun Nov 01 2026 mcc45tr - 0.1.1-5 - Match KDE module naming and retain a GNU build ID for the Go service * Sun Nov 01 2026 mcc45tr - 0.1.1-4 - Retain the Material Color Utilities Apache license and rebuild QSB shaders * Sun Nov 01 2026 mcc45tr - 0.1.1-3 - Keep KOS Bridge disabled by default until the user enables it * Sun Nov 01 2026 mcc45tr - 0.1.1-2 - Limit shared payload to runtime QML and retain the Glass translation catalog * Sun Nov 01 2026 mcc45tr - 0.1.1-1 - Package upstream v0.1.1 for Fedora Rawhide AArch64, with opt-in user services