Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package cinnamon-desktop for 
openSUSE:Factory checked in at 2023-12-03 20:48:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cinnamon-desktop (Old)
 and      /work/SRC/openSUSE:Factory/.cinnamon-desktop.new.25432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "cinnamon-desktop"

Sun Dec  3 20:48:39 2023 rev:28 rq:1128875 version:6.0.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/cinnamon-desktop/cinnamon-desktop.changes        
2023-06-04 00:12:55.485649588 +0200
+++ 
/work/SRC/openSUSE:Factory/.cinnamon-desktop.new.25432/cinnamon-desktop.changes 
    2023-12-03 20:48:58.674138852 +0100
@@ -1,0 +2,14 @@
+Sat Nov 25 18:59:22 UTC 2023 - Dirk Müller <[email protected]>
+
+- update to 6.0.0:
+  * gschemas: Change a comment
+  * Fix meson.build deprecations up to 0.56.0
+  * cdesktop-enums: Expand CDesktopStylusButtonAction to include
+    'disabled'.
+  * Add gnome-systemd
+  * Add gnome-idle-monitor
+  * a11y: Add 'always-show-text-caret' xsetting
+  * Adding an option for notification screen selection
+  * notifications schema: Add fullscreen-notifications boolean
+
+-------------------------------------------------------------------

Old:
----
  cinnamon-desktop-5.8.0.tar.gz

New:
----
  cinnamon-desktop-6.0.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ cinnamon-desktop.spec ++++++
--- /var/tmp/diff_new_pack.fo7ThD/_old  2023-12-03 20:49:00.430203341 +0100
+++ /var/tmp/diff_new_pack.fo7ThD/_new  2023-12-03 20:49:00.430203341 +0100
@@ -23,7 +23,7 @@
 %define typelib typelib-1_0-CinnamonDesktop-3_0
 %define typelib_cvc typelib-1_0-Cvc-1_0
 Name:           cinnamon-desktop
-Version:        5.8.0
+Version:        6.0.0
 Release:        0
 Summary:        Libcinnamon-desktop API
 License:        GPL-2.0-or-later AND MIT
@@ -49,6 +49,7 @@
 BuildRequires:  pkgconfig(gtk+-3.0) >= 3.10.0
 BuildRequires:  pkgconfig(libpulse)
 BuildRequires:  pkgconfig(libpulse-mainloop-glib)
+BuildRequires:  pkgconfig(libsystemd)
 BuildRequires:  pkgconfig(xext) >= 1.1
 BuildRequires:  pkgconfig(xkbfile)
 BuildRequires:  pkgconfig(xkeyboard-config)

++++++ cinnamon-desktop-5.8.0.tar.gz -> cinnamon-desktop-6.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-desktop-5.8.0/debian/changelog 
new/cinnamon-desktop-6.0.0/debian/changelog
--- old/cinnamon-desktop-5.8.0/debian/changelog 2023-06-01 14:56:48.000000000 
+0200
+++ new/cinnamon-desktop-6.0.0/debian/changelog 2023-11-19 14:37:50.000000000 
+0100
@@ -1,3 +1,23 @@
+cinnamon-desktop (6.0.0) virginia; urgency=medium
+
+  [ Michael Webster ]
+  * gschemas: Change a comment
+
+  [ Rick Calixte ]
+  * Fix meson.build deprecations up to 0.56.0 (#234)
+
+  [ Michael Webster ]
+  * cdesktop-enums: Expand CDesktopStylusButtonAction to include 'disabled'.
+  * Add gnome-systemd
+  * Add gnome-idle-monitor
+  * a11y: Add 'always-show-text-caret' xsetting
+
+  [ Rick Calixte ]
+  * Adding an option for notification screen selection (#231)
+  * notifications schema: Add fullscreen-notifications boolean (#233)
+
+ -- Clement Lefebvre <[email protected]>  Sun, 19 Nov 2023 13:37:20 +0000
+
 cinnamon-desktop (5.8.0) victoria; urgency=medium
 
   [ Michael Webster ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-desktop-5.8.0/debian/control 
new/cinnamon-desktop-6.0.0/debian/control
--- old/cinnamon-desktop-5.8.0/debian/control   2023-06-01 14:56:48.000000000 
+0200
+++ new/cinnamon-desktop-6.0.0/debian/control   2023-11-19 14:37:50.000000000 
+0100
@@ -13,6 +13,7 @@
  libglib2.0-dev (>= 2.37.3),
  libgtk-3-dev (>= 3.3.16),
  libpulse-dev (>= 12.99.3),
+ libsystemd-dev,
  libx11-dev,
  libxext-dev,
  libxkbfile-dev,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-desktop-5.8.0/libcinnamon-desktop/cdesktop-enums.h 
new/cinnamon-desktop-6.0.0/libcinnamon-desktop/cdesktop-enums.h
--- old/cinnamon-desktop-5.8.0/libcinnamon-desktop/cdesktop-enums.h     
2023-06-01 14:56:48.000000000 +0200
+++ new/cinnamon-desktop-6.0.0/libcinnamon-desktop/cdesktop-enums.h     
2023-11-19 14:37:50.000000000 +0100
@@ -199,11 +199,19 @@
   C_DESKTOP_STYLUS_BUTTON_ACTION_MIDDLE,
   C_DESKTOP_STYLUS_BUTTON_ACTION_RIGHT,
   C_DESKTOP_STYLUS_BUTTON_ACTION_BACK,
-  C_DESKTOP_STYLUS_BUTTON_ACTION_FORWARD
+  C_DESKTOP_STYLUS_BUTTON_ACTION_FORWARD,
+  C_DESKTOP_STYLUS_BUTTON_ACTION_DISABLED
 } CDesktopStylusButtonAction;
 
 typedef enum
 {
+  C_DESKTOP_NOTIFICATION_SCREEN_DISPLAY_PRIMARY_SCREEN,
+  C_DESKTOP_NOTIFICATION_SCREEN_DISPLAY_ACTIVE_SCREEN,
+  C_DESKTOP_NOTIFICATION_SCREEN_DISPLAY_FIXED_SCREEN
+} CDesktopNotificationScreenDisplay;
+
+typedef enum
+{
 /* All bindings before _SEPARATOR are treated as
  * "global" bindings, i.e. they work regardless of
  * Cinnamon's global state (open menus, etc...)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-desktop-5.8.0/libcinnamon-desktop/gnome-idle-monitor.c 
new/cinnamon-desktop-6.0.0/libcinnamon-desktop/gnome-idle-monitor.c
--- old/cinnamon-desktop-5.8.0/libcinnamon-desktop/gnome-idle-monitor.c 
1970-01-01 01:00:00.000000000 +0100
+++ new/cinnamon-desktop-6.0.0/libcinnamon-desktop/gnome-idle-monitor.c 
2023-11-19 14:37:50.000000000 +0100
@@ -0,0 +1,574 @@
+/* -*- mode: C; c-file-style: "linux"; indent-tabs-mode: t -*-
+ *
+ * Adapted from gnome-session/gnome-session/gs-idle-monitor.c
+ *
+ * Copyright (C) 2012 Red Hat, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+
+#include <time.h>
+#include <string.h>
+
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+
+#define GNOME_DESKTOP_USE_UNSTABLE_API
+#include "gnome-idle-monitor.h"
+#include "meta-dbus-idle-monitor.h"
+
+G_STATIC_ASSERT(sizeof(unsigned long) == sizeof(gpointer));
+
+struct _GnomeIdleMonitorPrivate
+{
+    GCancellable        *cancellable;
+    MetaDBusIdleMonitor *proxy;
+    MetaDBusObjectManagerClient *om;
+    int                  name_watch_id;
+    GHashTable          *watches;
+    GHashTable          *watches_by_upstream_id;
+};
+
+typedef struct
+{
+    int                       ref_count;
+    gboolean                  dead;
+    GnomeIdleMonitor         *monitor;
+    guint             id;
+    guint                     upstream_id;
+    GnomeIdleMonitorWatchFunc callback;
+    gpointer          user_data;
+    GDestroyNotify        notify;
+    guint64                   timeout_msec;
+} GnomeIdleMonitorWatch;
+
+static void gnome_idle_monitor_initable_iface_init (GInitableIface *iface);
+static void gnome_idle_monitor_remove_watch_internal (GnomeIdleMonitor 
*monitor,
+                              guint             id);
+
+static void add_idle_watch (GnomeIdleMonitor *, GnomeIdleMonitorWatch *);
+static void add_active_watch (GnomeIdleMonitor *, GnomeIdleMonitorWatch *);
+
+G_DEFINE_TYPE_WITH_CODE (GnomeIdleMonitor, gnome_idle_monitor, G_TYPE_OBJECT,
+             G_ADD_PRIVATE (GnomeIdleMonitor)
+             G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE,
+                        gnome_idle_monitor_initable_iface_init))
+
+#define IDLE_MONITOR_PATH "/org/gnome/Mutter/IdleMonitor/Core"
+
+static void
+on_watch_fired (MetaDBusIdleMonitor *proxy,
+        guint                upstream_id,
+        GnomeIdleMonitor    *monitor)
+{
+    GnomeIdleMonitorWatch *watch;
+
+    watch = g_hash_table_lookup (monitor->priv->watches_by_upstream_id, 
GINT_TO_POINTER (upstream_id));
+    if (!watch)
+        return;
+
+    g_object_ref (monitor);
+
+    if (watch->callback) {
+        watch->callback (watch->monitor,
+                 watch->id,
+                 watch->user_data);
+    }
+
+    if (watch->timeout_msec == 0)
+        gnome_idle_monitor_remove_watch_internal (monitor, watch->id);
+
+    g_object_unref (monitor);
+}
+
+static guint32
+get_next_watch_serial (void)
+{
+  static guint32 serial = 0;
+  g_atomic_int_inc (&serial);
+  return serial;
+}
+
+static void
+idle_monitor_watch_unref (GnomeIdleMonitorWatch *watch)
+{
+    watch->ref_count--;
+    if (watch->ref_count)
+        return;
+
+    if (watch->notify != NULL)
+        watch->notify (watch->user_data);
+
+
+    if (watch->upstream_id != 0)
+        g_hash_table_remove (watch->monitor->priv->watches_by_upstream_id,
+                     GINT_TO_POINTER (watch->upstream_id));
+
+    g_slice_free (GnomeIdleMonitorWatch, watch);
+}
+
+static GnomeIdleMonitorWatch *
+idle_monitor_watch_ref (GnomeIdleMonitorWatch *watch)
+{
+    g_assert (watch->ref_count > 0);
+
+    watch->ref_count++;
+    return watch;
+}
+
+static void
+idle_monitor_watch_destroy (GnomeIdleMonitorWatch *watch)
+{
+    watch->dead = TRUE;
+    idle_monitor_watch_unref (watch);
+}
+
+static void
+gnome_idle_monitor_dispose (GObject *object)
+{
+    GnomeIdleMonitor *monitor;
+
+    monitor = GNOME_IDLE_MONITOR (object);
+
+    if (monitor->priv->cancellable)
+        g_cancellable_cancel (monitor->priv->cancellable);
+    g_clear_object (&monitor->priv->cancellable);
+
+    if (monitor->priv->name_watch_id) {
+        g_bus_unwatch_name (monitor->priv->name_watch_id);
+        monitor->priv->name_watch_id = 0;
+    }
+
+    g_clear_object (&monitor->priv->proxy);
+    g_clear_object (&monitor->priv->om);
+    g_clear_pointer (&monitor->priv->watches, g_hash_table_destroy);
+    g_clear_pointer (&monitor->priv->watches_by_upstream_id, 
g_hash_table_destroy);
+
+    G_OBJECT_CLASS (gnome_idle_monitor_parent_class)->dispose (object);
+}
+
+static void
+add_known_watch (gpointer key,
+         gpointer value,
+         gpointer user_data)
+{
+    GnomeIdleMonitor *monitor = user_data;
+    GnomeIdleMonitorWatch *watch = value;
+
+    if (watch->timeout_msec == 0)
+        add_active_watch (monitor, watch);
+    else
+        add_idle_watch (monitor, watch);
+}
+
+static void
+connect_proxy (GDBusObject  *object,
+           GnomeIdleMonitor *monitor)
+{
+    MetaDBusIdleMonitor *proxy;
+
+    proxy = meta_dbus_object_get_idle_monitor (META_DBUS_OBJECT (object));
+    if (!proxy) {
+        g_critical ("Unable to get idle monitor from object at %s",
+                g_dbus_object_get_object_path (object));
+        return;
+    }
+
+    monitor->priv->proxy = proxy;
+    g_signal_connect_object (proxy, "watch-fired", G_CALLBACK 
(on_watch_fired), monitor, 0);
+    g_hash_table_foreach (monitor->priv->watches, add_known_watch, monitor);
+}
+
+static void
+on_object_added (GDBusObjectManager *manager,
+         GDBusObject        *object,
+         gpointer        user_data)
+{
+    GnomeIdleMonitor *monitor = user_data;
+
+    if (!g_str_equal (IDLE_MONITOR_PATH, g_dbus_object_get_object_path 
(object)))
+        return;
+
+    connect_proxy (object, monitor);
+
+    g_signal_handlers_disconnect_by_func (manager, on_object_added, user_data);
+}
+
+static void
+get_proxy (GnomeIdleMonitor *monitor)
+{
+    GDBusObject *object;
+
+    object = g_dbus_object_manager_get_object (G_DBUS_OBJECT_MANAGER 
(monitor->priv->om),
+                           IDLE_MONITOR_PATH);
+    if (object) {
+        connect_proxy (object, monitor);
+        g_object_unref (object);
+        return;
+    }
+
+    g_signal_connect_object (monitor->priv->om, "object-added",
+                 G_CALLBACK (on_object_added), monitor, 0);
+}
+
+static void
+on_object_manager_ready (GObject    *source,
+             GAsyncResult   *res,
+             gpointer    user_data)
+{
+    GnomeIdleMonitor *monitor = user_data;
+    GDBusObjectManager *om;
+    GError *error = NULL;
+
+    om = meta_dbus_object_manager_client_new_finish (res, &error);
+    if (!om) {
+        if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+            g_warning ("Failed to acquire idle monitor object manager: %s", 
error->message);
+        g_error_free (error);
+        return;
+    }
+
+    monitor->priv->om = META_DBUS_OBJECT_MANAGER_CLIENT (om);
+    get_proxy (monitor);
+}
+
+static void
+on_name_appeared (GDBusConnection *connection,
+          const char      *name,
+          const char      *name_owner,
+          gpointer         user_data)
+{
+    GnomeIdleMonitor *monitor = user_data;
+
+    meta_dbus_object_manager_client_new (connection,
+                         G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE,
+                         name_owner,
+                         "/org/gnome/Mutter/IdleMonitor",
+                         monitor->priv->cancellable,
+                         on_object_manager_ready,
+                         monitor);
+}
+
+static void
+clear_watch (gpointer key,
+         gpointer value,
+         gpointer user_data)
+{
+    GnomeIdleMonitorWatch *watch = value;
+    GnomeIdleMonitor *monitor = user_data;
+
+    g_hash_table_remove (monitor->priv->watches_by_upstream_id, 
GINT_TO_POINTER (watch->upstream_id));
+    watch->upstream_id = 0;
+}
+
+static void
+on_name_vanished (GDBusConnection *connection,
+          const char      *name,
+          gpointer         user_data)
+{
+    GnomeIdleMonitor *monitor = user_data;
+
+    g_hash_table_foreach (monitor->priv->watches, clear_watch, monitor);
+    g_clear_object (&monitor->priv->proxy);
+    g_clear_object (&monitor->priv->om);
+}
+
+static gboolean
+gnome_idle_monitor_initable_init (GInitable     *initable,
+                  GCancellable  *cancellable,
+                  GError       **error)
+{
+    GnomeIdleMonitor *monitor;
+
+    monitor = GNOME_IDLE_MONITOR (initable);
+
+    monitor->priv->name_watch_id = g_bus_watch_name (G_BUS_TYPE_SESSION,
+                             "org.gnome.Mutter.IdleMonitor",
+                             G_BUS_NAME_WATCHER_FLAGS_NONE,
+                             on_name_appeared,
+                             on_name_vanished,
+                             monitor, NULL);
+
+    return TRUE;
+}
+
+static void
+gnome_idle_monitor_initable_iface_init (GInitableIface *iface)
+{
+    iface->init = gnome_idle_monitor_initable_init;
+}
+
+static void
+gnome_idle_monitor_class_init (GnomeIdleMonitorClass *klass)
+{
+    GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+    object_class->dispose = gnome_idle_monitor_dispose;
+}
+
+static void
+gnome_idle_monitor_init (GnomeIdleMonitor *monitor)
+{
+    monitor->priv = gnome_idle_monitor_get_instance_private (monitor);
+
+    monitor->priv->watches = g_hash_table_new_full (NULL,
+                            NULL,
+                            NULL,
+                            (GDestroyNotify)idle_monitor_watch_destroy);
+    monitor->priv->watches_by_upstream_id = g_hash_table_new (NULL, NULL);
+
+    monitor->priv->cancellable = g_cancellable_new ();
+}
+
+/**
+ * gnome_idle_monitor_new:
+ *
+ * Returns: a new #GnomeIdleMonitor that tracks the server-global
+ * idletime for all devices.
+ */
+GnomeIdleMonitor *
+gnome_idle_monitor_new (void)
+{
+    return GNOME_IDLE_MONITOR (g_initable_new (GNOME_TYPE_IDLE_MONITOR, NULL, 
NULL, NULL));
+}
+
+static GnomeIdleMonitorWatch *
+make_watch (GnomeIdleMonitor          *monitor,
+        guint64                    timeout_msec,
+        GnomeIdleMonitorWatchFunc  callback,
+        gpointer                   user_data,
+        GDestroyNotify             notify)
+{
+    GnomeIdleMonitorWatch *watch;
+
+    watch = g_slice_new0 (GnomeIdleMonitorWatch);
+    watch->ref_count = 1;
+    watch->id = get_next_watch_serial ();
+    watch->monitor = monitor;
+    watch->callback = callback;
+    watch->user_data = user_data;
+    watch->notify = notify;
+    watch->timeout_msec = timeout_msec;
+
+    return watch;
+}
+
+static void
+on_watch_added (GObject      *object,
+        GAsyncResult *result,
+        gpointer      user_data)
+{
+    GnomeIdleMonitorWatch *watch = user_data;
+    GnomeIdleMonitor *monitor;
+    GError *error;
+    GVariant *res;
+
+    error = NULL;
+    res = g_dbus_proxy_call_finish (G_DBUS_PROXY (object), result, &error);
+    if (!res) {
+        if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
+            g_error_free (error);
+            idle_monitor_watch_unref (watch);
+            return;
+        }
+
+        g_warning ("Failed to acquire idle monitor proxy: %s", error->message);
+        g_error_free (error);
+        idle_monitor_watch_unref (watch);
+        return;
+    }
+
+    if (watch->dead) {
+        idle_monitor_watch_unref (watch);
+        return;
+    }
+
+    monitor = watch->monitor;
+    g_variant_get (res, "(u)", &watch->upstream_id);
+    g_variant_unref (res);
+
+    g_hash_table_insert (monitor->priv->watches_by_upstream_id,
+                 GINT_TO_POINTER (watch->upstream_id), watch);
+    idle_monitor_watch_unref (watch);
+}
+
+static void
+add_idle_watch (GnomeIdleMonitor      *monitor,
+        GnomeIdleMonitorWatch *watch)
+{
+    meta_dbus_idle_monitor_call_add_idle_watch (monitor->priv->proxy,
+                            watch->timeout_msec,
+                            monitor->priv->cancellable,
+                            on_watch_added, idle_monitor_watch_ref (watch));
+}
+
+static void
+add_active_watch (GnomeIdleMonitor      *monitor,
+          GnomeIdleMonitorWatch *watch)
+{
+    meta_dbus_idle_monitor_call_add_user_active_watch (monitor->priv->proxy,
+                               monitor->priv->cancellable,
+                               on_watch_added, idle_monitor_watch_ref (watch));
+}
+
+/**
+ * gnome_idle_monitor_add_idle_watch:
+ * @monitor: A #GnomeIdleMonitor
+ * @interval_msec: The idletime interval, in milliseconds. It must be
+ *     a strictly positive value (> 0).
+ * @callback: (allow-none): The callback to call when the user has
+ *     accumulated @interval_msec milliseconds of idle time.
+ * @user_data: (allow-none): The user data to pass to the callback
+ * @notify: A #GDestroyNotify
+ *
+ * Returns: a watch id
+ *
+ * Adds a watch for a specific idle time. The callback will be called
+ * when the user has accumulated @interval_msec milliseconds of idle time.
+ * This function will return an ID that can either be passed to
+ * gnome_idle_monitor_remove_watch(), or can be used to tell idle time
+ * watches apart if you have more than one.
+ *
+ * Also note that this function will only care about positive transitions
+ * (user's idle time exceeding a certain time). If you want to know about
+ * when the user has become active, use
+ * gnome_idle_monitor_add_user_active_watch().
+ */
+guint
+gnome_idle_monitor_add_idle_watch (GnomeIdleMonitor        *monitor,
+                   guint64                  interval_msec,
+                   GnomeIdleMonitorWatchFunc    callback,
+                   gpointer         user_data,
+                   GDestroyNotify       notify)
+{
+    GnomeIdleMonitorWatch *watch;
+
+    g_return_val_if_fail (GNOME_IS_IDLE_MONITOR (monitor), 0);
+    g_return_val_if_fail (interval_msec > 0, 0);
+
+    watch = make_watch (monitor,
+                interval_msec,
+                callback,
+                user_data,
+                notify);
+
+    g_hash_table_insert (monitor->priv->watches,
+                 GUINT_TO_POINTER (watch->id),
+                 watch);
+
+    if (monitor->priv->proxy)
+        add_idle_watch (monitor, watch);
+
+    return watch->id;
+}
+
+/**
+ * gnome_idle_monitor_add_user_active_watch:
+ * @monitor: A #GnomeIdleMonitor
+ * @callback: (allow-none): The callback to call when the user is
+ *     active again.
+ * @user_data: (allow-none): The user data to pass to the callback
+ * @notify: A #GDestroyNotify
+ *
+ * Returns: a watch id
+ *
+ * Add a one-time watch to know when the user is active again.
+ * Note that this watch is one-time and will de-activate after the
+ * function is called, for efficiency purposes. It's most convenient
+ * to call this when an idle watch, as added by
+ * gnome_idle_monitor_add_idle_watch(), has triggered.
+ */
+guint
+gnome_idle_monitor_add_user_active_watch (GnomeIdleMonitor          *monitor,
+                      GnomeIdleMonitorWatchFunc  callback,
+                      gpointer           user_data,
+                      GDestroyNotify         notify)
+{
+    GnomeIdleMonitorWatch *watch;
+
+    g_return_val_if_fail (GNOME_IS_IDLE_MONITOR (monitor), 0);
+
+    watch = make_watch (monitor,
+                0,
+                callback,
+                user_data,
+                notify);
+
+    g_hash_table_insert (monitor->priv->watches,
+                 GUINT_TO_POINTER (watch->id),
+                 watch);
+
+    if (monitor->priv->proxy)
+        add_active_watch (monitor, watch);
+
+    return watch->id;
+}
+
+/**
+ * gnome_idle_monitor_remove_watch:
+ * @monitor: A #GnomeIdleMonitor
+ * @id: A watch ID
+ *
+ * Removes an idle time watcher, previously added by
+ * gnome_idle_monitor_add_idle_watch() or
+ * gnome_idle_monitor_add_user_active_watch().
+ */
+void
+gnome_idle_monitor_remove_watch (GnomeIdleMonitor *monitor,
+                 guint         id)
+{
+    GnomeIdleMonitorWatch *watch;
+
+    g_return_if_fail (GNOME_IS_IDLE_MONITOR (monitor));
+
+    watch = g_hash_table_lookup (monitor->priv->watches, GINT_TO_POINTER (id));
+    if (!watch)
+        return;
+
+    if (watch->upstream_id)
+        meta_dbus_idle_monitor_call_remove_watch (monitor->priv->proxy,
+                              watch->upstream_id,
+                              NULL, NULL, NULL);
+
+    gnome_idle_monitor_remove_watch_internal (monitor, id);
+}
+
+static void
+gnome_idle_monitor_remove_watch_internal (GnomeIdleMonitor *monitor,
+                      guint             id)
+{
+    g_hash_table_remove (monitor->priv->watches,
+                 GUINT_TO_POINTER (id));
+}
+
+/**
+ * gnome_idle_monitor_get_idletime:
+ * @monitor: A #GnomeIdleMonitor
+ *
+ * Returns: The current idle time, in milliseconds
+ */
+guint64
+gnome_idle_monitor_get_idletime (GnomeIdleMonitor *monitor)
+{
+    guint64 value;
+
+    value = 0;
+    if (monitor->priv->proxy)
+        meta_dbus_idle_monitor_call_get_idletime_sync (monitor->priv->proxy, 
&value,
+                                   NULL, NULL);
+
+    return value;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-desktop-5.8.0/libcinnamon-desktop/gnome-idle-monitor.h 
new/cinnamon-desktop-6.0.0/libcinnamon-desktop/gnome-idle-monitor.h
--- old/cinnamon-desktop-5.8.0/libcinnamon-desktop/gnome-idle-monitor.h 
1970-01-01 01:00:00.000000000 +0100
+++ new/cinnamon-desktop-6.0.0/libcinnamon-desktop/gnome-idle-monitor.h 
2023-11-19 14:37:50.000000000 +0100
@@ -0,0 +1,84 @@
+/* -*- mode: C; c-file-style: "linux"; indent-tabs-mode: t -*-
+ *
+ * Adapted from gnome-session/gnome-session/gs-idle-monitor.h
+ *
+ * Copyright (C) 2012 Red Hat, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ *
+ * Authors: William Jon McCann <[email protected]>
+ */
+
+#ifndef __GNOME_IDLE_MONITOR_H__
+#define __GNOME_IDLE_MONITOR_H__
+
+#ifndef GNOME_DESKTOP_USE_UNSTABLE_API
+#error    This is unstable API. You must define GNOME_DESKTOP_USE_UNSTABLE_API 
before including gnome-idle-monitor.h
+#endif
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GNOME_TYPE_IDLE_MONITOR         (gnome_idle_monitor_get_type ())
+#define GNOME_IDLE_MONITOR(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), 
GNOME_TYPE_IDLE_MONITOR, GnomeIdleMonitor))
+#define GNOME_IDLE_MONITOR_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), 
GNOME_TYPE_IDLE_MONITOR, GnomeIdleMonitorClass))
+#define GNOME_IS_IDLE_MONITOR(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), 
GNOME_TYPE_IDLE_MONITOR))
+#define GNOME_IS_IDLE_MONITOR_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), 
GNOME_TYPE_IDLE_MONITOR))
+#define GNOME_IDLE_MONITOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), 
GNOME_TYPE_IDLE_MONITOR, GnomeIdleMonitorClass))
+
+typedef struct _GnomeIdleMonitor GnomeIdleMonitor;
+typedef struct _GnomeIdleMonitorClass GnomeIdleMonitorClass;
+typedef struct _GnomeIdleMonitorPrivate GnomeIdleMonitorPrivate;
+
+struct _GnomeIdleMonitor
+{
+        GObject                  parent;
+        GnomeIdleMonitorPrivate *priv;
+};
+
+struct _GnomeIdleMonitorClass
+{
+        GObjectClass          parent_class;
+};
+
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(GnomeIdleMonitor, g_object_unref)
+
+typedef void (*GnomeIdleMonitorWatchFunc) (GnomeIdleMonitor      *monitor,
+                                           guint                  id,
+                                           gpointer               user_data);
+
+GType              gnome_idle_monitor_get_type     (void);
+
+GnomeIdleMonitor * gnome_idle_monitor_new          (void);
+
+guint              gnome_idle_monitor_add_idle_watch    (GnomeIdleMonitor      
   *monitor,
+                             guint64                   interval_msec,
+                             GnomeIdleMonitorWatchFunc callback,
+                             gpointer                  user_data,
+                             GDestroyNotify            notify);
+
+guint              gnome_idle_monitor_add_user_active_watch (GnomeIdleMonitor  
        *monitor,
+                                 GnomeIdleMonitorWatchFunc  callback,
+                                 gpointer            user_data,
+                                 GDestroyNotify      notify);
+
+void               gnome_idle_monitor_remove_watch (GnomeIdleMonitor         
*monitor,
+                                                    guint                     
id);
+
+guint64            gnome_idle_monitor_get_idletime (GnomeIdleMonitor         
*monitor);
+
+G_END_DECLS
+
+#endif /* __GNOME_IDLE_MONITOR_H__ */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-desktop-5.8.0/libcinnamon-desktop/gnome-systemd.c 
new/cinnamon-desktop-6.0.0/libcinnamon-desktop/gnome-systemd.c
--- old/cinnamon-desktop-5.8.0/libcinnamon-desktop/gnome-systemd.c      
1970-01-01 01:00:00.000000000 +0100
+++ new/cinnamon-desktop-6.0.0/libcinnamon-desktop/gnome-systemd.c      
2023-11-19 14:37:50.000000000 +0100
@@ -0,0 +1,270 @@
+/* gnome-systemd.c
+ *
+ * Copyright 2019 Benjamin Berg <[email protected]>
+ *
+ * This file is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program.  If not, see 
<http://www.gnu.org/licenses/>.
+ *
+ * SPDX-License-Identifier: LGPL-3.0-or-later
+ */
+
+#include "config.h"
+
+#define GNOME_DESKTOP_USE_UNSTABLE_API
+#include "gnome-systemd.h"
+
+#ifdef HAVE_SYSTEMD
+#include <errno.h>
+#include <systemd/sd-login.h>
+#endif
+
+#ifdef HAVE_SYSTEMD
+typedef struct {
+  char       *name;
+  char       *description;
+  gint32      pid;
+} StartSystemdScopeData;
+
+static void
+start_systemd_scope_data_free (StartSystemdScopeData *data)
+{
+  g_clear_pointer (&data->name, g_free);
+  g_clear_pointer (&data->description, g_free);
+  g_free (data);
+}
+
+static void
+on_start_transient_unit_cb (GObject      *source,
+                            GAsyncResult *res,
+                            gpointer      user_data)
+{
+  g_autoptr (GTask) task = G_TASK (user_data);
+  g_autoptr (GVariant) reply = NULL;
+  GError *error = NULL;
+  StartSystemdScopeData *task_data = g_task_get_task_data (task);
+
+  reply = g_dbus_connection_call_finish (G_DBUS_CONNECTION (source),
+                                         res, &error);
+  if (error && !g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+    {
+      g_warning ("Could not create transient scope for PID %d: %s",
+                 task_data->pid, error->message);
+      g_task_return_error (task, error);
+      return;
+    }
+
+  g_debug ("Created transient scope for PID %d", task_data->pid);
+
+  g_task_return_boolean (task, TRUE);
+}
+
+static void
+start_systemd_scope (GDBusConnection *connection, GTask *task)
+{
+  GVariantBuilder builder;
+  g_autofree char *unit_name = NULL;
+  StartSystemdScopeData *task_data = g_task_get_task_data (task);
+
+  g_assert (task_data != NULL);
+
+  /* This needs to be unique, hopefully the pid will be enough. */
+  unit_name = g_strdup_printf ("gnome-launched-%s-%d.scope", task_data->name, 
task_data->pid);
+
+  g_variant_builder_init (&builder, G_VARIANT_TYPE ("(ssa(sv)a(sa(sv)))"));
+  g_variant_builder_add (&builder, "s", unit_name);
+  g_variant_builder_add (&builder, "s", "fail");
+
+  /* Note that gnome-session ships a drop-in to control further defaults. */
+  g_variant_builder_open (&builder, G_VARIANT_TYPE ("a(sv)"));
+  if (task_data->description)
+    g_variant_builder_add (&builder,
+                           "(sv)",
+                           "Description",
+                           g_variant_new_string (task_data->description));
+  g_variant_builder_add (&builder,
+                         "(sv)",
+                         "PIDs",
+                          g_variant_new_fixed_array (G_VARIANT_TYPE_UINT32, 
&task_data->pid, 1, 4));
+  g_variant_builder_close (&builder);
+
+  g_variant_builder_open (&builder, G_VARIANT_TYPE ("a(sa(sv))"));
+  g_variant_builder_close (&builder);
+
+  g_dbus_connection_call (connection,
+                          "org.freedesktop.systemd1",
+                          "/org/freedesktop/systemd1",
+                          "org.freedesktop.systemd1.Manager",
+                          "StartTransientUnit",
+                          g_variant_builder_end (&builder),
+                          G_VARIANT_TYPE ("(o)"),
+                          G_DBUS_CALL_FLAGS_NO_AUTO_START,
+                          1000,
+                          g_task_get_cancellable (task),
+                          on_start_transient_unit_cb,
+                          task);
+}
+
+static void
+on_bus_gotten_cb (GObject      *source,
+                  GAsyncResult *res,
+                  gpointer      user_data)
+{
+  g_autoptr(GTask) task = G_TASK (user_data);
+  g_autoptr(GDBusConnection) connection = NULL;
+  GError *error = NULL;
+
+  connection = g_bus_get_finish (res, &error);
+  if (error)
+    {
+      if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+        g_warning ("Could not get session bus: %s", error->message);
+
+      g_task_return_error (task, error);
+      return;
+    }
+
+  start_systemd_scope (connection, g_steal_pointer (&task));
+}
+#endif
+
+/**
+ * gnome_start_systemd_scope:
+ * @name: Name for the application
+ * @pid: The PID of the application
+ * @description: (nullable): A description to use for the unit, or %NULL
+ * @connection: (nullable): An #GDBusConnection to the session bus, or %NULL
+ * @cancellable: (nullable): #GCancellable to use
+ * @callback: (nullable): Callback to call when the operation is done
+ * @user_data: Data to be passed to @callback
+ *
+ * If the current process is running inside a user systemd instance, then move
+ * the launched PID into a transient scope. The given @name will be used to
+ * create a unit name. It should be the application ID for desktop files or
+ * the executable in all other cases.
+ *
+ * It is advisable to use this function every time where the started 
application
+ * can be considered reasonably independent of the launching application. 
Placing
+ * it in a scope creates proper separation between the programs rather than 
being
+ * considered a single entity by systemd.
+ *
+ * It is always safe to call this function. Note that a successful return code
+ * does not imply that a unit has been created. It solely means that no error
+ * condition was hit sending the request.
+ *
+ * If @connection is %NULL then g_dbus_get() will be called internally.
+ *
+ * Note that most callers will not need to handle errors. As such, it is normal
+ * to pass a %NULL @callback.
+ *
+ * Stability: unstable
+ */
+void
+gnome_start_systemd_scope (const char           *name,
+                           gint32                pid,
+                           const char           *description,
+                           GDBusConnection      *connection,
+                           GCancellable         *cancellable,
+                           GAsyncReadyCallback   callback,
+                           gpointer              user_data)
+{
+  g_autoptr(GTask) task = NULL;
+
+#ifdef HAVE_SYSTEMD
+  g_autofree char *own_unit = NULL;
+  const char *valid_chars =
+    "-._1234567890"
+    "abcdefghijklmnopqrstuvwxyz"
+    "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+  StartSystemdScopeData *task_data;
+  gint res;
+
+  task = g_task_new (NULL, cancellable, callback, user_data);
+  task_data = g_new0 (StartSystemdScopeData, 1);
+
+  task_data->pid = pid;
+
+  /* Create a nice and (mangled) name to embed into the unit */
+  if (name == NULL)
+    name = "anonymous";
+
+  if (name[0] == '/')
+    name++;
+
+  task_data->name = g_str_to_ascii (name, "C");
+  g_strdelimit (task_data->name, "/", '-');
+  g_strcanon (task_data->name, valid_chars, '_');
+
+  task_data->description = g_strdup (description);
+  if (task_data->description == NULL)
+    {
+      const char *app_name = g_get_application_name();
+
+      if (app_name)
+        task_data->description = g_strdup_printf ("Application launched by %s",
+                                                  app_name);
+    }
+
+  g_task_set_task_data (task, task_data, (GDestroyNotify) 
start_systemd_scope_data_free);
+
+  /* We cannot do anything if this process is not managed by the
+   * systemd user instance. */
+  res = sd_pid_get_user_unit (getpid (), &own_unit);
+  if (res == -ENODATA)
+    {
+      g_debug ("Not systemd managed, will not move PID %d into transient 
scope\n", pid);
+      g_task_return_boolean (task, TRUE);
+
+      return;
+    }
+  if (res < 0)
+    {
+      g_warning ("Error fetching user unit for own pid: %d\n", -res);
+      g_task_return_new_error (task,
+                               G_IO_ERROR,
+                               g_io_error_from_errno (-res),
+                               "Error fetching user unit for own pid: %d", 
-res);
+
+      return;
+    }
+
+  if (connection == NULL)
+    g_bus_get (G_BUS_TYPE_SESSION, cancellable, on_bus_gotten_cb, 
g_steal_pointer (&task));
+  else
+    start_systemd_scope (connection, g_steal_pointer (&task));
+#else
+  g_debug ("Not creating transient scope for PID %d. Systemd support not 
compiled in.", pid);
+
+  task = g_task_new (NULL, cancellable, callback, user_data);
+  g_task_return_boolean (task, TRUE);
+#endif
+}
+
+/**
+ * gnome_start_systemd_scope_finish:
+ * @res: A #GAsyncResult
+ * @error: Return location for errors, or %NULL to ignore
+ *
+ * Finish an asynchronous operation to create a transient scope that was
+ * started with gnome_start_systemd_scope().
+ *
+ * Note that a successful return code does not imply that a unit has been
+ * created. It solely means that no error condition was hit sending the 
request.
+ *
+ * Returns: %FALSE on error, %TRUE otherwise
+ */
+gboolean
+gnome_start_systemd_scope_finish (GAsyncResult  *res,
+                                  GError       **error)
+{
+  return g_task_propagate_boolean (G_TASK (res), error);
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-desktop-5.8.0/libcinnamon-desktop/gnome-systemd.h 
new/cinnamon-desktop-6.0.0/libcinnamon-desktop/gnome-systemd.h
--- old/cinnamon-desktop-5.8.0/libcinnamon-desktop/gnome-systemd.h      
1970-01-01 01:00:00.000000000 +0100
+++ new/cinnamon-desktop-6.0.0/libcinnamon-desktop/gnome-systemd.h      
2023-11-19 14:37:50.000000000 +0100
@@ -0,0 +1,41 @@
+/* gnome-systemd.h
+ *
+ * Copyright 2019 Benjamin Berg <[email protected]>
+ *
+ * This file is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program.  If not, see 
<http://www.gnu.org/licenses/>.
+ *
+ * SPDX-License-Identifier: LGPL-3.0-or-later
+ */
+
+#ifndef _GNOME_SYSTEMD_H
+#define _GNOME_SYSTEMD_H
+
+#ifndef GNOME_DESKTOP_USE_UNSTABLE_API
+#error    GnomeDesktopSystemd is unstable API. You must define 
GNOME_DESKTOP_USE_UNSTABLE_API before including gnome-systemd.h
+#endif
+
+#include <gio/gio.h>
+
+void gnome_start_systemd_scope (const char           *name,
+                                gint32                pid,
+                                const char           *description,
+                                GDBusConnection      *connection,
+                                GCancellable         *cancellable,
+                                GAsyncReadyCallback   callback,
+                                gpointer              user_data);
+
+gboolean gnome_start_systemd_scope_finish (GAsyncResult  *res,
+                                           GError       **error);
+
+#endif /* _GNOME_SYSTEMD_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-desktop-5.8.0/libcinnamon-desktop/idle-monitor.xml 
new/cinnamon-desktop-6.0.0/libcinnamon-desktop/idle-monitor.xml
--- old/cinnamon-desktop-5.8.0/libcinnamon-desktop/idle-monitor.xml     
1970-01-01 01:00:00.000000000 +0100
+++ new/cinnamon-desktop-6.0.0/libcinnamon-desktop/idle-monitor.xml     
2023-11-19 14:37:50.000000000 +0100
@@ -0,0 +1,35 @@
+<!DOCTYPE node PUBLIC
+'-//freedesktop//DTD D-BUS Object Introspection 1.0//EN'
+'http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd'>
+<node>
+  <!--
+      org.gnome.Mutter.IdleMonitor:
+      @short_description: idle monitor interface
+
+      This interface is used by gnome-desktop to implement
+      user activity monitoring.
+  -->
+
+  <interface name="org.gnome.Muffin.IdleMonitor">
+    <method name="GetIdletime">
+      <arg name="idletime" direction="out" type="t"/>
+    </method>
+
+    <method name="AddIdleWatch">
+      <arg name="interval" direction="in" type="t" />
+      <arg name="id" direction="out" type="u" />
+    </method>
+
+    <method name="AddUserActiveWatch">
+      <arg name="id" direction="out" type="u" />
+    </method>
+
+    <method name="RemoveWatch">
+      <arg name="id" direction="in" type="u" />
+    </method>
+
+    <signal name="WatchFired">
+      <arg name="id" direction="out" type="u" />
+    </signal>
+  </interface>
+</node>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-desktop-5.8.0/libcinnamon-desktop/meson.build 
new/cinnamon-desktop-6.0.0/libcinnamon-desktop/meson.build
--- old/cinnamon-desktop-5.8.0/libcinnamon-desktop/meson.build  2023-06-01 
14:56:48.000000000 +0200
+++ new/cinnamon-desktop-6.0.0/libcinnamon-desktop/meson.build  2023-11-19 
14:37:50.000000000 +0100
@@ -1,3 +1,10 @@
+dbus_idle_built_sources = gnome.gdbus_codegen('meta-dbus-idle-monitor',
+  'idle-monitor.xml',
+  namespace: 'MetaDBus',
+  interface_prefix: 'org.gnome.Muffin',
+  object_manager: true
+)
+
 libcinnamon_desktop_gir_sources = [
   'display-name.c',
   'edid-parse.c',
@@ -5,12 +12,14 @@
   'gnome-bg.c',
   'gnome-desktop-thumbnail.c',
   'gnome-desktop-utils.c',
+  'gnome-idle-monitor.c',
   'gnome-installer.c',
   'gnome-pnp-ids.c',
   'gnome-rr-config.c',
   'gnome-rr-labeler.c',
   'gnome-rr-output-info.c',
   'gnome-rr.c',
+  'gnome-systemd.c',
   'gnome-thumbnail-pixbuf-utils.c',
   'gnome-wall-clock.c',
   'gnome-xkb-info.c',
@@ -37,17 +46,19 @@
   'gnome-bg.h',
   'gnome-desktop-thumbnail.h',
   'gnome-desktop-utils.h',
+  'gnome-idle-monitor.h',
   'gnome-installer.h',
   'gnome-pnp-ids.h',
   'gnome-rr-config.h',
   'gnome-rr-labeler.h',
   'gnome-rr.h',
+  'gnome-systemd.h',
   'gnome-wall-clock.h',
   'gnome-xkb-info.h',
 ]
 
 libcinnamon_desktop = shared_library('cinnamon-desktop',
-  libcinnamon_desktop_sources,
+  [libcinnamon_desktop_sources, dbus_idle_built_sources],
   include_directories: [ rootInclude ],
   c_args: [
     '-DG_LOG_DOMAIN="CinnamonDesktop"',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-desktop-5.8.0/meson.build 
new/cinnamon-desktop-6.0.0/meson.build
--- old/cinnamon-desktop-5.8.0/meson.build      2023-06-01 14:56:48.000000000 
+0200
+++ new/cinnamon-desktop-6.0.0/meson.build      2023-11-19 14:37:50.000000000 
+0100
@@ -1,8 +1,8 @@
 # Meson build file
 
 # https://github.com/linuxmint/cinnamon-desktop
-project('cinnamon-desktop', 'c', version: '5.8.0',
-  meson_version: '>=0.50.0'
+project('cinnamon-desktop', 'c', version: '6.0.0',
+  meson_version: '>=0.56.0'
 )
 
 # Before making a release, the LT_VERSION string should be modified.
@@ -35,6 +35,7 @@
 gio     = dependency('gio-2.0',         version: '>=2.37.3')
 glib    = dependency('glib-2.0',        version: '>=2.37.3')
 gtk     = dependency('gtk+-3.0',        version: '>=3.3.16')
+systemd = dependency('libsystemd',      required: get_option('systemd'))
 
 x11     = dependency('x11')
 xext    = dependency('xext',            version: '>=1.1')
@@ -48,6 +49,7 @@
   glib,
   gtk,
   math,
+  systemd,
   x11,
   xext,
   xkbconf,
@@ -57,7 +59,7 @@
 
 use_alsa = get_option('alsa')
 
-xkb_base = xkbconf.get_pkgconfig_variable('xkb_base')
+xkb_base = xkbconf.get_variable(pkgconfig: 'xkb_base')
 
 # Path to the pnp.ids file -- to know if we use one shipped with another
 # package, or an internal file
@@ -96,6 +98,7 @@
 conf.set('HAVE_ALSA',           use_alsa)
 conf.set('HAVE_GETTEXT',        true)
 conf.set('HAVE_INTROSPECTION',  true)
+conf.set('HAVE_SYSTEMD',        systemd.found())
 conf.set('HAVE_TIMERFD',        timerfd_check)
 
 
################################################################################
@@ -129,11 +132,12 @@
   '        sysconfdir:                   ' + get_option('sysconfdir'),
   '        localstatedir:                ' + get_option('localstatedir'),
   '        datadir:                      ' + get_option('datadir'),
-  '        source code location:         ' + meson.source_root(),
+  '        source code location:         ' + meson.project_source_root(),
   '        compiler:                     ' + cc.get_id(),
   '        debugging support:            ' + get_option('buildtype'),
   '        Use *_DISABLE_DEPRECATED:     
@0@'.format(get_option('deprecation_warnings')),
   '        Use PNP files:                ' + pnp_message,
   '        Use ALSA:                     ' + '@0@'.format(use_alsa),
+  '        systemd:                      @0@'.format(systemd.found()),
   '',
 ]))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-desktop-5.8.0/meson_options.txt 
new/cinnamon-desktop-6.0.0/meson_options.txt
--- old/cinnamon-desktop-5.8.0/meson_options.txt        2023-06-01 
14:56:48.000000000 +0200
+++ new/cinnamon-desktop-6.0.0/meson_options.txt        2023-11-19 
14:37:50.000000000 +0100
@@ -4,3 +4,6 @@
        description: 'Specify the path to pnp.ids (default is an internal 
copy)')
 option('alsa', type: 'boolean', value: false,
        description: 'ALSA support')
+option('systemd',
+  type: 'feature', description: 'Systemd integration support'
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-desktop-5.8.0/schemas/org.cinnamon.desktop.a11y.keyboard.gschema.xml.in
 
new/cinnamon-desktop-6.0.0/schemas/org.cinnamon.desktop.a11y.keyboard.gschema.xml.in
--- 
old/cinnamon-desktop-5.8.0/schemas/org.cinnamon.desktop.a11y.keyboard.gschema.xml.in
        2023-06-01 14:56:48.000000000 +0200
+++ 
new/cinnamon-desktop-6.0.0/schemas/org.cinnamon.desktop.a11y.keyboard.gschema.xml.in
        2023-11-19 14:37:50.000000000 +0100
@@ -118,5 +118,13 @@
       <default>'/usr/share/cinnamon/sounds/togglekeys-sound-off.ogg'</default>
       <summary>Sound to use when turning caps/num lock off</summary>
     </key>
+    <key name="always-show-text-caret" type="b">
+      <default>false</default>
+      <summary>Always show the text caret</summary>
+      <description>
+        This key overrides the hiding of the text caret in noneditable
+        text in applications.
+      </description>
+    </key>
   </schema>
 </schemalist>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-desktop-5.8.0/schemas/org.cinnamon.desktop.interface.gschema.xml.in
 
new/cinnamon-desktop-6.0.0/schemas/org.cinnamon.desktop.interface.gschema.xml.in
--- 
old/cinnamon-desktop-5.8.0/schemas/org.cinnamon.desktop.interface.gschema.xml.in
    2023-06-01 14:56:48.000000000 +0200
+++ 
new/cinnamon-desktop-6.0.0/schemas/org.cinnamon.desktop.interface.gschema.xml.in
    2023-11-19 14:37:50.000000000 +0100
@@ -295,7 +295,7 @@
     </key>
     <key name="high-contrast" type="b">
       <default>false</default>
-      <summary>Use a high contrast icon and application theme.</summary>
+      <summary>not currently used</summary>
     </key>
   </schema>
 </schemalist>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-desktop-5.8.0/schemas/org.cinnamon.desktop.notifications.gschema.xml.in
 
new/cinnamon-desktop-6.0.0/schemas/org.cinnamon.desktop.notifications.gschema.xml.in
--- 
old/cinnamon-desktop-5.8.0/schemas/org.cinnamon.desktop.notifications.gschema.xml.in
        2023-06-01 14:56:48.000000000 +0200
+++ 
new/cinnamon-desktop-6.0.0/schemas/org.cinnamon.desktop.notifications.gschema.xml.in
        2023-11-19 14:37:50.000000000 +0100
@@ -6,13 +6,11 @@
       <summary>Notifications fade out</summary>
       <description>Set this to TRUE to allow notifications to fade under the 
mouse.</description>
     </key>
-
     <key type="b" name="remove-old">
       <default>false</default>
       <summary>Remove old notifications</summary>
       <description>Check this to automatically remove old 
notifications.</description>
     </key>
-
     <key type="i" name="timeout">
       <default>1800</default>
       <summary>Notification timeout</summary>
@@ -32,10 +30,35 @@
       <default>false</default>
       <summary>Whether notifications are displayed on the bottom side of the 
screen</summary>
     </key>
+    <key name="notification-screen-display"
+         enum="org.cinnamon.desktop.CDesktopNotificationScreenDisplay">
+      <default>'primary-screen'</default>
+      <summary>Define which screen(s) to use for displaying 
notifications</summary>
+      <description>
+        This option provides control over how newly created notifications are 
displayed.
+        It has three possible values: "primary-screen" which shows 
notifications only on
+        the primary display, "active-screen" which shows subsequent 
notifications only on
+        the display where the mouse is located, and "fixed-screen" which shows
+        notifications on a fixed display number if it exists and the primary 
display if
+        it does not exist.
+      </description>
+    </key>
+    <key type="i" name="notification-fixed-screen">
+      <default>1</default>
+      <summary>Fixed screen number for displaying notifications</summary>
+      <description>
+        The fixed display number to use for displaying notifications if it 
exists,
+        where the primary display is last. If the fixed screen number does
+        not exist, the primary display is used instead.
+      </description>
+    </key>
     <key type="i" name="notification-duration">
       <default>4</default>
       <summary>How long notifications are displayed before 
disappearing</summary>
     </key>
+    <key type="b" name="fullscreen-notifications">
+      <default>false</default>
+      <summary>Whether notifications are displayed over fullscreen 
windows</summary>
+    </key>
   </schema>
 </schemalist>
-

Reply via email to