Gnome 2.0: gnome-config and GConf and command-line



Hi all.
I'm designing an application which may use the following structure for
loading configuration information. My application is called nox at the
moment until I think of a real name for it.

	- application defaults (standard defaults that can be relied on)
	- GConf (system configuration; potentially distributed?)
	- /etc/nox/nox.conf (system configuration -- fallback)
	- ~/.etc/nox/nox.conf
	- user supplied configuration files.

The idea is that settings can be overridden at each level to provide
very specific control of the application when needed. Additionally, each
configuration file does not need to be an exhaustive configuration. That
is, each configuration file may only set a few options.

The configuration file will mostly consist of various resources that can
be loaded. Examples include: plugins, device profiles, gradient
libraries, pattern libraries, image libraries, and save/load profiles.

Now to the question: how permanent are the gnome-config libraries for
managing configuration files? Since I have been unable to find 2.0 API
documentation, I've been looking through 1.2/1.4 on developer.gnome.org.
The "50% done" comment on the following link:
http://developer.gnome.org/doc/API/libgnome/libgnome.html
doesn't give me much confidence. Was this in fact finished and is it
available in 2.0 and will it continue to be supported for 2.2...?

Related to this I read in the gnome-config documenetation at the above
link that the configuration file layout of gnome applications follows a
different order than my intended search path.

	- GConf (isn't around yet but is for 2.2)
	- $(sysconfdir)/gnome/config-override/nox.conf
	- $(sysconfdir)/gnome/config/nox.conf (system defaults)
	- ~/.gnome/nox.conf (per user defaults)
	- and per file conf files can be specified with the
	absolute path of the conf filename surrounded by "= ... ="

Is this still how things are done? This looks acceptable I suppose,
given the fact that I will be depending on Gnome libraries already.
However, I really *dislike* all the .files and .directories in ~ and
would much prefer it if my application configuration files could be kept
neatly together in an out of the way place (.etc).

Another configuration question I have is with regards to versioning of
the conf files. Is there a recommended way to version conf files?  I'm
think of having a mandatory section in the conf file as follows:

[nox]
ConfVersion=0.0.0
...

In this way each conf is associated with a particular version of the
Conf format for the application. I would like to have a tree structure
for this so that the conf file can contain different paths for multiple
versions and I noticed that evolution stores some configuration settings
in an XML format... is this accessible by some standard gnome libraries
or is this an evolution-only solution?

On the other hand, I prefer the simplicity of the gnome-config files so
I'm not sure that I would use it anyway...

Finally, I a few quick comments on command-line options. Are there any
recommended standard switches or variations of the following that I'm
missing?
	--version, -v
	--conf "uri", -c "uri"	Comma seperated list of conf files
	--verbose		Program will print out messages when
				it makes assumptions and explain
				longer actions...
	--silent, -s		No GUI. requires one of the confs
				to contain an initial scripts section or
				it just returns to the command-line.
	--nosplash

I'd like to keep the command-line options short and sweet.


Patrick.





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