GNU/Linux >> Znalost Linux >  >> Linux

Jak opravit Java aplikace posunutí ukazatele myši v Awesome Wm?

Jak reprodukovat v Awesome WM v3.5.2 až 3.5.5 (zatím):

  1. Nainstalujte OpenJDK nebo Oracle Java 7 . Tato chyba byla pozorována u obou.
  2. Spusťte novou relaci Awesome WM s výchozí konfigurací .
  3. Spusťte buď jEdit nebo PyCharm . Tato chyba byla pozorována u obou.
    • Posouvejte ukazatel myši a sledujte, jak se mění v závislosti na tom, zda umístíte kurzor na kód, soubory projektu nebo nabídky. To by mělo fungovat normálně.
    • Klikněte a uvolněte Soubor přejděte do jedné z podnabídek a sledujte, jak je položka přímo pod ukazatelem myši neustále zaostřena.
  4. Stiskněte Mod4 +Mezerník opakovaně až do plovoucího rozvržení je aktivován (aplikace bude téměř přes celou obrazovku) nebo otevřete jinou aplikaci ve stejné značce.

V tuto chvíli bych očekával, že se myš bude chovat jako u „normálních“ aplikací. Místo toho pozoruji následující:

  • Při klikání a procházení nabídek pomocí myši budou ukazatel myši a vybraná položka nabídky vertikálně posunuty od sebe, zdánlivě ve stejném počtu pixelů, jako je výška stavového řádku.
  • Když umístíte kurzor nad různé položky jako dříve, zobrazí se ikona kurzoru bude nastaveno, jako by byl ukazatel myši výše na obrazovce. Například, když najedete na horní řádek textu, neuvidíte textový kurzor.

Je to, jako by něco nezjistilo, že se souřadnice okna změnily.

Podobná, ale mnohem nepříjemnější chyba se stane, když otevřete jinou aplikaci se stejným tagem – chování myši je jako kdyby se okno vůbec nepohnulo.

Když přepnete jinou značku, která již má otevřenou aplikaci – „Plocha virtuální myši“ se přesune do levého horního rohu primární obrazovky .

Vzhledem k tomu, že tyto chyby byly pozorovány v OpenJDK i Oracle Java, s různými Java aplikacemi, zdá se velmi pravděpodobné, že chyba je v Awesome WM.

Související otázka, článek. Vyzkoušel jsem _JAVA_AWT_WM_NONREPARENTING a wmname opravy, ale ne.

Přijatá odpověď:

Podle mých zkušeností musíte do zdroje pro správce oken přidat speciální definice.

Stalo se mi to před pár lety v marco na ploše MATE správce oken; „oprava“ spočívala v tom, aby Marco předstíral, že je jeho mateřským projektem, metacity, aby využil vestavěné opravy JDK pro metacity.

z src/core/display.c :

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

Tato oprava zavání tím, co se stalo s řetězcem user agent ve světě webových prohlížečů, ale fungovalo to pro mě.

Související:Příkaz Ubuntu runuser?

Arch wiki navíc dokonce zmiňuje Awesome WM v sekci o vydávání se za jiné správce oken, kde doporučuje wmname :
https://wiki.archlinux.org/index.php/Java#Impersonate_another_window_manager

Můžete použít wmname ze suckless.org, aby JVM věřilo, že
používáte jiný správce oken. To může vyřešit
problém s vykreslováním GUI Java, který se vyskytuje ve správcích oken, jako je Awesome nebo Dwm nebo
Ratpoison.

$ wmname LG3D

Po zadání příkazu wmname
musíte danou aplikaci restartovat.

Funguje to proto, že JVM obsahuje pevně zakódovaný seznam známých
správců oken, které se nemění. Pro maximální ironii někteří uživatelé dávají přednost
vydávat se za LG3D, správce oken bez opětovného rodičovství napsaný
Sunem v Javě.


Linux
  1. Jak nainstalovat Javu na Linux

  2. Jak opravit problém s neviditelným kurzorem myši v Ubuntu GNOME

  3. Jak zobrazit umístění ukazatele myši pomocí kliknutí myší?

  1. Jak nainstalovat Javu na Ubuntu 22.04

  2. Jak skryjete ukazatel myši pod Linuxem/X11?

  3. Jak mohu používat úžasného správce oken?

  1. Jak některé aplikace přijímají kliknutí myší v Bash přes Ssh?

  2. Jak nastavím velikost ukazatele myši X v subsystému Windows pro Linux

  3. Java SecureRandom neblokuje? Jak?