+/* get configuration from X resources */
+static void
+getresources(void)
+{
+ char *type;
+ XrmValue xval;
+
+ if (xrm == NULL || xdb == NULL)
+ return;
+
+ if (XrmGetResource(xdb, "xmenu.borderWidth", "*", &type, &xval) == True)
+ GETNUM(config.border_pixels, xval.addr)
+ if (XrmGetResource(xdb, "xmenu.separatorWidth", "*", &type, &xval) == True)
+ GETNUM(config.separator_pixels, xval.addr)
+ if (XrmGetResource(xdb, "xmenu.height", "*", &type, &xval) == True)
+ GETNUM(config.height_pixels, xval.addr)
+ if (XrmGetResource(xdb, "xmenu.width", "*", &type, &xval) == True)
+ GETNUM(config.width_pixels, xval.addr)
+ if (XrmGetResource(xdb, "xmenu.gap", "*", &type, &xval) == True)
+ GETNUM(config.gap_pixels, xval.addr)
+ if (XrmGetResource(xdb, "xmenu.background", "*", &type, &xval) == True)
+ config.background_color = xval.addr;
+ if (XrmGetResource(xdb, "xmenu.foreground", "*", &type, &xval) == True)
+ config.foreground_color = xval.addr;
+ if (XrmGetResource(xdb, "xmenu.selbackground", "*", &type, &xval) == True)
+ config.selbackground_color = xval.addr;
+ if (XrmGetResource(xdb, "xmenu.selforeground", "*", &type, &xval) == True)
+ config.selforeground_color = xval.addr;
+ if (XrmGetResource(xdb, "xmenu.separator", "*", &type, &xval) == True)
+ config.separator_color = xval.addr;
+ if (XrmGetResource(xdb, "xmenu.border", "*", &type, &xval) == True)
+ config.border_color = xval.addr;
+ if (XrmGetResource(xdb, "xmenu.font", "*", &type, &xval) == True)
+ config.font = xval.addr;
+ if (XrmGetResource(xdb, "xmenu.alignment", "*", &type, &xval) == True) {
+ if (strcasecmp(xval.addr, "center") == 0)
+ config.alignment = CenterAlignment;
+ else if (strcasecmp(xval.addr, "left") == 0)
+ config.alignment = LeftAlignment;
+ else if (strcasecmp(xval.addr, "right") == 0)
+ config.alignment = RightAlignment;
+ }
+}
+
+/* set button global variable */
+static void
+setbutton(char *s)
+{
+ size_t len;
+
+ if ((len = strlen(s)) < 1)
+ return;
+ switch (s[len-1]) {
+ case '1': button = Button1; break;
+ case '2': button = Button2; break;
+ case '3': button = Button3; break;
+ default: button = atoi(&s[len-1]); break;
+ }
+}
+
+/* set modifier global variable */
+static void
+setmodifier(char *s)
+{
+ size_t len;
+
+ if ((len = strlen(s)) < 1)
+ return;
+ switch (s[len-1]) {
+ case '1': modifier = Mod1Mask; break;
+ case '2': modifier = Mod2Mask; break;
+ case '3': modifier = Mod3Mask; break;
+ case '4': modifier = Mod4Mask; break;
+ case '5': modifier = Mod5Mask; break;
+ default:
+ if (strcasecmp(s, "Alt") == 0) {
+ modifier = Mod1Mask;
+ } else if (strcasecmp(s, "Super") == 0) {
+ modifier = Mod4Mask;
+ }
+ break;
+ }
+}
+
+/* get configuration from command-line options */
+static void
+getoptions(int argc, char *argv[])