Как я могу исправить Java-GUI-программу (swing), что она работает с awesome-wm?

Swing-UI Java-программ не работает отлично с awesome-wm. awesome - это оконный менеджер для UNIX, который автоматически изменяет размеры окон программы, а Swing-UI не распознает эти изменения правильно. Меня не волнует, что это потрясающе, или Ява виновата, что я хочу знать, могу ли я изменить свои Java-программы в некотором смысле, чтобы они работали с удивительным. Так что пользователи моих программ получат правильный опыт, даже если они используют экзотических оконных менеджеров.

Ответ 1

Из справочной страницы awesome:

BUGS
   Of course there´s no bug in awesome. But there may be unexpected behaviours.

   Java applications which use the XToolkit/XAWT backend may draw grey windows only. The XToolkit/XAWT backend breaks ICCCM-compliance
   in recent JDK 1.5 and early JDK 1.6 versions, because it assumes a reparenting window manager. As a workaround you can use JDK 1.4
   (which doesn´t contain the XToolkit/XAWT backend) or you can set the following environment variable (to use the older Motif backend
   instead): AWT_TOOLKIT=MToolkit

Ответ 2

Простейшее обходное решение - получите wmname из suckless и используйте его, чтобы установить имя диспетчера окон в LG3D:

wmname LG3D

98% времени это устранит проблему.

Ответ 3

Вы можете обнаружить, что это аналогичная проблема, с которой сталкиваются с использованием Compiz и Java (по крайней мере, по Ubuntu), но я предполагаю.

Исправление для этого (взятое из здесь) заключается в добавлении следующей переменной среды в вашу программу:

AWT_TOOLKIT="MToolkit"