The existing systems in this area are the Xrm database, and various other configuration database systems, mostly specific to particular desktops. (The kde configuration system, gnome-config, GConf, libproplist, etc.)
The Xrm database is tempting to use for this purpose since it is very well established and has a universally deployed existing implementation. However, it has various defects, that make it not suitable for this purpose.
The Xrm database merges information from various sources - the ~/.Xdefaults file on the root window, and a property on the root window. This means that to programatically configure the Xrm database in response to a GUI config tool is difficult and unreliable.
The Xrm database was not designed for on-the-fly changing of settings.
The Xrm database stores all information in a single text property on the root window. This makes it difficult to determine what settings have changed; it is necessary to parse the property and do string comparisons.
Additionally, most systems have a large amount of application specific information in the Xrm database, which further slows down notification of changes.
Other configuration databases are more designed for this task. However, they are sophisticated systems that are not easily reimplementable. Also, picking one would mean difficulties integrating with other desktops that use different systems.
It is our contention that a system designed specifically for configuration of a small number of settings being changed at runtime can, compared to a more general existing system:
Be easier to bridge onto each systems native configuration mechanism. |
Be easier to implement in whatever language/library combination people want to use. |
Be more efficient. |