Only in /Users/bbraun/rdesktop-1.4.1: .xwin.c.swp
diff -ud rdesktop-1.4.1/Makefile.in /Users/bbraun/rdesktop-1.4.1/Makefile.in
--- rdesktop-1.4.1/Makefile.in	2005-05-04 13:32:16.000000000 -0700
+++ /Users/bbraun/rdesktop-1.4.1/Makefile.in	2007-03-10 08:00:41.000000000 -0800
@@ -32,7 +32,7 @@
 all: $(TARGETS)
 
 rdesktop: $(X11OBJ) $(SOUNDOBJ) $(RDPOBJ)
-	$(CC) $(CFLAGS) -o rdesktop $(X11OBJ) $(SOUNDOBJ) $(RDPOBJ) $(LDFLAGS) -lX11
+	$(CC) $(CFLAGS) -o rdesktop $(X11OBJ) $(SOUNDOBJ) $(RDPOBJ) $(LDFLAGS) -lX11 -lXinerama
 
 rdp2vnc: $(VNCOBJ) $(SOUNDOBJ) $(RDPOBJ) 
 	$(VNCLINK) $(CFLAGS) -o rdp2vnc $(VNCOBJ) $(SOUNDOBJ) $(RDPOBJ) $(LDFLAGS) $(LDVNC)
Common subdirectories: rdesktop-1.4.1/doc and /Users/bbraun/rdesktop-1.4.1/doc
Common subdirectories: rdesktop-1.4.1/keymaps and /Users/bbraun/rdesktop-1.4.1/keymaps
diff -ud rdesktop-1.4.1/xwin.c /Users/bbraun/rdesktop-1.4.1/xwin.c
--- rdesktop-1.4.1/xwin.c	2005-04-16 15:09:31.000000000 -0700
+++ /Users/bbraun/rdesktop-1.4.1/xwin.c	2007-03-10 07:58:36.000000000 -0800
@@ -20,6 +20,7 @@
 
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
+#include <X11/extensions/Xinerama.h>
 #include <unistd.h>
 #include <sys/time.h>
 #include <time.h>
@@ -176,6 +177,36 @@
 #define SET_FUNCTION(rop2)	{ if (rop2 != ROP2_COPY) XSetFunction(g_display, g_gc, rop2_map[rop2]); }
 #define RESET_FUNCTION(rop2)	{ if (rop2 != ROP2_COPY) XSetFunction(g_display, g_gc, GXcopy); }
 
+static int rd_windowwidth(Screen *s)
+{
+	XineramaScreenInfo *xsi;
+	int num;
+	int ret;
+
+	xsi = XineramaQueryScreens(g_display, &num);
+	if( xsi == NULL )
+		return WidthOfScreen(s);
+
+	ret = xsi[0].width;
+	XFree(xsi);
+	return ret;
+}
+
+static int rd_windowheight(Screen *s)
+{
+	XineramaScreenInfo *xsi;
+	int num;
+	int ret;
+
+	xsi = XineramaQueryScreens(g_display, &num);
+	if( xsi == NULL )
+		return HeightOfScreen(s);
+
+	ret = xsi[0].height;
+	XFree(xsi);
+	return ret;
+}
+
 static void
 mwm_hide_decorations(void)
 {
@@ -1085,14 +1116,14 @@
 	 */
 	if (g_fullscreen)
 	{
-		g_width = WidthOfScreen(g_screen);
-		g_height = HeightOfScreen(g_screen);
+		g_width = rd_windowwidth(g_screen);
+		g_height = rd_windowheight(g_screen);
 	}
 	else if (g_width < 0)
 	{
 		/* Percent of screen */
-		g_height = HeightOfScreen(g_screen) * (-g_width) / 100;
-		g_width = WidthOfScreen(g_screen) * (-g_width) / 100;
+		g_height = rd_windowwidth(g_screen) * (-g_width) / 100;
+		g_width = rd_windowheight(g_screen) * (-g_width) / 100;
 	}
 	else if (g_width == 0)
 	{
@@ -1161,14 +1192,19 @@
 	long input_mask, ic_input_mask;
 	XEvent xevent;
 
-	wndwidth = g_fullscreen ? WidthOfScreen(g_screen) : g_width;
-	wndheight = g_fullscreen ? HeightOfScreen(g_screen) : g_height;
+	wndwidth = g_fullscreen ? rd_windowwidth(g_screen) : g_width;
+	wndheight = g_fullscreen ? rd_windowheight(g_screen) : g_height;
+
+	if( g_fullscreen ) {
+		g_ypos = HeightOfScreen(g_screen) - g_height;
+		g_xpos = WidthOfScreen(g_screen) - g_width;
+	}
 
 	/* Handle -x-y portion of geometry string */
 	if (g_xpos < 0 || (g_xpos == 0 && (g_pos & 2)))
-		g_xpos = WidthOfScreen(g_screen) + g_xpos - g_width;
+		g_xpos = rd_windowwidth(g_screen) + g_xpos - g_width;
 	if (g_ypos < 0 || (g_ypos == 0 && (g_pos & 4)))
-		g_ypos = HeightOfScreen(g_screen) + g_ypos - g_height;
+		g_ypos = rd_windowheight(g_screen) + g_ypos - g_height;
 
 	attribs.background_pixel = BlackPixelOfScreen(g_screen);
 	attribs.border_pixel = WhitePixelOfScreen(g_screen);
