The standard way in Linux is to have a configuration file in the users home directory. For example if my program is called "foo" I might have .foo in my home directory configured however it needs to be configured and this should be standardized for all GUI's.
But this only defines how a program is installed for a user. Unlike Windows, linux is a multi-user system at its very heart. So distributions do not install things in the user directories. In Linux it's common to put global configuration files in /etc - often under a sub-directory in the case that there are multiple files. This is VERY common.
So for a GUI, you might have /etc/myGUI/myGUI.cfg
Note that a user can have his OWN private configuration in his home directory using a dot file (which is hidden from normal directory listings) and can be a directory or a simple configuration file. Typically, the private configuration either adds to the global configuration or completely replaces it.
If you want to standardize this, you might define a generic configuration file that each conforming GUI should honor. e.g.
/home/joe/.generic_chess/
/etc/generic_chess/
In these directories would be any number of individual chess program configuration files. These are not configuration files for the chess engines themselves, they will have their own if they have any at all - these are configuration files that define how the GUI interacts with them and tell them what programs are available for installation.
Whatever is done, you really want to change as little as possible about how software is set up and configured. You don't want to define some elaborate system that is especially convenient for the chess community but not standard unix practice.
hgm wrote:I think there is a great need for a btter interaction beteen installing GUIs on Linux and installing engines for those GUIs. Currentlly the burdon of configuring the GUI to use the engine is on the user, who would have to go on instructions provided in the engine docs. This is a very undesirable situation.
What I had in mind is that we would decide upon some standard system directory, like /usr/share/games/engines/, where engines could 'drop' a file during their install to announce their presence, and provide some info about themselves. GUIs could then scan this directory to kno hich engines are on the system, and retrieve the info on how to configure the GUI to use it.
For Chess engines it would obviously be important to kno if the engine is UCI or WB, what command is needed to start up the engine, which game (e.g. Chess variant) it plays, if it plays only one, if it has its own opening book, how it reports the score (white POV or stm POV), what its approximate Elo is, etc. And perhaps if it has special demands for specific GUIs, by recommending some GUI-specific GUI options.
For instance, something like
UCI command = fruit
Game = chess
Book = true
Score POV = stm
XBoard options = -fSAN
SCID options = whatever
...
or
WB command = maxqi
Game = xiangqi
Book = false
Score POV = stm
XBoard options = -fSAN -boardSize 49
Any suggestions?
Capital punishment would be more effective as a preventive measure if it were administered prior to the crime.