diff -ur gnome-shell.orig/data/theme/gnome-shell.css gnome-shell/data/theme/gnome-shell.css
--- gnome-shell.orig/data/theme/gnome-shell.css	2009-10-13 09:22:21.000000000 +0200
+++ gnome-shell/data/theme/gnome-shell.css	2009-12-01 22:46:16.000000000 +0100
@@ -156,6 +156,10 @@
     color: #cccccc;
 }
 
+.calendar-weekofyear {
+    color: #666666;
+}
+
 /* App Switcher */
 .switcher-list {
     background: rgba(0,0,0,0.8);
diff -ur gnome-shell.orig/js/ui/calendar.js gnome-shell/js/ui/calendar.js
--- gnome-shell.orig/js/ui/calendar.js	2009-10-13 09:22:21.000000000 +0200
+++ gnome-shell/js/ui/calendar.js	2009-12-03 02:41:32.000000000 +0100
@@ -7,6 +7,7 @@
 const Gettext_gtk20 = imports.gettext.domain('gtk20');
 
 const MSECS_IN_DAY = 24 * 60 * 60 * 1000;
+const MSECS_IN_WEEK = MSECS_IN_DAY * 7;
 
 function _sameDay(dateA, dateB) {
     return (dateA.getDate() == dateB.getDate() &&
@@ -14,6 +15,13 @@
             dateA.getYear() == dateB.getYear());
 }
 
+Date.prototype.getWeekOfYear = function() {
+    let startOfYear = new Date(this.getFullYear(), 0, 1);
+    let weekOfYear = Math.ceil((this.getTime() - startOfYear.getTime()) / MSECS_IN_WEEK);
+    return weekOfYear;
+}
+
+
 function Calendar() {
     this._init();
 };
@@ -61,7 +69,7 @@
         // Top line of the calendar '<| September 2009 |>'
         this._topBox = new St.BoxLayout();
         this.actor.add(this._topBox,
-                       { row: 0, col: 0, col_span: 7 });
+                       { row: 0, col: 0, col_span: 8 });
 
         let back = new St.Button({ label: "&lt;", style_class: 'calendar-change-month'  });
         this._topBox.add(back);
@@ -83,7 +91,7 @@
         for (let i = 0; i < 7; i++) {
             this.actor.add(new St.Label({ text: iter.toLocaleFormat("%a") }),
                            { row: 1,
-                             col: (7 + iter.getDay() - this._weekStart) % 7,
+                             col: 1 + (7 + iter.getDay() - this._weekStart) % 7,
                              x_fill: false, x_align: 1.0 });
             iter.setTime(iter.getTime() + MSECS_IN_DAY);
         }
@@ -162,8 +170,16 @@
             else
                 label.style_class = "calendar-day";
             this.actor.add(label,
-                           { row: row, col: (7 + iter.getDay() - this._weekStart) % 7,
+                           { row: row, col: 1 + (7 + iter.getDay() - this._weekStart) % 7,
                              x_fill: false, x_align: 1.0 });
+
+            if (iter.getDay() == 0) {
+                let label = new St.Label({ text: iter.getWeekOfYear().toString() });
+                label.style_class = "calendar-day calendar-weekofyear";
+                this.actor.add(label,
+                              { row: row, col: 0,
+                                x_fill: false, x_align: 0.5} );
+            }
 
             iter.setTime(iter.getTime() + MSECS_IN_DAY);
             if (iter.getDay() == this._weekStart) {
