Comment corriger le décalage du pointeur de la souris des applications Java dans Awesome WM?

15

Comment reproduire dans Awesome WM v3.5.2 à 3.5.5 (jusqu'à présent):

  1. Installez OpenJDK ou Oracle Java 7 . Ce bug a été observé avec les deux.
  2. Démarrez une nouvelle session Awesome WM avec la configuration par défaut .
  3. Démarrez jEdit ou PyCharm . Ce bug a été observé avec les deux.
    • Déplacez le pointeur de la souris et observez comment il change selon que vous survolez du code, des fichiers de projet ou des menus. Cela devrait fonctionner normalement.
    • Cliquez et relâchez dans le menu Fichier , entrez dans l'un des sous-menus et observez comment l'élément placé directement sous le pointeur de la souris est constamment concentré.
  4. Appuyez sur Mod4+ à Spaceplusieurs reprises jusqu'à ce que la mise en page flottante soit activée (l'application sera presque en plein écran) ou ouvrez une autre application dans la même balise.

À ce stade, je m'attendrais à ce que la souris se comporte comme elle le fait avec les applications "normales". Au lieu de cela, j'observe ce qui suit:

  • Lorsque vous cliquez et naviguez dans les menus avec la souris, le pointeur de la souris et l'élément de menu focalisé sont décalés verticalement l'un de l'autre, apparemment avec la même quantité de pixels que la hauteur de la barre d'état.
  • Lorsque vous survolez des éléments divers comme précédemment, l' icône du curseur sera définie comme si le pointeur de la souris était plus haut sur l'écran. Par exemple, en survolant la ligne de texte supérieure, vous ne verrez pas de curseur de texte.

C'est comme si quelque chose ne détectait pas que les coordonnées de la fenêtre avaient changé.

Un bogue similaire mais beaucoup plus gênant se produit lorsque vous ouvrez une autre application dans la même balise - le comportement de la souris est comme si la fenêtre n'avait pas bougé du tout.

Lorsque vous basculez une autre balise qui a déjà une application ouverte - le "bureau virtuel de la souris" est déplacé en haut à gauche de l'écran principal .

Étant donné que ces bogues ont été observés à la fois dans OpenJDK et Oracle Java, avec différentes applications Java, il semble très probable que le bogue se trouve dans Awesome WM.

Question connexe , article . J'ai essayé les correctifs _JAVA_AWT_WM_NONREPARENTINGet wmname, mais non.

l0b0
la source
Je pense que le dernier Awesome est un WM reparenting donc l'option NONREPARENTING ne devrait pas être nécessaire.
dknight

Réponses:

1

D'après mon expérience, vous devez ajouter des définitions spéciales à la source du gestionnaire de fenêtres.

Il m'est arrivé cela il y a quelques années dans le marcogestionnaire de fenêtres du bureau MATE ; le «correctif» consistait à faire prétendre marco à son projet parent, metacity, à utiliser les correctifs intégrés du JDK pour metacity.

de src/core/display.c:

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

Ce correctif sent ce qui est arrivé à la chaîne d'agent utilisateur dans le monde des navigateurs Web, mais cela a fonctionné pour moi.

De plus, le wiki d'archives mentionne même Awesome WM dans la section sur l'emprunt d'identité d'autres gestionnaires de fenêtres, où il recommande wmname:
https://wiki.archlinux.org/index.php/Java#Impersonate_another_window_manager

Vous pouvez utiliser le nom wm de suckless.org pour faire croire à la JVM que vous exécutez un autre gestionnaire de fenêtres. Cela peut résoudre un problème de rendu des interfaces graphiques Java survenant dans les gestionnaires de fenêtres comme Awesome ou Dwm ou Ratpoison.

$ wmname LG3D

Vous devez redémarrer l'application en question après avoir lancé la commande wmname.

Cela fonctionne parce que la machine virtuelle Java contient une liste codée en dur de gestionnaires de fenêtres connus, sans re-parentalité. Pour une ironie maximale, certains utilisateurs préfèrent emprunter l'identité de LG3D, le gestionnaire de fenêtres non-re-parental écrit par Sun, en Java.

Wyatt8740
la source
-2

Cela semble être un bug lié à Java connu sous Linux: https://netbeans.org/bugzilla/show_bug.cgi?id=227754

Sur l'URL ci-dessus, vous pouvez trouver une solution de contournement pour NetBeans IDE, la solution de contournement qui fonctionne pour l'application Java que j'utilise est de NE PAS maximiser l'application Java en appuyant sur le bouton Agrandir, mais de redimensionner la fenêtre manuellement à la taille que vous préférez. Veuillez partager des informations si cela vous aide, merci!

stemd
la source
Il n'y a pas de bouton pour maximiser dans Awesome WM. L'utilisation de la mise en page flottante a aggravé la situation (toute la fenêtre est grise jusqu'à ce que je modifie la mise en page), et "Open" JDK applique l'enregistrement même pour regarder les bogues.
l0b0
En fait, il semble que openjdk.java.net oblige les utilisateurs à imprimer, signer, numériser et envoyer par e-mail l'accord des contributeurs Oracle pour être un «contributeur», ce qui est probablement nécessaire pour voir leur base de données de bogues. Je suppose que le contenu doit être assez horrible.
l0b0
Et le réglage DESKTOP_SESSIONne fonctionne pas. Essayé avec plusieurs des valeurs suggérées.
l0b0