diff --git a/aboutMenu.js b/aboutMenu.js
deleted file mode 100644
index 6107730..0000000
--- a/aboutMenu.js
+++ /dev/null
@@ -1,135 +0,0 @@
-// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-
-const GLib = imports.gi.GLib;
-const Gio = imports.gi.Gio;
-const Lang = imports.lang;
-const Clutter = imports.gi.Clutter;
-const St = imports.gi.St;
-const DBus = imports.gi.DBus;
-
-const PanelMenu = imports.ui.panelMenu;
-
-const HostnameIface = ' \
- \
- \
- \
- \
- \
- \
- \
-';
-const HostnameProxy = Gio.DBusProxy.makeProxyWrapper(HostnameIface);
-
-var AboutMenuButton = new Lang.Class({
- Name: 'AboutMenuButton',
- Extends: PanelMenu.Button,
- _init: function() {
- this._hostname = null;
- this._updateHostnameId = 0;
- this._ticket = 1;
-
- let hbox;
- let vbox;
- let menuAlignment = 0.25;
-
- if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
- menuAlignment = 1.0 - menuAlignment;
- this.parent(menuAlignment, 'About Me');
-
- this.about_hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
- this.hostname_label = new St.Label({y_align: Clutter.ActorAlign.CENTER});
- this.about_hbox.add_child(this.hostname_label);
-
- this.actor.add_child(this.about_hbox);
- hbox = new St.BoxLayout({ name: 'aboutArea' });
- this.menu.box.add_child(hbox);
-
- vbox = new St.BoxLayout({vertical: true});
- hbox.add(vbox);
-
- ///// Section: read '/etc/os-release' to get pretty name
- //
- // Note: previously this is defaulted to 'SUSE Linux Enterprise', now
- // let's use a "safer" option.
- let sysinfo_text = 'SUSE Linux';
- try {
- let success, contents, tag;
- let _os_release = Gio.File.new_for_path('/etc/os-release');
- [success, contents, tag] = _os_release.load_contents(null);
-
- let osReleaseContentStr = contents.toString();
- let prettyNameReg = /^PRETTY_NAME="(.+)"/;
- let match = null;
- for (let line of osReleaseContentStr.split('\n')) {
- match = prettyNameReg.exec(line);
- if (match) {
- sysinfo_text = match[1];
- }
- }
- }
- catch (e) {
- // NOTE soft fail, 'sysinfo_text' is the default
- warn('ERROR: fail to read /etc/os-release');
- }
-
- this._sysinfo = new St.Label({ text: sysinfo_text, can_focus: true });
- vbox.add(this._sysinfo);
- this.actor.hide();
-
- this._updateHostnameId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
- this._ticket,
- Lang.bind(this, function() {
- if (this._ticket < 60*60)
- this._ticket *= 2;
- this._updateHostnameId = 0;
- this._updateHostname();
- return false;
- }));
-
- return;
- },
-
- _updateHostname: function(){
- let hostname_text = get_hostname();
-
- if ((this._hostname == null) || (this._hostname != hostname_text)) {
- this._ticket = 1;
- this._hostname = hostname_text;
- this.hostname_label.set_text(this._hostname);
- this.actor.show();
- }
- this._updateHostnameId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT,
- this._ticket,
- Lang.bind(this, function() {
- if (this._ticket < 60*60)
- this._ticket *= 2;
- this._updateHostnameId = 0;
- this._updateHostname();
- return false;
- }));
- },
-
- _destroy: function() {
- this._ticket = 1;
- if (this._updateHostnameId) {
- GLib.source_remove (this._updateHostnameId);
- this._updateHostnameId = 0;
- }
- },
-
-});
-
-function get_hostname() {
- let hostnameProxy = HostnameProxy(Gio.DBus.system,
- 'org.freedesktop.hostname1',
- '/org/freedesktop/hostname1',
- null, null);
-
- try {
- let name = hostnameProxy.GetSync('org.freedesktop.hostname1', 'Hostname');
- return name[0].get_string()[0];
-
- } catch(e) {
- return 'localhost';
- }
-}
diff --git a/endSession-dialog-update-time-label-every-sec.patch b/endSession-dialog-update-time-label-every-sec.patch
index c1a95c2..ff101bd 100644
--- a/endSession-dialog-update-time-label-every-sec.patch
+++ b/endSession-dialog-update-time-label-every-sec.patch
@@ -1,17 +1,16 @@
-Index: gnome-shell-3.24.2/js/ui/endSessionDialog.js
+Index: gnome-shell-45.0/js/ui/endSessionDialog.js
===================================================================
---- gnome-shell-3.24.2.orig/js/ui/endSessionDialog.js
-+++ gnome-shell-3.24.2/js/ui/endSessionDialog.js
-@@ -426,8 +426,10 @@ const EndSessionDialog = new Lang.Class(
+--- gnome-shell-45.0.orig/js/ui/endSessionDialog.js
++++ gnome-shell-45.0/js/ui/endSessionDialog.js
+@@ -379,7 +379,10 @@ class EndSessionDialog extends ModalDial
let description;
- let displayTime = _roundSecondsToInterval(this._totalSecondsToStayOpen,
-- this._secondsLeft,
-- 10);
-+ this._secondsLeft,
-+ // larger than any normal value
-+ 1000000);
-+
+ let displayTime = _roundSecondsToInterval(
+- this._totalSecondsToStayOpen, this._secondsLeft, 10);
++ this._totalSecondsToStayOpen,
++ this._secondsLeft,
++ // larger than any normal value
++ 1000000);
if (this._user.is_loaded) {
let realName = this._user.get_real_name();
diff --git a/gnome-shell-disable-ibus-when-not-installed.patch b/gnome-shell-disable-ibus-when-not-installed.patch
index e02bad4..be1fb73 100644
--- a/gnome-shell-disable-ibus-when-not-installed.patch
+++ b/gnome-shell-disable-ibus-when-not-installed.patch
@@ -7,14 +7,14 @@ Subject: [PATCH] Disable ibus when out of CJK
js/misc/ibusManager.js | 8 ++++++++
1 file changed, 8 insertions(+)
-Index: gnome-shell-3.36.1/js/misc/ibusManager.js
+Index: gnome-shell-45.0/js/misc/ibusManager.js
===================================================================
---- gnome-shell-3.36.1.orig/js/misc/ibusManager.js
-+++ gnome-shell-3.36.1/js/misc/ibusManager.js
-@@ -31,6 +31,10 @@ function getIBusManager() {
-
- var IBusManager = class {
+--- gnome-shell-45.0.orig/js/misc/ibusManager.js
++++ gnome-shell-45.0/js/misc/ibusManager.js
+@@ -59,6 +59,10 @@ class IBusManager extends Signals.EventE
constructor() {
+ super();
+
+ let daemon = Gio.File.new_for_path('/usr/bin/ibus-daemon');
+ if (!daemon.query_exists(null))
+ return;
@@ -22,7 +22,7 @@ Index: gnome-shell-3.36.1/js/misc/ibusManager.js
IBus.init();
// This is the longest we'll keep the keyboard frozen until an input
-@@ -59,6 +63,10 @@ var IBusManager = class {
+@@ -114,6 +118,10 @@ class IBusManager extends Signals.EventE
}
_spawn(extraArgs = []) {
@@ -31,5 +31,5 @@ Index: gnome-shell-3.36.1/js/misc/ibusManager.js
+ return;
+
try {
- let cmdLine = ['ibus-daemon', '--panel', 'disable', ...extraArgs];
- let launcher = Gio.SubprocessLauncher.new(Gio.SubprocessFlags.NONE);
+ const cmdLine = ['ibus-daemon', '--panel', 'disable', ...extraArgs];
+ const launchContext = global.create_app_launch_context(0, -1);
diff --git a/gnome-shell-domain.patch b/gnome-shell-domain.patch
index 29ef5fe..04bf69c 100644
--- a/gnome-shell-domain.patch
+++ b/gnome-shell-domain.patch
@@ -1,9 +1,8 @@
-diff --git a/js/gdm/domain.js b/js/gdm/domain.js
-new file mode 100644
-index 0000000..2452696
+Index: gnome-shell-45.0/js/gdm/domain.js
+===================================================================
--- /dev/null
-+++ b/js/gdm/domain.js
-@@ -0,0 +1,243 @@
++++ gnome-shell-45.0/js/gdm/domain.js
+@@ -0,0 +1,236 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+/*
+ * Copyright 2011 Red Hat, Inc
@@ -24,19 +23,14 @@ index 0000000..2452696
+ * 02111-1307, USA.
+ */
+
-+const Atk = imports.gi.Atk;
-+const Clutter = imports.gi.Clutter;
-+const Gdm = imports.gi.Gdm;
-+const Gio = imports.gi.Gio;
-+const GLib = imports.gi.GLib;
-+const Gtk = imports.gi.Gtk;
-+const Lang = imports.lang;
-+const Mainloop = imports.mainloop;
-+const Signals = imports.signals;
-+const St = imports.gi.St;
++import Atk from 'gi://Atk';
++import Gio from 'gi://Gio';
++import GLib from 'gi://GLib';
++import St from 'gi://St';
+
-+const Main = imports.ui.main;
-+const PopupMenu = imports.ui.popupMenu;
++import * as Main from '../ui/main.js';
++import * as PopupMenu from '../ui/popupMenu.js';
++import * as Signals from '../misc/signals.js';
+
+const DomainLoadStatus = {
+ INIT : 0,
@@ -47,27 +41,26 @@ index 0000000..2452696
+ ERR : 5
+};
+
-+var DomainMenuButton = new Lang.Class({
-+ Name: 'DomainMenuButton',
++export class DomainMenuButton extends Signals.EventEmitter {
++ constructor(scope, handler) {
++ super();
+
-+ _init: function () {
+ this._separator = null;
+ this.domain_enabled = false;
+ this._domains = new Array();
+ this._load_config();
-+ },
++ }
+
-+
-+ _domainsPush: function(domain) {
++ _domainsPush(domain) {
+ let valid_content = domain.replace(/\s+/g, '');
+
+ if (valid_content.length > 0) {
+ if (this._domains.indexOf(valid_content) == -1)
+ this._domains.push (valid_content);
+ }
-+ },
++ }
+
-+ _generate: function() {
++ _generate() {
+ let gearIcon = new St.Icon({ icon_name: 'samba-window',
+ icon_size: 24
+ });
@@ -87,24 +80,24 @@ index 0000000..2452696
+ this._menu.actor.hide();
+
+ this._menu.connect('open-state-changed',
-+ Lang.bind(this, function(menu, isOpen) {
++ (menu, isOpen) => {
+ if (isOpen)
+ this._button.add_style_pseudo_class('active');
+ else
+ this._button.remove_style_pseudo_class('active');
-+ }));
++ });
+
+ this._manager = new PopupMenu.PopupMenuManager({ actor: this._button });
+ this._manager.addMenu(this._menu);
+
-+ this._button.connect('clicked', Lang.bind(this, function() {
++ this._button.connect('clicked', () => {
+ this._menu.toggle();
-+ }));
++ });
+
+ this._populate();
-+ },
++ }
+
-+ _load_config: function() {
++ _load_config() {
+ let keyfile = new GLib.KeyFile();
+ let path = "/etc/gdm/custom.conf";
+ let domain_group = "domains";
@@ -128,10 +121,10 @@ index 0000000..2452696
+ }
+ this._generate();
+ }
-+ },
++ }
+
-+ _readStdout: function(data) {
-+ this._dataStdout.read_line_async(GLib.PRIORITY_DEFAULT, null, Lang.bind(this, function(stream, result) {
++ _readStdout(data) {
++ this._dataStdout.read_line_async(GLib.PRIORITY_DEFAULT, null, (this, function(stream, result) {
+ let [line, len] = this._dataStdout.read_line_finish_utf8(result);
+
+ if (line == null) {
@@ -144,9 +137,9 @@ index 0000000..2452696
+ data.push(line);
+ this._readStdout(data);
+ }));
-+ },
++ }
+
-+ loadCommand: function(argv) {
++ loadCommand(argv) {
+ try {
+ let data = new Array();
+ let [success, pid, stdin, stdout, stderr] = GLib.spawn_async_with_pipes(null,
@@ -162,9 +155,9 @@ index 0000000..2452696
+ } catch (e) {
+ this.loadDomains(null, e);
+ }
-+ },
++ }
+
-+ loadDomains: function(data, err) {
++ loadDomains(data, err) {
+ /*FIXME: reload every 5 minutes? */
+ /*TODO: load the setting file */
+ switch (this._status) {
@@ -205,61 +198,60 @@ index 0000000..2452696
+ for (let i = 0; i < this._domains.length; i++) {
+ item = new PopupMenu.PopupMenuItem(this._domains[i]);
+ this._menu.addMenuItem(item);
-+ item.connect('activate', Lang.bind(this, function(item) {
++ item.connect('activate', (item) => {
+ //?? Why it does not work
+ //this.setActiveDomain(this._domains[i]);
+ this.setActiveDomain(item.label.text);
-+ }));
++ });
+ }
+ break;
+ }
-+ },
++ }
+
-+ _populate: function() {
++ _populate() {
+ //TODO Recent domains?
+ item = new PopupMenu.PopupMenuItem(_("loading the wbinfos..."));
+ item.setSensitive(false);
+ this._menu.addMenuItem(item);
+ this._status = DomainLoadStatus.INIT;
+ this.loadDomains(null, null);
-+ },
++ }
+
-+ setActiveDomain: function(domain) {
++ setActiveDomain(domain) {
+ this._activeDomain = domain;
+ //this.emit('domain-activated', this._activeDomain);
+ this.emit('domain-activated');
-+ },
++ }
+
-+ getActiveDomain: function(domain) {
++ getActiveDomain(domain) {
+ return this._activeDomain;
-+ },
++ }
+
-+ getQuestionMessage: function() {
++ getQuestionMessage() {
+ return _("User for ") + this._activeDomain;
-+ },
++ }
+
-+ getHintMessage: function() {
++ getHintMessage() {
+ return _("Contact dliang to get help");
-+ },
++ }
+
-+ getDomainUser: function(user) {
++ getDomainUser(user) {
+ return this._activeDomain + this._separator + user;
+ }
-+});
-+Signals.addSignalMethods(DomainMenuButton.prototype);
-diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
-index 6f66a27..3f01ca0 100644
---- a/js/gdm/loginDialog.js
-+++ b/js/gdm/loginDialog.js
-@@ -21,6 +21,7 @@ const { AccountsService, Atk, Clutter, Gdm, Gio,
- GLib, GObject, Meta, Pango, Shell, St } = imports.gi;
++}
+Index: gnome-shell-45.0/js/gdm/loginDialog.js
+===================================================================
+--- gnome-shell-45.0.orig/js/gdm/loginDialog.js
++++ gnome-shell-45.0/js/gdm/loginDialog.js
+@@ -29,6 +29,7 @@ import Shell from 'gi://Shell';
+ import St from 'gi://St';
- const AuthPrompt = imports.gdm.authPrompt;
-+const Domain = imports.gdm.domain;
- const Batch = imports.gdm.batch;
- const BoxPointer = imports.ui.boxpointer;
- const CtrlAltTab = imports.ui.ctrlAltTab;
-@@ -449,6 +450,10 @@ var LoginDialog = GObject.registerClass({
+ import * as AuthPrompt from './authPrompt.js';
++import * as Domain from './domain.js';
+ import * as Batch from './batch.js';
+ import * as BoxPointer from '../ui/boxpointer.js';
+ import * as CtrlAltTab from '../ui/ctrlAltTab.js';
+@@ -464,6 +465,10 @@ export const LoginDialog = GObject.regis
this._authPrompt.hide();
this.add_child(this._authPrompt);
@@ -270,7 +262,7 @@ index 6f66a27..3f01ca0 100644
// translators: this message is shown below the user list on the
// login screen. It can be activated to reveal an entry for
// manually entering the username.
-@@ -470,7 +475,18 @@ var LoginDialog = GObject.registerClass({
+@@ -485,7 +490,18 @@ export const LoginDialog = GObject.regis
this._notListedButton.hide();
@@ -283,15 +275,15 @@ index 6f66a27..3f01ca0 100644
+ this._domainMenuButton.actor.hide();
+
+ this._domainMenuButton.connect('domain-activated',
-+ Lang.bind(this, function(list) {
-+ this._hideUserListAskForDomainUsernameAndBeginVerification(); }));
++ (list) => {
++ this._hideUserListAskForDomainUsernameAndBeginVerification(); });
+ this._userLayout.add_child(this._domainMenuButton.actor);
+ } // domain end
- this._bannerView = new St.ScrollView({ style_class: 'login-dialog-banner-view',
- opacity: 0,
-@@ -979,6 +995,37 @@ var LoginDialog = GObject.registerClass({
- });
+ this._bannerView = new St.ScrollView({
+ style_class: 'login-dialog-banner-view',
+@@ -1004,6 +1020,37 @@ export const LoginDialog = GObject.regis
+ }, this);
}
+ _askForDomainUsernameAndBeginVerification(domain) {
@@ -303,15 +295,15 @@ index 6f66a27..3f01ca0 100644
+
+ let realmManager = new Realmd.Manager();
+ let realmSignalId = realmManager.connect('login-format-changed',
-+ Lang.bind(this, this._showRealmLoginHint));
++ this._showRealmLoginHint.bind(this), this);
+ this._showRealmLoginHint(realmManager.loginFormat);
+
+ let nextSignalId = this._authPrompt.connect('next',
-+ Lang.bind(this, function() {
++ () => {
+ this._authPrompt.disconnect(nextSignalId);
+ this._authPrompt.updateSensitivity(false);
+ let answer = this._authPrompt.getAnswer();
-+ let domain_answer = this._domainMenuButton.getDomainUser(answer);
++ let domain_answer = this._domainMenuButton.getDomainUser(answer);
+ this._user = this._userManager.get_user(domain_answer);
+ this._authPrompt.clear();
+ this._authPrompt.startSpinning();
@@ -320,7 +312,7 @@ index 6f66a27..3f01ca0 100644
+
+ realmManager.disconnect(realmSignalId)
+ realmManager.release();
-+ }));
++ });
+ this._updateCancelButton();
+ this._showPrompt();
+ }
@@ -328,7 +320,7 @@ index 6f66a27..3f01ca0 100644
_startSession(serviceName) {
this._bindOpacity();
this.ease({
-@@ -1134,6 +1181,11 @@ var LoginDialog = GObject.registerClass({
+@@ -1178,6 +1225,11 @@ export const LoginDialog = GObject.regis
this._askForUsernameAndBeginVerification();
}
@@ -340,7 +332,7 @@ index 6f66a27..3f01ca0 100644
_hideUserListAndBeginVerification() {
this._hideUserList();
this._authPrompt.begin();
-@@ -1147,6 +1199,9 @@ var LoginDialog = GObject.registerClass({
+@@ -1191,6 +1243,9 @@ export const LoginDialog = GObject.regis
this._sessionMenuButton.hide();
this._setUserListExpanded(true);
this._notListedButton.show();
@@ -350,25 +342,25 @@ index 6f66a27..3f01ca0 100644
this._userList.grab_key_focus();
}
-diff --git a/js/js-resources.gresource.xml b/js/js-resources.gresource.xml
-index eebbc36..5e5e7e2 100644
---- a/js/js-resources.gresource.xml
-+++ b/js/js-resources.gresource.xml
-@@ -2,6 +2,7 @@
-
+Index: gnome-shell-45.0/js/js-resources.gresource.xml
+===================================================================
+--- gnome-shell-45.0.orig/js/js-resources.gresource.xml
++++ gnome-shell-45.0/js/js-resources.gresource.xml
+@@ -3,6 +3,7 @@
+ gdm/authList.js
gdm/authPrompt.js
+ gdm/domain.js
gdm/batch.js
gdm/loginDialog.js
gdm/oVirt.js
-diff --git a/po/POTFILES.in b/po/POTFILES.in
-index cb279c1..7772367 100644
---- a/po/POTFILES.in
-+++ b/po/POTFILES.in
-@@ -6,6 +6,7 @@ data/org.gnome.shell.gschema.xml.in
+Index: gnome-shell-45.0/po/POTFILES.in
+===================================================================
+--- gnome-shell-45.0.orig/po/POTFILES.in
++++ gnome-shell-45.0/po/POTFILES.in
+@@ -9,6 +9,7 @@ data/org.gnome.Shell.Extensions.desktop.
data/org.gnome.Shell.PortalHelper.desktop.in.in
- js/dbusServices/extensions/ui/extension-prefs-dialog.ui
+ js/dbusServices/extensions/ui/extension-error-page.ui
js/gdm/authPrompt.js
+js/gdm/domain.js
js/gdm/loginDialog.js
diff --git a/gnome-shell-exit-crash-workaround.patch b/gnome-shell-exit-crash-workaround.patch
index 6ff3f82..769b48b 100644
--- a/gnome-shell-exit-crash-workaround.patch
+++ b/gnome-shell-exit-crash-workaround.patch
@@ -1,8 +1,8 @@
-Index: gnome-shell-44.beta/src/main.c
+Index: gnome-shell-45.0/src/main.c
===================================================================
---- gnome-shell-44.beta.orig/src/main.c
-+++ gnome-shell-44.beta/src/main.c
-@@ -680,7 +680,7 @@ main (int argc, char **argv)
+--- gnome-shell-45.0.orig/src/main.c
++++ gnome-shell-45.0/src/main.c
+@@ -736,7 +736,7 @@ main (int argc, char **argv)
g_object_unref (shell_global_get ());
g_debug ("Tearing down the mutter context");
diff --git a/gnome-shell-fate324570-Make-GDM-background-image-configurable.patch b/gnome-shell-fate324570-Make-GDM-background-image-configurable.patch
index 7e39ca9..58a4c13 100644
--- a/gnome-shell-fate324570-Make-GDM-background-image-configurable.patch
+++ b/gnome-shell-fate324570-Make-GDM-background-image-configurable.patch
@@ -1,53 +1,37 @@
-Index: gnome-shell-40.rc/data/gnome-shell-theme.gresource.xml
+Index: gnome-shell-45.0/data/gnome-shell-theme.gresource.xml
===================================================================
---- gnome-shell-40.rc.orig/data/gnome-shell-theme.gresource.xml
-+++ gnome-shell-40.rc/data/gnome-shell-theme.gresource.xml
-@@ -16,6 +16,7 @@
- message-indicator-symbolic.svg
- no-events.svg
- no-notifications.svg
+--- gnome-shell-45.0.orig/data/gnome-shell-theme.gresource.xml
++++ gnome-shell-45.0/data/gnome-shell-theme.gresource.xml
+@@ -13,6 +13,7 @@
+ gnome-shell-light.css
+ gnome-shell-high-contrast.css
+ gnome-shell-start.svg
+ noise-texture.png
pad-osd.css
- eye-open-negative-filled-symbolic.svg
- eye-not-looking-symbolic.svg
-Index: gnome-shell-40.rc/data/theme/gnome-shell-sass/widgets/_screen-shield.scss
+ process-working.svg
+ toggle-off.svg
+Index: gnome-shell-45.0/js/ui/screenShield.js
===================================================================
---- gnome-shell-40.rc.orig/data/theme/gnome-shell-sass/widgets/_screen-shield.scss
-+++ gnome-shell-40.rc/data/theme/gnome-shell-sass/widgets/_screen-shield.scss
-@@ -65,6 +65,11 @@
- box-shadow: 0px 2px 4px rgba(0,0,0,0.6);
- }
+--- gnome-shell-45.0.orig/js/ui/screenShield.js
++++ gnome-shell-45.0/js/ui/screenShield.js
+@@ -11,6 +11,7 @@ import St from 'gi://St';
-+.bgLockDialogGroup-background {
-+ border: none;
-+ background-color: transparent;
-+}
-+
- #lockDialogGroup {
- background-color: $system_bg_color;
- }
-Index: gnome-shell-40.rc/js/ui/screenShield.js
-===================================================================
---- gnome-shell-40.rc.orig/js/ui/screenShield.js
-+++ gnome-shell-40.rc/js/ui/screenShield.js
-@@ -4,6 +4,7 @@ const { AccountsService, Clutter, Gio,
- GLib, Graphene, Meta, Shell, St } = imports.gi;
- const Signals = imports.signals;
+ import * as Signals from '../misc/signals.js';
-+const Background = imports.ui.background;
- const GnomeSession = imports.misc.gnomeSession;
- const OVirt = imports.gdm.oVirt;
- const LoginManager = imports.misc.loginManager;
-@@ -16,6 +17,8 @@ const SmartcardManager = imports.misc.sm
++import * as Background from './background.js';
+ import * as GnomeSession from '../misc/gnomeSession.js';
+ import * as OVirt from '../gdm/oVirt.js';
+ import * as LoginManager from '../misc/loginManager.js';
+@@ -23,6 +24,8 @@ import * as SmartcardManager from '../mi
- const { adjustAnimationTime } = imports.ui.environment;
+ import {adjustAnimationTime} from '../misc/animationUtils.js';
+const LOCKDIALOG_BACKGROUND_SCHEMA = 'org.gnome.desktop.background.lockdialog';
+
const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver';
const LOCK_ENABLED_KEY = 'lock-enabled';
const LOCK_DELAY_KEY = 'lock-delay';
-@@ -25,6 +28,9 @@ const DISABLE_LOCK_KEY = 'disable-lock-s
+@@ -32,6 +35,9 @@ const DISABLE_LOCK_KEY = 'disable-lock-s
const LOCKED_STATE_STR = 'screenShield.locked';
@@ -57,7 +41,7 @@ Index: gnome-shell-40.rc/js/ui/screenShield.js
// ScreenShield animation time
// - STANDARD_FADE_TIME is used when the session goes idle
// - MANUAL_FADE_TIME is used for lowering the shield when asked by the user,
-@@ -65,6 +71,16 @@ var ScreenShield = class {
+@@ -74,6 +80,16 @@ export class ScreenShield extends Signal
name: 'lockDialogGroup',
});
@@ -74,7 +58,7 @@ Index: gnome-shell-40.rc/js/ui/screenShield.js
this.actor.add_actor(this._lockScreenGroup);
this.actor.add_actor(this._lockDialogGroup);
-@@ -142,6 +158,15 @@ var ScreenShield = class {
+@@ -142,6 +158,15 @@ export class ScreenShield extends Signal
this._cursorTracker = Meta.CursorTracker.get_for_display(global.display);
this._syncInhibitor();
@@ -89,8 +73,8 @@ Index: gnome-shell-40.rc/js/ui/screenShield.js
+ }
}
- _setActive(active) {
-@@ -492,6 +517,53 @@ var ScreenShield = class {
+ async _getLoginSession() {
+@@ -522,6 +547,53 @@ export class ScreenShield extends Signal
this.emit('wake-up-screen');
}
diff --git a/gnome-shell-gdm-login-applet.patch b/gnome-shell-gdm-login-applet.patch
index 9c43a81..ec73864 100644
--- a/gnome-shell-gdm-login-applet.patch
+++ b/gnome-shell-gdm-login-applet.patch
@@ -1,47 +1,74 @@
-diff --git a/js/js-resources.gresource.xml b/js/js-resources.gresource.xml
-index e65e0e9..eebbc36 100644
---- a/js/js-resources.gresource.xml
-+++ b/js/js-resources.gresource.xml
-@@ -35,6 +35,7 @@
- perf/core.js
- perf/hwtest.js
+Index: gnome-shell-45.0/js/js-resources.gresource.xml
+===================================================================
+--- gnome-shell-45.0.orig/js/js-resources.gresource.xml
++++ gnome-shell-45.0/js/js-resources.gresource.xml
+@@ -41,6 +41,7 @@
+ misc/util.js
+ misc/weather.js
+ ui/aboutMenu.js
ui/accessDialog.js
ui/altTab.js
ui/animation.js
-diff --git a/js/ui/aboutMenu.js b/js/ui/aboutMenu.js
-new file mode 100644
-index 0000000..7add645
+Index: gnome-shell-45.0/js/ui/panel.js
+===================================================================
+--- gnome-shell-45.0.orig/js/ui/panel.js
++++ gnome-shell-45.0/js/ui/panel.js
+@@ -36,6 +36,7 @@ import * as ThunderboltStatus from './st
+ import * as AutoRotateStatus from './status/autoRotate.js';
+ import * as BackgroundAppsStatus from './status/backgroundApps.js';
+
++import {AboutMenuButton} from './aboutMenu.js';
+ import {DateMenuButton} from './dateMenu.js';
+ import {ATIndicator} from './status/accessibility.js';
+ import {InputSourceIndicator} from './status/keyboard.js';
+@@ -633,6 +634,7 @@ class QuickSettings extends PanelMenu.Bu
+ });
+
+ const PANEL_ITEM_IMPLEMENTATIONS = {
++ 'aboutMenu': AboutMenuButton,
+ 'activities': ActivitiesButton,
+ 'appMenu': AppMenuButton,
+ 'quickSettings': QuickSettings,
+Index: gnome-shell-45.0/js/ui/sessionMode.js
+===================================================================
+--- gnome-shell-45.0.orig/js/ui/sessionMode.js
++++ gnome-shell-45.0/js/ui/sessionMode.js
+@@ -60,7 +60,7 @@ const _modes = {
+ ? ['networkAgent', 'polkitAgent']
+ : ['polkitAgent'],
+ panel: {
+- left: [],
++ left: ['aboutMenu'],
+ center: ['dateMenu'],
+ right: ['dwellClick', 'a11y', 'keyboard', 'quickSettings'],
+ },
+Index: gnome-shell-45.0/js/ui/aboutMenu.js
+===================================================================
--- /dev/null
-+++ b/js/ui/aboutMenu.js
-@@ -0,0 +1,150 @@
++++ gnome-shell-45.0/js/ui/aboutMenu.js
+@@ -0,0 +1,145 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
-+const GLib = imports.gi.GLib;
-+const Gio = imports.gi.Gio;
-+const Lang = imports.lang;
-+const Clutter = imports.gi.Clutter;
-+const St = imports.gi.St;
-+const DBus = imports.gi.DBus;
++import GLib from 'gi://GLib';
++import Gio from 'gi://Gio';
++import Clutter from 'gi://Clutter';
++import St from 'gi://St';
++import GObject from 'gi://GObject';
+
-+const PanelMenu = imports.ui.panelMenu;
++import * as PanelMenu from './panelMenu.js';
+
-+const AboutMenuButton = new Lang.Class({
-+ Name: 'AboutMenuButton',
-+ Extends: PanelMenu.Button,
++export const AboutMenuButton = GObject.registerClass(
++class AboutMenuButton extends PanelMenu.Button {
+ _init() {
++ super._init(0.5);
++
+ this._hostname = null;
+ this._updateHostnameId = 0;
+ this._ticket = 1;
+
+ let hbox;
+ let vbox;
-+ let menuAlignment = 0.25;
-+
-+ if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
-+ menuAlignment = 1.0 - menuAlignment;
-+ this.parent(menuAlignment, 'About Me');
+
+ this.about_hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
+ this.hostname_label = new St.Label({y_align: Clutter.ActorAlign.CENTER});
@@ -85,16 +112,16 @@ index 0000000..7add645
+
+ this._updateHostnameId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
+ this._ticket,
-+ Lang.bind(this, function() {
++ ()=> {
+ if (this._ticket < 60*60)
+ this._ticket *= 2;
+ this._updateHostnameId = 0;
+ this._updateHostname();
-+ return false;
-+ }));
++ return GLib.SOURCE_REMOVE;
++ });
+
+ return;
-+ },
++ }
+
+ _updateHostname(){
+ let hostname_text = get_hostname();
@@ -107,14 +134,14 @@ index 0000000..7add645
+ }
+ this._updateHostnameId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT,
+ this._ticket,
-+ Lang.bind(this, function() {
++ ()=> {
+ if (this._ticket < 60*60)
+ this._ticket *= 2;
+ this._updateHostnameId = 0;
+ this._updateHostname();
-+ return false;
-+ }));
-+ },
++ return GLib.SOURCE_REMOVE;
++ });
++ }
+
+ _destroy() {
+ this._ticket = 1;
@@ -122,7 +149,7 @@ index 0000000..7add645
+ GLib.source_remove (this._updateHostnameId);
+ this._updateHostnameId = 0;
+ }
-+ },
++ }
+
+});
+
@@ -136,7 +163,7 @@ index 0000000..7add645
+ object_path: '/org/freedesktop/hostname1',
+ interface_name: 'org.freedesktop.DBus.Properties',
+ method_name: 'Get',
-+ parameters: GLib.Variant.new_tuple(interface_name, 2),
++ parameters: GLib.Variant.new_tuple(interface_name),
+ reply_type: null,
+ flags: Gio.DBusCallFlags.NONE,
+ timeout_msec: -1,
@@ -144,7 +171,7 @@ index 0000000..7add645
+ };
+
+ try {
-+ let dbusConnection = Gio.bus_get_sync(DBus.BusType.SYSTEM, null);
++ let dbusConnection = Gio.bus_get_sync(Gio.BusType.SYSTEM, null);
+
+ let message = dbusConnection.call_sync(
+ call.bus_name,
@@ -166,28 +193,3 @@ index 0000000..7add645
+
+ return hostname;
+}
-diff --git a/js/ui/panel.js b/js/ui/panel.js
-index cba3241..f5dfc2b 100644
---- a/js/ui/panel.js
-+++ b/js/ui/panel.js
-@@ -722,6 +722,7 @@ class AggregateMenu extends PanelMenu.Button {
- });
-
- const PANEL_ITEM_IMPLEMENTATIONS = {
-+ 'aboutMenu': imports.ui.aboutMenu.AboutMenuButton,
- 'activities': ActivitiesButton,
- 'aggregateMenu': AggregateMenu,
- 'appMenu': AppMenuButton,
-diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js
-index 2136e94..6d5e7c8 100644
---- a/js/ui/sessionMode.js
-+++ b/js/ui/sessionMode.js
-@@ -34,7 +34,7 @@ const _modes = {
- unlockDialog: null,
- components: [],
- panel: {
-- left: [],
-+ left: ['aboutMenu'],
- center: [],
- right: [],
- },
diff --git a/gnome-shell-jsc#SLE-16051-Input-method-recommendation.patch b/gnome-shell-jsc#SLE-16051-Input-method-recommendation.patch
index 66908bf..0c18925 100644
--- a/gnome-shell-jsc#SLE-16051-Input-method-recommendation.patch
+++ b/gnome-shell-jsc#SLE-16051-Input-method-recommendation.patch
@@ -1,10 +1,11 @@
-diff -Nura gnome-shell-40.0/js/ui/status/keyboard.js gnome-shell-40.0_new/js/ui/status/keyboard.js
---- gnome-shell-40.0/js/ui/status/keyboard.js 2021-03-20 20:17:01.436522500 +0800
-+++ gnome-shell-40.0_new/js/ui/status/keyboard.js 2021-03-30 20:02:18.835931202 +0800
-@@ -264,6 +264,39 @@
- this._settings.connect('changed::%s'.format(this._KEY_INPUT_SOURCES), this._emitInputSourcesChanged.bind(this));
- this._settings.connect('changed::%s'.format(this._KEY_KEYBOARD_OPTIONS), this._emitKeyboardOptionsChanged.bind(this));
- this._settings.connect('changed::%s'.format(this._KEY_PER_WINDOW), this._emitPerWindowChanged.bind(this));
+Index: gnome-shell-45.0/js/ui/status/keyboard.js
+===================================================================
+--- gnome-shell-45.0.orig/js/ui/status/keyboard.js
++++ gnome-shell-45.0/js/ui/status/keyboard.js
+@@ -274,6 +274,39 @@ class InputSourceSessionSettings extends
+ this._settings.connect(`changed::${this._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_PER_WINDOW}`, this._emitPerWindowChanged.bind(this));
+
+ let sources = this._settings.get_value(this._KEY_INPUT_SOURCES);
+ let nSources = sources.n_children();
diff --git a/gnome-shell-jscSLE9267-Remove-sessionList-of-endSessionDialog.patch b/gnome-shell-jscSLE9267-Remove-sessionList-of-endSessionDialog.patch
index 05e52a1..44bb6c9 100644
--- a/gnome-shell-jscSLE9267-Remove-sessionList-of-endSessionDialog.patch
+++ b/gnome-shell-jscSLE9267-Remove-sessionList-of-endSessionDialog.patch
@@ -1,8 +1,8 @@
-Index: gnome-shell-44.beta/js/ui/endSessionDialog.js
+Index: gnome-shell-45.0/js/ui/endSessionDialog.js
===================================================================
---- gnome-shell-44.beta.orig/js/ui/endSessionDialog.js
-+++ gnome-shell-44.beta/js/ui/endSessionDialog.js
-@@ -296,7 +296,7 @@ class EndSessionDialog extends ModalDial
+--- gnome-shell-45.0.orig/js/ui/endSessionDialog.js
++++ gnome-shell-45.0/js/ui/endSessionDialog.js
+@@ -300,7 +300,7 @@ class EndSessionDialog extends ModalDial
this.contentLayout.add_child(this._applicationSection);
this._sessionSection = new Dialog.ListSection({
@@ -11,14 +11,14 @@ Index: gnome-shell-44.beta/js/ui/endSessionDialog.js
});
this.contentLayout.add_child(this._sessionSection);
-@@ -758,8 +758,8 @@ class EndSessionDialog extends ModalDial
+@@ -753,8 +753,8 @@ class EndSessionDialog extends ModalDial
this._applications.push(inhibitor);
}
- if (dialogContent.showOtherSessions)
-- this._loadSessions();
-+ // if (dialogContent.showOtherSessions) // Hide _sessionList for jsc#SLE-9267
-+ // this._loadSessions();
+- this._loadSessions().catch(logError);
++ //if (dialogContent.showOtherSessions)
++ //this._loadSessions().catch(logError);
let updatesAllowed = this._updatesPermission && this._updatesPermission.allowed;
diff --git a/gnome-shell-screen-disappear.patch b/gnome-shell-screen-disappear.patch
index d7537dc..9d80bb1 100644
--- a/gnome-shell-screen-disappear.patch
+++ b/gnome-shell-screen-disappear.patch
@@ -1,12 +1,12 @@
-diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js
-index d2c9a16..7a4a0d3 100644
---- a/js/gdm/authPrompt.js
-+++ b/js/gdm/authPrompt.js
-@@ -500,8 +500,10 @@ var AuthPrompt = GObject.registerClass({
+Index: gnome-shell-45.0/js/gdm/authPrompt.js
+===================================================================
+--- gnome-shell-45.0.orig/js/gdm/authPrompt.js
++++ gnome-shell-45.0/js/gdm/authPrompt.js
+@@ -627,8 +627,10 @@ export const AuthPrompt = GObject.regist
this._updateEntry(true);
this.stopSpinning();
-- if (oldStatus == AuthPromptStatus.VERIFICATION_FAILED)
+- if (oldStatus === AuthPromptStatus.VERIFICATION_FAILED)
+ if (oldStatus == AuthPromptStatus.VERIFICATION_FAILED) {
+ this._userVerifier.cancel();
this.emit('failed');
diff --git a/gnome-shell.changes b/gnome-shell.changes
index 2946ef7..cee32fe 100644
--- a/gnome-shell.changes
+++ b/gnome-shell.changes
@@ -1,3 +1,18 @@
+-------------------------------------------------------------------
+Fri Oct 20 00:40:13 UTC 2023 - Xiaoguang Wang
+
+- Rebase patches for SLE-15-SP6 (bsc#1216072):
+ + Rebase endSession-dialog-update-time-label-every-sec.patch
+ + Rebase gnome-shell-disable-ibus-when-not-installed.patch
+ + Rebase gnome-shell-domain.patch
+ + Rebase gnome-shell-exit-crash-workaround.patch
+ + Rebase gnome-shell-fate324570-Make-GDM-background-image-configurable.patch
+ + Rebase gnome-shell-gdm-login-applet.patch
+ + Rebase gnome-shell-jsc#SLE-16051-Input-method-recommendation.patch
+ + Rebase gnome-shell-jscSLE9267-Remove-sessionList-of-endSessionDialog.patch
+ + Rebase gnome-shell-screen-disappear.patch
+ + Remove aboutMenu.js
+
-------------------------------------------------------------------
Thu Oct 12 03:16:50 UTC 2023 - Yifan Jiang
diff --git a/gnome-shell.spec b/gnome-shell.spec
index e9c0112..2d4927f 100644
--- a/gnome-shell.spec
+++ b/gnome-shell.spec
@@ -32,16 +32,14 @@ URL: https://wiki.gnome.org/Projects/GnomeShell
#Source0: https://download.gnome.org/sources/gnome-shell/41/%%{name}-%%{version}.tar.xz
Source0: %{name}-%{version}.tar.zst
-# SOURCE-FEATURE-SLE aboutMenu fate#314545 dliang@suse.com -- Add an applet on login UI to display suse icon, product name, hostname.
-Source1: aboutMenu.js
# SOURCE-FEATURE-OPENSUSE noise-texture boo#1176418 qkzhu@suse.com -- Add noise-texture as the default greeter background, used by patch4.
-Source2: noise-texture.png
+Source1: noise-texture.png
# PATCH-FIX-UPSTREAM gnome-shell-private-connection.patch bnc#751211 bgo#646187 dimstar@opensuse.org -- create private connections if the user is not authorized
Patch1: gnome-shell-private-connection.patch
# PATCH-FIX-OPENSUSE gnome-shell-executable-path-not-absolute.patch bsc#1176051 xwang@suse.com -- Fix ExecStart is not absolute path
Patch7: gnome-shell-executable-path-not-absolute.patch
-# PATCH-NEEDS-REBASE gnome-shell-exit-crash-workaround.patch bsc#1190878 glgo#GNOME/gnome-shell#4344 qkzhu@suse.com -- Workaround logout crashing WAS: PATCH-FIX-UPSTREAM
+# PATCH-FIX-UPSTREAM gnome-shell-exit-crash-workaround.patch bsc#1190878 glgo#GNOME/gnome-shell#4344 qkzhu@suse.com -- Workaround logout crashing
Patch8: gnome-shell-exit-crash-workaround.patch
## NOTE: Keep SLE-only patches at bottom (starting on 1000).
@@ -186,7 +184,7 @@ This package contains an optional extensions app for managing GNOME Shell extens
%setup -q
%patch1 -p1
%patch7 -p1
-#patch8 -p1
+%patch8 -p1
%if 0%{?sle_version}
%patch1001 -p1
@@ -204,10 +202,7 @@ This package contains an optional extensions app for managing GNOME Shell extens
%patch1013 -p1
%endif
-cp %{SOURCE2} data/theme/
-%if 0%{?sle_version}
-cp %{SOURCE1} js/ui/
-%endif
+cp %{SOURCE1} data/theme/
%build
%meson \