File budgie-desktop.txt of Package budgie-desktop
# spec file for package budgie-desktop
#
# Copyright (c) 2026 SUSE LLC
# Copyright (c) 2023-2026 Joshua Strobl <joshua@buddiesofbudgie.org>
#
%define upstream_version 10.10.1
%define glib2_version 2.64
%define gnome_desktop_version 44.4
%define gnome_settings_daemon_version 49
%define gsettings_desktop_schemas_version 49
%define gtk3_version 3.24
%define polkit_version 0.105
%define vala_version 0.56.18
%define libpeas2_version 2.0.5
%if 0%{?suse_version} < 1550
%define _distconfdir %{_sysconfdir}
%endif
Name: budgie-desktop
Version: %{upstream_version}
Release: 1
Summary: A feature-rich, modern desktop designed to keep out the way of the user
License: GPL-2.0-or-later AND GPL-2.0-only AND LGPL-2.1-or-later AND CC0-1.0 AND CC-BY-SA-4.0
Group: System/GUI/Other
URL: https://github.com/BuddiesOfBudgie/budgie-desktop
Source0: %{name}-v%{version}.tar.xz
Source1: https://github.com/BuddiesOfBudgie/budgie-desktop/releases/download/v%{version}/%{name}-v%{version}.tar.xz.asc
Source2: JoshuaStrobl.gpg
BuildRequires: gpg2
BuildRequires: gnupg
# ============================================================================
# CORE BUILD DEPENDENCIES
# ============================================================================
BuildRequires: magpie-wm-devel >= 0.9.0
Requires: magpie-wm >= 0.9.0
BuildRequires: meson >= 0.57.0
BuildRequires: pkgconfig
BuildRequires: intltool
BuildRequires: sassc
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: gettext-runtime
BuildRequires: desktop-file-utils
BuildRequires: cmake
BuildRequires: ninja
# ============================================================================
# LIBRARY DEPENDENCIES - SUSE TUMBLEWEED SPECIFIC
# ============================================================================
BuildRequires: libpeas2-devel >= %{libpeas2_version}
BuildRequires: pkgconfig(libpeas-2) >= %{libpeas2_version}
BuildRequires: gobject-introspection-devel >= 1.62.0
BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.62.0
BuildRequires: pkgconfig(libcanberra-gtk3) >= 0.30
BuildRequires: libcanberra-gtk3-devel
# ============================================================================
# STANDARD BUILD DEPENDENCIES
# ============================================================================
BuildRequires: glib2-devel >= %{glib2_version}
BuildRequires: python3-devel
BuildRequires: python3-gobject-devel
BuildRequires: vala-devel >= %{vala_version}
BuildRequires: gtk3-devel >= %{gtk3_version}
BuildRequires: libuuid-devel
BuildRequires: upower-devel >= 0.99.13
BuildRequires: libpulse-devel
BuildRequires: libnotify-devel >= 0.7
BuildRequires: libcanberra-devel >= 0.30
BuildRequires: alsa-devel >= 1.2.6
BuildRequires: libgee-devel >= 0.20.0
BuildRequires: accountsservice-devel >= 0.6.55
BuildRequires: libgudev-1_0-devel
BuildRequires: polkit-devel >= %{polkit_version}
BuildRequires: gtk-doc >= 1.33.0
# ============================================================================
# PKGCONFIG DEPENDENCIES
# ============================================================================
BuildRequires: pkgconfig(accountsservice) >= 0.6.55
BuildRequires: pkgconfig(alsa) >= 1.2.6
BuildRequires: pkgconfig(gee-0.8) >= 0.20.0
BuildRequires: pkgconfig(girepository-2.0)
BuildRequires: pkgconfig(gnome-desktop-3.0) >= %{gnome_desktop_version}
BuildRequires: pkgconfig(gnome-settings-daemon) >= %{gnome_settings_daemon_version}
BuildRequires: pkgconfig(gsettings-desktop-schemas) >= %{gsettings_desktop_schemas_version}
BuildRequires: pkgconfig(gstreamer-1.0) >= 1.20.0
BuildRequires: pkgconfig(gtk+-3.0) >= %{gtk3_version}
BuildRequires: pkgconfig(gtk-layer-shell-0)
BuildRequires: pkgconfig(gudev-1.0)
BuildRequires: pkgconfig(ibus-1.0) >= 1.5.10
BuildRequires: pkgconfig(libcanberra) >= 0.30
BuildRequires: pkgconfig(libnotify) >= 0.7
BuildRequires: pkgconfig(libpeas-2) >= %{libpeas2_version}
BuildRequires: pkgconfig(libpulse)
BuildRequires: pkgconfig(libwacom)
BuildRequires: pkgconfig(libxfce4windowing-0) >= 4.19.3
BuildRequires: pkgconfig(polkit-agent-1) >= %{polkit_version}
BuildRequires: pkgconfig(upower-glib) >= 0.99.13
BuildRequires: pkgconfig(uuid)
BuildRequires: pkgconfig(vapigen)
BuildRequires: pkgconfig(gtk-doc) >= 1.33.0
# ============================================================================
# SUSE-SPECIFIC
# ============================================================================
BuildRequires: mozilla-nss
BuildRequires: mozilla-nspr
BuildRequires: update-alternatives
# ============================================================================
# WAYLAND STACK (OPTIONAL, FOR LABWC)
# ============================================================================
BuildRequires: labwc >= 0.6.0
BuildRequires: grim
BuildRequires: slurp
BuildRequires: swaybg
BuildRequires: swayidle
BuildRequires: wlopm
BuildRequires: gammastep
BuildRequires: gtklock
# ============================================================================
# OFFICIAL BUDGIE COMPONENTS
# ============================================================================
BuildRequires: budgie-desktop-view >= 10.10.0
Requires: budgie-desktop-services >= 1.0.2
Requires: budgie-session >= 1.0.0
Suggests: budgie-control-center >= 2.1.0+0
Suggests: budgie-calendar-applet >= 5.3
Suggests: budgie-desktop-branding
Suggests: budgie-backgrounds
# ============================================================================
# RUNTIME REQUIREMENTS - SELF
# ============================================================================
Requires: %{name} = %{version}
Requires: typelib-1_0-Budgie-3_0 = %{version}
Requires: typelib-1_0-BudgieRaven-3_0 = %{version}
Requires: libraven0 = %{version}
Requires: libbudgietheme0 = %{version}
Requires: libbudgie-plugin0 = %{version}
Requires: libbudgie-private0 = %{version}
Requires: libbudgie-appindexer0 = %{version}
Requires: libbudgie-raven-plugin0 = %{version}
Requires: libbudgie-windowing0 = %{version}
# ============================================================================
# GNOME STACK RUNTIME
# ============================================================================
Requires: gnome-settings-daemon >= %{gnome_settings_daemon_version}
Requires: gsettings-desktop-schemas >= %{gsettings_desktop_schemas_version}
Requires: gnome-keyring-pam
Requires: NetworkManager-applet
Requires: xdg-desktop-portal-gtk
Requires: xdg-user-dirs-gtk
Requires: upower >= 0.99.13
Requires: gstreamer
Requires: libnotify-tools
Requires: libcanberra-gtk3-module
Requires: hicolor-icon-theme
# ============================================================================
# PYTHON COMPONENTS
# ============================================================================
Requires: python3-psutil
Requires: python3-gobject-Gdk
Requires: python3-systemd
# ============================================================================
# DISPLAY MANAGER - ВСТАВЬТЕ СЮДА!
# ============================================================================
Requires: (lightdm or sddm or gdm)
Recommends: lightdm
# ============================================================================
# FILESYSTEM REQUIREMENTS
# ============================================================================
Requires: filesystem
# ============================================================================
# WAYLAND STACK (OPTIONAL RUNTIME)
# ============================================================================
Recommends: labwc
Recommends: grim
Recommends: slurp
Recommends: swaybg
Recommends: swayidle
Recommends: wlopm
Recommends: gammastep
Recommends: gtklock
Recommends: xdg-desktop-portal-wlr
Recommends: mutter-common
Recommends: budgie-desktop-branding
Recommends: budgie-desktop-branding-openSUSE
Suggests: budgie-desktop-branding-upstream
%description
Budgie Desktop is a feature-rich, modern desktop designed to keep out the way
of the user. It's the flagship desktop of the Solus Operating System, developed
by BuddiesOfBudgie.
This package provides the complete Budgie Desktop environment with:
- Magpie as the primary window manager (X11)
- Labwc as an experimental Wayland compositor (optional)
- Full integration with GNOME settings daemon
- Native Budgie panel, Raven, and applet system
- Desktop icons via budgie-desktop-view
%package -n typelib-1_0-Budgie-3_0
Summary: Main Introspection bindings for the Budgie Desktop
Group: System/Libraries
Requires: typelib-1_0-Peas-2
%description -n typelib-1_0-Budgie-3_0
This package provides GObject Introspection files required for
developing Budgie Applets using interpreted languages, such as Python
GObject Introspection bindings.
%package -n typelib-1_0-BudgieRaven-3_0
Summary: Raven Introspection bindings for the Budgie Desktop
Group: System/Libraries
%description -n typelib-1_0-BudgieRaven-3_0
This package provides GObject Introspection files required for
developing Budgie Raven plugins using interpreted languages.
%package devel
Summary: Development files for the Budgie Desktop
Group: Development/Libraries/GNOME
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: libraven0 = %{version}
Requires: libbudgietheme0 = %{version}
Requires: libbudgie-plugin0 = %{version}
Requires: libbudgie-private0 = %{version}
Requires: libbudgie-appindexer0 = %{version}
Requires: libbudgie-raven-plugin0 = %{version}
Requires: libbudgie-windowing0 = %{version}
%description devel
This package provides development files required for software to
create their own applets and plugins for Budgie Desktop.
%package doc
Summary: Documentation files for the Budgie Desktop
Group: Documentation/HTML
BuildArch: noarch
Requires: gtk-doc
Supplements: (budgie-desktop and patterns-base-documentation)
%description doc
This package provides API Documentation for the Budgie Plugin API,
in the GTK-Doc HTML format.
%package -n libraven0
Summary: Shared library for Raven notification center
Group: System/Libraries
%description -n libraven0
Budgie Desktop Notification Center shared library.
%package -n libbudgietheme0
Summary: Shared library for Budgie theming
Group: System/Libraries
%description -n libbudgietheme0
Budgie theming engine shared library package.
%package -n libbudgie-plugin0
Summary: Shared library for Budgie plugins
Group: System/Libraries
%description -n libbudgie-plugin0
Shared library for budgie plugins to link against.
%package -n libbudgie-private0
Summary: Private library for Budgie
Group: System/Libraries
%description -n libbudgie-private0
Private library for Budgie desktop to link against.
%package -n libbudgie-appindexer0
Summary: Private library for Budgie Menu
Group: System/Libraries
%description -n libbudgie-appindexer0
Private library for Budgie menu to link against.
%package -n libbudgie-raven-plugin0
Summary: Shared library for Budgie raven plugins
Group: System/Libraries
%description -n libbudgie-raven-plugin0
Shared library for budgie raven plugins to link against.
%package -n libbudgie-windowing0
Summary: Windowing library for Budgie Desktop
Group: System/Libraries
%description -n libbudgie-windowing0
Windowing management library for Budgie Desktop to link against.
%lang_package
%prep
# GPG verification (if key exists)
if [ -f "%{SOURCE2}" ]; then
echo "Verifying GPG signature using %{SOURCE2}..."
gpg2 --quiet --no-default-keyring --keyring %{_tmppath}/budgie-keyring.gpg \
--import %{SOURCE2} 2>/dev/null || :
gpg2 --quiet --no-default-keyring --keyring %{_tmppath}/budgie-keyring.gpg \
--verify %{SOURCE1} %{SOURCE0} 2>/dev/null && \
echo "GPG signature verified successfully" || \
echo "Warning: GPG verification failed - continuing anyway"
rm -f %{_tmppath}/budgie-keyring.gpg
else
echo "Warning: GPG key file %{SOURCE2} not found - skipping verification"
fi
%autosetup -p1
%build
export CFLAGS="%{optflags} -Wno-pedantic -Wno-error"
%meson \
-Dc_std=none \
-Dwith-hibernate=false \
-Dwith-runtime-dependencies=false \
-Dxdg-appdir=%{_distconfdir}/xdg/autostart
%meson_build
%install
%meson_install
# Установка permissions для labwc bridge
chmod +x %{buildroot}%{_libexecdir}/%{name}/labwc_bridge.py 2>/dev/null || :
# ============================================================================
# X11 СЕССИЯ (MAGPIE)
# ============================================================================
mkdir -p %{buildroot}%{_datadir}/xsessions
if [ ! -f %{buildroot}%{_datadir}/xsessions/budgie-desktop.desktop ]; then
cat > %{buildroot}%{_datadir}/xsessions/budgie-desktop.desktop << EOF
[Desktop Entry]
Name=Budgie Desktop
Comment=Budgie Desktop (X11/Magpie)
Exec=budgie-session
Type=Application
DesktopNames=Budgie
EOF
fi
# ============================================================================
# WAYLAND СЕССИЯ (LABWC)
# ============================================================================
mkdir -p %{buildroot}%{_datadir}/wayland-sessions
rm -f %{buildroot}%{_datadir}/wayland-sessions/budgie-desktop.desktop
if [ -f %{buildroot}%{_datadir}/wayland-sessions/budgie.desktop ]; then
mv %{buildroot}%{_datadir}/wayland-sessions/budgie.desktop \
%{buildroot}%{_datadir}/wayland-sessions/budgie-labwc.desktop
elif [ ! -f %{buildroot}%{_datadir}/wayland-sessions/budgie-labwc.desktop ]; then
cat > %{buildroot}%{_datadir}/wayland-sessions/budgie-labwc.desktop << EOF
[Desktop Entry]
Name=Budgie Desktop (Wayland)
Comment=Budgie Desktop with Labwc (Wayland)
Exec=startbudgielabwc
Type=Application
DesktopNames=Budgie
EOF
fi
# ============================================================================
# АЛЬТЕРНАТИВЫ ДЛЯ WAYLAND
# ============================================================================
mkdir -p %{buildroot}%{_sysconfdir}/alternatives
touch %{buildroot}%{_sysconfdir}/alternatives/default-waylandsession.desktop
# ============================================================================
# AUTOSTART ФАЙЛЫ
# ============================================================================
mkdir -p %{buildroot}%{_distconfdir}/xdg/autostart
if [ -d %{buildroot}%{_sysconfdir}/xdg/autostart ] && \
[ "%{_sysconfdir}" != "%{_distconfdir}" ] && \
[ "$(ls -A %{buildroot}%{_sysconfdir}/xdg/autostart 2>/dev/null)" ]; then
mv %{buildroot}%{_sysconfdir}/xdg/autostart/* %{buildroot}%{_distconfdir}/xdg/autostart/ 2>/dev/null || :
rmdir %{buildroot}%{_sysconfdir}/xdg/autostart 2>/dev/null || :
fi
# ============================================================================
# ИСПРАВЛЕНИЕ ВЛАДЕНИЯ ДИРЕКТОРИЕЙ BACKGROUNDS
# ============================================================================
mkdir -p %{buildroot}%{_datadir}/backgrounds/budgie
%find_lang %{name}
%post
# Регистрируем Wayland-сессию как опцию
if [ -f %{_datadir}/wayland-sessions/budgie-labwc.desktop ]; then
%{_sbindir}/update-alternatives --install \
%{_datadir}/wayland-sessions/default.desktop \
default-waylandsession.desktop \
%{_datadir}/wayland-sessions/budgie-labwc.desktop 20 2>/dev/null || :
fi
%postun
if [ $1 -eq 0 ]; then
%{_sbindir}/update-alternatives --remove \
default-waylandsession.desktop \
%{_datadir}/wayland-sessions/budgie-labwc.desktop 2>/dev/null || :
fi
%ldconfig_scriptlets -n libraven0
%ldconfig_scriptlets -n libbudgietheme0
%ldconfig_scriptlets -n libbudgie-plugin0
%ldconfig_scriptlets -n libbudgie-private0
%ldconfig_scriptlets -n libbudgie-appindexer0
%ldconfig_scriptlets -n libbudgie-raven-plugin0
%ldconfig_scriptlets -n libbudgie-windowing0
# ============================================================================
# %FILES - ОСНОВНОЙ ПАКЕТ (БЕЗ КОНФЛИКТУЮЩИХ ФАЙЛОВ)
# ============================================================================
%files
%license LICENSE
%doc README.md
%{_bindir}/budgie-*
%{_bindir}/org.buddiesofbudgie.*
%{_bindir}/startbudgielabwc
%{_libexecdir}/budgie-desktop/
%{_libdir}/budgie-desktop/
%{_datadir}/budgie
%{_datadir}/budgie-desktop
%{_datadir}/applications/org.buddiesofbudgie*.desktop
%dir %{_datadir}/backgrounds
%dir %{_datadir}/backgrounds/budgie
%{_datadir}/backgrounds/budgie/*
%{_datadir}/glib-2.0/schemas/*.gschema.xml
%{_datadir}/glib-2.0/schemas/*.gschema.override
%{_datadir}/gnome-session
%{_datadir}/icons/hicolor/scalable/*/*.svg
%{_datadir}/icons/hicolor/symbolic/emblems/budgie*
%{_datadir}/xdg-desktop-portal/budgie-portals.conf
%{_datadir}/wayland-sessions/budgie-labwc.desktop
%{_datadir}/xsessions/budgie-desktop.desktop
%{_distconfdir}/xdg/autostart/*.desktop
%{_mandir}/man1/*%{?ext_man}
%ghost %{_sysconfdir}/alternatives/default-waylandsession.desktop
# ============================================================================
# %FILES - БИБЛИОТЕКИ (ПОЛНОЕ ВЛАДЕНИЕ)
# ============================================================================
%files -n libraven0
%{_libdir}/libraven.so.*
%{_libdir}/libraven.so.0
%{_libdir}/libraven.so.0.0.0
%files -n libbudgietheme0
%{_libdir}/libbudgietheme.so.*
%{_libdir}/libbudgietheme.so.0
%{_libdir}/libbudgietheme.so.0.0.0
%files -n libbudgie-plugin0
%{_libdir}/libbudgie-plugin.so.*
%{_libdir}/libbudgie-plugin.so.0
%{_libdir}/libbudgie-plugin.so.0.0.0
%files -n libbudgie-private0
%{_libdir}/libbudgie-private.so.*
%{_libdir}/libbudgie-private.so.0
%{_libdir}/libbudgie-private.so.0.0.0
%files -n libbudgie-appindexer0
%{_libdir}/libbudgie-appindexer.so.*
%{_libdir}/libbudgie-appindexer.so.0
%{_libdir}/libbudgie-appindexer.so.0.0.0
%files -n libbudgie-raven-plugin0
%{_libdir}/libbudgie-raven-plugin.so.*
%{_libdir}/libbudgie-raven-plugin.so.0
%{_libdir}/libbudgie-raven-plugin.so.0.0.0
%files -n libbudgie-windowing0
%{_libdir}/libbudgie-windowing.so.*
%{_libdir}/libbudgie-windowing.so.0
%{_libdir}/libbudgie-windowing.so.0.0.0
# ============================================================================
# %FILES - TYPELIB
# ============================================================================
%files -n typelib-1_0-Budgie-3_0
%{_libdir}/girepository-1.0/Budgie-3.0.typelib
%files -n typelib-1_0-BudgieRaven-3_0
%{_libdir}/girepository-1.0/BudgieRaven-3.0.typelib
# ============================================================================
# %FILES - РАЗРАБОТКА
# ============================================================================
%files devel
%{_includedir}/budgie-desktop
%{_libdir}/*.so
%{_libdir}/pkgconfig/*.pc
%{_datadir}/gir-1.0/Budgie-3.0.gir
%{_datadir}/gir-1.0/BudgieRaven-3.0.gir
%{_datadir}/vala/vapi/budgie-*
# ============================================================================
# %FILES - ДОКУМЕНТАЦИЯ
# ============================================================================
%files doc
%{_datadir}/gtk-doc/html/budgie-desktop
# ============================================================================
# %FILES - ЯЗЫКИ
# ============================================================================
%files lang -f %{name}.lang
# ============================================================================
# %CHANGELOG
# ============================================================================
%changelog
* Tue Jan 27 2026 Alex.S.Shubin aka Sylar <renard.corp@hotmail.com> - 10.10.1-0
- Update to 10.10.1 stable
- Add magpie support for X11 session
- Add labwc support for Wayland session (optional)
- Fixed build: removed all non-existent Meson options
- Fixed duplicate typelib-1_0-Budgie-3_0 section
- Fixed GPG signature verification
- Removed duplicate BuildRequires: libpeas2
- Fixed Recommends: mutter-common (was Requires)
- Fixed wayland-sessions installation
- Fixed file duplication in %%files section
- Added checks for autostart files
- Fixed ownership of %%{_datadir}/backgrounds/budgie directory
- Added Requires: filesystem
- **FIXED PACKAGE CONFLICT**: removed libraries and typelib from main package
- **FIXED**: explicit file ownership in library subpackages