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-02 12:39:43.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,15 @@
             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 +71,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,11 +93,18 @@
         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);
         }
 
+        // fixed spacing for calendar week
+        this.actor.add( new St.Label({text: "\t"}),
+                        { row: 1,
+                          col: 0,
+                            x_fill: false,
+                            y_align: 1.0 });
+
         // All the children after this are days, and get removed when we update the calendar
         this._firstDayIndex = this.actor.get_children().length;
 
@@ -162,8 +179,17 @@
             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) {
