如何在Awesome WM中修复Java应用程序的鼠标指针偏移?


15

如何在Awesome WM v3.5.2到3.5.5中重现(到目前为止):

  1. 安装OpenJDK或Oracle Java 7。两者都观察到此错误。
  2. 使用默认配置启动一个新的Awesome WM会话。
  3. 启动jEditPyCharm。两者都观察到此错误。
    • 移动鼠标指针,并观察其如何根据您将鼠标悬停在代码,项目文件或菜单上而改变。这应该正常工作。
    • 单击并释放在文件菜单上,进入子菜单之一,并观察如何始终将鼠标指针正下方的项目聚焦。
  4. 反复按Mod4+ Space直到浮动布局被激活(该应用程序将几乎全屏显示)使用相同标签打开另一个应用程序。

在这一点上,我希望鼠标的行为与“常规”应用程序相同。相反,我观察到以下内容:

  • 当使用鼠标单击和导航菜单时,鼠标指针和焦点菜单项将在垂直方向上彼此偏移,看起来与状态栏的高度具有相同的像素数量。
  • 当像以前一样将鼠标悬停在其他项目上时,光标图标将被设置为好像鼠标指针在屏幕上方。例如,将鼠标悬停在文本的第一行上,您将看不到文本光标。

好像没有检测到窗口坐标已更改。

当您在同一标签中打开另一个应用程序时,会发生类似但更烦人的错误-鼠标的行为就像窗口根本没有移动一样。

当您切换另一个已打开应用程序的标签时, “虚拟鼠标桌面”将移至主屏幕的左上方

由于已经在OpenJDK和Oracle Java中使用不同的Java应用程序观察到了这些错误,因此该错误很有可能是在Awesome WM中。

相关问题文章。我尝试了_JAVA_AWT_WM_NONREPARENTINGwmname修复,但没有成功。


我认为最新的Awesome是可重用的WM,因此不需要使用NONREPARENTING选项。
dknight

Answers:


1

根据我的经验,您需要为窗口管理器的源添加特殊定义。

几年前,我在MATE桌面的marco窗口管理器中遇到了这种情况。“修复”是使marco假装为其父项目metacity,以利用JDK的内置修复程序进行metacity。

来自src/core/display.c

meta_prop_set_utf8_string_hint (the_display,
                                the_display->leader_window,
                                the_display->atom__NET_WM_NAME,
                                "Metacity (Marco)");

此修复程序可以解决Web浏览器世界中用户代理字符串发生了什么情况,但是对我有用。

此外,拱形Wiki甚至在模拟其他窗口管理器的部分中提到了Awesome WM,并建议wmname
https //wiki.archlinux.org/index.php/Java#Impersonate_another_window_manager

您可以使用suckless.org中的wmname来使JVM相信您正在运行其他窗口管理器。这可以解决出现在窗口管理器(如Awesome或Dwm或Ratpoison)中的Java GUI的渲染问题。

$ wmname LG3D

发出wmname命令后,必须重新启动有问题的应用程序。

之所以可行,是因为JVM包含已知的非重新父窗口管理器的硬编码列表。为了最大程度地讽刺,一些用户更喜欢使用Java模仿LG3D,这是Sun编写的非重新父窗口管理器。


-2

这似乎是Linux上与Java相关的已知错误:https : //netbeans.org/bugzilla/show_bug.cgi?id=227754

在上面的URL上,您可以找到NetBeans IDE的变通办法,该变通办法不适用于我使用的Java应用程序,即不要通过按“最大化”按钮来最大化Java应用程序,而是手动将窗口调整为所需的大小。如果有帮助,请分享信息,谢谢!


在Awesome WM中没有最大化按钮。使用浮动布局会使情况变得更糟(在更改布局之前,整个窗口都是灰色的),“ Open” JDK甚至会强制注册以查看错误。
l0b0

实际上,似乎openjdk.java.net要求用户打印,签名,扫描和通过电子邮件将Oracle Contributor Agreement作为“贡献者”,这可能是查看其错误数据库所必需的。猜猜其中的内容一定很恐怖。
l0b0

而且设置DESKTOP_SESSION不起作用。尝试了几个建议值。
2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.