ratpoison-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RP] Ratpoison Xinerama patch #1


From: Cameron Patrick
Subject: Re: [RP] Ratpoison Xinerama patch #1
Date: Tue Nov 25 06:35:07 2003
User-agent: Mutt/1.5.4i

On Tue, Nov 25, 2003 at 04:17:13PM +0800, Cameron Patrick wrote:

| I would really like to see decent Xinerama support in ratpoison.

Rightyo everyone, I have a first shot at a patch.  So far, it seems to
work, but I've changed things all over the place so I wouldn't be
surprised if I also broke a whole bunch of stuff.  If other people could
give it a shot and tell me how well it works, that'd be great :-)

There should be no change on single-head machines, but multi-head
Xinerama configurations /should/ work similarly to when Xinerama is off
(i.e.  change screens with nextscreen/prevscreen, frames are local to a
particular screen, message bar and input bar display on the current
screen, etc).

The problems I've already spotted:
* There's no way to move a window from one screen to another.  I intend
  to fix this one soon as otherwise there's not much point to running
  Xinerama at all :-)
* fselect's labels are in the wrong place (they're displayed relative to
  (0, 0) rather than the current head)
* fdump and frestore only dump and restore frames for the current
  monitor
* frames are numbered oddly

The changes are:

* configure.in: check for libXinerama and libXext
* Makefile.am: added xinerama.[ch]

* data.h: in struct rp_screen, removed root_attr, and added xine_screen_num,
  left, top, width and height.  When Xinerama is not being used,
  xine_screen_num == screen_num.
* globals.h: new global variables rp_have_xinerama and xine_screen_count
* ratpoison.h: includes xinerama.h
* screen.h: added new functions
* xinerama.h: new file :-)

* All over the place: changed references to rp_screen->root_attr to use new
  variables rp_screen->{left,top,width,height}.  Use xine_screen_num
  instead of screen_num in the context of rp_current_screen.
  Calls to XMoveResizeWindow changed to add win->scr->left and
  win->scr->top to the coordinates.

* events.c: use current_screen() instead of find_screen() when Xinerama
  is enabled in new_window() and key_press()
* main.c, screen.c: gobs of stuff has moved from main() to screen.c, to a 
function
  called init_screens().  init_xinerama() and free_xinerama() are now
  called at startup and shutdown
* events.c, manage.c: Use new function is_rp_window_for_screen() instead of 
checking against
  s->{bar,key,input,frame,help}_window.  The new function works properly
  in Xinerama mode.
* screen.c: fixed screen_width()/screen_height()/etc to use
  rp_screen->/width/height/etc.  Added new function
  is_rp_window_for_screen() described above.
* xinerama.c: new file.  Functions init_xinerama(), free_xinerama(), and
  xinerama_get_screen_info()

Cameron.

Attachment: cjp-xinerama-1.patch
Description: Text document


reply via email to

[Prev in Thread] Current Thread [Next in Thread]