Como corrigir o deslocamento do ponteiro do mouse em aplicativos Java no Awesome WM?

15

Como reproduzir no Awesome WM v3.5.2 até 3.5.5 (até agora):

  1. Instale o OpenJDK ou o Oracle Java 7 . Este bug foi observado com ambos.
  2. Inicie uma nova sessão do Awesome WM com a configuração padrão .
  3. Inicie jEdit ou PyCharm . Este bug foi observado com ambos.
    • Mova o ponteiro do mouse e observe como ele muda dependendo de você estar passando o mouse sobre códigos, arquivos de projeto ou menus. Isso deve funcionar normalmente.
    • Clique e solte no menu Arquivo , insira um dos submenus e observe como o item diretamente sob o ponteiro do mouse está focalizado o tempo todo.
  4. Pressione Mod4 + Espaço repetidamente até que o layout flutuante seja ativado (o aplicativo estará quase em tela cheia) ou abra outra aplicação na mesma tag.

Neste ponto, eu esperaria que o mouse se comportasse como acontece com aplicativos "normais". Em vez disso, observo o seguinte:

  • Ao clicar e navegar pelos menus com o mouse, o ponteiro do mouse e o item de menu focalizado serão deslocados verticalmente um do outro, aparentemente na mesma quantidade de pixels da altura da barra de status.
  • Ao passar o mouse sobre itens diversos como antes, o ícone do cursor será definido como se o ponteiro do mouse estivesse mais alto na tela. Por exemplo, passando o mouse sobre a linha superior do texto, você não verá um cursor de texto.

É como se algo não detectasse que as coordenadas da janela mudaram.

Um bug semelhante, mas muito mais irritante, acontece quando você abre outro aplicativo na mesma tag - o comportamento do mouse é como se a janela não tivesse sido movida.

Quando você alterna outra tag que já tem um aplicativo aberto - a "área de trabalho do mouse virtual" é movida para o canto superior esquerdo da tela principal .

Como esses bugs foram observados no OpenJDK e no Oracle Java, com diferentes aplicativos Java, parece muito provável que o bug esteja no Awesome WM.

Relacionadas pergunta , artigo . Eu tentei as correções _JAVA_AWT_WM_NONREPARENTING e wmname , mas não vá.

    
por l0b0 12.01.2014 / 17:18

2 respostas

1

Você precisa adicionar definições especiais à fonte do gerenciador de janelas, na minha experiência.

Isso aconteceu comigo há alguns anos no gerenciador de janelas marco da área de trabalho MATE; o 'conserto' era fazer o marco fingir ser seu projeto pai, metacity, para utilizar as correções embutidas do JDK para a metacidade.

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)");

Essa correção cheira ao que aconteceu com a string do agente do usuário no mundo dos navegadores da web, mas funcionou para mim.

Além disso, o arch wiki até menciona o Awesome WM na seção sobre a personificação de outros gerenciadores de janela, onde ele recomenda wmname :

You may use the wmname from suckless.org to make the JVM believe you are running a different window manager. This may solve a rendering issue of Java GUIs occurring in window managers like Awesome or Dwm or Ratpoison.

$ wmname LG3D

You must restart the application in question after issuing the wmname command.

This works because the JVM contains a hard-coded list of known, non-re-parenting window managers. For maximum irony, some users prefer to impersonate LG3D, the non-re-parenting window manager written by Sun, in Java.

    
por 20.06.2016 / 18:53
-2

Isso parece ser um bug relacionado ao Java no Linux: link

Na URL acima, você pode encontrar uma solução alternativa para o NetBeans IDE. A solução alternativa que funciona para o aplicativo Java que eu uso é NÃO maximizar o aplicativo Java pressionando o botão maximizar, mas redimensionando a janela manualmente para o tamanho que preferir. Por favor, compartilhe informações se isso ajudar você, obrigado!

    
por 04.07.2014 / 18:22

Tags