суббота, мая 19, 2012

Awesome и Skype в нём.

 С тех пор, как моей основной рабочей средой в линуксе стал оконный менеджер , Awesome меня перестали заботить многие вещи: окна приложений легко и непринуждённо размещаются по определённым тегам, а управление окнами производится с клавиатуры на уровне рефлексов; на двух панелях размещены только необходимые виджеты, а места на экране они почти не занимают; заголовки окон забыты как страшный сон, а мышь используется в двух-трёх приложениях. Короче, красота и чувство полного контроля над средой. Если бы я знал чем измерить эффективность работы, наверное сказал бы, что эффективность увеличилась многократно. А вот по поводу удобства могу это сказать безо всяких "если".

И только один пунктик меня долгое время раздражал. Как ясно из заголовка - это Skype. Верней, окна с чатами. Для решения этой проблемы придуманы какие-то костыли, например Skype Tab. Откровенно говоря, я его даже и не пытался использовать в виду явной порочности такого подхода. Окнами должен управлять... оконный менеджер. Таково моё, никому не интересное, мнение.

Вкус к тайловым оконным менеджерам мне привил покойный Ion3, воскресший в форках вроде Notion. Так вот Ion и его наследники умеют группировать окна в табы. И вполне логично, что я начал искать такую же возможность в Awesome. Первое упоминание об этой фиче обнаружилось прямо на домашней странице Awesome:
A lot of Lua extensions to add features: dynamic tagging, widget feeding, tabs, layouts …;
 Дальнейшие поиски этого необходимого расширения привели меня в список рассылки Awesome. Ровно два упоминания. И ни одной реализации(или плохой Гугл). Взяв за основу идею из рассылки, расчехлил вим, открыл документацию по Lua и Awesome API, и сел ваять.

Код не блещет красотой, а, возможно, и эффектностью, но своё дело делает. Группировать в табы окна уже можно.

Плюсы:
  • одно окно для чатов со списком вкладок;
  • переключение между чатами привычным сочетанием клавиш - Ctrl-Tab и Ctrl-Shift-Tab.
 Минусы:
  • едва заметное мерцание окна чатов, связанное с особенностиями реализации, об этом в следующем пункте;
  • заменяет стандартный titlebar, что в моём случае совсем даже и не проблема.
  • переключение между чатами привычным сочеатнием клавиш - Ctrl-Tab и Ctrl-Shift-Tab ведёт к неизбежным конфликтам с приложениями, использующими такие кнопки в своих целях (добавлено в TODO и FIXME).
В двух словах о деталях реализации.
Окна группируются по правилам раскладки окон по тегам. Я использую библиотеку shifty.

 shifty.config.apps = {
    { match = {  "Skype™.*(Beta)"}, tag = "im", slave = false},
    { match = {  "Skype™.*чат"}, tag = "im", slave = true, run = function(c) tablist.new(c, "Skype") end},
}

Окно чатов ищется по заголовку, т.к. класс окон одинаков для окна с контактами и для чатов. Далее создается именованный список с табами, а если такой список уже существует, то окно просто туда добавляется. В текущей версии скрипта в качестве виджета для отображения вкладок используется стандартный awful.widget.tasklist. В дальнейшем планирую использовать обычный textbox, но пока всё работает и так, поэтому в основном буду причёсывать код. Выглядит это примерно так:


Забрать эту красоту со следами мучительных попыток познать Lua за два часа, можно отсюда. Там же находится библиотека для работы с юникодными строками, нужна она для того, чотобы виджет мог корректно сокращать названия окон.

пятница, октября 30, 2009

_MG_7594.jpg


_MG_7594.jpg, originally uploaded by Alex Kroll.

четверг, мая 21, 2009

Первая пленка.

Да. Так вот первая пленка. Первая в смысле самостоятельно проявленная первая. И вот какая картинка там оказалась. Москва ночная. Причем не так как в жизни, специально не стал зеркалить ее как "было", оставил как отсканировалось.



А это просто так. Просто этот кадр тоже "получился".

воскресенье, декабря 14, 2008

Предмет


_MG_0439 copy .jpg, моя картинка, размещенная на Flicker Alex Kroll.

Неожиданная картинка.

четверг, января 10, 2008

Введение.

Дорогой дневничок!
Торжественно клянусь не использовать тебя по назначению...

Первая картинка.