diff -ur ratpoison.cjp-xinerama-1/src/actions.c ratpoison/src/actions.c --- ratpoison.cjp-xinerama-1/src/actions.c 2003-11-25 20:10:13.000000000 +0800 +++ ratpoison/src/actions.c 2003-11-25 23:45:59.000000000 +0800 @@ -3313,7 +3313,7 @@ height = (FONT_HEIGHT (defaults.font) + defaults.bar_y_padding * 2); /* Create and map the window. */ - wins[i] = XCreateWindow (dpy, s->root, cur->x, cur->y, width, height, 1, + wins[i] = XCreateWindow (dpy, s->root, s->left + cur->x, s->top + cur->y, width, height, 1, CopyFromParent, CopyFromParent, CopyFromParent, CWOverrideRedirect | CWBorderPixel | CWBackPixel, &attr); diff -ur ratpoison.cjp-xinerama-1/src/group.c ratpoison/src/group.c --- ratpoison.cjp-xinerama-1/src/group.c 2003-08-23 14:48:25.000000000 +0800 +++ ratpoison/src/group.c 2003-11-25 23:09:46.000000000 +0800 @@ -331,7 +331,7 @@ if (cur->win->last_access >= last_access && cur->win != current_window() && !find_windows_frame (cur->win) - && cur->win->scr == s) + && (cur->win->scr == s || rp_have_xinerama)) { most_recent = cur; last_access = cur->win->last_access; @@ -365,7 +365,7 @@ cur != we; cur = list_next_entry (cur, &g->mapped_windows, node)) { - if (!find_windows_frame (cur->win) && cur->win->scr == current_screen()) + if (!find_windows_frame (cur->win) && (cur->win->scr == current_screen() || rp_have_xinerama)) { return cur->win; } @@ -395,7 +395,7 @@ cur != we; cur = list_prev_entry (cur, &g->mapped_windows, node)) { - if (!find_windows_frame (cur->win) && cur->win->scr == current_screen()) + if (!find_windows_frame (cur->win) && (cur->win->scr == current_screen() || rp_have_xinerama)) { return cur->win; } diff -ur ratpoison.cjp-xinerama-1/src/split.c ratpoison/src/split.c --- ratpoison.cjp-xinerama-1/src/split.c 2003-11-25 20:59:35.000000000 +0800 +++ ratpoison/src/split.c 2003-11-25 23:12:36.000000000 +0800 @@ -272,7 +272,7 @@ list_for_each_entry (cur, &rp_current_group->mapped_windows, node) { - if (cur->win->scr == s + if ((cur->win->scr == s || rp_have_xinerama) && cur->win != current_window() && !find_windows_frame (cur->win) && cur->win->last_access >= last_access diff -ur ratpoison.cjp-xinerama-1/src/window.c ratpoison/src/window.c --- ratpoison.cjp-xinerama-1/src/window.c 2003-11-25 21:34:09.000000000 +0800 +++ ratpoison/src/window.c 2003-11-25 23:12:19.000000000 +0800 @@ -464,7 +464,18 @@ if (win == NULL) return; - frame = screen_get_frame (win->scr, win->scr->current_frame); + /* With Xinerama, we can move a window over to the current screen; otherwise + * we have to switch to the screen that the window belongs to. + */ + if (rp_have_xinerama) + { + frame = screen_get_frame (current_screen(), current_screen()->current_frame); + win->scr = current_screen(); + } + else + { + frame = screen_get_frame (win->scr, win->scr->current_frame); + } last_win = set_frames_window (frame, win); if (last_win) PRINT_DEBUG (("last window: %s\n", window_name (last_win))); diff -ur ratpoison.cjp-xinerama-1/src/xinerama.c ratpoison/src/xinerama.c --- ratpoison.cjp-xinerama-1/src/xinerama.c 2003-11-25 20:17:20.000000000 +0800 +++ ratpoison/src/xinerama.c 2003-11-25 23:14:40.000000000 +0800 @@ -50,12 +50,10 @@ } if (major != 1) { - printf ("Xinerama version %d.%d not supported\n", major, minor); + fprintf (stderr, "Warning: Xinerama version %d.%d not supported\n", major, minor); return; } - printf ("Detected xinerama extension %d.%d; evbase=%d errbase=%d\n", major, minor, evbase, errbase); - if (!XineramaIsActive(dpy)) { return; }