JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
Embed wmname code from suckless.org to work around stupid sun shit.
[spectrwm.git] / scrotwm.c
index 634e08b..6c1fc24 100644 (file)
--- a/scrotwm.c
+++ b/scrotwm.c
@@ -354,6 +354,7 @@ struct quirk {
        { "OpenOffice.org 2.4", "VCLSalFrame",  SWM_Q_FLOAT },
        { "OpenOffice.org 3.0", "VCLSalFrame",  SWM_Q_FLOAT },
        { "Firefox-bin",        "firefox-bin",  SWM_Q_TRANSSZ },
+       { "Firefox",            "Dialog",       SWM_Q_FLOAT },
        { "Gimp",               "gimp",         SWM_Q_FLOAT | SWM_Q_ANYWHERE },
        { "XTerm",              "xterm",        SWM_Q_XTERM_FONTADJ },
        { "xine",               "Xine Window",  SWM_Q_FLOAT | SWM_Q_ANYWHERE },
@@ -2897,6 +2898,26 @@ setup_screens(void)
        }
 }
 
+void
+workaround(void)
+{
+       int                     i;
+       Atom                    netwmcheck, netwmname, utf8_string;
+       Window                  root;
+
+       /* work around sun jdk bugs, code from wmname */
+       netwmcheck = XInternAtom(display, "_NET_SUPPORTING_WM_CHECK", False);
+       netwmname = XInternAtom(display, "_NET_WM_NAME", False);
+       utf8_string = XInternAtom(display, "UTF8_STRING", False);
+       for (i = 0; i < ScreenCount(display); i++) {
+               root = screens[i].root;
+               XChangeProperty(display, root, netwmcheck, XA_WINDOW, 32,
+                   PropModeReplace, (unsigned char *)&root, 1);
+               XChangeProperty(display, root, netwmname, utf8_string, 8,
+                   PropModeReplace, "LG3D", strlen("LG3D"));
+       }
+}
+
 int
 main(int argc, char *argv[])
 {
@@ -2950,7 +2971,8 @@ main(int argc, char *argv[])
                TAILQ_FOREACH(r, &screens[i].rl, entry)
                        bar_setup(r);
 
-       /* ws[0].focus = TAILQ_FIRST(&ws[0].winlist); */
+       /* set some values to work around bad programs */
+       workaround();
 
        grabkeys();
        stack();