среда, 28 сентября 2011 г.

Java + Awesome = серый экран



В своих предыдущих статьях про Awesome (установка Awesome под Ubuntu 10.10, установка Awesome под Ubuntu 11.04) я рассказывал, как безболезненно перейти с использования классического оконного менеджера на мозаичный. Но как оказалось, если вы используете Java-приложения, то переход будет не таким уж безболезненным. Для меня это выглядело следующим образом: запускаю я Netbeans и... и вижу окно Netbeans, точнее сказать окно из под Netbeans, потому как в нем ничего нет! Появляется пустое серое окно. Когда мне надоело наслаждаться безмятежностью серых окон, я стал разбираться, в чем же причина.
Изначально на Awesome подозрение не пало, но гугление показало, что подводные грабли скрывались именно в нем. Т.к. этот мозаичный менеджер не является re-parenting (магия с “родственными” отношениями между окнами), то JDK 1.5 и 1.6 (поговаривают, что в 1.7 все работает нормально, но я не проверял) некорректно работает с отображением содержимого окон. Развернутое описание проблемы можно найти на форуме Awesome. Я лишь приведу самое простое решение. JDK имеет представление о менеджерах окон, которые не “re-parenting”, но лишь для определенного списка оконных менеджеров. Awesome в этом списке нет (надо же, какая неожиданность! ;-) ). Решение же заключается в том, чтобы прикинуться оконным менеджером из этого списка. Для этого ставим пакет suckless-tools и выполняем команду
wmname LG3D
Теперь JDK будет знать, что он работает с оконным менеджером, не поддерживающим re-parenting! Для любопытных: LG3D - это сокращенное название  Project Looking Glass. Был когда-то такой проект, по созданию трехмерного рабочего стола, и что особенно интересно, писался он на Java (есть live CD, рекомендую взглянуть для расширения кругозора)! Вот так, с помощью всего лишь одной команды мы замаскировались под него. Осталось добавить вышеупомянутую команду в автозапуск и проблема решена!
P.S1.: картинка к статье - рабочий стол LG3D ;-)
P.S2.: как перевести на русский “re-parenting”? o_O

1 комментарий:

Lirikne комментирует...

Спасибо. Помогло.)

Отправить комментарий