--- rxvt-unicode/src/xdefaults.C 2007/10/09 15:23:59 1.115 +++ rxvt-unicode/src/xdefaults.C 2007/11/23 11:17:37 1.123 @@ -111,7 +111,7 @@ BOOL (Rs_scrollWithBuffer, "scrollWithBuffer", "sw", Opt_scrollWithBuffer, 0, "scroll-with-buffer"), #if ENABLE_TRANSPARENCY BOOL (Rs_transparent, "inheritPixmap", "ip", Opt_transparent, 0, "inherit parent pixmap"), - SWCH ("tr", Opt_transparent, 0, NULL), + BOOL (Rs_transparent, "transparent", "tr", Opt_transparent, 0, "inherit parent pixmap"), STRG (Rs_color + Color_tint, "tintColor", "tint", "color", "tint color"), STRG (Rs_shade, "shading", "sh", "%", "shade background by x %."), #endif @@ -169,14 +169,14 @@ RSTRG (Rs_color + Color_IT, "colorIT", "color"), RSTRG (Rs_color + Color_UL, "colorUL", "color"), RSTRG (Rs_color + Color_RV, "colorRV", "color"), -#endif /* ! NO_BOLD_UNDERLINE_REVERSE */ +#endif /* ! NO_BOLD_UNDERLINE_REVERSE */ #if ENABLE_FRILLS RSTRG (Rs_color + Color_underline, "underlineColor", "color"), #endif #ifdef KEEP_SCROLLCOLOR RSTRG (Rs_color + Color_scroll, "scrollColor", "color"), RSTRG (Rs_color + Color_trough, "troughColor", "color"), -#endif /* KEEP_SCROLLCOLOR */ +#endif /* KEEP_SCROLLCOLOR */ #ifdef OPTION_HC STRG (Rs_color + Color_HC, "highlightColor", "hc", "color", "highlight color"), #endif @@ -184,7 +184,7 @@ STRG (Rs_color + Color_cursor, "cursorColor", "cr", "color", "cursor color"), /* command-line option = resource name */ RSTRG (Rs_color + Color_cursor2, "cursorColor2", "color"), -#endif /* NO_CURSORCOLOR */ +#endif /* NO_CURSORCOLOR */ STRG (Rs_color + Color_pointer_fg, "pointerColor", "pr", "color", "pointer color"), STRG (Rs_color + Color_pointer_bg, "pointerColor2", "pr2", "color", "pointer bg color"), STRG (Rs_color + Color_border, "borderColor", "bd", "color", "border color"), @@ -205,7 +205,7 @@ STRG (Rs_preeditType, "preeditType", "pt", "style", "input style: style = OverTheSpot|OffTheSpot|Root"), STRG (Rs_imLocale, "imLocale", "imlocale", "string", "locale to use for input method"), STRG (Rs_imFont, "imFont", "imfont", "fontname", "fontset for styles OverTheSpot and OffTheSpot"), -#endif /* USE_XIM */ +#endif /* USE_XIM */ STRG (Rs_name, NULL, "name", "string", "client instance, icon, and title strings"), STRG (Rs_title, "title", "title", "string", "title name for window"), STRG (Rs_title, NULL, "T", NULL, NULL), /* short form */ @@ -246,7 +246,7 @@ STRG (Rs_modifier, "modifier", "mod", "modifier", "meta modifier = alt|meta|hyper|super|mod1|...|mod5"), #ifdef CUTCHAR_RESOURCE RSTRG (Rs_cutchars, "cutchars", "string"), -#endif /* CUTCHAR_RESOURCE */ +#endif /* CUTCHAR_RESOURCE */ RSTRG (Rs_answerbackstring, "answerbackString", "string"), #ifndef NO_SECONDARY_SCREEN BOOL (Rs_secondaryScreen, "secondaryScreen", "ssc", Opt_secondaryScreen, 0, "enable secondary screen"), @@ -265,9 +265,6 @@ STRG (Rs_blendtype, "blendType", "blt", "string", "background image blending type - alpha, tint, etc..."), STRG (Rs_blurradius, "blurRadius", "blr", "HxV", "Gaussian Blur radii to apply to the root background"), #endif -#ifndef NO_RESOURCES - INFO ("xrm", "string", "X resource"), -#endif INFO ("e", "command arg ...", "command to execute") }; @@ -550,7 +547,7 @@ if (optList[entry].doff != -1) { if (flag == resval_on && i+1 == argc) - rxvt_fatal ("option '%s' needs an argument, aborting.\n", argv [i]); + rxvt_fatal ("option '%s' requires an argument, aborting.\n", argv [i]); rs[optList[entry].doff] = flag == resval_on ? argv[++i] : resval_undef; } @@ -563,19 +560,30 @@ rs[optList[entry].doff] = flag; } } - else +#ifndef NO_RESOURCES + else if (!strcmp (opt, "xrm")) + { + if (i+1 < argc) + XrmPutLineResource (&option_db, argv[++i]); + } +#endif #ifdef KEYSYM_RESOURCE - if (!strncmp (opt, "keysym.", sizeof ("keysym.") - 1)) - { - if (i+1 < argc) - parse_keysym (opt + sizeof ("keysym.") - 1, argv[++i]); - } - else -#endif - { - bad_option = 1; - rxvt_warn ("\"%s\": unknown or malformed option.\n", opt); - } + else if (!strncmp (opt, "keysym.", sizeof ("keysym.") - 1)) + { + if (i+1 < argc) + { + char *res = (char *)malloc (strlen (opt) + strlen (argv[++i]) + 6); + sprintf (res, "*.%s: %s\n", opt, argv[i]); + XrmPutLineResource (&option_db, res); + free (res); + } + } +#endif + else + { + bad_option = 1; + rxvt_warn ("\"%s\": unknown or malformed option.\n", opt); + } } if (bad_option) @@ -760,8 +768,8 @@ return 1; } -# endif /* KEYSYM_RESOURCE */ -#endif /* NO_RESOURCES */ +# endif /* KEYSYM_RESOURCE */ +#endif /* NO_RESOURCES */ static char * get_res (XrmDatabase database, const char *program, const char *option) @@ -803,6 +811,9 @@ rxvt_term::extract_resources () { #ifndef NO_RESOURCES + XrmDatabase database = XrmGetDatabase (dpy); + XrmMergeDatabases (option_db, &database); + option_db = NULL; /* * Query resources for options that affect us */ @@ -841,7 +852,6 @@ * [R5 or later]: enumerate the resource database */ # ifdef KEYSYM_RESOURCE - XrmDatabase database = XrmGetDatabase (dpy); XrmName name_prefix[3]; XrmClass class_prefix[3]; @@ -865,7 +875,7 @@ # endif # endif -#endif /* NO_RESOURCES */ +#endif /* NO_RESOURCES */ } /*----------------------- end-of-file (C source) -----------------------*/