Bug#493963: xserver-xephyr: Allow starting Xephyr at other than 0,0 location
Package: xserver-xephyr
Version: 2:1.4.2-2
Severity: wishlist
Tags: patch
Background:
I'd like to use Xephyr to have a multiseat setup. My graphic card has
two displays and I don't know how to do differently than having one
large screen encompassing both monitors (ideally I'd have :0.0 on
first monitor and :0.1 on the second, but hey, I'm not capable). I
start Xephyr to have two X servers.
Problem:
I'd like to start one Xephyr on first monitor and one Xephyr on
second monitor. Without window manager it's a bit tricky.
Workaround:
I can use an X client that honor the -geometry option and use
the ``-parent'' option of Xephyr. It's realy ugly (but it works).
Better approach:
There is a ``-origin'' option of Xephyr that is used in PanoramiX
mode but is ignored in non-PanoramiX mode. The following patch
sets the upper-left corner of the Xephyr window to the coordinates
specified as origin if PanoramiX is not activated.
-- System Information:
Debian Release: lenny/sid
APT prefers testing
APT policy: (990, 'testing')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.25.13 (SMP w/2 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Versions of packages xserver-xephyr depends on:
ii libc6 2.7-10 GNU C Library: Shared libraries
ii libdbus-1-3 1.2.1-2 simple interprocess messaging syst
ii libfontenc1 1:1.0.4-3 X11 font encoding library
ii libhal1 0.5.11-2 Hardware Abstraction Layer - share
ii libpixman-1-0 0.10.0-2 pixel-manipulation library for X a
ii libx11-6 2:1.1.4-2 X11 client-side library
ii libxau6 1:1.0.3-3 X11 authorisation library
ii libxdmcp6 1:1.0.2-3 X11 Display Manager Control Protoc
ii libxext6 2:1.0.4-1 X11 miscellaneous extension librar
ii libxfont1 1:1.3.3-1 X11 font rasterisation library
ii x11-common 1:7.3+14 X Window System (X.Org) infrastruc
Versions of packages xserver-xephyr recommends:
ii xbase-clients 1:7.3+14 miscellaneous X clients - metapack
ii xfonts-base 1:1.0.0-5 standard fonts for X
xserver-xephyr suggests no packages.
-- no debconf information
diff -u hw/kdrive/ephyr.orig/ephyr.c hw/kdrive/ephyr/ephyr.c
--- hw/kdrive/ephyr.orig/ephyr.c 2008-05-12 18:53:59.000000000 +0200
+++ hw/kdrive/ephyr/ephyr.c 2008-08-05 12:31:50.000000000 +0200
@@ -227,7 +227,7 @@
else
buffer_height = 3 * screen->height;
- priv->base = hostx_screen_init (screen->width, screen->height, buffer_height);
+ priv->base = hostx_screen_init (screen->origin.x, screen->origin.y, screen->width, screen->height, buffer_height);
screen->memory_base = (CARD8 *) (priv->base);
screen->memory_size = priv->bytes_per_line * buffer_height;
diff -u hw/kdrive/ephyr.orig/hostx.c hw/kdrive/ephyr/hostx.c
--- hw/kdrive/ephyr.orig/hostx.c 2008-05-12 18:53:59.000000000 +0200
+++ hw/kdrive/ephyr/hostx.c 2008-08-05 22:23:35.000000000 +0200
@@ -445,7 +445,7 @@
* by fakexa for storing offscreen pixmap data.
*/
void*
-hostx_screen_init (int width, int height, int buffer_height)
+hostx_screen_init (int x, int y, int width, int height, int buffer_height)
{
int bitmap_pad;
Bool shm_success = False;
@@ -533,6 +533,9 @@
XSetWMNormalHints(HostX.dpy, HostX.win, size_hints);
XFree(size_hints);
+#ifndef PANORAMIX
+ XMoveWindow(HostX.dpy, HostX.win, x, y);
+#endif
XMapWindow(HostX.dpy, HostX.win);
XSync(HostX.dpy, False);
diff -u hw/kdrive/ephyr.orig/hostx.h hw/kdrive/ephyr/hostx.h
--- hw/kdrive/ephyr.orig/hostx.h 2008-05-12 18:53:59.000000000 +0200
+++ hw/kdrive/ephyr/hostx.h 2008-08-05 12:26:56.000000000 +0200
@@ -147,7 +147,7 @@
unsigned char b);
void*
-hostx_screen_init (int width, int height, int buffer_height);
+hostx_screen_init (int x, int y, int width, int height, int buffer_height);
void
hostx_paint_rect(int sx, int sy,
Reply to: