[Top][All Lists]
[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.
cjp-xinerama-1.patch
Description: Text document