Index: libwnck/libwnck-2.14.1/libwnck/window.c
===================================================================
--- libwnck.orig/libwnck-2.14.1/libwnck/window.c	2006-05-25 08:50:22.000000000 +0100
+++ libwnck/libwnck-2.14.1/libwnck/window.c	2006-05-25 09:47:08.000000000 +0100
@@ -1521,6 +1521,39 @@
 }
 
 /**
+ * wnck_window_set_geometry:
+ * @window: a #WnckWindow
+ * @x: new X coordinate of window, -1 means don't modify
+ * @y: new Y coordinate of window, -1 means don't modify
+ * @width: new width of window, -1 means don't modify
+ * @height: new height of window, -1 means don't modify
+ *
+ * Sets the size and position of the window.
+ *
+ **/
+void
+wnck_window_set_geometry (WnckWindow *window,
+                          int         x,
+                          int         y,
+                          int         width,
+                          int         height)
+{
+  int gravity_flags;
+
+  g_return_if_fail (WNCK_IS_WINDOW (window));
+
+  gravity_flags = 0;
+  if (x != -1) gravity_flags |= (1 << 8);
+  if (y != -1) gravity_flags |= (1 << 9);
+  if (width != -1) gravity_flags |= (1 << 10);
+  if (height != -1) gravity_flags |= (1 << 11);
+
+  _wnck_set_window_geometry (WNCK_SCREEN_XSCREEN (window->priv->screen),
+                             window->priv->xwindow,
+                             gravity_flags, x, y, width, height);
+}
+
+/**
  * wnck_window_is_visible_on_workspace:
  * @window: a #WnckWindow
  * @workspace: a #WnckWorkspace
Index: libwnck/libwnck-2.14.1/libwnck/window.h
===================================================================
--- libwnck.orig/libwnck-2.14.1/libwnck/window.h	2006-05-25 08:50:22.000000000 +0100
+++ libwnck/libwnck-2.14.1/libwnck/window.h	2006-05-25 08:51:24.000000000 +0100
@@ -230,6 +230,11 @@
                                int        *yp,
                                int        *widthp,
                                int        *heightp);
+void wnck_window_set_geometry (WnckWindow *window,
+                               int         x,
+                               int         y,
+                               int         width,
+                               int         height);
 
 gboolean wnck_window_is_visible_on_workspace (WnckWindow    *window,
                                               WnckWorkspace *workspace);
Index: libwnck/libwnck-2.14.1/libwnck/xutils.c
===================================================================
--- libwnck.orig/libwnck-2.14.1/libwnck/xutils.c	2006-05-25 08:53:47.000000000 +0100
+++ libwnck/libwnck-2.14.1/libwnck/xutils.c	2006-05-25 09:38:41.000000000 +0100
@@ -2232,6 +2232,36 @@
     *heightp = height;
 }
 
+void _wnck_set_window_geometry (Screen *screen,
+				Window  xwindow,
+                                int     grflags,
+                                int     x,
+                                int     y,
+                                int     width,
+                                int     height)
+{
+  XEvent xev;
+
+  xev.xclient.type = ClientMessage;
+  xev.xclient.serial = 0;
+  xev.xclient.send_event = True;
+  xev.xclient.display = gdk_display;
+  xev.xclient.window = xwindow;
+  xev.xclient.message_type = _wnck_atom_get ("_NET_MOVERESIZE_WINDOW");
+  xev.xclient.format = 32;
+  xev.xclient.data.l[0] = grflags;
+  xev.xclient.data.l[1] = x;
+  xev.xclient.data.l[2] = y;
+  xev.xclient.data.l[3] = width;
+  xev.xclient.data.l[4] = height;
+
+  XSendEvent (gdk_display,
+              RootWindowOfScreen (screen),
+              False,
+              SubstructureRedirectMask | SubstructureNotifyMask,
+              &xev);
+}
+
 void
 _wnck_get_window_position (Screen *screen,
 			   Window  xwindow,
Index: libwnck/libwnck-2.14.1/libwnck/xutils.h
===================================================================
--- libwnck.orig/libwnck-2.14.1/libwnck/xutils.h	2006-05-25 08:52:30.000000000 +0100
+++ libwnck/libwnck-2.14.1/libwnck/xutils.h	2006-05-25 09:39:13.000000000 +0100
@@ -163,6 +163,13 @@
                                 int    *yp,
                                 int    *widthp,
                                 int    *heightp);
+void _wnck_set_window_geometry (Screen *screen,
+				Window  xwindow,
+                                int     grflags,
+                                int     x,
+                                int     y,
+                                int     width,
+                                int     height);
 
 void _wnck_get_window_position (Screen *screen,
 				Window  xwindow,
