Wie man den Mauszeiger-Offset von Java-Anwendungen in Awesome WM korrigiert?


15

So reproduzieren Sie in Awesome WM v3.5.2 bis 3.5.5 (bis jetzt):

  1. Installieren Sie OpenJDK oder Oracle Java 7 . Dieser Fehler wurde bei beiden beobachtet.
  2. Starten Sie eine neue Awesome WM-Sitzung mit der Standardkonfiguration .
  3. Starten Sie entweder jEdit oder PyCharm . Dieser Fehler wurde bei beiden beobachtet.
    • Bewegen Sie den Mauszeiger und beobachten Sie, wie er sich ändert, je nachdem, ob Sie mit dem Mauszeiger über Code, Projektdateien oder Menüs fahren. Dies sollte normal funktionieren.
    • Klicken Sie kurz auf das Menü Datei , rufen Sie eines der Untermenüs auf und beobachten Sie, wie der Eintrag direkt unter dem Mauszeiger ständig fokussiert ist.
  4. Drücken Sie wiederholt Mod4+, Spacebis das schwebende Layout aktiviert ist (die Anwendung wird fast im Vollbildmodus angezeigt), oder öffnen Sie eine andere Anwendung im selben Tag.

An diesem Punkt würde ich erwarten, dass sich die Maus so verhält wie bei "normalen" Anwendungen. Stattdessen beobachte ich Folgendes:

  • Beim Klicken und Navigieren in Menüs mit der Maus werden der Mauszeiger und das fokussierte Menüelement vertikal voneinander versetzt und haben scheinbar dieselbe Pixelanzahl wie die Höhe der Statusleiste.
  • Wenn Sie wie zuvor über verschiedene Elemente fahren, wird das Cursorsymbol so eingestellt, als befände sich der Mauszeiger oben auf dem Bildschirm. Wenn Sie beispielsweise über die oberste Textzeile fahren, wird kein Textcursor angezeigt.

Es ist, als ob etwas nicht erkennt, dass sich die Fensterkoordinaten geändert haben.

Ein ähnlicher, aber viel ärgerlicher Fehler tritt auf, wenn Sie eine andere Anwendung im selben Tag öffnen - das Verhalten der Maus ist so, als hätte sich das Fenster überhaupt nicht bewegt.

Wenn Sie ein anderes Tag umschalten, bei dem bereits eine Anwendung geöffnet ist, wird der "virtuelle Maus-Desktop" in den oberen linken Bereich des Hauptbildschirms verschoben .

Da diese Fehler sowohl in OpenJDK als auch in Oracle Java mit verschiedenen Java-Anwendungen beobachtet wurden, ist es sehr wahrscheinlich, dass der Fehler in Awesome WM vorliegt.

Verwandte Frage , Artikel . Ich versuchte , die _JAVA_AWT_WM_NONREPARENTINGund wmnameFixes, aber nicht gehen.


Ich denke, der neueste Awesome ist ein Reparenting-WM, daher sollte die Option NONREPARENTING nicht benötigt werden.
Dknight

Antworten:


1

Nach meiner Erfahrung müssen Sie der Quelle spezielle Definitionen für den Fenstermanager hinzufügen.

Das ist mir vor ein paar Jahren im marcoFenstermanager des MATE-Desktops passiert . Die 'Korrektur' bestand darin, marco so zu tun, als sei er das übergeordnete Projekt, Metacity, und die in JDK integrierten Korrekturen für Metacity zu verwenden.

von src/core/display.c:

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

Dieser Fix riecht nach dem, was mit dem User-Agent-String in der Welt der Webbrowser passiert ist, aber er hat bei mir funktioniert.

Darüber hinaus erwähnt das Arch-Wiki Awesome WM in dem Abschnitt über das Imitieren anderer Fenstermanager, in dem es Folgendes empfiehlt wmname:
https://wiki.archlinux.org/index.php/Java#Impersonate_another_window_manager

Sie können den wm-Namen von suckless.org verwenden, um die JVM glauben zu lassen, dass Sie einen anderen Fenstermanager ausführen. Dies kann ein Rendering-Problem von Java-GUIs lösen, das in Fenstermanagern wie Awesome oder Dwm oder Ratpoison auftritt.

$ wmname LG3D

Sie müssen die betreffende Anwendung nach der Ausgabe des Befehls wmname neu starten.

Dies funktioniert, weil die JVM eine fest codierte Liste bekannter, nicht erneut übergeordneter Fenstermanager enthält. Für maximale Ironie bevorzugen einige Benutzer die Darstellung von LG3D, dem von Sun in Java geschriebenen Fenster-Manager ohne erneute Elternschaft.


-2

Dies scheint ein bekannter Java-Fehler unter Linux zu sein: https://netbeans.org/bugzilla/show_bug.cgi?id=227754

Unter der oben angegebenen URL finden Sie eine Problemumgehung für NetBeans IDE. Die Problemumgehung für die von mir verwendete Java-App besteht darin, die Java-App NICHT durch Drücken der Maximierungsschaltfläche zu maximieren, sondern die Fenstergröße manuell auf die von Ihnen bevorzugte Größe zu ändern. Bitte teilen Sie Informationen, wenn diese Ihnen helfen, danke!


In Awesome WM gibt es keine Schaltfläche zum Maximieren. Die Verwendung des schwebenden Layouts machte es noch schlimmer (das gesamte Fenster ist grau, bis ich das Layout ändere), und "Open" JDK erzwingt die Registrierung, um auch Fehler zu erkennen.
08.07.14

Offenbar müssen Benutzer in openjdk.java.net die Oracle-Mitwirkendenvereinbarung ausdrucken, signieren, scannen und per E-Mail versenden, um "Mitwirkende" zu sein. Dies ist vermutlich erforderlich, um die Fehlerdatenbank anzuzeigen. Ich denke, der Inhalt muss ziemlich schrecklich sein.
08.07.14

Und die Einstellung DESKTOP_SESSIONfunktioniert nicht. Versuchte mit mehreren der vorgeschlagenen Werte.
l0b0
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.