[comp.windows.x] xplaces vs. twm, et al

gaf@uucs1.UUCP (gaf) (08/24/89)

The contributed program 'xplaces' looks like a useful tool to have,
especially when it has some additional stuff wrapped around it to make it
usable by a nontechnical end-user.  (there's always a...)But according to
its README file it only works with window mgrs which don't reparent, or
which pass along the properties they get from reparented windows.  Alas,
twm doesn't seem to fall into these categories.

Is support for what's needed by xplaces planned for twm?  Does the window mgr
used in Motif have this feature?  As near as I can tell, if the window mgr
doesn't cooperate, xplaces won't work.  Have I overlooked another way of
doing what xplaces does (take a snapshot of window layout and preserving it
in a form which allows the layout to be easily recreated in future sessions)?

-- 
Guy Finney					It's that feeling of deja-vu
UUCS inc.   Phoenix, Az				all over again.
ncar!noao!asuvax!hrc!uucs1!gaf	sun!sunburn!gtx!uucs1!gaf

toml@Solbourne.COM (Tom LaStrange) (08/24/89)

< The contributed program 'xplaces' looks like a useful tool to have,
< especially when it has some additional stuff wrapped around it to make it
< usable by a nontechnical end-user.  (there's always a...)But according to
< its README file it only works with window mgrs which don't reparent, or
< which pass along the properties they get from reparented windows.  Alas,
< twm doesn't seem to fall into these categories.
< 
< Is support for what's needed by xplaces planned for twm?  Does the window mgr
< used in Motif have this feature?  As near as I can tell, if the window mgr
< doesn't cooperate, xplaces won't work.  Have I overlooked another way of
< doing what xplaces does (take a snapshot of window layout and preserving it
< in a form which allows the layout to be easily recreated in future sessions)?

Both twm and xplaces need to be fixed.  twm (X11R4) will place the ICCCM
specified WM_STATE property on client windows.  xplaces needs to be fixed
to go looking for the windows with that property.

--
Tom LaStrange

Solbourne Computer Inc.    ARPA: toml@Solbourne.COM
1900 Pike Rd.              UUCP: ...!{boulder,nbires,sun}!stan!toml
Longmont, CO  80501

rapatel@qbranch.rutgers.edu (Rocky) (08/27/89)

This patch is for the xplaces by Michael Rowen that got posted in
comp.sources.x, not the one that came with R3. It works for us.
That version of xplaces is much nicer than the original one in R3.
What follows is the context diff for that version of xplaces.


Rakesh Patel.


*** xplaces.c.ORIG	Sat Dec 17 20:31:49 1988
--- xplaces.c	Sun Aug 13 21:14:42 1989
***************
*** 44,49 ****
--- 44,50 ----
  
  char	*except[MAXEXCEPT],
  	*dasheme;
+ Window			Root;
  
  int
  main(argc, argv)
***************
*** 54,60 ****
  	char			*pchDisplayName = NULL,
  				*pchFile = NULL,
  				*progname;
- 	Window			Root;
  	int			screen,
  				i;
  
--- 55,60 ----
***************
*** 149,154 ****
--- 149,155 ----
  {
  	Window	*children,
  		misc,
+ 	        junk,
  		parent;
  	int	iChildren;
  	char	*pchWin,
***************
*** 155,161 ****
  		*pchName;
  	int	iCnt,
  		x, 
! 		y, 
  		xterm = 0,
  		done = 0,
  		didrsh = 0;	
--- 156,164 ----
  		*pchName;
  	int	iCnt,
  		x, 
! 		y,
! 	        realx,
! 	        realy,
  		xterm = 0,
  		done = 0,
  		didrsh = 0;	
***************
*** 190,195 ****
--- 193,200 ----
  			XGetWindowAttributes(dpy, *children, &info);
  			XGetGeometry(dpy, *children, &misc, &x, &y, 
  							&w, &h, &b, &d);
+ 			XTranslateCoordinates(dpy, *children, Root, x, y,
+ 					    &realx, &realy,&junk);
  			/*  
  			 *  Is geometry in pixels or chars? 
  			 */
***************
*** 230,236 ****
  				fprintf(pFout, "%s ", pchWin);
  			}
  			fprintf(pFout,"-geometry %dx%d+%d+%d",
! 				winwidth,winheight,hints.x, hints.y);
  			if(borderwidth) {
  				fprintf(pFout," -borderwidth %d ",b);
  			}		
--- 235,241 ----
  				fprintf(pFout, "%s ", pchWin);
  			}
  			fprintf(pFout,"-geometry %dx%d+%d+%d",
! 				winwidth,winheight, realx, realy);
  			if(borderwidth) {
  				fprintf(pFout," -borderwidth %d ",b);
  			}