четверг, 19 февраля 2009 г.

"Плиточные" менеджеры окон.

Пролог.

Воистину бесконечно тяга человеческая к геморрою на свой зад! :)

Преамбула.

Вот сижу я себе в гноме, все хорошо, все устраивает. Так нет ведь! Надо же было начитаться... В общем почитал я тут на досуге о tiled wm. Для тех кто не в курсе - объясняю: традиционно менеджеры окон создают так называемые плавающие окна, которые можно свернуть, развернуть, "потягать" по экрану, раздвинуть, сузить и прочее. При этом красочно подсказывая пользователю, куда нажать и чего потянуть. И все это хорошо и здорово! Да только вот есть одна загвоздочка, которая меня лично подспудно постоянно пилила, но понять это и решить, что делать я ни как не могу. А тут вот почитал и все встало на свои места. А загвоздочка эта состоит в следующем: пока мы осваиваем среду - все это хорошо. Мы глядя на все это буйство красок легко находим крестик в углу окна, что бы закрыть его, хватаем окно за "шапку" и тянем на нужное место. Но вот мы полностью освоились. И начинается... "Блин, опять это окно посреди экрана вылезло! Мне ж нравится, что бы оно было узенькое и сбоку было!..." Лезем в инет, жмем firefox... "Блин, опять лезть мышой до "кубика" в углу окна, что бы на весь распахнуть!"... Мы привыкли к этой "мышинной возне" со времени освоения этого окружения. И поэтому нам кажется, что это нормально. Но так ли это? Ведь это все замедляет работу и мешает! Зарание хочу охладить возгласы типа "открой для себя горячие клавиши!" и "настрой нормально wm, что бы сам открывал окна на весь экран!". Все это я знаю. Все это у меня настроено в моем нынешнем openbox. Но! Оказывается есть менеджеры, в полной мере оправдывающие свое звание (manage - все таки управлят, а не просто создавать и отдавать это окно на управление пользователя!). Эти менеджеры называются tiled, то есть "плиточные". Почему? Это название в полной мере отражает смысл их работы.

И так, грубо: мы запустили приложение, например firefox. Как и везде, в tiled wm оно откроется, станет активным и... раскроется на весь экран. Ни каких тебе "шапок" для перетаскивания, "бордеров" для изменения размеров, "крестиков" в углу, что бы закрыть. Окно создано, оно активно, оно распахнуто на все рабочее пространство и не отвлекает пользователя от работы на всякие глупости, типа подгона его размеров под удобный вид. :) Далее открываем например наш любимый gvim. Что будет в обычно wm? Правильно: окно откроется, перекроет частично наш firefox и станет активным. А в тайлед? Экран разделится пополам, в одной, пассивной половине останется firefox, а в активной окажется gvim. :) В зависимости от настроек деление может происходить не на половину, а например на 2/3, или вообще все будет распахиваться на весь экран, кроме зарание оговоренных приложений. В общем пользователь избавлен от головной боли именно управления окнами. И это правильно. Потому что когда мы в рабочей среде чувствуем себя как рыба в воде, лишние телодвижения только отвлекают от работы а часто и раздражают. Нет, я не говорю о том, что на экране должно быть все голо, чисто, однотонно и тоскливо! Конечно же нет! Но я не хочу попадать мышкой в уголочек окна, что бы оттянуть его на нужную величину. Пусть этим в конце концов займется тот, кто должен, то есть wm! :)

От слов переходим к делу.

И так. Я водрузил себе для пробы awesome и xmonad. И то и то после прочтения порядочного колличества статей о tiled wm. Чего хотелось бы? Минимализма в плане потребления ресурсов (ни для кого не секрет, сколько памяти жрет gnome со своим metacity, я уж молчу про kde, который после выхода 4-ой версии стал настолько vista-образен, что меня от него тошнит), удобстово в плане запуска приложений/переключения между окнами, получения нотификаций от окон и конечно же отдание на откуп wm-у весь гемор с окнами. При этом хочется все же иметь эстетический вид, некоторое минимальное колличество панелей и трей область. Скажу сразу - не все в этом мире идеально. :) То есть за час возни всего счастья я не получил. :)

И так первым был awesome. После запуска на меня он нагнал тоску внешнем видом: цвета мокрого асфальта может кому-то и радуют глаз, но не мне. После 3-х минутного ковыряния в конфиге сделал а-ля clearlook и стало веселее. :)

Далее клавиши управления. Ну что тут сказать? :) Если бы я зарание не прочел про данный wm, то я бы конечно в конце концов запустил терминал и из него все что надо. ;) Но я знал! ;) И поэтому лишь изредка подглядывал в хелп. :) Конечно же все это настраивается, но по умолчанию клавиши совсем не прозрачны. Однако при этом уже через 15 минут я практически свободно управлялся с ними, перестроив лишь пару на более привычные (как например alt+F4 для закрытия окна). На моей клавиатуре нет клавиши win, поэтому я перевесил ее яункции на alt и это меня вполне устроило. Вполне нормлаьным (в силу любви к vim) оказалось переключение между окнами через alt + j/k. alt + tab тоже действует, но немного не так: он переключается ТОЛЬКО между текущим и последним окном, что надо сказать, довольно удобно для работы. Концепция tag-ов для окон не привычна, но надо сказать тоже довольно удобна.

Сами окна. Раскладывание в классическую плитку, честно говоря пока не сильно проперло. Поэтому сделал для начала, что бы все открывались на полный экран. Так понравилось больше. Отдельно "затагил" окна пиджина: вот они раскрываются в плитку. Так понравилось больше.

Тулбары пока оставил по умолчанию, только убрал "герб" awesome в углу, который представляет довольно жуткую стилизацию лабиринта и буквы одновременно. :) Думаю повесить туда пингвина и все. ;) Тея пока не сделал, что довольно неудобно.

Теперь о конфиге. Как бы это сказать помягче: не для тупого юзера, скажем так. ;) На самом деле весть wm написан языке lua, если не ошибаюсь, на нем пишут скрипты для искуственного интелекта различных ботов в играх. Так вот автор пишет примерно так: "если вы не знаете lua, то идите вы в ж..пу!" Ну перевод естественно довольно вольный. ;) Но смысл именно такой. :) А прикол в том, что не только сам wm писан на lua, но и конфиг его представляет из себя не что иное, как кусок кода на вышеупомянутом языке! Я конечно фанат разного рода извратств, но изучать еще один язык, для того что бы отконфигурить wm - это уже слишком! :) Однако не все так плохо, как оказалось: внутренности конфига настолько прозрачны, что для конфигурирования знания языка не понадобилось, достаточно было знания английских слов. ;)

Трей пока не сделал, но понравилась концепция построения панелей и прочего: в комплект поставки входит awesome-client, который собственно может "отправлять" в нужные виджеты все что угодно (практически), что позволяет писать любые скрипты и выводить в виджеты wm-а практически что угодно.

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

Следующим буду смотреть xmonad, но больших надежд на него не возлагаю, так как все эти колупания ведуться в первую очередь ради eeepc (и лишь во вторую для рабочего ноута), а тянуть на и так маленький веник "ежика" все haskel-зависимости xmonad-а как-то не кошерно...