JDK-8058197 : AWT fails on generic non-reparenting window managers
  • Type: Bug
  • Component: client-libs
  • Sub-Component: java.awt
  • Affected Version: 8u20
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • OS: linux
  • CPU: x86
  • Submitted: 2014-09-10
  • Updated: 2017-05-17
  • Resolved: 2014-10-22
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 8 JDK 9
8u40Fixed 9 b38Fixed
Description
FULL PRODUCT VERSION :
All versions of the JVM

ADDITIONAL OS VERSION INFORMATION :
Any OS that uses the X window system with a non-reparenting window manager (e.g. tiling window managers like xmonad or dwm)

A DESCRIPTION OF THE PROBLEM :
Copied from the AWT-dev mailing list at http://mail.openjdk.java.net/pipermail/awt-dev/2014-September/008479.html and http://mail.openjdk.java.net/pipermail/awt-dev/2014-September/008477.html


AWT currently includes a (very incomplete) hard-coded list of
non-reparenting window managers. To work around this, many distributions
patch openjdk to add support for this to be controlled by an environment
variable (_JAVA_AWT_WM_NONREPARENTING), see for instance
(https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=508650 or
https://projects.archlinux.org/svntogit/packages.git/plain/trunk/openjdk7_nonreparenting-wm.diff?h=packages/java7-openjdk)

A more minimal implementation than the above is to add an extra clause
to  isNonReparentingWM in XWM.java something along the lines of
(XWM.getWMID() == XWM.OTHER_WM &&
XToolkit.getEnv("_JAVA_AWT_WM_NONREPARENTING") != null) which avoids the
need to define a new WM.

This change seems like it would have minimal side effects but greatly
improve usability (a quick google search for java tiling window manager
reveals a lot of pain surrounding this issue).



REPRODUCIBILITY :
This bug can be reproduced always.

CUSTOMER SUBMITTED WORKAROUND :
Copied from the AWT-dev mailing list at http://mail.openjdk.java.net/pipermail/awt-dev/2014-September/008479.html and http://mail.openjdk.java.net/pipermail/awt-dev/2014-September/008477.html


Many distributions
patch openjdk to add support for this to be controlled by an environment
variable (_JAVA_AWT_WM_NONREPARENTING), see for instance
(https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=508650 or
https://projects.archlinux.org/svntogit/packages.git/plain/trunk/openjdk7_nonreparenting-wm.diff?h=packages/java7-openjdk)