summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Rostovtsev <tetromino@gentoo.org>2011-11-06 01:42:59 +0000
committerAlexandre Rostovtsev <tetromino@gentoo.org>2011-11-06 01:42:59 +0000
commite2d339c6934c6f19cfc038b42ba68f6f21c47938 (patch)
treeebe614f67b7fc4898c5f2edddfbf013888273ae9 /gnome-extra
parentAdd eselect module for setting systemwide gnome shell extensions defaults fro... (diff)
downloadhistorical-e2d339c6934c6f19cfc038b42ba68f6f21c47938.tar.gz
historical-e2d339c6934c6f19cfc038b42ba68f6f21c47938.tar.bz2
historical-e2d339c6934c6f19cfc038b42ba68f6f21c47938.zip
Add extensions for gnome-base/gnome-shell from the gnome overlay.
Package-Manager: portage-2.2.0_alpha72/cvs/Linux x86_64
Diffstat (limited to 'gnome-extra')
-rw-r--r--gnome-extra/gnome-shell-extensions/ChangeLog16
-rw-r--r--gnome-extra/gnome-shell-extensions/Manifest19
-rw-r--r--gnome-extra/gnome-shell-extensions/files/gnome-shell-extensions-3.2.0-dock-gnome-3.2.patch43
-rw-r--r--gnome-extra/gnome-shell-extensions/files/gnome-shell-extensions-3.2.0-dock-popup-menus.patch33
-rw-r--r--gnome-extra/gnome-shell-extensions/files/gnome-shell-extensions-3.2.0-gnome-3.2.1.patch29
-rw-r--r--gnome-extra/gnome-shell-extensions/files/gnome-shell-extensions-3.2.0-systemMonitor-CSS.patch316
-rw-r--r--gnome-extra/gnome-shell-extensions/files/gnome-shell-extensions-3.2.0-systemMonitor-enable-disable.patch46
-rw-r--r--gnome-extra/gnome-shell-extensions/gnome-shell-extensions-3.2.0-r2.ebuild89
-rw-r--r--gnome-extra/gnome-shell-extensions/metadata.xml5
9 files changed, 596 insertions, 0 deletions
diff --git a/gnome-extra/gnome-shell-extensions/ChangeLog b/gnome-extra/gnome-shell-extensions/ChangeLog
new file mode 100644
index 000000000000..655392e4dceb
--- /dev/null
+++ b/gnome-extra/gnome-shell-extensions/ChangeLog
@@ -0,0 +1,16 @@
+# ChangeLog for gnome-extra/gnome-shell-extensions
+# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-extra/gnome-shell-extensions/ChangeLog,v 1.1 2011/11/06 01:42:59 tetromino Exp $
+
+*gnome-shell-extensions-3.2.0-r2 (06 Nov 2011)
+
+ 06 Nov 2011; Alexandre Rostovtsev <tetromino@gentoo.org>
+ +gnome-shell-extensions-3.2.0-r2.ebuild,
+ +files/gnome-shell-extensions-3.2.0-dock-gnome-3.2.patch,
+ +files/gnome-shell-extensions-3.2.0-dock-popup-menus.patch,
+ +files/gnome-shell-extensions-3.2.0-gnome-3.2.1.patch,
+ +files/gnome-shell-extensions-3.2.0-systemMonitor-CSS.patch,
+ +files/gnome-shell-extensions-3.2.0-systemMonitor-enable-disable.patch,
+ +metadata.xml:
+ Add extensions for gnome-base/gnome-shell from the gnome overlay.
+
diff --git a/gnome-extra/gnome-shell-extensions/Manifest b/gnome-extra/gnome-shell-extensions/Manifest
new file mode 100644
index 000000000000..7621ac27215b
--- /dev/null
+++ b/gnome-extra/gnome-shell-extensions/Manifest
@@ -0,0 +1,19 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA256
+
+AUX gnome-shell-extensions-3.2.0-dock-gnome-3.2.patch 1314 RMD160 3cce30f237aa1693a11a2504876fa70091520f1d SHA1 0f5eb14a6b6e8eb396d1b92e2b1bdaec6744989a SHA256 56fee61a739ce7e3f6531c01ae2aca56ee29eca889778de3feff1a74374a714a
+AUX gnome-shell-extensions-3.2.0-dock-popup-menus.patch 1383 RMD160 37b8f574ca908c69fa09719a2850e53b74a8dd7f SHA1 f78742c180eb53818430ad12bc6d5dc5cdb29676 SHA256 9f6d5e8bd0c3127065267a26392af828261cc6c8b6be65ee171fa2b6b1e9e233
+AUX gnome-shell-extensions-3.2.0-gnome-3.2.1.patch 1185 RMD160 d259ea2cf8745dbf839107f3b3837f2fb870ae2d SHA1 ff5f3d4da7ecf8785f687dec03bf31d376afab6c SHA256 f942f3392a83813e0ac234e29d59754dde6e4cf472f21fc759e3846b7f212e4f
+AUX gnome-shell-extensions-3.2.0-systemMonitor-CSS.patch 11707 RMD160 e5b73f585b271b0c5ff3a8c783aeed899844ee2b SHA1 9978de03f2e7d42c02bd22fddc0e8d2fd7bbb96f SHA256 22d28d73fb3469b7738270f5d16a57cb00ad2f93611ea12a0f4c949f1f8e878e
+AUX gnome-shell-extensions-3.2.0-systemMonitor-enable-disable.patch 1422 RMD160 307d8b62a5255e541670702557e9bf2c0d7b05d5 SHA1 8d79a5cb2e5a229c6653799dbe0bf7d46211e693 SHA256 76ac6bfcfa31d814b6d6efe103602d83d74d0ab9341db59afd373a103ad60957
+DIST gnome-shell-extensions-3.2.0.tar.xz 123724 RMD160 ab32152b0425c95a22e85e5b571ba76ed97968f9 SHA1 3db7b57b1d77e240701cf7dfd0e021dec2c0698b SHA256 dfbd5b7baed71219c6855c1b15c323b6e66a2163af8f9a1c2431d6ce90784f98
+EBUILD gnome-shell-extensions-3.2.0-r2.ebuild 2619 RMD160 0408a393bad7370b9f3734a85af646daed04b1bf SHA1 652645033df743995402e7e980065ed48423bcb3 SHA256 0da09946b727c247e6894f3e1be8b1a5fc189a255ffc0207533697c03a70171f
+MISC ChangeLog 796 RMD160 e3cedd06b18968e94278b95c5269246f339f1b03 SHA1 178b31c471f0556a9156fcd0ab2af8002b5297ef SHA256 27c9c742ec5fcf5d728fe79902a51f4dbe984eb8ba12f255c6d810f4e81513e4
+MISC metadata.xml 158 RMD160 c0e2bae8e91bb6be8922bac5e4f597302e06587e SHA1 38f78e9790bcd4382b4a49aa226aa6dda1d3a3d7 SHA256 3a7dbca0fdc557de69783e0663e2d76ddab129ea8a19b2d0ef6d3e5d1b947ce1
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2.0.18 (GNU/Linux)
+
+iF4EAREIAAYFAk615igACgkQdjK8w9WeBnDIWwD/YmY1gah047wvV5jGIX7FwxNE
+YGnNuI912Sl+4ysxnJAA+gOjDdOnULRHUYAu4T88Q6KfTEzp30NNLM1zRsPack+G
+=wOE5
+-----END PGP SIGNATURE-----
diff --git a/gnome-extra/gnome-shell-extensions/files/gnome-shell-extensions-3.2.0-dock-gnome-3.2.patch b/gnome-extra/gnome-shell-extensions/files/gnome-shell-extensions-3.2.0-dock-gnome-3.2.patch
new file mode 100644
index 000000000000..776c73700dc8
--- /dev/null
+++ b/gnome-extra/gnome-shell-extensions/files/gnome-shell-extensions-3.2.0-dock-gnome-3.2.patch
@@ -0,0 +1,43 @@
+From 66242aa76a5d59fb4659551575c1fbb42e50b8fb Mon Sep 17 00:00:00 2001
+From: Giovanni Campagna <gcampagna@src.gnome.org>
+Date: Tue, 18 Oct 2011 10:19:50 +0200
+Subject: [PATCH 1/2] Make dock extension actually work with gnome-3.2
+
+Without this patch dock is invisible, but reacts on mouse clicks
+
+Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
+---
+ extensions/dock/extension.js | 5 +++--
+ 1 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/extensions/dock/extension.js b/extensions/dock/extension.js
+index 240f8a8..02c9650 100644
+--- a/extensions/dock/extension.js
++++ b/extensions/dock/extension.js
+@@ -304,7 +304,6 @@ Dock.prototype = {
+ this.actor.show();
+ }));
+ Main.layoutManager.addChrome(this.actor);
+- this.actor.lower_bottom();
+
+ //hidden
+ this._settings.connect('changed::'+DOCK_POSITION_KEY, Lang.bind(this, function (){
+@@ -372,6 +371,8 @@ Dock.prototype = {
+
+ this.actor.connect('leave-event', Lang.bind(this, this._hideDock));
+ this.actor.connect('enter-event', Lang.bind(this, this._showDock));
++
++ this._hideDock();
+ },
+
+ destroy: function() {
+@@ -861,4 +862,4 @@ function enable() {
+ function disable() {
+ dock.destroy();
+ dock = null;
+-}
+\ No newline at end of file
++}
+--
+1.7.7.2
+
diff --git a/gnome-extra/gnome-shell-extensions/files/gnome-shell-extensions-3.2.0-dock-popup-menus.patch b/gnome-extra/gnome-shell-extensions/files/gnome-shell-extensions-3.2.0-dock-popup-menus.patch
new file mode 100644
index 000000000000..e2cc380f3779
--- /dev/null
+++ b/gnome-extra/gnome-shell-extensions/files/gnome-shell-extensions-3.2.0-dock-popup-menus.patch
@@ -0,0 +1,33 @@
+From 967aee7aad2accfb38d91ab56b6c5e91d86a2722 Mon Sep 17 00:00:00 2001
+From: Stefan 'psYchotic' Zwanenburg <stefanhetzwaantje@gmail.com>
+Date: Wed, 12 Oct 2011 01:16:18 +0000
+Subject: dock: Fix popup menus
+
+The dock popup menus weren't working because a signal had been renamed
+('popup' -> 'open-state-changed').
+
+https://bugzilla.gnome.org/show_bug.cgi?id=661484
+---
+diff --git a/extensions/dock/extension.js b/extensions/dock/extension.js
+index 47cd76f..240f8a8 100644
+--- a/extensions/dock/extension.js
++++ b/extensions/dock/extension.js
+@@ -682,7 +682,7 @@ DockIcon.prototype = {
+ this._menu.connect('activate-window', Lang.bind(this, function (menu, window) {
+ this.activateWindow(window);
+ }));
+- this._menu.connect('popup', Lang.bind(this, function (menu, isPoppedUp) {
++ this._menu.connect('open-state-changed', Lang.bind(this, function (menu, isPoppedUp) {
+ if (!isPoppedUp){
+ //Restore value of autohidedock
+ this._dock._restoreHideDock();
+@@ -776,7 +776,6 @@ DockIconMenu.prototype = {
+ this._source = source;
+
+ this.connect('activate', Lang.bind(this, this._onActivate));
+- this.connect('open-state-changed', Lang.bind(this, this._onOpenStateChanged));
+
+ this.actor.add_style_class_name('dock-menu');
+
+--
+cgit v0.9.0.2
diff --git a/gnome-extra/gnome-shell-extensions/files/gnome-shell-extensions-3.2.0-gnome-3.2.1.patch b/gnome-extra/gnome-shell-extensions/files/gnome-shell-extensions-3.2.0-gnome-3.2.1.patch
new file mode 100644
index 000000000000..3d7b408157df
--- /dev/null
+++ b/gnome-extra/gnome-shell-extensions/files/gnome-shell-extensions-3.2.0-gnome-3.2.1.patch
@@ -0,0 +1,29 @@
+Ensure that extensions are marked as compatible with gnome-shell-3.2
+(meaning 3.2.*), not just 3.2.0.
+
+diff --git a/extensions/alternate-tab/metadata.json.in b/extensions/alternate-tab/metadata.json.in
+index d811b54..8aa86e3 100644
+--- a/extensions/alternate-tab/metadata.json.in
++++ b/extensions/alternate-tab/metadata.json.in
+@@ -3,7 +3,7 @@
+ "name": "AlternateTab",
+ "description": "A replacement for Alt-Tab, allows to cycle between windows and does not group by application",
+ "original-authors": [ "jw@bargsten.org", "thomas.bouffon@gmail.com" ],
+-"shell-version": [ "@shell_current@" ],
++"shell-version": [ "@shell_current@", "3.2" ],
+ "localedir": "@LOCALEDIR@",
+ "url": "@url@"
+ }
+diff --git a/extensions/dock/metadata.json.in b/extensions/dock/metadata.json.in
+index dce4a88..96237b4 100644
+--- a/extensions/dock/metadata.json.in
++++ b/extensions/dock/metadata.json.in
+@@ -3,7 +3,7 @@
+ "name": "Dock",
+ "description": "A dock for the GNOME Shell -- displays favorite and running applications",
+ "original-author": "tclaesson@gmail.com",
+-"shell-version": [ "@shell_current@" ],
++"shell-version": [ "@shell_current@", "3.2" ],
+ "localedir": "@LOCALEDIR@",
+ "url": "@url@"
+ }
diff --git a/gnome-extra/gnome-shell-extensions/files/gnome-shell-extensions-3.2.0-systemMonitor-CSS.patch b/gnome-extra/gnome-shell-extensions/files/gnome-shell-extensions-3.2.0-systemMonitor-CSS.patch
new file mode 100644
index 000000000000..dd8822d7b1d8
--- /dev/null
+++ b/gnome-extra/gnome-shell-extensions/files/gnome-shell-extensions-3.2.0-systemMonitor-CSS.patch
@@ -0,0 +1,316 @@
+From 4c5a36e4c0cbe38f2e26b6b3c8b02e88b4b939f7 Mon Sep 17 00:00:00 2001
+From: Jason Siefken <siefkenj@gmail.com>
+Date: Tue, 11 Oct 2011 02:15:05 -0700
+Subject: Added prettier drawing operations and css colors
+
+https://bugzilla.gnome.org/show_bug.cgi?id=661443
+---
+ extensions/systemMonitor/extension.js | 186 ++++++++++++++++++++++--------
+ extensions/systemMonitor/stylesheet.css | 25 +++--
+ 2 files changed, 152 insertions(+), 59 deletions(-)
+
+diff --git a/extensions/systemMonitor/extension.js b/extensions/systemMonitor/extension.js
+index db7fe59..39801ab 100644
+--- a/extensions/systemMonitor/extension.js
++++ b/extensions/systemMonitor/extension.js
+@@ -9,6 +9,9 @@ const Shell = imports.gi.Shell;
+
+ const Main = imports.ui.main;
+
++const INDICATOR_UPDATE_INTERVAL = 500;
++const INDICATOR_NUM_GRID_LINES = 3;
++
+ let _cpuIndicator;
+ let _memIndicator;
+ let _box;
+@@ -19,29 +22,24 @@ function Indicator() {
+
+ Indicator.prototype = {
+ _init: function() {
+- this._initValues();
+- this.actor = new St.DrawingArea({ style_class: "extension-systemMonitor-indicator-area",
+- reactive: true});
+- this.actor.connect('repaint', Lang.bind(this, this._draw));
+- this.actor.connect('button-press-event', function() {
++ this._initValues();
++ this.drawing_area = new St.DrawingArea({ reactive: true });
++ this.drawing_area.width = 100; this.drawing_area.height = 100;
++ this.drawing_area.connect('repaint', Lang.bind(this, this._draw));
++ this.drawing_area.connect('button-press-event', function() {
+ let app = Shell.AppSystem.get_default().lookup_app('gnome-system-monitor.desktop');
+ app.open_new_window(-1);
+ });
+
+- this._timeoutId = Mainloop.timeout_add(250, Lang.bind(this, function () {
+- this._updateValues();
+- this.actor.queue_repaint();
+- return true;
+- }));
+- },
++ this.actor = new St.Bin({ style_class: "extension-systemMonitor-indicator-area",
++ reactive: true});
++ this.actor.add_actor(this.drawing_area);
+
+- destroy: function() {
+- if (this._timeoutId) {
+- Mainloop.source_remove(this._timeoutId);
+- this._timeoutId = 0;
+- }
+-
+- this.actor.destroy();
++ Mainloop.timeout_add(INDICATOR_UPDATE_INTERVAL, Lang.bind(this, function () {
++ this._updateValues();
++ this.drawing_area.queue_repaint();
++ return true;
++ }));
+ },
+
+ _initValues: function() {
+@@ -54,23 +52,83 @@ Indicator.prototype = {
+ let [width, height] = area.get_surface_size();
+ let themeNode = this.actor.get_theme_node();
+ let cr = area.get_context();
+- for (let i = this.values.length - 1; i >= 0; i--) {
+- let color = themeNode.get_color(this.values[i].color);
+- cr.moveTo(0, height);
+- let k;
+- for (k = 0; k < this.values[i].values.length; k++) {
+- cr.lineTo(k, (1 - this.values[i].values[k]) * height);
++
++ //draw the background grid
++ let color = themeNode.get_color(this.gridColor);
++ let gridOffset = Math.floor(height / (INDICATOR_NUM_GRID_LINES + 1));
++ for (let i = 1; i <= INDICATOR_NUM_GRID_LINES; ++i) {
++ cr.moveTo(0, i * gridOffset + .5);
++ cr.lineTo(width, i * gridOffset + .5);
++ }
++ Clutter.cairo_set_source_color(cr, color);
++ cr.setLineWidth(1);
++ cr.setDash([4,1], 0);
++ cr.stroke();
++
++ //draw the foreground
++
++ function makePath(values, reverse, nudge) {
++ if (nudge == null) {
++ nudge = 0;
+ }
+- if (k > width)
+- this.values[i].values.shift();
+- cr.lineTo(k, height);
+- cr.lineTo(0, height);
+- cr.closePath();
+- Clutter.cairo_set_source_color(cr, color);
++ //if we are going in reverse, we are completing the bottom of a chart, so use lineTo
++ if (reverse) {
++ cr.lineTo(values.length - 1, (1 - values[values.length - 1]) * height + nudge);
++ for (let k = values.length - 2; k >= 0; --k) {
++ cr.lineTo(k, (1 - values[k]) * height + nudge);
++ }
++ } else {
++ cr.moveTo(0, (1 - values[0]) * height + nudge);
++ for (let k = 1; k < values.length; ++k) {
++ cr.lineTo(k, (1 - values[k]) * height + nudge);
++ }
+
+- cr.fill();
++ }
++ }
++
++ let renderStats = this.renderStats;
++
++ // Make sure we don't have more sample points than pixels
++ renderStats.map(Lang.bind(this, function(k){
++ let stat = this.stats[k];
++ if (stat.values.length > width) {
++ stat.values = stat.values.slice(stat.values.length - width, stat.values.length);
++ }
++ }));
++
++ for (let i = 0; i < renderStats.length; ++i) {
++ let stat = this.stats[renderStats[i]];
++ // We outline at full opacity and fill with 40% opacity
++ let outlineColor = themeNode.get_color(stat.color);
++ let color = new Clutter.Color(outlineColor);
++ color.alpha = color.alpha * .4;
++
++ // Render the background between us and the next level
++ makePath(stat.values, false);
++ // If there is a process below us, render the cpu between us and it, otherwise,
++ // render to the bottom of the chart
++ if (i == renderStats.length - 1) {
++ cr.lineTo(stat.values.length - 1, height);
++ cr.lineTo(0, height);
++ cr.closePath();
++ } else {
++ let nextStat = this.stats[renderStats[i+1]];
++ makePath(nextStat.values, true);
++ }
++ cr.closePath()
++ Clutter.cairo_set_source_color(cr, color);
++ cr.fill();
++
++ // Render the outline of this level
++ makePath(stat.values, false, .5);
++ Clutter.cairo_set_source_color(cr, outlineColor);
++ cr.setLineWidth(1.0);
++ cr.setDash([], 0);
++ cr.stroke();
+ }
++
+ }
++
+ };
+
+ function CpuIndicator() {
+@@ -80,14 +138,28 @@ function CpuIndicator() {
+ CpuIndicator.prototype = {
+ __proto__: Indicator.prototype,
+
++ _init: function() {
++ Indicator.prototype._init.call(this);
++ this.gridColor = '-grid-color';
++ this.renderStats = [ 'cpu-user', 'cpu-sys', 'cpu-iowait' ];
++
++ // Make sure renderStats is sorted as necessary for rendering
++ let renderStatOrder = {'cpu-total': 0, 'cpu-user': 1, 'cpu-sys': 2, 'cpu-iowait': 3};
++ this.renderStats = this.renderStats.sort(function(a,b) {
++ return renderStatOrder[a] - renderStatOrder[b];
++ });
++ },
++
+ _initValues: function() {
+ this._prev = new GTop.glibtop_cpu;
+ GTop.glibtop_get_cpu(this._prev);
+
+- this.values = [];
+- this.values.push({color: "-cpu-user-color", values: []});
+- this.values.push({color: "-cpu-sys-color", values: []});
+- this.values.push({color: "-cpu-iowait-color", values: []});
++ this.stats = {
++ 'cpu-user': {color: '-cpu-user-color', values: []},
++ 'cpu-sys': {color: '-cpu-sys-color', values: []},
++ 'cpu-iowait': {color: '-cpu-iowait-color', values: []},
++ 'cpu-total': {color: '-cpu-total-color', values: []}
++ };
+ },
+
+ _updateValues: function() {
+@@ -98,15 +170,16 @@ CpuIndicator.prototype = {
+ let user = cpu.user - this._prev.user;
+ let sys = cpu.sys - this._prev.sys;
+ let iowait = cpu.iowait - this._prev.iowait;
++ let idle = cpu.idle - this._prev.idle;
+
+- t = user / total;
+- this.values[0].values.push(t);
+-
+- t += sys / total;
+- this.values[1].values.push(t);
+ t += iowait / total;
+- this.values[2].values.push(t);
+-
++ this.stats['cpu-iowait'].values.push(t);
++ t += sys / total;
++ this.stats['cpu-sys'].values.push(t);
++ t += user / total;
++ this.stats['cpu-user'].values.push(t);
++ this.stats['cpu-total'].values.push(1 - idle / total);
++
+ this._prev = cpu;
+ }
+ };
+@@ -117,24 +190,37 @@ function MemoryIndicator() {
+
+ MemoryIndicator.prototype = {
+ __proto__: Indicator.prototype,
++
++ _init: function() {
++ Indicator.prototype._init.call(this);
++ this.gridColor = '-grid-color';
++ this.renderStats = [ 'mem-user', 'mem-other', 'mem-cached' ];
++
++ // Make sure renderStats is sorted as necessary for rendering
++ let renderStatOrder = { 'mem-cached': 0, 'mem-other': 1, 'mem-user': 2 };
++ this.renderStats = this.renderStats.sort(function(a,b) {
++ return renderStatOrder[a] - renderStatOrder[b];
++ });
++ },
+
+ _initValues: function() {
+ this.mem = new GTop.glibtop_mem;
+- this.values = [];
+- this.values.push({ color: "-mem-user-color", values: [] });
+- this.values.push({ color: "-mem-other-color", values: [] });
+- this.values.push({ color: "-mem-cached-color", values: [] });
++ this.stats = {
++ 'mem-user': { color: "-mem-user-color", values: [] },
++ 'mem-other': { color: "-mem-other-color", values: [] },
++ 'mem-cached': { color: "-mem-cached-color", values: [] }
++ };
+ },
+
+ _updateValues: function() {
+ GTop.glibtop_get_mem(this.mem);
+
+ let t = this.mem.user / this.mem.total;
+- this.values[0].values.push(t);
++ this.stats['mem-user'].values.push(t);
+ t += (this.mem.used - this.mem.user - this.mem.cached) / this.mem.total;
+- this.values[1].values.push(t);
++ this.stats['mem-other'].values.push(t);
+ t += this.mem.cached / this.mem.total;
+- this.values[2].values.push(t);
++ this.stats['mem-cached'].values.push(t);
+ }
+ };
+
+@@ -143,7 +229,7 @@ function init() {
+ }
+
+ function enable() {
+- _cpuIndicator = new CpuIndicator();
++ _cpuIndicator = new CpuIndicator();
+ _memIndicator = new MemoryIndicator();
+ _box = new St.BoxLayout({ style_class: 'extension-systemMonitor-container' });
+ _box.add(_cpuIndicator.actor);
+diff --git a/extensions/systemMonitor/stylesheet.css b/extensions/systemMonitor/stylesheet.css
+index 26aad6b..daad48d 100644
+--- a/extensions/systemMonitor/stylesheet.css
++++ b/extensions/systemMonitor/stylesheet.css
+@@ -1,16 +1,23 @@
+ .extension-systemMonitor-container {
+ spacing: 5px;
++ padding-left: 5px;
++ padding-right: 5px;
++ padding-bottom: 1px;
++ padding-top: 0px;
+ }
+
+ .extension-systemMonitor-indicator-area {
+- border: 1px solid #000;
++ border: 1px solid #8d8d8d;
++ border-radius: 3px;
+ width: 100px;
+- height: 34px;
+- -cpu-user-color: #f00;
+- -cpu-sys-color: #0f0;
+- -cpu-iowait-color: #00f;
+- -mem-user-color: #ff0;
+- -mem-cached-color: #0ff;
+- -mem-other-color: #111;
+- background-color: #fff;
++ height: 30px;
++ -grid-color: #575757;
++ -cpu-total-color: rgb(0,154,62);
++ -cpu-user-color: rgb(69,154,0);
++ -cpu-sys-color: rgb(255,253,81);
++ -cpu-iowait-color: rgb(210,148,0);
++ -mem-user-color: rgb(210,148,0);
++ -mem-cached-color: rgb(90,90,90);
++ -mem-other-color: rgb(205,203,41);
++ background-color: #1e1e1e;
+ }
+--
+1.7.7.2
+
diff --git a/gnome-extra/gnome-shell-extensions/files/gnome-shell-extensions-3.2.0-systemMonitor-enable-disable.patch b/gnome-extra/gnome-shell-extensions/files/gnome-shell-extensions-3.2.0-systemMonitor-enable-disable.patch
new file mode 100644
index 000000000000..2fd4229ad1fc
--- /dev/null
+++ b/gnome-extra/gnome-shell-extensions/files/gnome-shell-extensions-3.2.0-systemMonitor-enable-disable.patch
@@ -0,0 +1,46 @@
+From 2bba98d6214cffae2eb5cecb9d7c1f6b6d244052 Mon Sep 17 00:00:00 2001
+From: "Jasper St. Pierre" <jstpierre@mecheye.net>
+Date: Tue, 25 Oct 2011 14:21:01 -0400
+Subject: systemMonitor: Properly enable/disable
+
+https://bugzilla.gnome.org/show_bug.cgi?id=662705
+---
+ extensions/systemMonitor/extension.js | 9 ++++++++-
+ 1 files changed, 8 insertions(+), 1 deletions(-)
+
+diff --git a/extensions/systemMonitor/extension.js b/extensions/systemMonitor/extension.js
+index 39801ab..6aa117a 100644
+--- a/extensions/systemMonitor/extension.js
++++ b/extensions/systemMonitor/extension.js
+@@ -35,13 +35,18 @@ Indicator.prototype = {
+ reactive: true});
+ this.actor.add_actor(this.drawing_area);
+
+- Mainloop.timeout_add(INDICATOR_UPDATE_INTERVAL, Lang.bind(this, function () {
++ this._timeout = Mainloop.timeout_add(INDICATOR_UPDATE_INTERVAL, Lang.bind(this, function () {
+ this._updateValues();
+ this.drawing_area.queue_repaint();
+ return true;
+ }));
+ },
+
++ destroy: function() {
++ Mainloop.source_remove(this._timeout);
++ this.actor.destroy();
++ },
++
+ _initValues: function() {
+ },
+
+@@ -239,6 +244,8 @@ function enable() {
+
+ function disable() {
+ _cpuIndicator.destroy();
++ _cpuIndicator = null;
+ _memIndicator.destroy();
++ _memIndicator = null;
+ _box.destroy();
+ }
+--
+1.7.7.2
+
diff --git a/gnome-extra/gnome-shell-extensions/gnome-shell-extensions-3.2.0-r2.ebuild b/gnome-extra/gnome-shell-extensions/gnome-shell-extensions-3.2.0-r2.ebuild
new file mode 100644
index 000000000000..ae3848c51786
--- /dev/null
+++ b/gnome-extra/gnome-shell-extensions/gnome-shell-extensions-3.2.0-r2.ebuild
@@ -0,0 +1,89 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-extra/gnome-shell-extensions/gnome-shell-extensions-3.2.0-r2.ebuild,v 1.1 2011/11/06 01:42:59 tetromino Exp $
+
+EAPI="4"
+GCONF_DEBUG="no"
+GNOME2_LA_PUNT="yes"
+
+inherit gnome2
+
+DESCRIPTION="JavaScript extensions for GNOME Shell"
+HOMEPAGE="http://live.gnome.org/GnomeShell/Extensions"
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="examples"
+KEYWORDS="~amd64 ~x86"
+
+COMMON_DEPEND="
+ >=dev-libs/glib-2.26
+ >=gnome-base/gnome-desktop-2.91.6:3[introspection]
+ >=gnome-base/libgtop-2.28.3[introspection]
+ app-admin/eselect-gnome-shell-extensions"
+RDEPEND="${COMMON_DEPEND}
+ >=dev-libs/gjs-1.29
+ dev-libs/gobject-introspection
+ =gnome-base/gnome-shell-3.2*
+ media-libs/clutter:1.0[introspection]
+ net-libs/telepathy-glib[introspection]
+ x11-libs/gtk+:3[introspection]
+ x11-libs/pango[introspection]"
+DEPEND="${COMMON_DEPEND}
+ sys-devel/gettext
+ >=dev-util/pkgconfig-0.22
+ >=dev-util/intltool-0.26
+ gnome-base/gnome-common"
+
+pkg_setup() {
+ DOCS="NEWS README"
+ G2CONF="${G2CONF}
+ --enable-extensions=all
+ --disable-schemas-compile"
+}
+
+src_prepare() {
+ gnome2_src_prepare
+
+ # Useful patches from upstream, will be in the next release
+ epatch "${FILESDIR}/${P}-dock-popup-menus.patch"
+ epatch "${FILESDIR}/${P}-dock-gnome-3.2.patch"
+ epatch "${FILESDIR}/${P}-systemMonitor-CSS.patch"
+ epatch "${FILESDIR}/${P}-systemMonitor-enable-disable.patch"
+
+ # Extensions work with gnome-3.2*, not just 3.2.0
+ epatch "${FILESDIR}/${PN}-3.2.0-gnome-3.2.1.patch"
+
+ # xrandr-indicator crashes gnome-shell with <gjs-0.7.15;
+ # see gnome bug 649077. For simplicity, just disable it for gnome-3.0.
+ # sed -e 's:\(ALL_EXTENSIONS=.*\)xrandr-indicator:\1:' \
+ # -i configure || die
+}
+
+src_install() {
+ gnome2_src_install
+
+ local example="example@gnome-shell-extensions.gnome.org"
+ if use examples; then
+ mv "${ED}usr/share/gnome-shell/extensions/${example}" \
+ "${ED}usr/share/doc/${PF}/" || die
+ else
+ rm -r "${ED}usr/share/gnome-shell/extensions/${example}" || die
+ fi
+}
+
+pkg_postinst() {
+ gnome2_pkg_postinst
+
+ ebegin "Updating list of installed extensions"
+ eselect gnome-shell-extensions update
+ eend $?
+ elog
+ elog "Installed extensions installed are initially disabled by default."
+ elog "To change the system default and enable some extensions, you can use"
+ elog "# eselect gnome-shell-extensions"
+ elog "Alternatively, you can use the org.gnome.shell enabled-extensions"
+ elog "gsettings key to change the disabled extension list per-user, or"
+ elog "use the gnome-extra/gnome-tweak-tool GUI."
+ elog
+}
diff --git a/gnome-extra/gnome-shell-extensions/metadata.xml b/gnome-extra/gnome-shell-extensions/metadata.xml
new file mode 100644
index 000000000000..da6fd63d0085
--- /dev/null
+++ b/gnome-extra/gnome-shell-extensions/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<herd>gnome</herd>
+</pkgmetadata>