GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie behebt man den Mauszeiger-Offset von Java-Anwendungen in Awesome Wm?

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

  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 den Mauszeiger über Code, Projektdateien oder Menüs bewegen. Dies sollte normal funktionieren.
    • Klicken Sie auf die Datei und lassen Sie sie los Menü, rufen Sie eines der Untermenüs auf und beobachten Sie, wie das Element direkt unter dem Mauszeiger die ganze Zeit fokussiert ist.
  4. Drücken Sie Mod4 +Leerzeichen wiederholt, bis das schwebende Layout angezeigt wird aktiviert ist (die Anwendung wird fast im Vollbildmodus angezeigt) oder Öffnen Sie eine andere Anwendung im selben Tag.

An dieser Stelle würde ich erwarten, dass sich die Maus wie bei „normalen“ Anwendungen verhält. Stattdessen beobachte ich Folgendes:

  • Beim Klicken und Navigieren in Menüs mit der Maus werden der Mauszeiger und das fokussierte Menüelement vertikal versetzt voneinander entfernt, scheinbar in der gleichen Anzahl von Pixeln wie die Höhe der Statusleiste.
  • Wenn Sie wie zuvor mit der Maus über verschiedene Elemente fahren, das Cursor-Symbol so gesetzt, als wäre der Mauszeiger weiter oben auf dem Bildschirm. Wenn Sie beispielsweise den Mauszeiger über die oberste Textzeile bewegen, sehen Sie keinen Textcursor.

Es ist, als würde etwas nicht erkennen, 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 Mausverhalten ist als ob sich das Fenster überhaupt nicht bewegt hätte.

Wenn Sie ein anderes Tag umschalten, für das bereits eine Anwendung geöffnet ist – Der „virtuelle Maus-Desktop“ wird oben links auf dem primären Bildschirm verschoben .

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

Verwandte Frage, Artikel. Ich habe den _JAVA_AWT_WM_NONREPARENTING ausprobiert und wmname behebt, aber geht nicht.

Akzeptierte Antwort:

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

Mir ist das vor ein paar Jahren im marco des MATE-Desktops passiert Fenstermanager; Die „Korrektur“ bestand darin, Marco vorzugeben, sein übergeordnetes Projekt Metacity zu sein, um die integrierten Korrekturen des JDK für Metacity zu verwenden.

aus 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.

Verwandt:Ubuntu-Runuser-Befehl?

Darüber hinaus erwähnt das Arch-Wiki sogar Awesome WM im Abschnitt über die Identität anderer Fenstermanager, wo es wmname empfiehlt :
https://wiki.archlinux.org/index.php/Java#Impersonate_another_window_manager

Sie können den wmname von suckless.org verwenden, um die JVM glauben zu machen, 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 neu starten, nachdem Sie den Befehl wmname
ausgegeben haben.

Dies funktioniert, weil die JVM eine fest codierte Liste bekannter,
nicht neu zuordnender Fenstermanager enthält. Für maximale Ironie ziehen es einige Benutzer vor,
LG3D zu imitieren, den Fenstermanager ohne erneute Elternschaft, der von
Sun in Java geschrieben wurde.


Linux
  1. Wie akzeptieren einige Anwendungen einen Mausklick in Bash über SSH?

  2. So installieren Sie Java unter Ubuntu 22.04

  3. Wie versteckt man den Mauszeiger unter Linux/X11?

  4. Wie stelle ich die Größe des X-Mauszeigers im Windows-Subsystem für Linux ein?

  5. Java SecureRandom blockiert nicht? Wie?

So deinstallieren Sie WINE-Anwendungen

So beheben Sie Windows-Updates, die bei 0 % hängen bleiben

So installieren und verwalten Sie Java unter Debian 11

So installieren Sie Java unter Ubuntu 18.04

So installieren Sie Java unter CentOS 8

Wie installiere ich Java unter Ubuntu 18.04?