%global _basename appmenu %global display wayland %global repo vala-panel-%{_basename} %global forgeurl https://gitlab.com/vala-panel-project/%{repo} %global commit eb3077eac96f0e1836d7d455bf847367c9eb0c2e %global date 20261009 %forgemeta Name: %{repo}-%{display} Version: 25.04 Release: 2%{?dist} License: LGPL-3.0-or-later Summary: Global Menu plugin URL: %{forgeurl} Source0: %{forgesource} Source1: 80-%{_basename}-gtk-module.sh Patch0: tracker.patch Patch1: wayfire_debug.patch BuildRequires: bamf-daemon BuildRequires: cmake BuildRequires: gettext BuildRequires: java-devel BuildRequires: meson BuildRequires: ninja-build BuildRequires: systemd-rpm-macros BuildRequires: vala BuildRequires: pkgconfig(dbusmenu-glib-0.4) BuildRequires: pkgconfig(gtk+-2.0) BuildRequires: pkgconfig(gtk+-3.0) BuildRequires: pkgconfig(gtk-layer-shell-0) BuildRequires: pkgconfig(json-glib-1.0) BuildRequires: pkgconfig(libbamf3) BuildRequires: pkgconfig(systemd) BuildRequires: pkgconfig(wayland-protocols) BuildRequires: pkgconfig(wayfire) BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(libmatepanelapplet-4.0) BuildRequires: pkgconfig(libxfce4panel-2.0) BuildRequires: pkgconfig(libxfconf-0) BuildRequires: pkgconfig(budgie-3.0) # BuildRequires: pkgconfig(libwnck-3.0) >= 3.4.0 # BuildRequires: pkgconfig(vala-panel) Requires: (%{_basename}-gtk2-module-%{display} if gtk2) Requires: (%{_basename}-gtk3-module-%{display} if gtk3) Recommends: %{_basename}-registrar-%{display} Recommends: %{_basename}-glib-translator-%{display} Recommends: (%{repo}-mate-%{display} if mate-panel) Recommends: (%{repo}-xfce-%{display} if xfce4-panel) Recommends: (%{repo}-budgie-%{display} if budgie-desktop) Provides: %{_basename} == %{version}-%{release} Conflicts: %{_basename} == %{version}-%{release} Obsoletes: %{_basename} < %{version}-%{release} %description Global Menu applet for use with Vala Panel, xfce4-panel and mate-panel (Budgie 10.x is also planned). Appmenu GTK module is used as a backend %files -f %{repo}.lang %doc %{_docdir}/%{repo}/README.md %license %{_defaultlicensedir}/%{repo}/LICENSE %{_datadir}/glib-2.0/schemas/org.valapanel.%{_basename}.gschema.xml #------------------------------------------------------------------------------- %package -n %{_basename}-gtk-parser-%{display}-devel Summary: Common development-files for appmenu-gtk{2,3}-parser Provides: %{_basename}-gtk-parser-devel == %{version}-%{release} Conflicts: %{_basename}-gtk-parser-devel == %{version}-%{release} Obsoletes: %{_basename}-gtk-parser-devel < %{version}-%{release} BuildArch: noarch %description -n %{_basename}-gtk-parser-%{display}-devel This package contains common headers and documentation for appmenu-gtk{2,3}-parser. %files -n %{_basename}-gtk-parser-%{display}-devel %{_includedir}/%{_basename}-gtk-parser #------------------------------------------------------------------------------- %package -n %{_basename}-gtk2-parser-%{display} Summary: Gtk2MenuShell to GMenuModel parser Provides: %{_basename}-gtk2-parser == %{version}-%{release} Conflicts: %{_basename}-gtk2-parser == %{version}-%{release} Obsoletes: %{_basename}-gtk2-parser < %{version}-%{release} %description -n %{_basename}-gtk2-parser-%{display} This library converts Gtk2MenuShells into GMenuModels. %files -n %{_basename}-gtk2-parser-%{display} %{_libdir}/lib%{_basename}-gtk2-parser.so.* #------------------------------------------------------------------------------- %package -n %{_basename}-gtk2-parser-%{display}-devel Summary: Development-files for appmenu-gtk2-parser Requires: gtk2-devel%{?_isa} Requires: %{_basename}-gtk-parser-%{display}-devel == %{version}-%{release} Requires: %{_basename}-gtk2-parser-%{display}%{?_isa} == %{version}-%{release} Provides: %{_basename}-gtk2-parser-devel == %{version}-%{release} Conflicts: %{_basename}-gtk2-parser-devel == %{version}-%{release} Obsoletes: %{_basename}-gtk2-parser-devel < %{version}-%{release} %description -n %{_basename}-gtk2-parser-%{display}-devel This package contains development-files for appmenu-gtk2-parser. %files -n %{_basename}-gtk2-parser-%{display}-devel %{_libdir}/lib%{_basename}-gtk2-parser.so %{_libdir}/pkgconfig/%{_basename}-gtk2-parser.pc #------------------------------------------------------------------------------- %package -n %{_basename}-gtk3-parser-%{display} Summary: Gtk3MenuShell to GMenuModel parser Provides: %{_basename}-gtk3-parser == %{version}-%{release} Conflicts: %{_basename}-gtk3-parser == %{version}-%{release} Obsoletes: %{_basename}-gtk3-parser < %{version}-%{release} %description -n %{_basename}-gtk3-parser-%{display} This library converts Gtk3MenuShells into GMenuModels. %files -n %{_basename}-gtk3-parser-%{display} %{_libdir}/lib%{_basename}-gtk3-parser.so.* #------------------------------------------------------------------------------- %package -n %{_basename}-gtk3-parser-%{display}-devel Summary: Development-files for appmenu-gtk3-parser Requires: gtk3-devel%{?_isa} Requires: %{name}-gtk-parser-devel == %{version}-%{release} Requires: %{name}-gtk3-parser%{?_isa} == %{version}-%{release} Provides: %{_basename}-gtk3-parser-devel == %{version}-%{release} Conflicts: %{_basename}-gtk3-parser-devel == %{version}-%{release} Obsoletes: %{_basename}-gtk3-parser-devel < %{version}-%{release} %description -n %{_basename}-gtk3-parser-%{display}-devel This package contains development-files for appmenu-gtk3-parser. %files -n %{_basename}-gtk3-parser-%{display}-devel %{_libdir}/lib%{_basename}-gtk3-parser.so %{_libdir}/pkgconfig/%{_basename}-gtk3-parser.pc #------------------------------------------------------------------------------- %package -n %{_basename}-gtk-module-%{display}-common Summary: Common files for appmenu-gtk2-module and appmenu-gtk3-module Provides: %{_basename}-gtk-module-common == %{version}-%{release} Conflicts: %{_basename}-gtk-module-common == %{version}-%{release} Obsoletes: %{_basename}-gtk-module-common < %{version}-%{release} %description -n %{_basename}-gtk-module-%{display}-common This package contains common files for appmenu-gtk2-module and appmenu-gtk3-module. %files -n %{_basename}-gtk-module-%{display}-common %license %{_defaultlicensedir}/%{_basename}-gtk-module/LICENSE %doc %{_docdir}/%{_basename}-gtk-module/{AUTHORS,README.md,TODO} %{_userunitdir}/%{_basename}-gtk-module.service %{_sysconfdir}/profile.d/80-%{_basename}-gtk-module.sh %{_datadir}/glib-2.0/schemas/org.%{_basename}.gtk-module.gschema.xml #------------------------------------------------------------------------------- %package -n %{_basename}-gtk2-module-%{display} Summary: Gtk2MenuShell D-Bus exporter Requires: %{name}-gtk2-parser%{?_isa} == %{version}-%{release} Requires: %{name}-gtk-module-common == %{version}-%{release} Provides: %{name}-gtk == %{version}-%{release} Provides: %{name}-gtk%{?_isa} == %{version}-%{release} Conflicts: %{_basename}-gtk2-module == %{version}-%{release} Obsoletes: %{_basename}-gtk2-module < %{version}-%{release} %description -n %{_basename}-gtk2-module-%{display} This GTK+ 2 module exports Gtk2MenuShells over D-Bus. %files -n %{_basename}-gtk2-module-%{display} %{_libdir}/gtk-2.0/modules/lib%{_basename}-gtk-module.so #------------------------------------------------------------------------------- %package -n %{_basename}-gtk3-module-%{display} Summary: Gtk3MenuShell D-Bus exporter Requires: %{name}-gtk3-parser%{?_isa} == %{version}-%{release} Requires: %{name}-gtk-module-common == %{version}-%{release} Provides: %{name}-gtk3 == %{version}-%{release} Provides: %{name}-gtk3%{?_isa} == %{version}-%{release} Conflicts: %{_basename}-gtk3-module == %{version}-%{release} Obsoletes: %{_basename}-gtk3-module < %{version}-%{release} %description -n %{_basename}-gtk3-module-%{display} This GTK+ 3 module exports Gtk3MenuShells over D-Bus. %files -n %{_basename}-gtk3-module-%{display} %{_libdir}/gtk-3.0/modules/lib%{_basename}-gtk-module.so #------------------------------------------------------------------------------- %package -n %{_basename}-registrar-%{display} Summary: Small utility to hold DBusMenu menus Provides: %{_basename}-registrar == %{version}-%{release} Conflicts: %{_basename}-registrar == %{version}-%{release} Obsoletes: %{_basename}-registrar < %{version}-%{release} %description -n %{_basename}-registrar-%{display} Small utility to hold DBusMenu menus %files -n %{_basename}-registrar-%{display} %{_libexecdir}/vala-panel/%{_basename}-registrar %{_datadir}/dbus-1/services/com.canonical.AppMenu.Registrar.service #------------------------------------------------------------------------------- %package -n %{_basename}-glib-translator-%{display} Summary: GLib library to translate DBusMenu menus into GMenuModels Provides: %{_basename}-glib-translator == %{version}-%{release} Conflicts: %{_basename}-glib-translator == %{version}-%{release} Obsoletes: %{_basename}-glib-translator < %{version}-%{release} %description -n %{_basename}-glib-translator-%{display} GLib library to translate DBusMenu menus into GMenuModels %files -n %{_basename}-glib-translator-%{display} %{_datadir}/vala/vapi/%{_basename}-glib-translator.* %{_datadir}/gir-1.0/AppmenuGLibTranslator-%{version}.gir %{_libdir}/girepository-1.0/AppmenuGLibTranslator-%{version}.typelib %{_libdir}/lib%{_basename}-glib-translator.so.* #------------------------------------------------------------------------------- %package -n %{_basename}-glib-translator-%{display}-devel Summary: Development-files for appmenu-glib-translator Requires: gtk3-devel%{?_isa} Requires: %{name}-glib-translator%{?_isa} == %{version}-%{release} Provides: %{_basename}-glib-translator-devel == %{version}-%{release} Conflicts: %{_basename}-glib-translator-devel == %{version}-%{release} Obsoletes: %{_basename}-glib-translator-devel < %{version}-%{release} %description -n %{_basename}-glib-translator-%{display}-devel This package contains development-files for appmenu-gtk3-parser. %files -n %{_basename}-glib-translator-%{display}-devel %{_includedir}/%{_basename}-glib-translator/importer.h %{_libdir}/lib%{_basename}-glib-translator.so %{_libdir}/pkgconfig/%{_basename}-glib-translator.pc #------------------------------------------------------------------------------- %package -n %{repo}-xfce4-%{display} Summary: Global Menu plugin for xfce4-panel Requires: wayfire Requires: xfce4-panel Requires: %{name} == %{version}-%{release} Provides: xfce4-%{_basename}-plugin == %{version}-%{release} Conflicts: xfce4-%{_basename}-plugin == %{version}-%{release} Obsoletes: xfce4-%{_basename}-plugin < %{version}-%{release} %description -n %{repo}-xfce4-%{display} Global Menu plugin for xfce4-panel %files -n %{repo}-xfce4-%{display} %{_libdir}/xfce4/panel/plugins/lib%{_basename}-xfce.so %{_datadir}/xfce4/panel/plugins/%{_basename}.desktop #------------------------------------------------------------------------------- %package -n %{repo}-mate-%{display} Summary: Global Menu plugin for mate-panel Requires: mate-panel Requires: wayfire Requires: %{name} == %{version}-%{release} Provides: mate-%{_basename}-plugin == %{version}-%{release} Conflicts: mate-%{_basename}-plugin == %{version}-%{release} Obsoletes: mate-%{_basename}-plugin < %{version}-%{release} %description -n %{repo}-mate-%{display} Global Menu plugin for mate-panel %files -n %{repo}-mate-%{display} %{_libdir}/mate-panel/lib%{_basename}-mate.so %{_datadir}/mate-panel/applets/org.vala-panel.%{_basename}.mate-panel-applet #------------------------------------------------------------------------------- %package -n %{repo}-budgie-%{display} Summary: Global Menu plugin for budgie-panel Requires: budgie-desktop Requires: wayfire Requires: %{name} == %{version}-%{release} Provides: budgie-%{_basename}-plugin == %{version}-%{release} Conflicts: budgie-%{_basename}-plugin == %{version}-%{release} Obsoletes: budgie-%{_basename}-plugin < %{version}-%{release} %description -n %{repo}-budgie-%{display} Global Menu plugin for budgie %files -n %{repo}-budgie-%{display} %{_libdir}/budgie-desktop/plugins/budgie-%{_basename}-plugin #------------------------------------------------------------------------------- %package -n jayatana-%{display} Summary: Global Menu module for Java Applications Provides: jayatana == %{version}-%{release} Conflicts: jayatana == %{version}-%{release} Obsoletes: jayatana < %{version}-%{release} %description -n jayatana-%{display} Global Menu module for Java Applications. Contains Bugs! %files -n jayatana-%{display} %{_datadir}/java/jayatana*.jar %{_libdir}/jayatana #------------------------------------------------------------------------------- %prep %forgeautosetup -p1 sed -i 's/budgie-1.0/budgie-3.0/g' meson.build # Setup systemd-unit for Fedora. f="subprojects/%{_basename}-gtk-module/data/%{_basename}-gtk-module.service.in" %{__sed} -i.orig -e's!xfce-session.target$!default.target!g' \ -e's!mate-session.target$!default.target!g' \ -e's!gnome-session.target$!default.target!g' \ -e's!@CMAKE_INSTALL_FULL_BINDIR@$!%{_bindir}!g' ${f} %{_bindir}/touch -r ${f}.orig ${f} && %{__rm} ${f}.orig %build %meson -Dxfce=enabled -Dvalapanel=disabled -Djayatana=enabled -Dbudgie=enabled -Dmate=enabled %meson_build %install %meson_install %find_lang %{repo} install -Dm755 %{SOURCE1} -t %{buildroot}%{_sysconfdir}/profile.d/ %post %systemd_user_post %{_basename}-gtk-module.service %preun %systemd_user_preun %{_basename}-gtk-module.service %postun %systemd_user_postun_with_restart %{_basename}-gtk-module.service #------------------------------------------------------------------------------- %changelog * Fri Oct 10 2025 Hazel Bunny - 25.04-2 - Switch to git snapshot * Tue Apr 22 2025 Hazel Bunny - 25.04-1 - Initial package