LINUX.ORG.RU

Серое окно при попытке запуска java приложений под тайловым менеджером

 , , ,


0

2

Лет 5 сижу на xmonad, cейчас захотелось поиграться с устройством WM и поэтому хочу пересесть на dwm. Пытаюсь запустить pycharm на последнем и вижу серый экран. Пропись «wmname LG3D» и «export _JAVA_AWT_WM_NONREPARENTING=1» в .xinitrc не помогает. Та же история происходит под i3, под awesome приложение просто падает.
Под xmonad все работало с одним wmname, _JAVA_AWT_WM_NONREPARENTING в настройках не было.
При этом при запуске так же появлялся серый экран, но если переключиться на другой рабочий стол и обратно, то все начинало работать. Подобное под dwm не работает.
ЧЯДНТ?


Ответ на: комментарий от actics

Ссылка что-то твоя не открывается.

Вообще, похоже, распространённая проблема: https://github.com/swaywm/sway/issues/595

IDEA (и всё что на её рельсах по типу PyCharm) подразумевает некоторую интеграцию под DE, под GNOME и KDE там есть специфические пункты меню. Возможно именно из-за этой интеграции такое поведение. Другие Java-приложения работают? Если использовать системный JDK/JRE, а не тот который IDEA (PyCharm) тянет с собой, или наоборот?

EXL ★★★★★
()
Ответ на: комментарий от EXL

Проблема распространенная, но обычно легко лечилась.
Менюшка работает всегда, не работает сам редактор. Всякие окна типа настроек тоже открываются. Другие java приложения не пробовал, так как их нет. С системным JDK та же история.
Самое странное то, что под xmonad оно хоть со странного пинка, но работает. Под всеми остальными нет. При этом все что меняю в системе это аргумент у exec в xinitrc

По ссылочке было это, но тут ничего полезного

OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.intellij.ide.ClassUtilCore to field sun.net.www.protocol.jar.JarFileFactory.fileCache
WARNING: Please consider reporting this to the maintainers of com.intellij.ide.ClassUtilCore
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
2019-09-07 19:51:12,735 [ 4812] WARN - s.impl.EditorColorsManagerImpl - Cannot find scheme: VibrantInk from plugin: com.intellij.database
2019-09-07 19:51:12,735 [ 4812] WARN - s.impl.EditorColorsManagerImpl - Cannot find scheme: WarmNeon from plugin: com.intellij.database
2019-09-07 19:51:12,735 [ 4812] WARN - s.impl.EditorColorsManagerImpl - Cannot find scheme: High сontrast from plugin: com.intellij.database

actics
() автор топика

Я честно не знаю, что там творится с этими Java-приложениями, но была информация, что конкретно c IDEA были проблемы с фокусом и вообще он довольно странные вещи под иксами делает. Поэтому может сбивать с толку WM. Вот был как раз тред и какие-то там типа решения. Например со steal focus.

Window Maker и флаг «no_focusable» для sun-awt-X11-XFramePeer

Больше пока ничего не могу сказать, так как, видать, специфичная проблема.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

@Bass

Может он поможет. Он вроде как в JetBrains работает и по старому железу, экзотическим реализациям WM и старым – спец.

EXL ★★★★★
()
Ответ на: комментарий от Zubok

Попробовал. Снятие suppress.focus.stealing не помогло.
Посмотрел diff на xprop и xwininfo между рабочим pycharm на xmonad и не рабочем на dwm. Из интересного только в диффе xprop:
* На xmonad есть строчка _NET_WM_DESKTOP(CARDINAL) = 5 и нет _NET_WM_STATE(ATOM) =
На dwm наоборот

actics
() автор топика
Ответ на: комментарий от Bass

Спасибо, но судя по форумам воспроизводится только у меня) Хотя у меня практически голый арч, ничего особенного я не настраивал.

Возможно завтра будет не актуально :D Поставил sway, под wayland все работает. Если сегодня получится запилить под свои нужды останусь там. Но если будет нужно - предоставлю любой дебаг, dwm я
все равно хочу для того что бы поиграться с напильником.

actics
() автор топика

У меня не работало wmname LG3D на awesome, но работало wmname compiz-fusion. Причём запускал я его в прямо в конце rc.lua через os.execute. //мимокрокодил

nev3rfail
()
Ответ на: комментарий от nev3rfail

Заработало! :) Причем даже без _JAVA_AWT_WM_NONREPARENTING
Всем спасибо!

actics
() автор топика

# для java-приложений использующих AWT (исправляет пустые (серые) окна приложений Java (например, netbeans)).

export AWT_TOOLKIT=MToolkit
anonymous
()
Ответ на: комментарий от anonymous

Внезапно, работает. Видимо это самое правильное решение

actics
() автор топика
Ответ на: комментарий от anonymous

Это работало только для Java 6 (и, возможно, 5 — уже не помню).

В Java 7 Motif Toolkit был выпилен, остался только X Toolkit.

Bass ★★★★★
()
Ответ на: комментарий от Bass

Да, я не помнимаю, как у меня вчера все заработало. Clion теперь открывается, pycharm нет :(
При этом я вернул все три настройки

actics
() автор топика
Последнее исправление: actics (всего исправлений: 1)
Ответ на: комментарий от actics

Да, я не помнимаю, как у меня вчера все заработало. Clion теперь открывается, pycharm нет :(
При этом я вернул все три настройки

А можешь прислать снимок экрана электронной почтой?

Bass ★★★★★
()

Я протестировал и под xmonad (снимок), и под dwm (снимок), и я бы сказал, что поведение абсолютно одинаковое:

  • _JAVA_AWT_WM_NONREPARENTING=1 либо wmname LG3D (достаточно лишь одного) абсолютно необходимы (и достаточны) для запуска любого Java-приложения, использующего JFC/Swing для рисования GUI, будь то IDEA (и производные), NetBeans или JDeveloper.
  • Специфичный для IDEA (и производных) флаг suppress.focus.stealing имел смысл лишь в моём частном сценарии для WindowMaker. Т. е. на «серость» (= проблемы отрисовки) окна он никак не влияет.

Ну и, если в пределах одного оконного менеджера работает, скажем, PyCharm и не работает CLion – то это, очевидно, уже не связано с самим оконным менеджером.

Если одно и то же (скажем, PyCharm) в одном и том же окружении (_JAVA_AWT_WM_NONREPARENTING=1 и проч.) работает в xmonad и не работает в dwm – то, опять же, дело не в особенностях Swing GUI. Я бы попробовал для увеличения статистической выборки попробовать другие IDE (NetBeans, JDeveloper) и дальше уже стал бы сравнивать логи (PyCharm под xmonad vs PyCharm под dwm).

Bass ★★★★★
()
Ответ на: комментарий от actics

andrewbass at gmail dot com

Ты ж мне писал уже. Или это был не ты?

Bass ★★★★★
()
Ответ на: комментарий от actics

А почему могло полечиться сменой wmname LG3D на wmname compiz-fusion?

Потому что слой AWT в Java «знает» о нескольких разных оконных менеджерах, и для разных WM применяются разные эвристики. Если интересно – можешь покопаться в коде OpenJDK. Т. е. моё первоначальное утверждение о том, что wmname LG3D и _JAVA_AWT_WM_NONREPARENTING=1 эквивалентны, наверное, не совсем корректно.

Помимо этого, в коде самой IDEA, вот здесь, происходит чтение атомов корневого окна, в т. ч. _NET_WM_NAME, и на основании прочитанного значения (см. ниже по течению) в потроха AWT «спускается» уже изменённое _NET_WM_NAME (в частности, для Muffin, Marco и awesome).

Это только в случае, если специфичный для IDEA флаг ide.x11.override.wm установлен (по умолчанию так оно и есть).

Т. е., помимо игрищ с wmname (где твоя свобода отнюдь не ограничивается значением "LG3D"), ты ещё можешь включить/выключить ide.x11.override.wm (но, если ты уже один хрен сам меняешь _NET_WM_NAME, то, мне кажется, разумно было бы этот флаг снять и тем самым устранить побочный эффект, вызываемый самой IDEA).

Bass ★★★★★
()

В качестве послесловия, я бы посоветовал обратить внимание на вызовы isNetWMName() и getWMID() в модуле поддержки оконных менеджеров в самой JDK.

Bass ★★★★★
()
Ответ на: комментарий от Bass

Был я, но ты не ответил, и я подумал что не правильно угадал. Кстати: сори что писал, забыл что на лоре есть призывы.

Судя по коду ide.x11.override.wm играет какую-то роль только для тех трех, поэтому для меня настройка не работает

Сейчас все работает, спасибо огромное!

actics
() автор топика
Последнее исправление: actics (всего исправлений: 1)
Ответ на: комментарий от Bass

Оставил из настроет только wmname compiz. Работают все 3 IDE что есть. Ещё раз огромное спасибо!

actics
() автор топика
Последнее исправление: actics (всего исправлений: 1)

Я отказываюсь понимать, что происходит. Теперь у меня работает вообще без всех этих настроек. Поживу так, посмотрим, что будет завтра :)

actics
() автор топика
Последнее исправление: actics (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.