mirror of
https://github.com/ublue-os/bazzite.git
synced 2025-02-22 03:40:45 +00:00
chore: Add mutter with xwayland fractional patch
This commit is contained in:
parent
8360bc2ad6
commit
63643aba49
@ -0,0 +1,163 @@
|
||||
From 21680b2f4edb064ff524cb91e9e20ace91deda6d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Sun, 21 Apr 2024 16:54:52 +0200
|
||||
Subject: [PATCH 1/2] Revert "x11/window: Update comment and variable name to
|
||||
reflect current behavior"
|
||||
|
||||
This reverts commit e4763d00e8512aeb408ae118597d753f12217487.
|
||||
---
|
||||
src/x11/window-x11.c | 15 ++++++++-------
|
||||
1 file changed, 8 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c
|
||||
index 6d2016e3ec..f6f7d87dfe 100644
|
||||
--- a/src/x11/window-x11.c
|
||||
+++ b/src/x11/window-x11.c
|
||||
@@ -2476,20 +2476,21 @@ meta_window_x11_update_input_region (MetaWindow *window)
|
||||
|
||||
if (region != NULL)
|
||||
{
|
||||
- MtkRectangle bounding_rect;
|
||||
+ MtkRectangle client_area;
|
||||
|
||||
- bounding_rect.x = 0;
|
||||
- bounding_rect.y = 0;
|
||||
- bounding_rect.width = window->buffer_rect.width;
|
||||
- bounding_rect.height = window->buffer_rect.height;
|
||||
+ client_area.x = 0;
|
||||
+ client_area.y = 0;
|
||||
+ client_area.width = window->buffer_rect.width;
|
||||
+ client_area.height = window->buffer_rect.height;
|
||||
|
||||
/* The shape we get back from the client may have coordinates
|
||||
* outside of the frame. The X SHAPE Extension requires that
|
||||
* the overall shape the client provides never exceeds the
|
||||
* "bounding rectangle" of the window -- the shape that the
|
||||
- * window would have gotten if it was unshaped.
|
||||
+ * window would have gotten if it was unshaped. In our case,
|
||||
+ * this is simply the client area.
|
||||
*/
|
||||
- mtk_region_intersect_rectangle (region, &bounding_rect);
|
||||
+ mtk_region_intersect_rectangle (region, &client_area);
|
||||
}
|
||||
|
||||
meta_window_set_input_region (window, region);
|
||||
--
|
||||
2.44.0
|
||||
|
||||
|
||||
From f1996e67ad8a5a0009e90c38767c8906e015ba70 Mon Sep 17 00:00:00 2001
|
||||
From: Adam Williamson <awilliam@redhat.com>
|
||||
Date: Thu, 5 Oct 2023 13:09:46 -0700
|
||||
Subject: [PATCH 2/2] Revert "x11: Use input region from frame window for
|
||||
decorated windows"
|
||||
|
||||
This reverts commit d991961ae2a5c8cf2e58ff1072239f4902b0f767. It
|
||||
seems to cause the broken mouse interaction bug reported in
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=2239128 .
|
||||
|
||||
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3068
|
||||
---
|
||||
src/core/frame.c | 7 -------
|
||||
src/x11/window-x11.c | 29 ++++++++++-------------------
|
||||
2 files changed, 10 insertions(+), 26 deletions(-)
|
||||
|
||||
diff --git a/src/core/frame.c b/src/core/frame.c
|
||||
index c74a2e04ec..5feb854805 100644
|
||||
--- a/src/core/frame.c
|
||||
+++ b/src/core/frame.c
|
||||
@@ -35,7 +35,6 @@
|
||||
#include "x11/window-props.h"
|
||||
|
||||
#include <X11/Xatom.h>
|
||||
-#include <X11/extensions/shape.h>
|
||||
|
||||
#define EVENT_MASK (SubstructureRedirectMask | \
|
||||
StructureNotifyMask | SubstructureNotifyMask | \
|
||||
@@ -109,9 +108,6 @@ meta_window_x11_set_frame_xwindow (MetaWindow *window,
|
||||
XChangeWindowAttributes (x11_display->xdisplay,
|
||||
frame->xwindow, CWEventMask, &attrs);
|
||||
|
||||
- if (META_X11_DISPLAY_HAS_SHAPE (x11_display))
|
||||
- XShapeSelectInput (x11_display->xdisplay, frame->xwindow, ShapeNotifyMask);
|
||||
-
|
||||
meta_x11_display_register_x_window (x11_display, &frame->xwindow, window);
|
||||
|
||||
if (window->mapped)
|
||||
@@ -220,9 +216,6 @@ meta_window_destroy_frame (MetaWindow *window)
|
||||
window->reparents_pending += 1;
|
||||
}
|
||||
|
||||
- if (META_X11_DISPLAY_HAS_SHAPE (x11_display))
|
||||
- XShapeSelectInput (x11_display->xdisplay, frame->xwindow, NoEventMask);
|
||||
-
|
||||
XDeleteProperty (x11_display->xdisplay,
|
||||
meta_window_x11_get_xwindow (window),
|
||||
x11_display->atom__MUTTER_NEEDS_FRAME);
|
||||
diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c
|
||||
index f6f7d87dfe..1bc5c57a1a 100644
|
||||
--- a/src/x11/window-x11.c
|
||||
+++ b/src/x11/window-x11.c
|
||||
@@ -2082,10 +2082,6 @@ meta_window_x11_constructed (GObject *object)
|
||||
priv->keys_grabbed = FALSE;
|
||||
priv->grab_on_frame = FALSE;
|
||||
|
||||
- g_signal_connect (window, "notify::decorated",
|
||||
- G_CALLBACK (meta_window_x11_update_input_region),
|
||||
- window);
|
||||
-
|
||||
G_OBJECT_CLASS (meta_window_x11_parent_class)->constructed (object);
|
||||
}
|
||||
|
||||
@@ -2400,21 +2396,16 @@ meta_window_x11_update_input_region (MetaWindow *window)
|
||||
g_autoptr (MtkRegion) region = NULL;
|
||||
MetaWindowX11 *window_x11 = META_WINDOW_X11 (window);
|
||||
MetaWindowX11Private *priv = meta_window_x11_get_instance_private (window_x11);
|
||||
- Window xwindow;
|
||||
|
||||
+ /* Decorated windows don't have an input region, because
|
||||
+ we don't shape the frame to match the client windows
|
||||
+ (so the events are blocked by the frame anyway)
|
||||
+ */
|
||||
if (window->decorated)
|
||||
{
|
||||
- if (!window->frame)
|
||||
- {
|
||||
- if (priv->input_region)
|
||||
- meta_window_set_input_region (window, NULL);
|
||||
- return;
|
||||
- }
|
||||
- xwindow = window->frame->xwindow;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- xwindow = priv->xwindow;
|
||||
+ if (priv->input_region)
|
||||
+ meta_window_set_input_region (window, NULL);
|
||||
+ return;
|
||||
}
|
||||
|
||||
if (META_X11_DISPLAY_HAS_SHAPE (x11_display))
|
||||
@@ -2426,7 +2417,7 @@ meta_window_x11_update_input_region (MetaWindow *window)
|
||||
|
||||
mtk_x11_error_trap_push (x11_display->xdisplay);
|
||||
rects = XShapeGetRectangles (x11_display->xdisplay,
|
||||
- xwindow,
|
||||
+ priv->xwindow,
|
||||
ShapeInput,
|
||||
&n_rects,
|
||||
&ordering);
|
||||
@@ -2480,8 +2471,8 @@ meta_window_x11_update_input_region (MetaWindow *window)
|
||||
|
||||
client_area.x = 0;
|
||||
client_area.y = 0;
|
||||
- client_area.width = window->buffer_rect.width;
|
||||
- client_area.height = window->buffer_rect.height;
|
||||
+ client_area.width = priv->client_rect.width;
|
||||
+ client_area.height = priv->client_rect.height;
|
||||
|
||||
/* The shape we get back from the client may have coordinates
|
||||
* outside of the frame. The X SHAPE Extension requires that
|
||||
--
|
||||
2.44.0
|
||||
|
145
spec_files/mutter/0001-modified-3329.patch
Normal file
145
spec_files/mutter/0001-modified-3329.patch
Normal file
@ -0,0 +1,145 @@
|
||||
From e20ebeefa42997fe65008b11ef771c71b697273c Mon Sep 17 00:00:00 2001
|
||||
From: Adam Williamson <awilliam@redhat.com>
|
||||
Date: Fri, 20 Oct 2023 22:12:23 -0700
|
||||
Subject: [PATCH] modified 3329
|
||||
|
||||
Signed-off-by: Adam Williamson <awilliam@redhat.com>
|
||||
---
|
||||
src/compositor/meta-compositor-x11.c | 2 ++
|
||||
src/core/display.c | 34 ----------------------------
|
||||
src/tests/x11-test.sh | 3 +++
|
||||
src/x11/meta-x11-display.c | 30 +++++++++++++++++++++++-
|
||||
4 files changed, 34 insertions(+), 35 deletions(-)
|
||||
|
||||
diff --git a/src/compositor/meta-compositor-x11.c b/src/compositor/meta-compositor-x11.c
|
||||
index 1ad3327dd..ce7bc1945 100644
|
||||
--- a/src/compositor/meta-compositor-x11.c
|
||||
+++ b/src/compositor/meta-compositor-x11.c
|
||||
@@ -188,6 +188,8 @@ meta_compositor_x11_manage (MetaCompositor *compositor,
|
||||
|
||||
compositor_x11->have_x11_sync_object = meta_sync_ring_init (xdisplay);
|
||||
|
||||
+ meta_x11_display_redirect_windows (x11_display, display);
|
||||
+
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
diff --git a/src/core/display.c b/src/core/display.c
|
||||
index 0a191c0fb..b16e50e21 100644
|
||||
--- a/src/core/display.c
|
||||
+++ b/src/core/display.c
|
||||
@@ -930,9 +930,6 @@ meta_display_new (MetaContext *context,
|
||||
MetaDisplay *display;
|
||||
MetaDisplayPrivate *priv;
|
||||
guint32 timestamp;
|
||||
-#ifdef HAVE_X11_CLIENT
|
||||
- Window old_active_xwindow = None;
|
||||
-#endif
|
||||
MetaMonitorManager *monitor_manager;
|
||||
MetaSettings *settings;
|
||||
MetaInputCapture *input_capture;
|
||||
@@ -1048,14 +1045,6 @@ meta_display_new (MetaContext *context,
|
||||
display->last_focus_time = timestamp;
|
||||
display->last_user_time = timestamp;
|
||||
|
||||
-#ifdef HAVE_X11
|
||||
- if (!meta_is_wayland_compositor ())
|
||||
- meta_prop_get_window (display->x11_display,
|
||||
- display->x11_display->xroot,
|
||||
- display->x11_display->atom__NET_ACTIVE_WINDOW,
|
||||
- &old_active_xwindow);
|
||||
-#endif
|
||||
-
|
||||
if (!meta_compositor_manage (display->compositor, error))
|
||||
{
|
||||
g_object_unref (display);
|
||||
@@ -1076,30 +1065,7 @@ meta_display_new (MetaContext *context,
|
||||
g_signal_connect (display->gesture_tracker, "state-changed",
|
||||
G_CALLBACK (gesture_tracker_state_changed), display);
|
||||
|
||||
- /* We know that if mutter is running as a Wayland compositor,
|
||||
- * we start out with no windows.
|
||||
- */
|
||||
-#ifdef HAVE_X11_CLIENT
|
||||
- if (!meta_is_wayland_compositor ())
|
||||
- meta_display_manage_all_xwindows (display);
|
||||
-
|
||||
- if (old_active_xwindow != None)
|
||||
- {
|
||||
- MetaWindow *old_active_window;
|
||||
- old_active_window = meta_x11_display_lookup_x_window (display->x11_display,
|
||||
- old_active_xwindow);
|
||||
- if (old_active_window)
|
||||
- meta_window_focus (old_active_window, timestamp);
|
||||
- else
|
||||
- meta_display_unset_input_focus (display, timestamp);
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- meta_display_unset_input_focus (display, timestamp);
|
||||
- }
|
||||
-#else
|
||||
meta_display_unset_input_focus (display, timestamp);
|
||||
-#endif
|
||||
|
||||
g_signal_connect (stage, "notify::is-grabbed",
|
||||
G_CALLBACK (on_is_grabbed_changed), display);
|
||||
diff --git a/src/tests/x11-test.sh b/src/tests/x11-test.sh
|
||||
index 59e460fc3..d95b2460f 100755
|
||||
--- a/src/tests/x11-test.sh
|
||||
+++ b/src/tests/x11-test.sh
|
||||
@@ -34,6 +34,9 @@ echo \# Launched with pid $MUTTER2_PID
|
||||
MUTTER2_PID=$!
|
||||
wait $MUTTER1_PID
|
||||
|
||||
+echo \# Waiting for the second mutter to finish loading
|
||||
+gdbus wait --session org.gnome.Mutter.IdleMonitor
|
||||
+
|
||||
sleep 2
|
||||
|
||||
echo \# Terminating clients > /dev/stderr
|
||||
diff --git a/src/x11/meta-x11-display.c b/src/x11/meta-x11-display.c
|
||||
index 4e98203dd..4ca620410 100644
|
||||
--- a/src/x11/meta-x11-display.c
|
||||
+++ b/src/x11/meta-x11-display.c
|
||||
@@ -300,8 +300,36 @@ static void
|
||||
on_x11_display_opened (MetaX11Display *x11_display,
|
||||
MetaDisplay *display)
|
||||
{
|
||||
+ Window old_active_xwindow = None;
|
||||
+
|
||||
+ if (!meta_is_wayland_compositor ())
|
||||
+ {
|
||||
+ meta_prop_get_window (display->x11_display,
|
||||
+ display->x11_display->xroot,
|
||||
+ display->x11_display->atom__NET_ACTIVE_WINDOW,
|
||||
+ &old_active_xwindow);
|
||||
+ }
|
||||
+
|
||||
+ if (meta_is_wayland_compositor ())
|
||||
+ meta_x11_display_redirect_windows (x11_display, display);
|
||||
+
|
||||
+
|
||||
meta_display_manage_all_xwindows (display);
|
||||
- meta_x11_display_redirect_windows (x11_display, display);
|
||||
+
|
||||
+ if (old_active_xwindow != None)
|
||||
+ {
|
||||
+ MetaWindow *old_active_window;
|
||||
+
|
||||
+ old_active_window = meta_x11_display_lookup_x_window (x11_display,
|
||||
+ old_active_xwindow);
|
||||
+ if (old_active_window)
|
||||
+ {
|
||||
+ uint32_t timestamp;
|
||||
+
|
||||
+ timestamp = display->x11_display->timestamp;
|
||||
+ meta_window_focus (old_active_window, timestamp);
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
static void
|
||||
--
|
||||
2.41.0
|
||||
|
@ -0,0 +1,28 @@
|
||||
From 692546a9701a7b363e6190af441a95385c244907 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Fri, 2 Dec 2022 22:49:41 +0100
|
||||
Subject: [PATCH] place: Always center initial-setup/fedora-welcome
|
||||
|
||||
---
|
||||
src/core/place.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/src/core/place.c b/src/core/place.c
|
||||
index f9877dfc7..a69a3ebd1 100644
|
||||
--- a/src/core/place.c
|
||||
+++ b/src/core/place.c
|
||||
@@ -321,6 +321,11 @@ window_place_centered (MetaWindow *window)
|
||||
|
||||
type = window->type;
|
||||
|
||||
+ if (g_strcmp0 (meta_window_get_wm_class (window), "org.gnome.InitialSetup") == 0 ||
|
||||
+ g_strcmp0 (meta_window_get_wm_class (window), "org.fedoraproject.welcome-screen") == 0 ||
|
||||
+ g_strcmp0 (meta_window_get_wm_class (window), "fedora-welcome") == 0)
|
||||
+ return TRUE;
|
||||
+
|
||||
return (type == META_WINDOW_DIALOG ||
|
||||
type == META_WINDOW_MODAL_DIALOG ||
|
||||
type == META_WINDOW_SPLASHSCREEN ||
|
||||
--
|
||||
2.39.2
|
||||
|
@ -0,0 +1,70 @@
|
||||
From b3b5aa01c63aee1df079e0394b0e6372df1838d0 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Fri, 12 May 2017 13:40:31 +0200
|
||||
Subject: [PATCH] window-actor: Special-case shaped Java windows
|
||||
|
||||
OpenJDK wrongly assumes that shaping a window implies no shadows.
|
||||
They got lucky until commit b975676c changed the fallback case,
|
||||
but now their compliance tests are broken. Make them happy again
|
||||
by special-casing shaped Java windows.
|
||||
---
|
||||
src/compositor/meta-window-actor-x11.c | 8 ++++++++
|
||||
src/x11/window-x11-private.h | 2 ++
|
||||
src/x11/window-x11.c | 9 +++++++++
|
||||
3 files changed, 19 insertions(+)
|
||||
|
||||
diff --git a/src/compositor/meta-window-actor-x11.c b/src/compositor/meta-window-actor-x11.c
|
||||
index 19827af331..7d5e46ac75 100644
|
||||
--- a/src/compositor/meta-window-actor-x11.c
|
||||
+++ b/src/compositor/meta-window-actor-x11.c
|
||||
@@ -424,6 +424,14 @@ has_shadow (MetaWindowActorX11 *actor_x11)
|
||||
*/
|
||||
if (window->has_custom_frame_extents)
|
||||
return FALSE;
|
||||
+
|
||||
+ /*
|
||||
+ * OpenJDK wrongly assumes that shaping a window implies no compositor
|
||||
+ * shadows; make its compliance tests happy to give it what it wants ...
|
||||
+ */
|
||||
+ if (g_strcmp0 (window->res_name, "sun-awt-X11-XWindowPeer") == 0 &&
|
||||
+ meta_window_x11_is_shaped (window))
|
||||
+ return FALSE;
|
||||
|
||||
/*
|
||||
* Generate shadows for all other windows.
|
||||
diff --git a/src/x11/window-x11-private.h b/src/x11/window-x11-private.h
|
||||
index c947744ee5..cb862f0d72 100644
|
||||
--- a/src/x11/window-x11-private.h
|
||||
+++ b/src/x11/window-x11-private.h
|
||||
@@ -125,6 +125,8 @@ gboolean meta_window_x11_has_pointer (MetaWindow *window);
|
||||
gboolean meta_window_x11_same_application (MetaWindow *window,
|
||||
MetaWindow *other_window);
|
||||
|
||||
+gboolean meta_window_x11_is_shaped (MetaWindow *window);
|
||||
+
|
||||
void meta_window_x11_shutdown_group (MetaWindow *window);
|
||||
|
||||
META_EXPORT
|
||||
diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c
|
||||
index 745c45db18..83cdd2e420 100644
|
||||
--- a/src/x11/window-x11.c
|
||||
+++ b/src/x11/window-x11.c
|
||||
@@ -2585,6 +2585,15 @@ meta_window_x11_update_shape_region (MetaWindow *window)
|
||||
meta_window_set_shape_region (window, region);
|
||||
}
|
||||
|
||||
+gboolean
|
||||
+meta_window_x11_is_shaped (MetaWindow *window)
|
||||
+{
|
||||
+ MetaWindowX11 *window_x11 = META_WINDOW_X11 (window);
|
||||
+ MetaWindowX11Private *priv = meta_window_x11_get_instance_private (window_x11);
|
||||
+
|
||||
+ return priv->shape_region != NULL;
|
||||
+}
|
||||
+
|
||||
/* Generally meta_window_x11_same_application() is a better idea
|
||||
* of "sameness", since it handles the case where multiple apps
|
||||
* want to look like the same app or the same app wants to look
|
||||
--
|
||||
2.43.2
|
||||
|
1868
spec_files/mutter/1441.patch
Normal file
1868
spec_files/mutter/1441.patch
Normal file
File diff suppressed because it is too large
Load Diff
1964
spec_files/mutter/3720+3567.patch
Normal file
1964
spec_files/mutter/3720+3567.patch
Normal file
File diff suppressed because it is too large
Load Diff
25
spec_files/mutter/mutter-42.alpha-disable-tegra.patch
Normal file
25
spec_files/mutter/mutter-42.alpha-disable-tegra.patch
Normal file
@ -0,0 +1,25 @@
|
||||
From a5c67e0debaa89f7a73452560664cdc5c581ab95 Mon Sep 17 00:00:00 2001
|
||||
From: Adam Williamson <awilliam@redhat.com>
|
||||
Date: Tue, 9 Mar 2021 17:21:59 -0800
|
||||
Subject: [PATCH] Test: deny atomic KMS for "tegra" (RHBZ #1936991)
|
||||
|
||||
Signed-off-by: Adam Williamson <awilliam@redhat.com>
|
||||
---
|
||||
src/backends/native/meta-kms-impl-device-atomic.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/src/backends/native/meta-kms-impl-device-atomic.c b/src/backends/native/meta-kms-impl-device-atomic.c
|
||||
index 35837f7429..ffff7b8e23 100644
|
||||
--- a/src/backends/native/meta-kms-impl-device-atomic.c
|
||||
+++ b/src/backends/native/meta-kms-impl-device-atomic.c
|
||||
@@ -1352,6 +1352,7 @@ is_atomic_allowed (const char *driver_name)
|
||||
{
|
||||
const char *atomic_driver_deny_list[] = {
|
||||
"xlnx",
|
||||
+ "tegra",
|
||||
NULL,
|
||||
};
|
||||
|
||||
--
|
||||
2.43.0
|
||||
|
223
spec_files/mutter/mutter.spec
Normal file
223
spec_files/mutter/mutter.spec
Normal file
@ -0,0 +1,223 @@
|
||||
%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 14
|
||||
|
||||
%global gnome_major_version 46
|
||||
%global gnome_version %{gnome_major_version}.1
|
||||
%global tarball_version %%(echo %{gnome_version} | tr '~' '.')
|
||||
%global _default_patch_fuzz 2
|
||||
|
||||
Name: mutter
|
||||
Version: %{gnome_version}.ublue.{{{ git_dir_version }}}
|
||||
Release: 2%{?dist}
|
||||
Summary: Window and compositing manager based on Clutter
|
||||
|
||||
License: GPLv2+
|
||||
URL: http://www.gnome.org
|
||||
Source0: https://download.gnome.org/sources/%{name}/%{gnome_major_version}/%{name}-%{tarball_version}.tar.xz
|
||||
|
||||
# Work-around for OpenJDK's compliance test
|
||||
Patch0: 0001-window-actor-Special-case-shaped-Java-windows.patch
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1936991
|
||||
Patch1: mutter-42.alpha-disable-tegra.patch
|
||||
|
||||
# https://pagure.io/fedora-workstation/issue/79
|
||||
Patch2: 0001-place-Always-center-initial-setup-fedora-welcome.patch
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=2239128
|
||||
# https://gitlab.gnome.org/GNOME/mutter/-/issues/3068
|
||||
# not upstreamed because for upstream we'd really want to find a way
|
||||
# to fix *both* problems
|
||||
Patch3: 0001-Revert-x11-Use-input-region-from-frame-window-for-de.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
|
||||
Patch4: 0001-modified-3329.patch
|
||||
|
||||
# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1441
|
||||
Patch5: 1441.patch
|
||||
|
||||
# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3567
|
||||
Patch6: 3720+3567.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(libdisplay-info)
|
||||
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: python3-dbusmock
|
||||
|
||||
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
|
||||
|
||||
Provides: mutter = %{gnome_version}-%{release}
|
||||
|
||||
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
|
||||
Provides: mutter-common = %{gnome_version}-%{release}
|
||||
|
||||
%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
|
||||
%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
|
||||
|
||||
%changelog
|
||||
%autochangelog
|
Loading…
x
Reference in New Issue
Block a user