add: wDefaultsMergeGlobalMenus(WDRootMenu);
context: wDefaultsCheckDomains(void *foo){    WScreen *scr;    struct stat stbuf;    WMPropList *shared_dict = NULL;    WMPropList *dict;    int i;#ifdef HEARTBEAT    puts("Checking domains...");#endif    if (stat(WDWindowMaker->path, &stbuf)>=0        && WDWindowMaker->timestamp < stbuf.st_mtime) {#ifdef HEARTBEAT        puts("Checking WindowMaker domain");#endif        WDWindowMaker->timestamp = stbuf.st_mtime;        /* global dictionary */        shared_dict = readGlobalDomain("WindowMaker", True);        /* user dictionary */        dict = WMReadPropListFromFile(WDWindowMaker->path);        if (dict) {            if (!WMIsPLDictionary(dict)) {                WMReleasePropList(dict);                dict = NULL;                wwarning(_("Domain %s (%s) of defaults database is corrupted!"),                         "WindowMaker", WDWindowMaker->path);            } else {                if (shared_dict) {                    WMMergePLDictionaries(shared_dict, dict, True);                    WMReleasePropList(dict);                    dict = shared_dict;                    shared_dict = NULL;                }                for (i=0; i<wScreenCount; i++) {                    scr = wScreenWithNumber(i);                    if (scr)                        wReadDefaults(scr, dict);                }                if (WDWindowMaker->dictionary) {                    WMReleasePropList(WDWindowMaker->dictionary);                }                WDWindowMaker->dictionary = dict;            }        } else {            wwarning(_("could not load domain %s from user defaults database"),                     "WindowMaker");        }        if (shared_dict) {            WMReleasePropList(shared_dict);        }    }    if (stat(WDWindowAttributes->path, &stbuf)>=0        && WDWindowAttributes->timestamp < stbuf.st_mtime) {#ifdef HEARTBEAT        puts("Checking WMWindowAttributes domain");#endif        /* global dictionary */        shared_dict = readGlobalDomain("WMWindowAttributes", True);        /* user dictionary */        dict = WMReadPropListFromFile(WDWindowAttributes->path);        if (dict) {            if (!WMIsPLDictionary(dict)) {                WMReleasePropList(dict);                dict = NULL;                wwarning(_("Domain %s (%s) of defaults database is corrupted!"),                         "WMWindowAttributes", WDWindowAttributes->path);            } else {                if (shared_dict) {                    WMMergePLDictionaries(shared_dict, dict, True);                    WMReleasePropList(dict);                    dict = shared_dict;                    shared_dict = NULL;                }                if (WDWindowAttributes->dictionary) {                    WMReleasePropList(WDWindowAttributes->dictionary);                }                WDWindowAttributes->dictionary = dict;                for (i=0; i<wScreenCount; i++) {                    scr = wScreenWithNumber(i);                    if (scr) {                        RImage *image;                        wDefaultUpdateIcons(scr);                        /* Update the panel image if changed */                        /* Don't worry. If the image is the same these                         * functions will have no performance impact. */                        image = wDefaultGetImage(scr, "Logo", "WMPanel");                        if (!image) {                            wwarning(_("could not load logo image for panels: %s"),                                     RMessageForError(RErrorCode));                        } else {                            WMSetApplicationIconImage(scr->wmscreen, image);                            RReleaseImage(image);                        }                    }                }            }        } else {            wwarning(_("could not load domain %s from user defaults database"),                     "WMWindowAttributes");        }        WDWindowAttributes->timestamp = stbuf.st_mtime;        if (shared_dict) {            WMReleasePropList(shared_dict);        }    }#ifndef LITE    if (stat(WDRootMenu->path, &stbuf)>=0        && WDRootMenu->timestamp < stbuf.st_mtime) {        dict = WMReadPropListFromFile(WDRootMenu->path);#ifdef HEARTBEAT        puts("Checking WMRootMenu domain");#endif        if (dict) {            if (!WMIsPLArray(dict) && !WMIsPLString(dict)) {                WMReleasePropList(dict);                dict = NULL;                wwarning(_("Domain %s (%s) of defaults database is corrupted!"),                         "WMRootMenu", WDRootMenu->path);            } else {                if (WDRootMenu->dictionary) {                    WMReleasePropList(WDRootMenu->dictionary);                }                WDRootMenu->dictionary = dict;            }        } else {            wwarning(_("could not load domain %s from user defaults database"),                     "WMRootMenu");        }        WDRootMenu->timestamp = stbuf.st_mtime;    }#endif /* !LITE */    if (!foo)        WMAddTimerHandler(DEFAULTS_CHECK_INTERVAL, wDefaultsCheckDomains, foo);}