%define _disable_source_fetch 0 %global glib_version 2.75.1 %global gtk3_version 3.19.8 %global gtk4_version 4.0.0 %global gsettings_desktop_schemas_version 40~alpha %global json_glib_version 0.12.0 %global libinput_version 1.19.0 %global pipewire_version 0.3.33 %global lcms2_version 2.6 %global colord_version 1.4.5 %global libei_version 1.0.0 %global mutter_api_version 13 %global tarball_version %%(echo %{version} | tr '~' '.') %global toolchain clang Name: mutter Version: 45.4 Release: 10%{?dist}.tripplebuffer Summary: Window and compositing manager based on Clutter License: GPLv2+ URL: https://www.gnome.org Source0: https://download.gnome.org/sources/%{name}/45/%{name}-%{tarball_version}.tar.xz # Work-around for OpenJDK's compliance test Patch: https://raw.githubusercontent.com/TrixieUA/copr-trixieua/main/mutter-patched/patches/f39/mutter/0001-window-actor-Special-case-shaped-Java-windows.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1936991 Patch: https://raw.githubusercontent.com/TrixieUA/copr-trixieua/main/mutter-patched/patches/f39/mutter/mutter-42.alpha-disable-tegra.patch # https://pagure.io/fedora-workstation/issue/79 Patch: https://raw.githubusercontent.com/TrixieUA/copr-trixieua/main/mutter-patched/patches/f39/mutter/0001-place-Always-center-initial-setup-fedora-welcome.patch Patch: https://raw.githubusercontent.com/TrixieUA/copr-trixieua/main/mutter-patched/patches/f39/mutter/0001-gschema-Enable-scale-monitor-framebuffer-experimenta.patch # https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3329 # Modified to add the change from # https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3329#note_1874837 # which solves the problems reported with #3329 alone Patch: https://raw.githubusercontent.com/TrixieUA/copr-trixieua/main/mutter-patched/patches/f39/mutter/0001-modified-3329.patch # Nvidia secondary GPU copy acceleration # https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3304 Patch: https://raw.githubusercontent.com/TrixieUA/copr-trixieua/main/mutter-patched/patches/f39/mutter/3304.patch # Draft: Dynamic triple/double buffering (v4) # https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1441 Patch: https://raw.githubusercontent.com/TrixieUA/copr-trixieua/main/mutter-patched/patches/f39/mutter/1441.patch # backends/native: Main thread rt-scheduler: experimental feature no more # https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3296 Patch: https://raw.githubusercontent.com/TrixieUA/copr-trixieua/main/mutter-patched/patches/f39/mutter/3296.patch Patch: https://raw.githubusercontent.com/TrixieUA/copr-trixieua/main/mutter-patched/patches/f38/mutter/mutter_increase_check_alive_timeout.patch Patch: https://raw.githubusercontent.com/TrixieUA/copr-trixieua/main/mutter-patched/patches/f39/mutter/autorotate.patch BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.41.0 BuildRequires: pkgconfig(sm) BuildRequires: pkgconfig(libwacom) BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(xdamage) BuildRequires: pkgconfig(xext) BuildRequires: pkgconfig(xfixes) BuildRequires: pkgconfig(xi) BuildRequires: pkgconfig(xrandr) BuildRequires: pkgconfig(xrender) BuildRequires: pkgconfig(xcursor) BuildRequires: pkgconfig(xcomposite) BuildRequires: pkgconfig(x11-xcb) BuildRequires: pkgconfig(xkbcommon) BuildRequires: pkgconfig(xkbcommon-x11) BuildRequires: pkgconfig(xkbfile) BuildRequires: pkgconfig(xtst) BuildRequires: mesa-libEGL-devel BuildRequires: mesa-libGLES-devel BuildRequires: mesa-libGL-devel BuildRequires: mesa-libgbm-devel BuildRequires: pkgconfig(glesv2) BuildRequires: pkgconfig(graphene-gobject-1.0) BuildRequires: pam-devel BuildRequires: pkgconfig(libpipewire-0.3) >= %{pipewire_version} BuildRequires: pkgconfig(sysprof-capture-4) BuildRequires: sysprof-devel BuildRequires: pkgconfig(libsystemd) BuildRequires: xorg-x11-server-Xorg BuildRequires: xorg-x11-server-Xvfb BuildRequires: pkgconfig(xkeyboard-config) BuildRequires: desktop-file-utils # Bootstrap requirements BuildRequires: gettext-devel git-core BuildRequires: pkgconfig(libcanberra) BuildRequires: pkgconfig(gsettings-desktop-schemas) >= %{gsettings_desktop_schemas_version} BuildRequires: pkgconfig(gnome-settings-daemon) BuildRequires: meson BuildRequires: pkgconfig(gbm) BuildRequires: pkgconfig(gnome-desktop-4) BuildRequires: pkgconfig(gudev-1.0) BuildRequires: pkgconfig(libdrm) BuildRequires: pkgconfig(libstartup-notification-1.0) BuildRequires: pkgconfig(wayland-eglstream) BuildRequires: pkgconfig(wayland-protocols) BuildRequires: pkgconfig(wayland-server) BuildRequires: pkgconfig(lcms2) >= %{lcms2_version} BuildRequires: pkgconfig(colord) >= %{colord_version} BuildRequires: pkgconfig(libei-1.0) >= %{libei_version} BuildRequires: pkgconfig(libeis-1.0) >= %{libei_version} BuildRequires: pkgconfig(json-glib-1.0) >= %{json_glib_version} BuildRequires: pkgconfig(libinput) >= %{libinput_version} BuildRequires: pkgconfig(xwayland) BuildRequires: clang Requires: control-center-filesystem Requires: gsettings-desktop-schemas%{?_isa} >= %{gsettings_desktop_schemas_version} Requires: gnome-settings-daemon Requires: gtk4%{?_isa} >= %{gtk4_version} Requires: json-glib%{?_isa} >= %{json_glib_version} Requires: libinput%{?_isa} >= %{libinput_version} Requires: pipewire%{_isa} >= %{pipewire_version} Requires: startup-notification Requires: dbus # Need common Requires: %{name}-common = %{version}-%{release} Recommends: mesa-dri-drivers%{?_isa} Provides: firstboot(windowmanager) = mutter # Cogl and Clutter were forked at these versions, but have diverged # significantly since then. Provides: bundled(cogl) = 1.22.0 Provides: bundled(clutter) = 1.26.0 Conflicts: mutter < 45~beta.1-2 # Make sure dnf updates gnome-shell together with this package; otherwise we # might end up with broken gnome-shell installations due to mutter ABI changes. Conflicts: gnome-shell < 45~rc %description Mutter is a window and compositing manager that displays and manages your desktop via OpenGL. Mutter combines a sophisticated display engine using the Clutter toolkit with solid window-management logic inherited from the Metacity window manager. While Mutter can be used stand-alone, it is primarily intended to be used as the display core of a larger system such as GNOME Shell. For this reason, Mutter is very extensible via plugins, which are used both to add fancy visual effects and to rework the window management behaviors to meet the needs of the environment. %package common Summary: Common files used by %{name} and forks of %{name} BuildArch: noarch Conflicts: mutter < 45~beta.1-2 %description common Common files used by Mutter and soft forks of Mutter %package devel Summary: Development package for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} # for EGL/eglmesaext.h that's included from public cogl-egl-defines.h header Requires: mesa-libEGL-devel %description devel Header files and libraries for developing Mutter plugins. Also includes utilities for testing Metacity/Mutter themes. %package tests Summary: Tests for the %{name} package Requires: %{name}-devel%{?_isa} = %{version}-%{release} Requires: %{name}%{?_isa} = %{version}-%{release} Requires: gtk3%{?_isa} >= %{gtk3_version} %description tests The %{name}-tests package contains tests that can be used to verify the functionality of the installed %{name} package. %prep %autosetup -S git -n %{name}-%{tarball_version} %build export CFLAGS="%{optflags} -O3 -flto=thin" export CXXFLAGS="%{optflags} -O3 -flto=thin" export LDFLAGS="%{optflags} -O3" %meson -Degl_device=true -Dwayland_eglstream=true %meson_build %install %meson_install %find_lang %{name} %files -f %{name}.lang %license COPYING %doc NEWS %{_bindir}/mutter %{_libdir}/lib*.so.* %{_libdir}/mutter-%{mutter_api_version}/ %{_libexecdir}/mutter-restart-helper %{_libexecdir}/mutter-x11-frames %{_mandir}/man1/mutter.1* %files common %{_datadir}/GConf/gsettings/mutter-schemas.convert %{_datadir}/glib-2.0/schemas/org.gnome.mutter.gschema.xml %{_datadir}/glib-2.0/schemas/org.gnome.mutter.wayland.gschema.xml %{_datadir}/gnome-control-center/keybindings/50-mutter-*.xml %{_udevrulesdir}/61-mutter.rules %files devel %{_includedir}/* %{_libdir}/lib*.so %{_libdir}/pkgconfig/* %files tests %{_libexecdir}/installed-tests/mutter-%{mutter_api_version} %{_datadir}/installed-tests/mutter-%{mutter_api_version} %{_datadir}/mutter-%{mutter_api_version}/tests