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>
-