File gnome-shell-gdm-login-applet.patch of Package gnome-shell.160
---
js/ui/aboutMenu.js | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++
js/ui/panel.js | 1
js/ui/sessionMode.js | 2 -
3 files changed, 74 insertions(+), 1 deletion(-)
Index: gnome-shell-3.10.3/js/ui/aboutMenu.js
===================================================================
--- /dev/null
+++ gnome-shell-3.10.3/js/ui/aboutMenu.js
@@ -0,0 +1,72 @@
+// -*- 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 PanelMenu = imports.ui.panelMenu;
+
+const AboutMenuButton = new Lang.Class({
+ Name: 'AboutMenuButton',
+ Extends: PanelMenu.Button,
+ _init: function() {
+ 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.about_hbox.add_child(new St.Icon({ style_class: 'system-status-icon',
+ icon_name: 'suse',
+ icon_size: 24,
+ y_align: Clutter.ActorAlign.CENTER
+ }));
+
+ let command = 'hostname';
+ let hostname_text;
+ try {
+ let [res, stdout, stderr, status] = GLib.spawn_command_line_sync(command);
+ hostname_text = String.fromCharCode.apply(null, stdout);
+ } catch (e) {
+ hostname_text = 'Welcome';
+ }
+ this.about_hbox.add_child(new St.Label({ text: hostname_text,
+ y_align: Clutter.ActorAlign.CENTER
+ }));
+
+ 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);
+
+ this._os_release = Gio.File.new_for_path('/etc/os-release');
+ let success, contents, tag;
+ try {
+ [success, contents, tag] = this._os_release.load_contents(null);
+ } catch (e) {
+ this._sysinfo = new St.Label({ text: 'SUSE Linux Enterprise',
+ can_focus: true });
+ vbox.add(this._sysinfo);
+ return;
+ }
+ let match = new RegExp('(.+)PRETTY_NAME=(.+)ID(.+)').exec(contents.toString().replace(/\n/g, ' '));
+ let sysinfo_text;
+ if (!match) {
+ sysinfo_text = 'SUSE Linux Enterprise';
+ } else {
+ sysinfo_text = match[2].toString().replace(/"/g, ' ');
+ }
+
+ this._sysinfo = new St.Label({ text: sysinfo_text,
+ can_focus: true });
+ vbox.add(this._sysinfo);
+ return;
+ },
+});
Index: gnome-shell-3.10.3/js/ui/panel.js
===================================================================
--- gnome-shell-3.10.3.orig/js/ui/panel.js
+++ gnome-shell-3.10.3/js/ui/panel.js
@@ -848,6 +848,7 @@ const AggregateMenu = new Lang.Class({
});
const PANEL_ITEM_IMPLEMENTATIONS = {
+ 'aboutMenu': imports.ui.aboutMenu.AboutMenuButton,
'activities': ActivitiesButton,
'aggregateMenu': AggregateMenu,
'appMenu': AppMenuButton,
Index: gnome-shell-3.10.3/js/ui/sessionMode.js
===================================================================
--- gnome-shell-3.10.3.orig/js/ui/sessionMode.js
+++ gnome-shell-3.10.3/js/ui/sessionMode.js
@@ -47,7 +47,7 @@ const _modes = {
unlockDialog: imports.gdm.loginDialog.LoginDialog,
components: ['polkitAgent'],
panel: {
- left: [],
+ left: ['aboutMenu'],
center: ['dateMenu'],
right: ['a11yGreeter', 'keyboard', 'aggregateMenu'],
},
Index: gnome-shell-3.10.3/js/Makefile.am
===================================================================
--- gnome-shell-3.10.3.orig/js/Makefile.am
+++ gnome-shell-3.10.3/js/Makefile.am
@@ -39,6 +39,7 @@ nobase_dist_js_DATA = \
misc/smartcardManager.js \
misc/util.js \
perf/core.js \
+ ui/aboutMenu.js \
ui/altTab.js \
ui/animation.js \
ui/appDisplay.js \