From af92d7cdaff3b9dd1b735eb88261e77b6b049b3f Mon Sep 17 00:00:00 2001 From: Raboneko <119771935+raboneko@users.noreply.github.com> Date: Mon, 14 Apr 2025 03:27:43 -0700 Subject: [PATCH] f42: Update gnome-shell patches for switcherooctl (#4303) (#4304) * f42: Update gnome-shell patches * chore: Fix extra major_version definition * chore: Fix extra line from merge * chore: hardcode gnome-shell in more places (cherry picked from commit d25ac73e34cbfaea533418b5f7056686295ad0fc) Co-authored-by: Kyle Gospodnetich --- ...board-Add-a-catch-around-reload-call.patch | 35 ----- ...Load-keyboard-from-system-settings-i.patch | 136 ------------------ ...Use-gnome-desktop-API-for-getting-de.patch | 128 ----------------- .../gnome-shell-favourite-apps-firefox.patch | 47 ++---- .../gnome/gnome-shell/gnome-shell.spec | 36 +++-- 5 files changed, 35 insertions(+), 347 deletions(-) delete mode 100644 anda/desktops/gnome/gnome-shell/0001-status-keyboard-Add-a-catch-around-reload-call.patch delete mode 100644 anda/desktops/gnome/gnome-shell/0002-status-keyboard-Load-keyboard-from-system-settings-i.patch delete mode 100644 anda/desktops/gnome/gnome-shell/0003-status-keyboard-Use-gnome-desktop-API-for-getting-de.patch diff --git a/anda/desktops/gnome/gnome-shell/0001-status-keyboard-Add-a-catch-around-reload-call.patch b/anda/desktops/gnome/gnome-shell/0001-status-keyboard-Add-a-catch-around-reload-call.patch deleted file mode 100644 index 20717d1caf..0000000000 --- a/anda/desktops/gnome/gnome-shell/0001-status-keyboard-Add-a-catch-around-reload-call.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 78a733bae62f8af15f0771d7efde55473f295e46 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Wed, 16 Aug 2023 18:46:54 -0400 -Subject: [PATCH 1/3] status/keyboard: Add a catch around reload call - -Now that system input settings can get used in the user session -they're getting seen by the tests and the tests are complaining: - -Unhandled promise rejection. To suppress this warning, add an -error handler to your promise chain with .catch() or a try-catch block -around your await expression. - -This commit adds the catch it's asking for. ---- - js/ui/status/keyboard.js | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js -index cfc0a01f6b..4ef2f355d3 100644 ---- a/js/ui/status/keyboard.js -+++ b/js/ui/status/keyboard.js -@@ -204,7 +204,9 @@ class InputSourceSystemSettings extends InputSourceSettings { - this._options = ''; - this._model = ''; - -- this._reload(); -+ this._reload().catch(error => { -+ logError(error, 'Could not reload system input settings'); -+ }); - - Gio.DBus.system.signal_subscribe(this._BUS_NAME, - this._BUS_PROPS_IFACE, --- -2.43.1 - diff --git a/anda/desktops/gnome/gnome-shell/0002-status-keyboard-Load-keyboard-from-system-settings-i.patch b/anda/desktops/gnome/gnome-shell/0002-status-keyboard-Load-keyboard-from-system-settings-i.patch deleted file mode 100644 index 7b0ac52eae..0000000000 --- a/anda/desktops/gnome/gnome-shell/0002-status-keyboard-Load-keyboard-from-system-settings-i.patch +++ /dev/null @@ -1,136 +0,0 @@ -From 0c0cc4ce1d3e08eba3e701d565398e01aa479ff7 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Wed, 16 Aug 2023 11:13:39 -0400 -Subject: [PATCH 2/3] status/keyboard: Load keyboard from system settings if - gsettings unconfigured - -Right now if a user hasn't configured their input sources, the code -falls back to -using the current layout on Xorg and the mutter default with wayland. - -This commit changes the code to instead fall back to using the system -default (as configured by localed). ---- - js/ui/status/keyboard.js | 62 +++++++++++++++++++++++++++++++--------- - 1 file changed, 48 insertions(+), 14 deletions(-) - -diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js -index 4ef2f355d3..d91eb41bc6 100644 ---- a/js/ui/status/keyboard.js -+++ b/js/ui/status/keyboard.js -@@ -22,6 +22,9 @@ import * as Util from '../../misc/util.js'; - export const INPUT_SOURCE_TYPE_XKB = 'xkb'; - export const INPUT_SOURCE_TYPE_IBUS = 'ibus'; - -+const DESKTOP_INPUT_SOURCES_SCHEMA = 'org.gnome.desktop.input-sources'; -+const KEY_INPUT_SOURCES = 'sources'; -+ - export const LayoutMenuItem = GObject.registerClass( - class LayoutMenuItem extends PopupMenu.PopupBaseMenuItem { - _init(displayName, shortName) { -@@ -278,18 +281,16 @@ class InputSourceSystemSettings extends InputSourceSettings { - } - - class InputSourceSessionSettings extends InputSourceSettings { -- constructor() { -+ constructor(settings) { - super(); - -- this._DESKTOP_INPUT_SOURCES_SCHEMA = 'org.gnome.desktop.input-sources'; -- this._KEY_INPUT_SOURCES = 'sources'; - this._KEY_MRU_SOURCES = 'mru-sources'; - this._KEY_KEYBOARD_OPTIONS = 'xkb-options'; - this._KEY_KEYBOARD_MODEL = 'xkb-model'; - this._KEY_PER_WINDOW = 'per-window'; - -- this._settings = new Gio.Settings({schema_id: this._DESKTOP_INPUT_SOURCES_SCHEMA}); -- this._settings.connect(`changed::${this._KEY_INPUT_SOURCES}`, this._emitInputSourcesChanged.bind(this)); -+ this._settings = settings; -+ this._settings.connect(`changed::${KEY_INPUT_SOURCES}`, this._emitInputSourcesChanged.bind(this)); - this._settings.connect(`changed::${this._KEY_KEYBOARD_OPTIONS}`, this._emitKeyboardOptionsChanged.bind(this)); - this._settings.connect(`changed::${this._KEY_KEYBOARD_MODEL}`, this._emitKeyboardModelChanged.bind(this)); - this._settings.connect(`changed::${this._KEY_PER_WINDOW}`, this._emitPerWindowChanged.bind(this)); -@@ -308,7 +309,7 @@ class InputSourceSessionSettings extends InputSourceSettings { - } - - get inputSources() { -- return this._getSourcesList(this._KEY_INPUT_SOURCES); -+ return this._getSourcesList(KEY_INPUT_SOURCES); - } - - get mruSources() { -@@ -363,13 +364,6 @@ export class InputSourceManager extends Signals.EventEmitter { - Meta.KeyBindingFlags.IS_REVERSED, - Shell.ActionMode.ALL, - this._switchInputSource.bind(this)); -- if (Main.sessionMode.isGreeter) -- this._settings = new InputSourceSystemSettings(); -- else -- this._settings = new InputSourceSessionSettings(); -- this._settings.connect('input-sources-changed', this._inputSourcesChanged.bind(this)); -- this._settings.connect('keyboard-options-changed', this._keyboardOptionsChanged.bind(this)); -- this._settings.connect('keyboard-model-changed', this._keyboardModelChanged.bind(this)); - - this._xkbInfo = KeyboardManager.getXkbInfo(); - this._keyboardManager = KeyboardManager.getKeyboardManager(); -@@ -381,16 +375,56 @@ export class InputSourceManager extends Signals.EventEmitter { - this._ibusManager.connect('property-updated', this._ibusPropertyUpdated.bind(this)); - this._ibusManager.connect('set-content-type', this._ibusSetContentType.bind(this)); - -+ this._inputSettings = new Gio.Settings({schema_id: DESKTOP_INPUT_SOURCES_SCHEMA}); -+ this._setupInputSettings(); -+ - global.display.connect('modifiers-accelerator-activated', this._modifiersSwitcher.bind(this)); - - this._sourcesPerWindow = false; - this._focusWindowNotifyId = 0; -- this._settings.connect('per-window-changed', this._sourcesPerWindowChanged.bind(this)); - this._sourcesPerWindowChanged(); - this._disableIBus = false; - this._reloading = false; - } - -+ _sessionHasNoInputSettings() { -+ return this._inputSettings.get_user_value(KEY_INPUT_SOURCES) === null; -+ } -+ -+ _reloadInputSettings() { -+ const hadNoSessionInputSettings = this._hasNoSessionInputSettings; -+ -+ if (Main.sessionMode.isGreeter) -+ this._hasNoSessionInputSettings = true; -+ else -+ this._hasNoSessionInputSettings = this._sessionHasNoInputSettings(); -+ -+ if (this._settings && hadNoSessionInputSettings === this._hasNoSessionInputSettings) -+ return; -+ -+ this._settings?.disconnectObject(this); -+ -+ if (this._hasNoSessionInputSettings) -+ this._settings = new InputSourceSystemSettings(); -+ else -+ this._settings = new InputSourceSessionSettings(this._inputSettings); -+ -+ this._settings.connectObject( -+ 'input-sources-changed', this._inputSourcesChanged.bind(this), -+ 'keyboard-options-changed', this._keyboardOptionsChanged.bind(this), -+ 'keyboard-model-changed', this._keyboardModelChanged.bind(this), -+ 'per-window-changed', this._sourcesPerWindowChanged.bind(this), -+ this); -+ this.reload(); -+ } -+ -+ _setupInputSettings() { -+ if (!Main.sessionMode.isGreeter) -+ this._inputSettings.connect(`changed::${KEY_INPUT_SOURCES}`, this._reloadInputSettings.bind(this)); -+ -+ this._reloadInputSettings(); -+ } -+ - reload() { - this._reloading = true; - this._keyboardManager.setKeyboardOptions(this._settings.keyboardOptions); --- -2.43.1 - diff --git a/anda/desktops/gnome/gnome-shell/0003-status-keyboard-Use-gnome-desktop-API-for-getting-de.patch b/anda/desktops/gnome/gnome-shell/0003-status-keyboard-Use-gnome-desktop-API-for-getting-de.patch deleted file mode 100644 index 3e8af0cabc..0000000000 --- a/anda/desktops/gnome/gnome-shell/0003-status-keyboard-Use-gnome-desktop-API-for-getting-de.patch +++ /dev/null @@ -1,128 +0,0 @@ -From d060baeb69a2a7d80fe403fc8eec90e20aa6cb7f Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Wed, 16 Aug 2023 14:09:50 -0400 -Subject: [PATCH 3/3] status/keyboard: Use gnome-desktop API for getting - default input sources list - -At the moment, gnome-shell tries to figure out the default input sources -from localed. It fails to take into account the system locale and input -methods. - -This commit switches it to use a new function in gnome-desktop, -gnome_get_default_input_sources, which does most of the heavy -lifting itself, instead. ---- - js/ui/status/keyboard.js | 59 ++++++++++++++++++---------------------- - 1 file changed, 27 insertions(+), 32 deletions(-) - -diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js -index d91eb41bc6..19c36031f6 100644 ---- a/js/ui/status/keyboard.js -+++ b/js/ui/status/keyboard.js -@@ -3,6 +3,7 @@ - import Clutter from 'gi://Clutter'; - import Gio from 'gi://Gio'; - import GLib from 'gi://GLib'; -+import GnomeDesktop from 'gi://GnomeDesktop'; - import GObject from 'gi://GObject'; - import IBus from 'gi://IBus'; - import Meta from 'gi://Meta'; -@@ -25,6 +26,8 @@ export const INPUT_SOURCE_TYPE_IBUS = 'ibus'; - const DESKTOP_INPUT_SOURCES_SCHEMA = 'org.gnome.desktop.input-sources'; - const KEY_INPUT_SOURCES = 'sources'; - -+Gio._promisify(GnomeDesktop, 'get_default_input_sources'); -+ - export const LayoutMenuItem = GObject.registerClass( - class LayoutMenuItem extends PopupMenu.PopupBaseMenuItem { - _init(displayName, shortName) { -@@ -202,9 +205,9 @@ class InputSourceSystemSettings extends InputSourceSettings { - this._BUS_IFACE = 'org.freedesktop.locale1'; - this._BUS_PROPS_IFACE = 'org.freedesktop.DBus.Properties'; - -- this._layouts = ''; -- this._variants = ''; -- this._options = ''; -+ this._inputSourceIds = []; -+ this._inputSourceTypes = []; -+ this._options = []; - this._model = ''; - - this._reload().catch(error => { -@@ -221,30 +224,22 @@ class InputSourceSystemSettings extends InputSourceSettings { - } - - async _reload() { -- let props; -+ let inputSourceIds; -+ let inputSourceTypes; -+ let options; -+ let model; - try { -- const result = await Gio.DBus.system.call( -- this._BUS_NAME, -- this._BUS_PATH, -- this._BUS_PROPS_IFACE, -- 'GetAll', -- new GLib.Variant('(s)', [this._BUS_IFACE]), -- null, Gio.DBusCallFlags.NONE, -1, null); -- [props] = result.deepUnpack(); -+ [inputSourceIds, inputSourceTypes, options, model] = -+ await GnomeDesktop.get_default_input_sources(null); - } catch (e) { -- log(`Could not get properties from ${this._BUS_NAME}`); -+ logError(e, 'Could not get default input sources'); - return; - } - -- const layouts = props['X11Layout'].unpack(); -- const variants = props['X11Variant'].unpack(); -- const options = props['X11Options'].unpack(); -- const model = props['X11Model'].unpack(); -- -- if (layouts !== this._layouts || -- variants !== this._variants) { -- this._layouts = layouts; -- this._variants = variants; -+ if (inputSourceIds !== this._inputSourceIds || -+ inputSourceTypes !== this._inputSourceTypes) { -+ this._inputSourceIds = inputSourceIds; -+ this._inputSourceTypes = inputSourceTypes; - this._emitInputSourcesChanged(); - } - if (options !== this._options) { -@@ -258,21 +253,21 @@ class InputSourceSystemSettings extends InputSourceSettings { - } - - get inputSources() { -- let sourcesList = []; -- let layouts = this._layouts.split(','); -- let variants = this._variants.split(','); -- -- for (let i = 0; i < layouts.length && !!layouts[i]; i++) { -- let id = layouts[i]; -- if (variants[i]) -- id += `+${variants[i]}`; -- sourcesList.push({type: INPUT_SOURCE_TYPE_XKB, id}); -+ let sourcesList; -+ -+ if (this._inputSourceIds) { -+ sourcesList = this._inputSourceIds.map((id, index) => { -+ return {type: this._inputSourceTypes[index], id}; -+ }); -+ } else { -+ sourcesList = []; - } -+ - return sourcesList; - } - - get keyboardOptions() { -- return this._options.split(','); -+ return this._options; - } - - get keyboardModel() { --- -2.43.1 - diff --git a/anda/desktops/gnome/gnome-shell/gnome-shell-favourite-apps-firefox.patch b/anda/desktops/gnome/gnome-shell/gnome-shell-favourite-apps-firefox.patch index 326f82714e..cdbfdd5406 100644 --- a/anda/desktops/gnome/gnome-shell/gnome-shell-favourite-apps-firefox.patch +++ b/anda/desktops/gnome/gnome-shell/gnome-shell-favourite-apps-firefox.patch @@ -1,38 +1,9 @@ -From 551b8979483e127471c726fd1db1d52e063a7d81 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Wed, 17 Sep 2014 07:11:12 +0200 -Subject: [PATCH] Replace Web with Firefox in default favorites - ---- - data/org.gnome.shell.gschema.xml.in | 2 +- - js/ui/appFavorites.js | 1 + - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git a/data/org.gnome.shell.gschema.xml.in b/data/org.gnome.shell.gschema.xml.in -index f4fa86d013..86b4bf85ee 100644 ---- a/data/org.gnome.shell.gschema.xml.in -+++ b/data/org.gnome.shell.gschema.xml.in -@@ -50,7 +50,7 @@ - - - -- [ 'org.gnome.Epiphany.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'org.gnome.TextEditor.desktop'] -+ [ 'org.mozilla.firefox.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'org.gnome.TextEditor.desktop'] - List of desktop file IDs for favorite applications - - The applications corresponding to these identifiers -diff --git a/js/ui/appFavorites.js b/js/ui/appFavorites.js -index 576df3800d..1f55a3c881 100644 ---- a/js/ui/appFavorites.js -+++ b/js/ui/appFavorites.js -@@ -51,6 +51,7 @@ const RENAMED_DESKTOP_IDS = { - 'gnotski.desktop': 'org.gnome.Klotski.desktop', - 'gtali.desktop': 'org.gnome.Tali.desktop', - 'iagno.desktop': 'org.gnome.Reversi.desktop', -+ 'firefox.desktop': 'org.mozilla.firefox.desktop', - 'nautilus.desktop': 'org.gnome.Nautilus.desktop', - 'org.gnome.gnome-2048.desktop': 'org.gnome.TwentyFortyEight.desktop', - 'org.gnome.taquin.desktop': 'org.gnome.Taquin.desktop', --- -2.43.0 - +diff --git a/data/default-apps/dash.txt b/data/default-apps/dash.txt +index 65db4babc..f354d621b 100644 +--- a/data/default-apps/dash.txt ++++ b/data/default-apps/dash.txt +@@ -1,2 +1,2 @@ +-org.gnome.Epiphany.desktop ++org.mozilla.firefox.desktop + org.gnome.Calendar.desktop +-- diff --git a/anda/desktops/gnome/gnome-shell/gnome-shell.spec b/anda/desktops/gnome/gnome-shell/gnome-shell.spec index ed28232cfd..b150c89fe7 100644 --- a/anda/desktops/gnome/gnome-shell/gnome-shell.spec +++ b/anda/desktops/gnome/gnome-shell/gnome-shell.spec @@ -25,10 +25,6 @@ Patch: gnome-shell-favourite-apps-firefox.patch # downstream patch to stop trying on configuration errors. Patch: 0001-gdm-Work-around-failing-fingerprint-auth.patch -Patch: 0001-status-keyboard-Add-a-catch-around-reload-call.patch -Patch: 0002-status-keyboard-Load-keyboard-from-system-settings-i.patch -Patch: 0003-status-keyboard-Use-gnome-desktop-API-for-getting-de.patch - # shell-app: improve discrete GPU detection # https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3193 Patch: 3193.patch @@ -40,20 +36,21 @@ Patch: 3193.patch %define gjs_version 1.73.1 %define gtk4_version 4.0.0 %define adwaita_version 1.5.0 -%define mutter_version 47.0 +%define mutter_version 48~rc %define polkit_version 0.100 -%define gsettings_desktop_schemas_version 47~alpha +%define gsettings_desktop_schemas_version 48~rc %define ibus_version 1.5.2 %define gnome_bluetooth_version 1:42.3 %define gstreamer_version 1.4.5 -%define pipewire_version 0.3.0 +%define pipewire_version 0.3.49 %define gnome_settings_daemon_version 3.37.1 +%define major_version %(c=%{version}; echo $c | cut -d. -f1 | cut -d~ -f1) + BuildRequires: pkgconfig(bash-completion) BuildRequires: gcc BuildRequires: meson BuildRequires: git -BuildRequires: pkgconfig(ibus-1.0) >= %{ibus_version} BuildRequires: desktop-file-utils BuildRequires: pkgconfig(libedataserver-1.2) >= %{eds_version} BuildRequires: pkgconfig(gcr-4) @@ -88,9 +85,12 @@ BuildRequires: gnome-bluetooth-libs-devel >= %{gnome_bluetooth_version} %endif # Bootstrap requirements BuildRequires: gtk-doc +# Handle upgrade path +Conflicts: %{name} < 48~rc-3 %ifnarch s390 s390x Recommends: gnome-bluetooth%{?_isa} >= %{gnome_bluetooth_version} %endif +Requires: %{name}-common = %{version}-%{release} Requires: gnome-desktop3%{?_isa} >= %{gnome_desktop_version} Requires: gcr%{?_isa} Requires: gobject-introspection%{?_isa} >= %{gobject_introspection_version} @@ -115,7 +115,9 @@ Requires: xdg-user-dirs-gtk # needed for schemas Requires: at-spi2-atk%{?_isa} # needed for on-screen keyboard -Requires: ibus%{?_isa} >= %{ibus_version} +Recommends: ibus%{?_isa} >= %{ibus_version} +# needed for gobject-introspection typelib +Requires: ibus-libs%{?_isa} >= %{ibus_version} # needed for "show keyboard layout" Requires: tecla # needed for the user menu @@ -151,6 +153,7 @@ Requires: webkitgtk6.0%{?_isa} ExcludeArch: %{ix86} %endif +Provides: gnome-shell(api) = %{major_version} Provides: desktop-notification-daemon = %{version}-%{release} Provides: PolicyKit-authentication-agent = %{version}-%{release} Provides: bundled(gvc) @@ -178,6 +181,14 @@ advantage of the capabilities of modern graphics hardware and introduces innovative user interface concepts to provide a visually attractive and easy to use experience. +%package common +Summary: Common files used by %{name} +Conflicts: %{name} < 48~rc-3 +BuildArch: noarch + +%description common +%{summary} + %prep %autosetup -S git -n gnome-shell-%{tarball_version} @@ -216,7 +227,6 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/org.gnome.Shell.Porta %{_bindir}/gnome-extensions %{_bindir}/gnome-shell-extension-tool %{_bindir}/gnome-shell-test-tool -%{_datadir}/glib-2.0/schemas/*.xml %{_datadir}/glib-2.0/schemas/00_org.gnome.shell.gschema.override %{_datadir}/applications/org.gnome.Shell.Extensions.desktop %{_datadir}/applications/org.gnome.Shell.desktop @@ -236,8 +246,11 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/org.gnome.Shell.Porta %{_datadir}/dbus-1/interfaces/org.gnome.Shell.PadOsd.xml %{_datadir}/dbus-1/interfaces/org.gnome.Shell.Screencast.xml %{_datadir}/dbus-1/interfaces/org.gnome.Shell.Screenshot.xml +%{_datadir}/dbus-1/interfaces/org.gnome.Shell.ScreenTime.xml %{_datadir}/dbus-1/interfaces/org.gnome.ShellSearchProvider.xml %{_datadir}/dbus-1/interfaces/org.gnome.ShellSearchProvider2.xml +%{_datadir}/desktop-directories/X-GNOME-Shell-System.directory +%{_datadir}/desktop-directories/X-GNOME-Shell-Utilities.directory %{_datadir}/icons/hicolor/scalable/apps/org.gnome.Shell.Extensions.svg %{_datadir}/icons/hicolor/symbolic/apps/org.gnome.Shell.Extensions-symbolic.svg %{_userunitdir}/org.gnome.Shell-disable-extensions.service @@ -259,5 +272,8 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/org.gnome.Shell.Porta %{_libexecdir}/gnome-shell-portal-helper %endif +%files common +%{_datadir}/glib-2.0/schemas/*.xml + %changelog %autochangelog