Как исправить смещение указателя мыши в приложениях Java в Awesome WM?

15

Как воспроизвести в Awesome WM v3.5.2 через 3.5.5 (пока):

  1. Установите OpenJDK или Oracle Java 7 . Эта ошибка наблюдалась с обоими.
  2. Начните новый сеанс Awesome WM с конфигурацией по умолчанию .
  3. Запустите jEdit или PyCharm . Эта ошибка наблюдалась с обоими.
    • Переместите указатель мыши вокруг и наблюдайте, как он меняется в зависимости от того, наводите ли вы курсор на код, файлы проекта или меню. Это должно работать нормально.
    • Нажмите и отпустите в меню « Файл» , войдите в одно из подменю и посмотрите, как постоянно фокусируется элемент под указателем мыши.
  4. Нажимайте Mod4+ Spaceдо тех пор, пока не активируется плавающий макет (приложение будет почти на весь экран) или откройте другое приложение в том же теге.

В этот момент я ожидаю, что мышь будет вести себя так же, как и в «нормальных» приложениях. Вместо этого я наблюдаю следующее:

  • При щелчке мышью по меню и навигации по нему указатель мыши и пункт меню, на который направлено фокусирование, будут смещены по вертикали друг от друга, по-видимому, на то же количество пикселей, что и высота строки состояния.
  • При наведении курсора на разные элементы, как и раньше, значок курсора будет установлен так, как если бы указатель мыши был выше на экране. Например, при наведении курсора на верхнюю строку текста вы не увидите текстовый курсор.

Как будто что-то не обнаруживает, что координаты окна изменились.

Подобная, но гораздо более раздражающая ошибка возникает, когда вы открываете другое приложение с тем же тегом - поведение мыши такое, как если бы окно вообще не перемещалось.

При переключении другого тега, на котором уже открыто приложение, - «рабочий стол виртуальной мыши» перемещается в верхний левый угол основного экрана .

Так как эти ошибки наблюдались как в OpenJDK, так и в Oracle Java, в разных Java-приложениях, вполне вероятно, что ошибка есть в Awesome WM.

Связанный вопрос , статья . Я попробовал _JAVA_AWT_WM_NONREPARENTINGи wmnameисправления, но не идти.

l0b0
источник
Я думаю, что последняя версия Awesome - это WM для родителей, так что опция НЕПОДГОТОВИТЬ не нужна.
dknight

Ответы:

1

По моему опыту, вам нужно добавить специальные определения в источник для оконного менеджера.

Это случилось со мной пару лет назад в marcoдиспетчере окон рабочего стола MATE ; «Исправление» заключалось в том, чтобы заставить Марко притворяться своим родительским проектом metacity, чтобы использовать встроенные исправления JDK для metacity.

от src/core/display.c:

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

Это исправление пахнет тем, что случилось со строкой пользовательского агента в мире веб-браузеров, но у меня это сработало.

Кроме того, в вики arch даже упоминается Awesome WM в разделе, посвященном олицетворению других оконных менеджеров, где она рекомендует wmname:
https://wiki.archlinux.org/index.php/Java#Impersonate_another_window_manager

Вы можете использовать wmname из suckless.org, чтобы JVM поверила, что вы используете другой оконный менеджер. Это может решить проблему рендеринга графических интерфейсов Java, возникающих в оконных менеджерах, таких как Awesome, Dwm или Ratpoison.

$ wmname LG3D

Вы должны перезапустить рассматриваемое приложение после выполнения команды wmname.

Это работает, потому что JVM содержит жестко закодированный список известных оконных менеджеров без переопределения. Для максимальной иронии, некоторые пользователи предпочитают выдавать себя за LG3D, оконный менеджер без переучета, написанный Sun, на Java.

Wyatt8740
источник
-2

Кажется, это известная ошибка, связанная с Java в Linux: https://netbeans.org/bugzilla/show_bug.cgi?id=227754

По указанному выше URL-адресу вы можете найти обходной путь для IDE NetBeans. Обходной путь, который работает для приложения Java, которое я использую, - НЕ максимизировать приложение Java с помощью кнопки «Развернуть», а вручную изменить размер окна до нужного размера. Пожалуйста, поделитесь информацией, если это поможет вам, спасибо!

stemd
источник
В Awesome WM нет кнопки для увеличения. Использование плавающего макета сделало его еще хуже (все окно было серым до тех пор, пока я не изменил макет), а «Открыть» JDK принудительно регистрирует даже ошибки.
10
На самом деле, кажется, что openjdk.java.net требует, чтобы пользователи распечатывали, подписывали, сканировали и отправляли по электронной почте Соглашение об участии Oracle, чтобы быть «вкладчиком», что, по-видимому, необходимо для просмотра их базы данных ошибок. Угадай содержимое должно быть довольно ужасно.
l0b0
И настройка DESKTOP_SESSION не работает. Пробовал с несколькими из предложенных значений.
l0b0