From: ftms!brown@bloom-beacon.mit.edu (Vidiot)
Newsgroups: fj.mail-lists.x-window
Subject: app-defaults problem solved
Date: 28 Jul 92 06:35:45 GMT
Distribution: fj
Organization: Vidiot's Other Hangout

Date: 27 Jul 92 16:21:10 GMT
Message-Id: <259@ftms.UUCP>
Newsgroups: comp.windows.x


I have received a few pieces of e-mail requesting the info I received on
solving my app-defaults problem.

I have the following set in .zshenv (yes, I use zsh):

export XFILESEARCHPATH=/usr/local/lib/X11/%T/%N:/home/odyssey/openwin/lib/%T/%N%S

It solves the immediate problem with xcdplayer.  The XAPPSRESDIR variable can
also be used.  Attached is the FAQ page that I received regarding these
variables:

>From oj@roadrunner.pictel.com Thu Jul 23 07:33:53 1992

>From the FAQ distribution:

----------------------------------------------------------------------
Subject:  33)+ How does Xt use environment variables in loading resources?

	You can use several environment variables to control how resources are 
loaded for your Xt-based programs -- XFILESEARCHPATH, XUSERFILESEARCHPATH, and 
XAPPLRESDIR.  These environment variables control where Xt looks for 
application-defaults files as an application is initializing.  Xt loads at most
one app-defaults file from the path defined in XFILESEARCHPATH and another from
the path defined in XUSERFILESEARCHPATH.

	Set XFILESEARCHPATH if software is installed on your system in such a 
way that app-defaults files appear in several different directory hierarchies.
Suppose, for example, that you are running Sun's Open Windows, and you also 
have some R4 X applications installed in /usr/lib/X11/app-defaults. You could 
set a value like this for XFILESEARCHPATH, and it would cause Xt to look up 
app-defaults files in both /usr/lib/X11 and /usr/openwin/lib (or wherever your
OPENWINHOME is located):
	setenv XFILESEARCHPATH /usr/lib/X11/%T/%N:$OPENWINHOME/lib/%T/%N

	The value of this environment variable is a colon-separated list of
pathnames.  The pathnames contain replacement characters as follows:
	%T		the literal string "app-defaults"
	%N		application class name
	%C		customization resource (R5 only)
	%L		language, locale, and codeset (e.g. "ja_JP.EUC")
	%l		language part of %L  (e.g. "ja") 

	Let's take apart the example.  Suppose the application's class name is 
"Myterm". Also, suppose Open Windows is installed in /usr/openwin. (Notice the 
example omits locale-specific lookup.)
	/usr/lib/X11/%T/%N        means /usr/lib/X11/app-defaults/Myterm
	$OPENWINHOME/lib/%T/%N    means /usr/openwin/lib/app-defaults/Myterm

	As the application initializes, Xt tries to open both of the above 
app-defaults files, in the order shown.  As soon as it finds one, it reads it 
and uses it, and stops looking for others.  The effect of this path is to 
search first in /usr/lib/X11, then in /usr/openwin.

	Let's consider another example. This time, let's set 
XUSERFILESEARCHPATH so it looks for the file Myterm.ad in the current working 
directory, then for Myterm in the directory ~/app-defaults.
	setenv XUSERFILESEARCHPATH ./%N.ad:$HOME/%T/%N

	The first path in the list expands to ./Myterm.ad.  The second expands 
to $HOME/app-defaults/Myterm.  This is a convenient setting for debugging 
because it follows the Imake convention of naming the app-defaults file 
Myterm.ad in the application's source directory, so you can run the application
from the directory in which you are working and still have the resources loaded
properly.

	With R5, there's another twist.  You may specify a customization 
resource value.  For example, you might run the "myterm" application like this:
	myterm -xrm "*customization: -color"

	If one of your pathname specifications had the value
"/usr/lib/X11/%T/%N%C" then the expanded pathname would be
"/usr/lib/X11/app-defaults/Myterm-color" because the %C substitution character 
takes on the value of the customization resource.

	The default XFILESEARCHPATH, compiled into Xt, is:
		/usr/lib/X11/%L/%T/%N%C:\  (R5)
		/usr/lib/X11/%l/%T/%N%C:\  (R5)
		/usr/lib/X11/%T/%N%C:\     (R5)
		/usr/lib/X11/%L/%T/%N:\
		/usr/lib/X11/%l/%T/%N:\
		/usr/lib/X11/%T/%N

	(Note: some sites replace /usr/lib/X11 with a ProjectRoot in
this batch of default settings.)

	The default XUSERFILESEARCHPATH, also compiled into Xt, is 
		<root>/%L/%N%C:\  (R5)
		<root>/%l/%N%C:\  (R5)
		<root>/%N%C:\     (R5)
		<root>/%L/%N:\
		<root>/%l/%N:\
		<root>/%N:

	<root> is either the value of XAPPLRESDIR or the user's home directory 
if XAPPLRESDIR is not set.  If you set XUSERFILESEARCHPATH to some value other 
than the default, Xt ignores XAPPLRESDIR altogether.

	Notice that the quick and dirty way of making your application find 
your app-defaults file in your current working directory is to set XAPPLRESDIR 
to ".", a single dot.  In R3, all this machinery worked differently; for R3 
compatibilty, many people set their XAPPLRESDIR value to "./", a dot followed 
by a slash.


-- 
harvard\
  ucbvax!uwvax!astroatc!ftms!brown  or  uu2.psi.com!ftms!brown
rutgers/
INTERNET: brown@wi.extrel.com  or  ftms!brown%astroatc.UUCP@cs.wisc.edu