If your web browser formats this page incorrectly, try viewing the page source. In netscape 4, click the view menu, then click page source. gnome 2 configuration Configuration data for gnome programs is stored in a database, sort of like the windows registry. The database and the programs for accessing the database are called gconf. The database has a directory structure. The database is divided into parts. Each part is called a directory. Each directory is divided into parts. Each of those parts is also called directories. Those directories are divided into more directories, and so on. Related data are grouped together into a directory, and related groups are grouped together into a parent directory. I think this speeds up database access, because we don't need to search the whole database, only the relevant directories. The database is usually configured as three parts: mandatory, user, and default. The mandatory part is things which are set by the system administrator and which users are NOT allowed to change. It is usually kept in /etc/gconf/gconf.xml.mandatory/. It is empty in most linux distributions. The user part is settings which have been changed by the user. It is usually kept in ~/.gconf/. The default part is things which are set by the system administrator, but which users are allowed to change. It is usually kept in /etc/gconf/gconf.xml.defaults/. In most linux distributions, it is first empty, then each gnome package adds its settings. Schema has two meanings. The string 'schema' is frequently used within the database. I do not know what it means. I did not understand that part of the documentation. It seems to have something to do with grouping data, but the directory structure of the database already does that. Outside the database, a schema is a set of data which is formatted and ready to be loaded into the database. Gnome packages include *.schemas files which are put in /etc/gconf/schemas, and the package postinstall script loads the data into the database. Most fedora 8 and fedora 13 postinstall scripts do export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` gconftool-2 --makefile-install-rule /etc/gconf/schemas/[something].schemas except gnome-panel does export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` gconftool-2 --direct --config-source=$GCONF_CONFIG_SOURCE --load /etc/gconf/schemas/panel-default-setup.entries gconftool-2 --direct --config-source=$GCONF_CONFIG_SOURCE --load /etc/gconf/schemas/panel-default-setup.entries /apps/panel The gnome-panel files are *.entries instead of *.schemas, and begin instead of I do not know why the gnome-panel *.entries file is installed twice. The second time it uses /apps/panel, which overrides base="/apps/panel/default_setup" in the third line of the file. So the data is installed in two directories. Once the data are installed into the database, the *.schemas files are not used again. The obvious feature of gnome is the bars at the top and bottom of the screen. These are gnome-panel. The usual configuration has in the upper left: menu applet, then some launchers. In upper right: clock/calender applet, volume control applet, fast window switcher applet, notification area/system tray applet. In lower left corner: show desktop/minimize all windows applet, window buttons applet. In lower right corner: trash applet, workspace switcher applet. The default set of applets and launchers is loaded into the database by gnome-panel postinstall script from /etc/gconf/schemas/panel-default-setup.entries. The notification area/system tray is called the notification area in the gnome documentation, but the applet which controls it is called system tray. The notification area/system tray applet has icons for programs. These are programs which started when you logged into or started xwindows. Some programs run in the background and only appear in the notification area/system tray when they want to notify you of something. Other programs are in the notification area/system tray whenever they are running, like an applet. Some programs can be started from the menu, or from the notification area/system tray. If gnome is configured to start a program when gnome starts, and to put the program in the notification area/system tray, then you will be able to switch to the program in less time, but gnome will take more time to start, and the program will consume cpu time and memory because it is always running in the background. Some icons in the upper right corner are in the notification area/system tray and some are not. It is not obvious which are which, but it usually does not matter. Sometimes a sound card driver installs a mixer program into the notification area/system tray, which results in two volume controls in the upper right corner. One represents the gnome volume control applet and is not in the notification area/system tray. The other represents the sound card driver's mixer program and is in the notification area/system tray. To edit the gconf gnome configuration database, there is a gui program gconf-editor, and a command line program gconftool-2. The following command reads the number of workspaces from the database: gconftool-2 --direct --config-source=$(gconftool-2 --get-default-source) \ --get /apps/metacity/general/num_workspaces The following command changes the number of workspaces: gconftool-2 --direct --config-source=$(gconftool-2 --get-default-source) \ --type int --set /apps/metacity/general/num_workspaces 5 The --direct --config-source= options are not needed, but I prefer to use them so that I am more sure whether gconftool-2 is accessing the mandatory, user, or default part of the database. $(gconftool-2 --get-default-source) becomes xml:merged:/etc/gconf/gconf.xml.defaults in fedora 8 and fedora 13. We could use xml:merged:/etc/gconf/gconf.xml.defaults directly. The internet says to use xml:readwrite:/etc/gconf/gconf.xml.defaults. That seems to work the same. I don't know what the difference is. The documentation says we have to use --type when using --set, even though it should be able to get the old type from the database. The following creates a temporary file with many keys, and uses gconftool-2 to load them all into the database at once. This works in fedora 8 and fedora 13. # I think the default gnome configuration should have a loadmeter near the # clock, and a launcher for gnome-terminal near the launchers for web # browser and email. This requires modifying the gconf gnome configuration # database. We need to set some keys for the loadmeter applet, add the # loadmeter applet to the list of applets, set some keys for the # gnome-terminal launcher object, and add the gnome-terminal launcher object # to the list of objects. # for the keys, I used the file /etc/gconf/schemas/panel-default-setup.entries # as an example of how to set up a launcher object and an applet. Here is a # temporary file with the keys for the gnome-terminal launcher object and the # loadmeter applet in the same format as in # /etc/gconf/schemas/panel-default-setup.entries cat << endcat > /tmp/changes_to_gconf.entries objects/gnome_terminal_launcher/object_type /schemas/apps/panel/objects/object_type launcher-object objects/gnome_terminal_launcher/toplevel_id /schemas/apps/panel/objects/toplevel_id top_panel objects/gnome_terminal_launcher/position /schemas/apps/panel/objects/position 2 objects/gnome_terminal_launcher/panel_right_stick /schemas/apps/panel/objects/panel_right_stick false objects/gnome_terminal_launcher/locked /schemas/apps/panel/objects/locked false objects/gnome_terminal_launcher/launcher_location /schemas/apps/panel/objects/launcher_location /usr/share/applications/gnome-terminal.desktop objects/gnome_terminal_launcher/bonobo_iid/schemas/apps/panel/objects/bonobo_iid objects/gnome_terminal_launcher/attached_toplevel_id/schemas/apps/panel/objects/attached_toplevel_id objects/gnome_terminal_launcher/tooltip/schemas/apps/panel/objects/tooltip objects/gnome_terminal_launcher/use_custom_icon/schemas/apps/panel/objects/use_custom_icon objects/gnome_terminal_launcher/custom_icon/schemas/apps/panel/objects/custom_icon objects/gnome_terminal_launcher/use_menu_path/schemas/apps/panel/objects/use_menu_path objects/gnome_terminal_launcher/menu_path/schemas/apps/panel/objects/menu_path objects/gnome_terminal_launcher/action_type/schemas/apps/panel/objects/action_type applets/multi_load_applet/object_type /schemas/apps/panel/objects/object_type bonobo-applet applets/multi_load_applet/toplevel_id /schemas/apps/panel/objects/toplevel_id top_panel applets/multi_load_applet/position /schemas/apps/panel/objects/position 1 applets/multi_load_applet/panel_right_stick /schemas/apps/panel/objects/panel_right_stick true applets/multi_load_applet/locked /schemas/apps/panel/objects/locked true applets/multi_load_applet/bonobo_iid /schemas/apps/panel/objects/bonobo_iid OAFIID:GNOME_MultiLoadApplet applets/multi_load_applet/attached_toplevel_id/schemas/apps/panel/objects/attached_toplevel_id applets/multi_load_applet/tooltip/schemas/apps/panel/objects/tooltip applets/multi_load_applet/use_custom_icon/schemas/apps/panel/objects/use_custom_icon applets/multi_load_applet/custom_icon/schemas/apps/panel/objects/custom_icon applets/multi_load_applet/use_menu_path/schemas/apps/panel/objects/use_menu_path applets/multi_load_applet/menu_path/schemas/apps/panel/objects/menu_path applets/multi_load_applet/launcher_location/schemas/apps/panel/objects/launcher_location applets/multi_load_applet/action_type/schemas/apps/panel/objects/action_type endcat # load keys into gconf gnome configuration database using the same load # commands as gnome-panel postinstall script. I am loading keys twice into # two different gconf directories because gnome-panel postinstall script # loads keys twice. I don't know why gnome-panel postinstall script loads # keys twice. GCONF_DEFAULT_CONFIG_SOURCE=$(gconftool-2 --get-default-source) gconftool-2 --direct --config-source="$GCONF_DEFAULT_CONFIG_SOURCE" --load \ /tmp/changes_to_gconf.entries gconftool-2 --direct --config-source="$GCONF_DEFAULT_CONFIG_SOURCE" --load \ /tmp/changes_to_gconf.entries /apps/panel rm /tmp/changes_to_gconf.entries # Add the object to the object list and add the applet to the applet list. # Since gnome-panel postinstall script installs keys to two places, there # are two versions of each list, and we should change both versions of both # lists. # We could copy the lists from /etc/gconf/schemas/panel-default-setup.entries, # add our entries, and write the modified lists to gconf. We could have done # this in the temporary file above. But that requires assuming that the lists # have not changed since installation of fedora 8. The lists probably have not # changed, but I prefer not to make that assumption. So I use gconftool-2 # --set commands instead. # When gconftool-2 writes something to a list, gconftool-2 replaces the old # list with the new list. But we want to add something to a list, not # replace a list. So we need to read the old list, then combine the old and # new lists, then write the combined list. # We use gconftool-2 --get to read the old list. The output of gconftool-2 # --get is like this: #Resolved address "xml:merged:/etc/gconf/gconf.xml.defaults" to a writable configuration source at position 0 #[tomboy,mixer,clock,systray,show_desktop_button,window_list,workspace_switcher,trash_applet,fast_user_switch_applet] # We need to discard the first line. We need to add the new items inside the # square brackets. It would be easy to add the new items to the beginning or # end of the old list, but that would be outside the square brackets. So I # used ${OLD_LIST#*[}, which means everything after the first square bracket # of $OLD_LIST. That deletes the unwanted first line and the first square # bracket. With the first square bracket gone, we can add new items to the # beginning of the list, and then add a new square bracket to the beginning. # If we had skipped --direct --config-source= when doing gconftool-2 --get, # the output would have been only one line, and we would not have needed to # discard the first line. But I don't like running gconftool-2 without # --direct --config-source= because I am not sure which part of gconf it is # accessing, and we still would have had to get around the first or last # square bracket. OLD_LIST=$(gconftool-2 --direct --config-source="$GCONF_DEFAULT_CONFIG_SOURCE" --get /apps/panel/general/applet_id_list) NEW_LIST='[multi_load_applet,'${OLD_LIST#*[} gconftool-2 --direct --config-source="$GCONF_DEFAULT_CONFIG_SOURCE" \ --type=list --list-type=string --set /apps/panel/default_setup/general/applet_id_list "$NEW_LIST" gconftool-2 --direct --config-source="$GCONF_DEFAULT_CONFIG_SOURCE" \ --type=list --list-type=string --set /apps/panel/general/applet_id_list "$NEW_LIST" OLD_LIST=$(gconftool-2 --direct --config-source="$GCONF_DEFAULT_CONFIG_SOURCE" --get /apps/panel/general/object_id_list) NEW_LIST='[gnome_terminal_launcher,'${OLD_LIST#*[} gconftool-2 --direct --config-source="$GCONF_DEFAULT_CONFIG_SOURCE" \ --type=list --list-type=string --set /apps/panel/default_setup/general/object_id_list "$NEW_LIST" gconftool-2 --direct --config-source="$GCONF_DEFAULT_CONFIG_SOURCE" \ --type=list --list-type=string --set /apps/panel/general/object_id_list "$NEW_LIST" I am not sure about the meanings of the various keys for object launchers and applets, but here are some guesses: panel_right_stick=true means the icon should go on the RIGHT end of the bar/panel; panel_right_stick=false means the icon should go on the LEFT end of the bar/panel. position is how close the icon should be to the left/right end of the bar/panel; 0 is closest and higher numbers are further away. position is relative position, not absolute position. The first icon is at end of the bar/panel, the next icon is beside the first icon, etc. position determines in what order the icons appear, but the actual location of any icon is determined by how many icons are closer to the end of the bar/panel. If two icons have the same position, I don't know how gnome-panel decides which should be closer to the end. I don't know what locked means, but in /etc/gconf/schemas/panel-default-setup.entries, locked is true for applets and false for launcher objects.