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 \