Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gnome-kiosk for openSUSE:Factory checked in at 2023-03-24 15:19:46 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gnome-kiosk (Old) and /work/SRC/openSUSE:Factory/.gnome-kiosk.new.31432 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnome-kiosk" Fri Mar 24 15:19:46 2023 rev:5 rq:1073315 version:44.0 Changes: -------- --- /work/SRC/openSUSE:Factory/gnome-kiosk/gnome-kiosk.changes 2022-09-21 14:43:42.709961979 +0200 +++ /work/SRC/openSUSE:Factory/.gnome-kiosk.new.31432/gnome-kiosk.changes 2023-03-24 15:20:05.886786897 +0100 @@ -1,0 +2,26 @@ +Mon Mar 20 16:09:31 UTC 2023 - Bjørn Lie <bjorn....@gmail.com> + +- Update to version 44.0: + + No changes, stable bump only. + +------------------------------------------------------------------- +Mon Mar 6 16:02:51 UTC 2023 - Bjørn Lie <bjorn....@gmail.com> + +- Update to version 44.rc: + + Rename dconf profile to not have hyphen + + Set dconf profile unconditionally + + Use https instead of http in search-app + +------------------------------------------------------------------- +Fri Feb 24 18:05:38 UTC 2023 - Bjørn Lie <bjorn....@gmail.com> + +- Update to version 44.beta: + + Deprecation fixes + + Require mutter 44 + + Compat fix for Anaconda Installer project + + Script session double-starting fix + + Allow changing background in gsettings +- Bump mutter_api define to 12 following upstream changes. +- Build sample-app as noarch. + +------------------------------------------------------------------- Old: ---- _servicedata gnome-kiosk-43.0.obscpio New: ---- gnome-kiosk-44.0.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gnome-kiosk.spec ++++++ --- /var/tmp/diff_new_pack.5dHSCs/_old 2023-03-24 15:20:06.514790171 +0100 +++ /var/tmp/diff_new_pack.5dHSCs/_new 2023-03-24 15:20:06.522790214 +0100 @@ -1,7 +1,7 @@ # # spec file for package gnome-kiosk # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,10 +16,10 @@ # -%define mutter_api 11 +%define mutter_api 12 Name: gnome-kiosk -Version: 43.0 +Version: 44.0 Release: 0 Summary: Mutter based compositor for kiosks License: GPL-2.0-or-later @@ -49,6 +49,7 @@ Summary: Search appliance sample app Requires: %{name} = %{version} Requires: MozillaFirefox +BuildArch: noarch %description sample-app Search appliance sample app that demonstate how the kiosk @@ -84,6 +85,11 @@ %dir %{_datadir}/wayland-sessions %{_datadir}/wayland-sessions/gnome-kiosk-script-wayland.desktop %{_datadir}/xsessions/gnome-kiosk-script-xorg.desktop +%dir %{_datadir}/dconf +%dir %{_datadir}/dconf/profile +%dir %{_datadir}/gnome-kiosk +%{_datadir}/dconf/profile/gnomekiosk +%{_datadir}/gnome-kiosk/gnomekiosk.dconf.compiled %files sample-app %{_datadir}/applications/org.gnome.Kiosk.SearchApp.desktop ++++++ _service ++++++ --- /var/tmp/diff_new_pack.5dHSCs/_old 2023-03-24 15:20:06.554790381 +0100 +++ /var/tmp/diff_new_pack.5dHSCs/_new 2023-03-24 15:20:06.558790401 +0100 @@ -3,7 +3,7 @@ <service name="obs_scm" mode="manual"> <param name="scm">git</param> <param name="url">https://gitlab.gnome.org/GNOME/gnome-kiosk.git</param> - <param name="revision">refs/tags/43.0</param> + <param name="revision">refs/tags/44.0</param> <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param> <param name="versionrewrite-pattern">(.*)\+0</param> <param name="versionrewrite-replacement">\1</param> ++++++ gnome-kiosk-43.0.obscpio -> gnome-kiosk-44.0.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-kiosk-43.0/.gitlab-ci/checkout-mutter.sh new/gnome-kiosk-44.0/.gitlab-ci/checkout-mutter.sh --- old/gnome-kiosk-43.0/.gitlab-ci/checkout-mutter.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/gnome-kiosk-44.0/.gitlab-ci/checkout-mutter.sh 2023-03-20 16:46:45.000000000 +0100 @@ -0,0 +1,69 @@ +#!/usr/bin/bash + +fetch() { + local remote=$1 + local ref=$2 + + git fetch --quiet --depth=1 $remote $ref 2>/dev/null +} + +mutter_target= + +echo -n Cloning into mutter ... +if git clone --quiet --depth=1 https://gitlab.gnome.org/GNOME/mutter.git; then + echo \ done +else + echo \ failed + exit 1 +fi + +cd mutter + +if [ "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then + merge_request_remote=${CI_MERGE_REQUEST_SOURCE_PROJECT_URL//gnome-kiosk/mutter} + merge_request_branch=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME + + echo -n Looking for $merge_request_branch on remote ... + if fetch $merge_request_remote $merge_request_branch; then + echo \ found + mutter_target=FETCH_HEAD + else + echo \ not found + + echo -n Looking for $CI_MERGE_REQUEST_TARGET_BRANCH_NAME instead ... + if fetch origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME; then + echo \ found + mutter_target=FETCH_HEAD + else + echo \ not found + fi + fi +fi + +if [ -z "$mutter_target" ]; then + echo -n Looking for $CI_COMMIT_REF_NAME on remote ... + if fetch origin $CI_COMMIT_REF_NAME; then + echo \ found + mutter_target=FETCH_HEAD + else + echo \ not found + fi +fi + +fallback_branch=${CI_COMMIT_TAG:+gnome-}${CI_COMMIT_TAG%%.*} +if [ -z "$mutter_target" -a "$fallback_branch" ]; then + echo -n Looking for $fallback_branch instead ... + if fetch origin $fallback_branch; then + echo \ found + mutter_target=FETCH_HEAD + else + echo \ not found + fi +fi + +if [ -z "$mutter_target" ]; then + mutter_target=HEAD + echo Using $mutter_target instead +fi + +git checkout -q $mutter_target diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-kiosk-43.0/.gitlab-ci.yml new/gnome-kiosk-44.0/.gitlab-ci.yml --- old/gnome-kiosk-43.0/.gitlab-ci.yml 2022-09-20 17:42:16.000000000 +0200 +++ new/gnome-kiosk-44.0/.gitlab-ci.yml 2023-03-20 16:46:45.000000000 +0100 @@ -3,26 +3,12 @@ - test build-fedora: - image: fedora:rawhide + image: registry.gitlab.gnome.org/gnome/mutter/fedora/37:x86_64-2023-02-22.0 stage: build before_script: - - dnf -y install - desktop-file-utils - gcc - gettext - git - glib2-devel - gnome-desktop3-devel - gnome-settings-daemon - gsettings-desktop-schemas - gtk4-devel - ibus-devel - mesa-libEGL-devel - mesa-libGL-devel - meson - mutter-devel - patchutils - uncrustify + - .gitlab-ci/checkout-mutter.sh + - meson mutter mutter/build --prefix=/usr + - meson install -C mutter/build script: - export BUILD_ROOT=_build - meson . $BUILD_ROOT --prefix=/usr --sysconfdir=/etc --localstatedir=/var --mandir=/usr/share/man --libdir=/usr/lib64 @@ -34,20 +20,25 @@ - tags artifacts: paths: + - mutter - _build only: - merge_requests test-fedora: - extends: - - build-fedora + image: registry.gitlab.gnome.org/gnome/mutter/fedora/37:x86_64-2023-02-22.0 stage: test + before_script: + - dnf -y install patchutils + - meson install --no-rebuild -C mutter/build script: - export BUILD_ROOT=_build - meson . $BUILD_ROOT --prefix=/usr --sysconfdir=/etc --localstatedir=/var --mandir=/usr/share/man --libdir=/usr/lib64 - ninja -C $BUILD_ROOT - ninja -C $BUILD_ROOT test - find -depth -type d -name '*.p' -exec rm -rf "{}" \; + except: + - tags artifacts: paths: - _build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-kiosk-43.0/NEWS new/gnome-kiosk-44.0/NEWS --- old/gnome-kiosk-43.0/NEWS 2022-09-20 17:42:16.000000000 +0200 +++ new/gnome-kiosk-44.0/NEWS 2023-03-20 16:46:45.000000000 +0100 @@ -1,4 +1,19 @@ # NEWS +## 44.0 +- No updates + +## 44.rc +- Rename dconf profile to not have hyphen +- Set dconf profile unconditionally +- Use https instead of http in search-app + +## 44.beta +- deprecation fixes +- require mutter 44 +- Compat fix for Anaconda Installer project +- Script session double-starting fix +- Allow changing background in gsettings + ## 43.0 - meson build fixes - require mutter 43 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-kiosk-43.0/compositor/data/dconf/defaults/gnomekiosk.dconf new/gnome-kiosk-44.0/compositor/data/dconf/defaults/gnomekiosk.dconf --- old/gnome-kiosk-43.0/compositor/data/dconf/defaults/gnomekiosk.dconf 1970-01-01 01:00:00.000000000 +0100 +++ new/gnome-kiosk-44.0/compositor/data/dconf/defaults/gnomekiosk.dconf 2023-03-20 16:46:45.000000000 +0100 @@ -0,0 +1,4 @@ +[org/gnome/desktop/background] +color-shading-type='solid' +picture-options='none' +primary-color='#808080' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-kiosk-43.0/compositor/data/dconf/gnomekiosk.in new/gnome-kiosk-44.0/compositor/data/dconf/gnomekiosk.in --- old/gnome-kiosk-43.0/compositor/data/dconf/gnomekiosk.in 1970-01-01 01:00:00.000000000 +0100 +++ new/gnome-kiosk-44.0/compositor/data/dconf/gnomekiosk.in 2023-03-20 16:46:45.000000000 +0100 @@ -0,0 +1,2 @@ +user-db:user +file-db:@DATADIR@/@PACKAGE@/gnomekiosk.dconf.compiled diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-kiosk-43.0/compositor/kiosk-backgrounds.c new/gnome-kiosk-44.0/compositor/kiosk-backgrounds.c --- old/gnome-kiosk-43.0/compositor/kiosk-backgrounds.c 2022-09-20 17:42:16.000000000 +0200 +++ new/gnome-kiosk-44.0/compositor/kiosk-backgrounds.c 2023-03-20 16:46:45.000000000 +0100 @@ -9,6 +9,8 @@ #include <meta/display.h> #include <meta/util.h> +#include <meta/meta-context.h> +#include <meta/meta-backend.h> #include <meta/meta-plugin.h> #include <meta/meta-monitor-manager.h> #include <meta/meta-background-actor.h> @@ -18,20 +20,34 @@ #include <meta/meta-background.h> #include "kiosk-compositor.h" +#include "kiosk-gobject-utils.h" + +#define KIOSK_BACKGROUNDS_SCHEMA "org.gnome.desktop.background" +#define KIOSK_BACKGROUNDS_PICTURE_OPTIONS_SETTING "picture-options" +#define KIOSK_BACKGROUNDS_PICTURE_URI_SETTING "picture-uri" +#define KIOSK_BACKGROUNDS_COLOR_SHADING_TYPE_SETTING "color-shading-type" +#define KIOSK_BACKGROUNDS_PRIMARY_COLOR_SETTING "primary-color" +#define KIOSK_BACKGROUNDS_SECONDARY_COLOR_SETTING "secondary-color" struct _KioskBackgrounds { - MetaBackgroundGroup parent; + MetaBackgroundGroup parent; /* weak references */ - KioskCompositor *compositor; - MetaDisplay *display; - ClutterActor *window_group; - MetaMonitorManager *monitor_manager; - ClutterActor *stage; + KioskCompositor *compositor; + MetaDisplay *display; + ClutterActor *window_group; + MetaContext *context; + MetaBackend *backend; + MetaMonitorManager *monitor_manager; + ClutterActor *stage; + + MetaBackgroundImageCache *image_cache; /* strong references */ - ClutterActor *background_group; + GCancellable *cancellable; + GSettings *settings; + ClutterActor *background_group; }; enum @@ -78,29 +94,128 @@ } static void +set_background_color_from_settings (KioskBackgrounds *self, + MetaBackground *background) +{ + GDesktopBackgroundShading color_shading_type; + g_autofree char *primary_color_as_string = NULL; + g_autofree char *secondary_color_as_string = NULL; + ClutterColor primary_color = { 0 }; + ClutterColor secondary_color = { 0 }; + + color_shading_type = g_settings_get_enum (self->settings, KIOSK_BACKGROUNDS_COLOR_SHADING_TYPE_SETTING); + primary_color_as_string = g_settings_get_string (self->settings, KIOSK_BACKGROUNDS_PRIMARY_COLOR_SETTING); + clutter_color_from_string (&primary_color, primary_color_as_string); + + switch (color_shading_type) { + case G_DESKTOP_BACKGROUND_SHADING_SOLID: + meta_background_set_color (background, &primary_color); + break; + + case G_DESKTOP_BACKGROUND_SHADING_VERTICAL: + case G_DESKTOP_BACKGROUND_SHADING_HORIZONTAL: + secondary_color_as_string = g_settings_get_string (self->settings, KIOSK_BACKGROUNDS_SECONDARY_COLOR_SETTING); + clutter_color_from_string (&secondary_color, secondary_color_as_string); + meta_background_set_gradient (background, color_shading_type, &primary_color, &secondary_color); + break; + } +} + +static void +on_background_image_loaded (KioskBackgrounds *self, + MetaBackgroundImage *background_image) +{ + MetaBackground *background; + GDesktopBackgroundStyle background_style; + GFile *picture_file = NULL; + + g_signal_handlers_disconnect_by_func (G_OBJECT (background_image), + on_background_image_loaded, + self); + + background = g_object_get_data (G_OBJECT (background_image), "kiosk-background"); + + picture_file = g_object_get_data (G_OBJECT (background), "picture-file"); + background_style = g_settings_get_enum (self->settings, KIOSK_BACKGROUNDS_PICTURE_OPTIONS_SETTING); + + meta_background_set_file (background, picture_file, background_style); + set_background_color_from_settings (self, background); + + g_object_set_data (G_OBJECT (background), "picture-file", NULL); + + background = NULL; + g_object_set_data (G_OBJECT (background_image), "kiosk-background", NULL); + + g_object_unref (background_image); +} + +static void +set_background_file_from_settings (KioskBackgrounds *self, + MetaBackground *background) +{ + g_autofree char *uri = NULL; + g_autoptr (GFile) picture_file = NULL; + MetaBackgroundImage *background_image; + + uri = g_settings_get_string (self->settings, KIOSK_BACKGROUNDS_PICTURE_URI_SETTING); + picture_file = g_file_new_for_commandline_arg (uri); + + /* We explicitly prime the file in the cache so we can defer setting the background color + * until the image is fully loaded and avoid flicker at startup. + */ + background_image = meta_background_image_cache_load (self->image_cache, picture_file); + g_object_set_data_full (G_OBJECT (background_image), + "kiosk-background", + g_object_ref (background), + g_object_unref); + g_object_set_data_full (G_OBJECT (background), + "picture-file", + g_steal_pointer (&picture_file), + g_object_unref); + + if (meta_background_image_is_loaded (background_image)) { + kiosk_gobject_utils_queue_immediate_callback (G_OBJECT (self), + "[kiosk-backgrounds] on_background_image_loaded", + self->cancellable, + KIOSK_OBJECT_CALLBACK (on_background_image_loaded), + background); + } else { + g_signal_connect_object (G_OBJECT (background_image), + "loaded", + G_CALLBACK (on_background_image_loaded), + self, + G_CONNECT_SWAPPED); + } +} + +static void create_background_for_monitor (KioskBackgrounds *self, int monitor_index) { + g_autoptr (MetaBackground) background = NULL; + GDesktopBackgroundStyle background_style; MetaRectangle geometry; ClutterActor *background_actor = NULL; MetaBackgroundContent *background_content; - g_autoptr (MetaBackground) background = NULL; - ClutterColor color; g_debug ("KioskBackgrounds: Creating background for monitor %d", monitor_index); - meta_display_get_monitor_geometry (self->display, monitor_index, &geometry); + background = meta_background_new (self->display); + background_style = g_settings_get_enum (self->settings, KIOSK_BACKGROUNDS_PICTURE_OPTIONS_SETTING); + + if (background_style == G_DESKTOP_BACKGROUND_STYLE_NONE) { + set_background_color_from_settings (self, background); + } else { + set_background_file_from_settings (self, background); + } background_actor = meta_background_actor_new (self->display, monitor_index); + meta_display_get_monitor_geometry (self->display, monitor_index, &geometry); + clutter_actor_set_position (background_actor, geometry.x, geometry.y); clutter_actor_set_size (background_actor, geometry.width, geometry.height); - clutter_color_init (&color, 50, 50, 50, 255); - - background = meta_background_new (self->display); - meta_background_set_color (background, &color); - background_content = META_BACKGROUND_CONTENT (clutter_actor_get_content (background_actor)); meta_background_content_set_background (background_content, background); @@ -161,19 +276,37 @@ kiosk_backgrounds_dispose (GObject *object) { KioskBackgrounds *self = KIOSK_BACKGROUNDS (object); + if (self->cancellable != NULL) { + g_cancellable_cancel (self->cancellable); + g_clear_object (&self->cancellable); + } + g_clear_object (&self->background_group); + g_clear_object (&self->settings); + + g_clear_weak_pointer (&self->context); + g_clear_weak_pointer (&self->backend); g_clear_weak_pointer (&self->stage); g_clear_weak_pointer (&self->display); g_clear_weak_pointer (&self->window_group); g_clear_weak_pointer (&self->monitor_manager); g_clear_weak_pointer (&self->compositor); - - g_clear_object (&self->background_group); + g_clear_weak_pointer (&self->image_cache); G_OBJECT_CLASS (kiosk_backgrounds_parent_class)->dispose (object); } static void +on_settings_changed (KioskBackgrounds *self) +{ + kiosk_gobject_utils_queue_defer_callback (G_OBJECT (self), + "[kiosk-backgrounds] on_backgrounds_settings_changed", + self->cancellable, + KIOSK_OBJECT_CALLBACK (reinitialize_backgrounds), + NULL); +} + +static void kiosk_backgrounds_constructed (GObject *object) { KioskBackgrounds *self = KIOSK_BACKGROUNDS (object); @@ -181,9 +314,14 @@ G_OBJECT_CLASS (kiosk_backgrounds_parent_class)->constructed (object); g_set_weak_pointer (&self->display, meta_plugin_get_display (META_PLUGIN (self->compositor))); + g_set_weak_pointer (&self->context, meta_display_get_context (self->display)); + g_set_weak_pointer (&self->backend, meta_context_get_backend (self->context)); g_set_weak_pointer (&self->stage, meta_get_stage_for_display (self->display)); g_set_weak_pointer (&self->window_group, meta_get_window_group_for_display (self->display)); - g_set_weak_pointer (&self->monitor_manager, meta_monitor_manager_get ()); + g_set_weak_pointer (&self->monitor_manager, meta_backend_get_monitor_manager (self->backend)); + g_set_weak_pointer (&self->image_cache, meta_background_image_cache_get_default ()); + + self->cancellable = g_cancellable_new (); self->background_group = meta_background_group_new (); clutter_actor_insert_child_below (self->window_group, self->background_group, NULL); @@ -193,6 +331,36 @@ G_CALLBACK (reinitialize_backgrounds), self, G_CONNECT_SWAPPED); + + self->settings = g_settings_new (KIOSK_BACKGROUNDS_SCHEMA); + + g_signal_connect_object (G_OBJECT (self->settings), + "changed::" KIOSK_BACKGROUNDS_PICTURE_OPTIONS_SETTING, + G_CALLBACK (on_settings_changed), + self, + G_CONNECT_SWAPPED); + g_signal_connect_object (G_OBJECT (self->settings), + "changed::" KIOSK_BACKGROUNDS_PICTURE_URI_SETTING, + G_CALLBACK (on_settings_changed), + self, + G_CONNECT_SWAPPED); + g_signal_connect_object (G_OBJECT (self->settings), + "changed::" KIOSK_BACKGROUNDS_COLOR_SHADING_TYPE_SETTING, + G_CALLBACK (on_settings_changed), + self, + G_CONNECT_SWAPPED); + g_signal_connect_object (G_OBJECT (self->settings), + "changed::" KIOSK_BACKGROUNDS_PRIMARY_COLOR_SETTING, + G_CALLBACK (on_settings_changed), + self, + G_CONNECT_SWAPPED); + + g_signal_connect_object (G_OBJECT (self->settings), + "changed::" KIOSK_BACKGROUNDS_SECONDARY_COLOR_SETTING, + G_CALLBACK (on_settings_changed), + self, + G_CONNECT_SWAPPED); + reinitialize_backgrounds (self); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-kiosk-43.0/compositor/kiosk-compositor.c new/gnome-kiosk-44.0/compositor/kiosk-compositor.c --- old/gnome-kiosk-43.0/compositor/kiosk-compositor.c 2022-09-20 17:42:16.000000000 +0200 +++ new/gnome-kiosk-44.0/compositor/kiosk-compositor.c 2023-03-20 16:46:45.000000000 +0100 @@ -306,7 +306,7 @@ for (node = windows; node != NULL; node = node->next) { MetaWindow *existing_window = node->data; - if (meta_window_is_fullscreen (existing_window)) { + if (meta_window_is_monitor_sized (existing_window)) { return FALSE; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-kiosk-43.0/compositor/kiosk-input-source-group.c new/gnome-kiosk-44.0/compositor/kiosk-input-source-group.c --- old/gnome-kiosk-43.0/compositor/kiosk-input-source-group.c 2022-09-20 17:42:16.000000000 +0200 +++ new/gnome-kiosk-44.0/compositor/kiosk-input-source-group.c 2023-03-20 16:46:45.000000000 +0100 @@ -6,14 +6,18 @@ #include <xkbcommon/xkbcommon.h> +#include <meta/meta-context.h> #include <meta/meta-backend.h> +#include <meta/display.h> + #define GNOME_DESKTOP_USE_UNSTABLE_API #include <libgnome-desktop/gnome-languages.h> #include <libgnome-desktop/gnome-xkb-info.h> #include "kiosk-gobject-utils.h" #include "kiosk-input-sources-manager.h" +#include "kiosk-compositor.h" #define KIOSK_INPUT_SOURCE_GROUP_MAX_LAYOUTS 3 @@ -22,9 +26,13 @@ GObject parent; /* weak references */ + KioskCompositor *compositor; KioskInputSourcesManager *input_sources_manager; KioskInputEngineManager *input_engine_manager; KioskXKeyboardManager *x_keyboard_manager; + MetaDisplay *display; + MetaContext *context; + MetaBackend *backend; /* strong references */ char *input_engine_name; @@ -37,7 +45,8 @@ }; enum { - PROP_INPUT_SOURCES_MANAGER = 1, + PROP_COMPOSITOR = 1, + PROP_INPUT_SOURCES_MANAGER, NUMBER_OF_PROPERTIES }; @@ -58,11 +67,13 @@ static void kiosk_input_source_group_dispose (GObject *object); KioskInputSourceGroup * -kiosk_input_source_group_new (KioskInputSourcesManager *input_sources_manager) +kiosk_input_source_group_new (KioskCompositor *compositor, + KioskInputSourcesManager *input_sources_manager) { GObject *object; object = g_object_new (KIOSK_TYPE_INPUT_SOURCE_GROUP, + "compositor", compositor, "input-sources-manager", input_sources_manager, NULL); @@ -292,12 +303,12 @@ g_debug ("KioskInputSourceGroup: Setting keyboard mapping to [%s] (%s) [%s]", layouts, variants, self->options); - meta_backend_set_keymap (meta_get_backend (), layouts, variants, self->options); + meta_backend_set_keymap (self->backend, layouts, variants, self->options); } if (!layout_group_already_locked) { g_debug ("KioskInputSourceGroup: Locking layout to index %d", self->layout_index); - meta_backend_lock_layout_group (meta_get_backend (), self->layout_index); + meta_backend_lock_layout_group (self->backend, self->layout_index); } if (keymap_already_set && layout_group_already_locked) { @@ -357,7 +368,7 @@ g_debug ("KioskInputSourceGroup: Switching from layout '%s' to next layout '%s'", active_layout, layout_name); - meta_backend_lock_layout_group (meta_get_backend (), self->layout_index); + meta_backend_lock_layout_group (self->backend, self->layout_index); return TRUE; } @@ -381,7 +392,7 @@ layout_to_activate = kiosk_input_source_group_get_selected_layout (self); g_debug ("KioskInputSourceGroup: First layout is '%s'", layout_to_activate); - meta_backend_lock_layout_group (meta_get_backend (), self->layout_index); + meta_backend_lock_layout_group (self->backend, self->layout_index); } void @@ -403,7 +414,7 @@ layout_to_activate = kiosk_input_source_group_get_selected_layout (self); g_debug ("KioskInputSourceGroup: Last layout is '%s'", layout_to_activate); - meta_backend_lock_layout_group (meta_get_backend (), self->layout_index); + meta_backend_lock_layout_group (self->backend, self->layout_index); } gboolean @@ -438,7 +449,7 @@ g_debug ("KioskInputSourceGroup: Switching from layout '%s' to next layout '%s'", active_layout, layout_to_activate); - meta_backend_lock_layout_group (meta_get_backend (), self->layout_index); + meta_backend_lock_layout_group (self->backend, self->layout_index); return TRUE; } @@ -473,7 +484,7 @@ g_debug ("KioskInputSourceGroup: Switching from layout '%s' to previous layout '%s'", active_layout, layout_to_activate); - meta_backend_lock_layout_group (meta_get_backend (), self->layout_index); + meta_backend_lock_layout_group (self->backend, self->layout_index); return TRUE; } @@ -488,6 +499,15 @@ object_class->get_property = kiosk_input_source_group_get_property; object_class->dispose = kiosk_input_source_group_dispose; + kiosk_input_source_group_properties[PROP_COMPOSITOR] = g_param_spec_object ("compositor", + "compositor", + "compositor", + KIOSK_TYPE_COMPOSITOR, + G_PARAM_CONSTRUCT_ONLY + | G_PARAM_WRITABLE + | G_PARAM_STATIC_NAME + | G_PARAM_STATIC_NICK + | G_PARAM_STATIC_BLURB); kiosk_input_source_group_properties[PROP_INPUT_SOURCES_MANAGER] = g_param_spec_object ("input-sources-manager", "input-sources-manager", "input-sources-manager", @@ -510,6 +530,9 @@ KioskInputSourceGroup *self = KIOSK_INPUT_SOURCE_GROUP (object); switch (property_id) { + case PROP_COMPOSITOR: + g_set_weak_pointer (&self->compositor, g_value_get_object (value)); + break; case PROP_INPUT_SOURCES_MANAGER: g_set_weak_pointer (&self->input_sources_manager, g_value_get_object (value)); break; @@ -554,6 +577,9 @@ g_set_weak_pointer (&self->input_engine_manager, kiosk_input_sources_manager_get_input_engine_manager (self->input_sources_manager)); g_set_weak_pointer (&self->x_keyboard_manager, kiosk_input_sources_manager_get_x_keyboard_manager (self->input_sources_manager)); + g_set_weak_pointer (&self->display, meta_plugin_get_display (META_PLUGIN (self->compositor))); + g_set_weak_pointer (&self->context, meta_display_get_context (self->display)); + g_set_weak_pointer (&self->backend, meta_context_get_backend (self->context)); } static void @@ -568,6 +594,9 @@ g_clear_pointer (&self->variants, g_ptr_array_unref); g_clear_pointer (&self->layouts, g_ptr_array_unref); + g_clear_weak_pointer (&self->backend); + g_clear_weak_pointer (&self->context); + g_clear_weak_pointer (&self->display); g_clear_weak_pointer (&self->x_keyboard_manager); g_clear_weak_pointer (&self->input_engine_manager); g_clear_weak_pointer (&self->input_sources_manager); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-kiosk-43.0/compositor/kiosk-input-source-group.h new/gnome-kiosk-44.0/compositor/kiosk-input-source-group.h --- old/gnome-kiosk-43.0/compositor/kiosk-input-source-group.h 2022-09-20 17:42:16.000000000 +0200 +++ new/gnome-kiosk-44.0/compositor/kiosk-input-source-group.h 2023-03-20 16:46:45.000000000 +0100 @@ -2,6 +2,8 @@ #include <glib-object.h> +typedef struct _KioskCompositor KioskCompositor; + typedef struct _KioskInputSourcesManager KioskInputSourcesManager; G_BEGIN_DECLS @@ -13,7 +15,8 @@ KIOSK, INPUT_SOURCE_GROUP, GObject); -KioskInputSourceGroup *kiosk_input_source_group_new (KioskInputSourcesManager *manager); +KioskInputSourceGroup *kiosk_input_source_group_new (KioskCompositor *compositor, + KioskInputSourcesManager *manager); gboolean kiosk_input_source_group_add_layout (KioskInputSourceGroup *input_sources, const char *layout, const char *variant); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-kiosk-43.0/compositor/kiosk-input-sources-manager.c new/gnome-kiosk-44.0/compositor/kiosk-input-sources-manager.c --- old/gnome-kiosk-43.0/compositor/kiosk-input-sources-manager.c 2022-09-20 17:42:16.000000000 +0200 +++ new/gnome-kiosk-44.0/compositor/kiosk-input-sources-manager.c 2023-03-20 16:46:45.000000000 +0100 @@ -751,7 +751,7 @@ g_debug ("KioskInputSourcesManager: Adding new, empty keyboard mapping with options '%s'", options); - input_source_group = kiosk_input_source_group_new (self); + input_source_group = kiosk_input_source_group_new (self->compositor, self); kiosk_input_source_group_set_options (input_source_group, options); kiosk_input_sources_manager_add_input_source_group (self, input_source_group); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-kiosk-43.0/compositor/kiosk-x-keyboard-manager.c new/gnome-kiosk-44.0/compositor/kiosk-x-keyboard-manager.c --- old/gnome-kiosk-43.0/compositor/kiosk-x-keyboard-manager.c 2022-09-20 17:42:16.000000000 +0200 +++ new/gnome-kiosk-44.0/compositor/kiosk-x-keyboard-manager.c 2023-03-20 16:46:45.000000000 +0100 @@ -8,6 +8,7 @@ #include <meta/util.h> #include <meta/meta-backend.h> +#include <meta/meta-context.h> #include <meta/meta-x11-display.h> #include <meta/meta-x11-errors.h> @@ -25,6 +26,7 @@ KioskCompositor *compositor; MetaBackend *backend; MetaDisplay *display; + MetaContext *context; Display *x_server_display; /* strong references */ @@ -528,8 +530,9 @@ self->cancellable = g_cancellable_new (); - g_set_weak_pointer (&self->backend, meta_get_backend ()); g_set_weak_pointer (&self->display, meta_plugin_get_display (META_PLUGIN (self->compositor))); + g_set_weak_pointer (&self->context, meta_display_get_context (self->display)); + g_set_weak_pointer (&self->backend, meta_context_get_backend (self->context)); self->pending_layout_index = -1; @@ -557,6 +560,7 @@ g_clear_pointer (&self->options, g_free); g_clear_weak_pointer (&self->display); + g_clear_weak_pointer (&self->context); g_clear_weak_pointer (&self->backend); g_clear_weak_pointer (&self->compositor); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-kiosk-43.0/compositor/main.c new/gnome-kiosk-44.0/compositor/main.c --- old/gnome-kiosk-43.0/compositor/main.c 2022-09-20 17:42:16.000000000 +0200 +++ new/gnome-kiosk-44.0/compositor/main.c 2023-03-20 16:46:45.000000000 +0100 @@ -52,6 +52,12 @@ } } +static void +set_dconf_profile (void) +{ + setenv ("DCONF_PROFILE", "gnomekiosk", TRUE); +} + static gboolean on_termination_signal (MetaContext *context) { @@ -74,6 +80,7 @@ signal (SIGPIPE, SIG_IGN); set_working_directory (); + set_dconf_profile (); context = meta_create_context ("Kiosk"); meta_context_add_option_entries (context, kiosk_options, GETTEXT_PACKAGE); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-kiosk-43.0/input-selector/kiosk-input-selector-application.c new/gnome-kiosk-44.0/input-selector/kiosk-input-selector-application.c --- old/gnome-kiosk-43.0/input-selector/kiosk-input-selector-application.c 2022-09-20 17:42:16.000000000 +0200 +++ new/gnome-kiosk-44.0/input-selector/kiosk-input-selector-application.c 2023-03-20 16:46:45.000000000 +0100 @@ -192,7 +192,7 @@ windows = gtk_application_get_windows (GTK_APPLICATION (self)); window = GTK_WIDGET (g_list_first (windows)->data); - gtk_widget_show (GTK_WIDGET (window)); + gtk_widget_set_visible (GTK_WIDGET (window), TRUE); return 0; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-kiosk-43.0/kiosk-script/desktop/org.gnome.Kiosk.Script.desktop.in.in new/gnome-kiosk-44.0/kiosk-script/desktop/org.gnome.Kiosk.Script.desktop.in.in --- old/gnome-kiosk-43.0/kiosk-script/desktop/org.gnome.Kiosk.Script.desktop.in.in 2022-09-20 17:42:16.000000000 +0200 +++ new/gnome-kiosk-44.0/kiosk-script/desktop/org.gnome.Kiosk.Script.desktop.in.in 2023-03-20 16:46:45.000000000 +0100 @@ -2,3 +2,4 @@ Name=Kiosk Script Type=Application Exec=gnome-kiosk-script +X-GNOME-HiddenUnderSystemd=true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-kiosk-43.0/meson.build new/gnome-kiosk-44.0/meson.build --- old/gnome-kiosk-43.0/meson.build 2022-09-20 17:42:16.000000000 +0200 +++ new/gnome-kiosk-44.0/meson.build 2023-03-20 16:46:45.000000000 +0100 @@ -1,5 +1,5 @@ project('gnome-kiosk', 'c', - version: '43.0' + version: '44.0' ) add_project_arguments('-D_GNU_SOURCE', language: 'c' @@ -34,7 +34,13 @@ meson.add_install_script ('meson/postinstall.py') -mutter_dependency = dependency('libmutter-11') +mutter_api_version = 12 +libmutter_name = 'libmutter-@0@'.format(mutter_api_version) +libmutter_cogl_name = 'mutter-cogl-@0@'.format(mutter_api_version) +libmutter_cogl_pango_name = 'mutter-cogl-pango-@0@'.format(mutter_api_version) +libmutter_clutter_name = 'mutter-clutter-@0@'.format(mutter_api_version) + +mutter_dependency = dependency(libmutter_name) mutter_libdir = mutter_dependency.get_pkgconfig_variable('typelibdir') systemd_user_unit_dir = dependency('systemd').get_pkgconfig_variable('systemduserunitdir', @@ -103,9 +109,9 @@ compositor_dependencies += dependency('gnome-desktop-3.0') compositor_dependencies += dependency('gobject-2.0') compositor_dependencies += dependency('ibus-1.0') -compositor_dependencies += dependency('mutter-cogl-11') -compositor_dependencies += dependency('mutter-cogl-pango-11') -compositor_dependencies += dependency('mutter-clutter-11') +compositor_dependencies += dependency(libmutter_cogl_name) +compositor_dependencies += dependency(libmutter_cogl_pango_name) +compositor_dependencies += dependency(libmutter_clutter_name) compositor_dependencies += mutter_dependency compositor_dependencies += systemd_dependency @@ -172,6 +178,39 @@ install_dir: systemd_user_unit_dir ) +systemd_service_config_data = configuration_data() +systemd_service_config_data.set('bindir', bindir) + +dconf_config_data = configuration_data() +dconf_config_data.set('PACKAGE', meson.project_name()) +dconf_config_data.set('DATADIR', datadir) + +dconf_profile_dir = join_paths(datadir, 'dconf/profile') +dconf = configure_file( + input: 'compositor/data/dconf/gnomekiosk.in', + output: '@BASENAME@.configured', + configuration: dconf_config_data, +) +install_data(dconf, + install_dir: dconf_profile_dir, + rename: 'gnomekiosk' +) + +dconf_dir = join_paths(datadir, meson.project_name()) +dconf_defaults_input_dir = join_paths (meson.current_source_dir(), 'compositor/data/dconf/defaults') +dconf_defaults = custom_target('gnomekiosk.dconf.compiled', + output: 'gnomekiosk.dconf.compiled', + input: 'compositor/data/dconf/defaults/gnomekiosk.dconf', + command: [ + find_program('dconf'), + 'compile', + '@OUTPUT@', + dconf_defaults_input_dir + ], + install: true, + install_dir: dconf_dir +) + install_data('kiosk-script/gnome-kiosk-script', install_dir: bindir, install_mode: 'rwxr-xr-x' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-kiosk-43.0/scripts/check-format.sh new/gnome-kiosk-44.0/scripts/check-format.sh --- old/gnome-kiosk-43.0/scripts/check-format.sh 2022-09-20 17:42:16.000000000 +0200 +++ new/gnome-kiosk-44.0/scripts/check-format.sh 2023-03-20 16:46:45.000000000 +0100 @@ -25,16 +25,24 @@ git stash apply fi -find -name '*.[ch]' -exec uncrustify -q -c scripts/latest-uncrustify.cfg --replace {} \; +git ls-files '*.[ch]' | while read file; do + uncrustify -q -c scripts/latest-uncrustify.cfg --replace "${file}" \; +done echo > after -find -name '*.[ch]' -exec git diff -- {} \; >> after +git ls-files '*.[ch]' | while read file; do + git diff -- "${file}" \; >> after +done git reset --hard $UPSTREAM_BRANCH -find -name '*.[ch]' -exec uncrustify -q -c scripts/latest-uncrustify.cfg --replace {} \; +git ls-files '*.[ch]' | while read file; do + uncrustify -q -c scripts/latest-uncrustify.cfg --replace "${file}" \; +done echo > before -find -name '*.[ch]' -exec git diff -- {} \; >> before +git ls-files '*.[ch]' | while read file; do + git diff -- "${file}" \; >> before +done interdiff --no-revert-omitted before after > diff diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-kiosk-43.0/search-app/org.gnome.Kiosk.SearchApp.desktop.in.in new/gnome-kiosk-44.0/search-app/org.gnome.Kiosk.SearchApp.desktop.in.in --- old/gnome-kiosk-43.0/search-app/org.gnome.Kiosk.SearchApp.desktop.in.in 2022-09-20 17:42:16.000000000 +0200 +++ new/gnome-kiosk-44.0/search-app/org.gnome.Kiosk.SearchApp.desktop.in.in 2023-03-20 16:46:45.000000000 +0100 @@ -2,7 +2,7 @@ Type=Application Name=Search Appliance Comment=Sample Search Appliance Application for GNOME Kiosk -Exec=@bindir@/firefox --kiosk --private-window --new-instance http://www.google.com +Exec=@bindir@/firefox --kiosk --private-window --new-instance https://www.google.com Categories=GNOME;GTK;Core; OnlyShowIn=GNOME; NoDisplay=true ++++++ gnome-kiosk.obsinfo ++++++ --- /var/tmp/diff_new_pack.5dHSCs/_old 2023-03-24 15:20:06.698791131 +0100 +++ /var/tmp/diff_new_pack.5dHSCs/_new 2023-03-24 15:20:06.702791152 +0100 @@ -1,5 +1,5 @@ name: gnome-kiosk -version: 43.0 -mtime: 1663688536 -commit: 115bb9a291bc5d1b29f043b9a56e9cee91782552 +version: 44.0 +mtime: 1679327205 +commit: 3f4dcd82f06389a1764df71f1f91a5c4b1ddfacc