You are not logged in.

#1 2014-09-05 14:52:19

grimpirate
Member
Registered: 2011-10-26
Posts: 47

[SOLVED]Nonreparenting window manager option not available in openjdk8

I described a behavior I was experiencing with openjdk8 which did not occur with openjdk7. However, I suppose the topic itself was too open-ended to warrant remaining open. There is a fix/hack available for nonreparenting window managers wherein one can use the wmname utility in order to change the window manager name to something that is already recognized as a nonreparenting window manager (for instance LG3D). However, I hadn't used this hack in openjdk7, all I'd needed to do was enable the export _JAVA_AWT_WM_NONREPARENTING=1 line in /etc/profile.d/jre.sh. This resolved any issues.

I uncovered that arch uses a patch to remedy this problem in openjdk7. However, the trunk for openjdk8 includes no such patch, making the export option found in jre.sh rather useless. What is the best way to go about reporting this? Does it qualify as a bug or is this intended?

EDIT:
Went ahead and worked out what the patch should be. Was hoping I could use the ABS and modify the PKGBUILD, but that's a bit more daunting. Hopefully, someone better equipped/experienced could pass along this information to the relevant package maintainers and/or file a bug.

--- src/solaris/classes/sun/awt/X11/XWM.java	2014-09-06 18:41:39.018530981 -0400
+++ src/solaris/classes/sun/awt/X11/XWM.java	2014-09-06 18:46:43.098540372 -0400
@@ -104,7 +104,8 @@
         COMPIZ_WM = 12,
         LG3D_WM = 13,
         CWM_WM = 14,
-        MUTTER_WM = 15;
+        MUTTER_WM = 15,
+        OTHER_NONREPARENTING_WM = 16;
     public String toString() {
         switch  (WMID) {
           case NO_WM:
@@ -596,7 +597,7 @@
     }
 
     static boolean isNonReparentingWM() {
-        return (XWM.getWMID() == XWM.COMPIZ_WM || XWM.getWMID() == XWM.LG3D_WM || XWM.getWMID() == XWM.CWM_WM);
+        return (XWM.getWMID() == XWM.COMPIZ_WM || XWM.getWMID() == XWM.LG3D_WM || XWM.getWMID() == XWM.CWM_WM || XWM.getWMID() == XWM.OTHER_NONREPARENTING_WM);
     }
 
     /*
@@ -786,6 +787,9 @@
             } else if (doIsIceWM && isIceWM()) {
                 awt_wmgr = XWM.ICE_WM;
             }
+            else if (XToolkit.getEnv("_JAVA_AWT_WM_NONREPARENTING") != null) {
+                awt_wmgr = XWM.OTHER_NONREPARENTING_WM;
+            }
             /*
              * We don't check for legacy WM when we already know that WM
              * supports WIN or _NET wm spec.
@@ -1332,6 +1336,7 @@
                   res = new Insets(28, 6, 6, 6);
                   break;
               case NO_WM:
+              case OTHER_NONREPARENTING_WM:
               case LG3D_WM:
                   res = zeroInsets;
                   break;

Last edited by grimpirate (2014-09-21 14:47:07)

Offline

Board footer

Powered by FluxBB