diff -Naur ll/libwnck-0.18/libwnck/pager.c l/libwnck-0.18/libwnck/pager.c
--- ll/libwnck-0.18/libwnck/pager.c	2002-10-30 22:04:26.000000000 +0100
+++ l/libwnck-0.18/libwnck/pager.c	2002-11-13 18:26:39.000000000 +0100
@@ -507,6 +507,7 @@
   GdkPixbuf *icon;
   int icon_x, icon_y, icon_w, icon_h;
   gboolean is_active;
+  double r;
 
   is_active = wnck_window_is_active (win);
           
@@ -542,12 +543,30 @@
 
               /* Give up. */
               if (icon_w > (winrect->width - 2) ||
-                  icon_h > (winrect->height - 2))
-                icon = NULL;
+                  icon_h > (winrect->height - 2)) 
+				{
+
+				  /* jrh: Use nano icons */
+
+				  /* Get optimal size  (also one can use a fix size!) */
+				  r = ((double)icon_h)/((double)icon_w);
+				  if (winrect->width < winrect->height) {
+					icon_w = (winrect->width - 2);
+					icon_h = (int)( (((double)icon_w)*r) + 0.499);
+				  } else {
+					icon_h = (winrect->height - 2);
+					icon_w = (int)( (((double)icon_h)/r) + 0.499);
+				  }
+
+				  icon = wnck_window_get_nano_icon(win, icon_w, icon_h);				  
+				  /* jrh: Use nano icons */
+				  
+				  
+				}
             }
         }
     }
-
+  
   if (icon)
     {
       icon_x = winrect->x + (winrect->width - icon_w) / 2;
@@ -590,6 +609,7 @@
                       FALSE,
                       winrect->x, winrect->y,
                       winrect->width - 1, winrect->height - 1);
+
 }            
 
 static int
diff -Naur ll/libwnck-0.18/libwnck/window.c l/libwnck-0.18/libwnck/window.c
--- ll/libwnck-0.18/libwnck/window.c	2002-10-31 17:00:17.000000000 +0100
+++ l/libwnck-0.18/libwnck/window.c	2002-11-13 18:44:55.000000000 +0100
@@ -62,6 +62,12 @@
   GdkPixbuf *icon;
   GdkPixbuf *mini_icon;
 
+  /* jrh: Use nano icons */
+  gboolean use_nano_icon;
+  GdkPixbuf *nano_icon;
+  /* jrh: Use nano icons */
+
+
   WnckIconCache *icon_cache;
   
   WnckWindowActions actions;
@@ -149,6 +155,57 @@
 static gpointer parent_class;
 static guint signals[LAST_SIGNAL] = { 0 };
 
+
+/* jrh: Use nano icons */
+GdkPixbuf *wnck_window_get_nano_icon(WnckWindow *window, int icon_new_w, int icon_new_h)
+{
+  GdkPixbuf *icon;
+  int icon_w, icon_h;
+
+
+  if (window->priv->use_nano_icon) {
+
+	/* Size is too small, do nothing */
+	if ( (icon_new_w<8) || (icon_new_h<8) ) {  
+	  return(NULL);
+	}
+
+	if (window->priv->nano_icon) {
+	  
+	  /* Get last icon size */
+	  icon_w = gdk_pixbuf_get_width(window->priv->nano_icon);
+	  icon_h = gdk_pixbuf_get_height(window->priv->nano_icon);
+	  
+	  /* If equal size then return last scaled icon */
+	  if ((icon_new_w==icon_w) && (icon_new_h==icon_h)) {
+		return(window->priv->nano_icon);
+	  }
+
+	} /* endif nano_icon already exists */
+
+	/* Use GDK_INTERP_NEAREST for speed, GDK_INTERP_BILINEAR for quality */
+	icon = gdk_pixbuf_scale_simple( wnck_window_get_mini_icon(window), 
+									icon_new_w, icon_new_h,
+									GDK_INTERP_BILINEAR);
+	
+	/* Delete last icon as we've created a one */
+	if (window->priv->nano_icon) {
+	  g_object_unref(G_OBJECT(window->priv->nano_icon));
+	}
+	
+	window->priv->nano_icon = icon;
+
+	return(window->priv->nano_icon);
+	
+  }
+  
+  return(NULL);
+  
+}
+/* jrh: Use nano icons */
+
+
+
 GType
 wnck_window_get_type (void)
 {
@@ -273,6 +330,12 @@
   if (window->priv->mini_icon)
     g_object_unref (G_OBJECT (window->priv->mini_icon));
   
+  /* jrh: Use nano icons */
+  if (window->priv->nano_icon)
+    g_object_unref (G_OBJECT (window->priv->nano_icon));
+  /* jrh: Use nano icons */
+
+
   _wnck_icon_cache_free (window->priv->icon_cache);
 
   g_free (window->priv->name);
@@ -375,6 +438,12 @@
   window->priv->need_update_transient_for = TRUE;
   force_update_now (window);
 
+  /* jrh: Use nano icons */
+  window->priv->use_nano_icon = TRUE;
+  window->priv->nano_icon = NULL;
+  /* jrh: Use nano icons */
+  
+
   return window;
 }
 
@@ -944,6 +1013,10 @@
   GdkPixbuf *icon;
   GdkPixbuf *mini_icon;
 
+  GdkPixbuf *nano_icon;
+  int icon_w, icon_h;
+
+
   icon = NULL;
   mini_icon = NULL;
   
@@ -965,6 +1038,35 @@
 
       window->priv->icon = icon;
       window->priv->mini_icon = mini_icon;
+
+	  /*jrh: Also update nano_icon */
+	  if (window->priv->use_nano_icon) {
+
+		/* Only if it exists */
+		if (window->priv->nano_icon) {
+	  
+		  /* Get last icon size */
+		  icon_w = gdk_pixbuf_get_width(window->priv->nano_icon);
+		  icon_h = gdk_pixbuf_get_height(window->priv->nano_icon);
+	  
+		  /* Use that to create new icon */
+		  /* Use GDK_INTERP_NEAREST for speed, GDK_INTERP_BILINEAR for quality */
+		  nano_icon = gdk_pixbuf_scale_simple( wnck_window_get_mini_icon(window), 
+											   icon_w, icon_h,
+											   GDK_INTERP_BILINEAR);
+
+		  /* Delete last icon as we've created a one */
+		  if (window->priv->nano_icon) {
+			g_object_unref(G_OBJECT(window->priv->nano_icon));
+		  }
+		  
+		  window->priv->nano_icon = nano_icon;
+
+		}
+
+	  }
+	  /*jrh: Also update nano_icon */
+
     }
 
   g_assert ((window->priv->icon && window->priv->mini_icon) ||
diff -Naur ll/libwnck-0.18/libwnck/window.h l/libwnck-0.18/libwnck/window.h
--- ll/libwnck-0.18/libwnck/window.h	2002-10-30 22:04:27.000000000 +0100
+++ l/libwnck-0.18/libwnck/window.h	2002-11-08 09:04:19.000000000 +0100
@@ -187,6 +187,10 @@
 GdkPixbuf* wnck_window_get_icon      (WnckWindow *window);
 GdkPixbuf* wnck_window_get_mini_icon (WnckWindow *window);
 
+/* jrh: Use nano icons */
+GdkPixbuf *wnck_window_get_nano_icon (WnckWindow *window, int icon_new_w, int icon_new_h);
+/* jrh: Use nano icons */
+
 gboolean wnck_window_get_icon_is_fallback (WnckWindow *window);
 
 void wnck_window_set_icon_geometry        (WnckWindow *window,
@@ -211,4 +215,7 @@
 
 G_END_DECLS
 
+
+
+
 #endif /* WNCK_WINDOW_H */
