Gmail Notifier своими руками

    image Начал я обустраиваться под Linux'ом и обнаружил, что мне сильно не хватает тех красивых попапов, уведомляющих о приходе новой почты, которые умеет показывать Google Talk под Windows. Гугление обнаружило несколько готовых скриптов, позволяющих реализовать подобные попапы (среди прочих: bash-скрипт, bash-скрипт + python-скрипт, плюс pidgin умеет проверять почту), но все подходы слегка уродливы были мне не по душе и требовали доработки напильником, поэтому я решил сделать всё с нуля (пусть будет уродливое, но своё!). О вещах, с которыми я столкнулся в процессе и пойдёт речь…



    Предыстория: выбор WM (оконного менеджера)


    В Linux управление окнами, рисование всяких рамочек и системных меню отдаётся X сервером на откуп так называемым оконным менеджерам. Поэтому под Linux, в отличие от Windows, можно гибко настраивать внешний вид окон, а также их поведение и размещение.

    Надо сказать, что у всех «ненормальных программистов», есть свои собственные оконные менеджеры для Linux. У haskellистов есть xmonad, а у luaшников вроде меня есть Ion и скромно названный awesome. Наконец, у С-шников есть сверхлёгкий dwm, единственный способ переконфигурировать который — правка сорцов и пересборка.

    Все вышеупомянутые оконные менеджеры относятся к классу tiling window manager (википедия предлагает перевод «фреймовый (или мозаичный) оконный менеджер»), небольшой обзор таких менеджеров недавно уже был на Хабре. Отличительная черта таких WM состоит в том, что отдельные окна размещаются на экране без перекрытий, покрывая его как мозаика:



    На этом скриншоте видно, что как виканец и лунопоклонник, а так же человек уважающий скромность, я остановился на awesome.

    Вообще у awesome есть некоторые проблемы с документацией (ну впрочем это бич многих не только открытых, но и проприентарных проектов). API документирован хорошо, но о некоторых вещах приходится догадываться или шарится в wiki.

    Подробная процедура установки последних версий на Ubuntu описана, например, здесь.

    Показ уведомлений


    Я люблю двигаться в разработке задом наперёд, поэтому я сначала заинтересовался вопросом: «а как в awesome показать попап?». Ответ нашелся быстро: с помощью встроенной библиотеки naughty (я думаю читатель уже уловил общую направленность названий?). Например, если выполнить вот такой код в контексте awesome:
    naughty.notify {
        title     = title, 
        text      = text, 
        timeout   = 10, 
        fg        = "#afbe01", 
        width     = 500, 
        icon      = icon_big,
        icon_size = 32
    }
    

    то в заданном месте экрана всплывёт в меру красивый попап с заголовком title, текстом сообщения text и иконкой icon_big.

    Выполнять же Lua-код в контексте awesome можно с помощью утилиты awesome-client. Фактически это shell, который принимает на вход скрипты на lua (под одному на строчку) и последовательно выполняет их.

    Таким образом, если хочется показать попап из некоторой независимо работающей программы/скрипта, то нужно подставить вместо title, text и icon_big их значения, затем передать получившуюся строчку (без переносов строк!) на вход awesome-client.

    Поскольку большинство скриптов я пишу на lua и постоянно перемежать нормальный lua-код и формирование строчек для awesome-client'а мне не хочется, я используя особую метатабличную магию написал механизм позволяющий прозрачно вызывать код в контексте awesome. Достаточно в скрипте написать:
    local naughty = proxy "naughty"
    

    и дальнейшая работа с полями таблицы (вызовы и присваивания) naughty будут прозрачным образом выполняться в контексте awesome.

    А еще naughty дружит dbus, но я пока без него обошелся.

    Нам письмо?


    Итак я умею показывать уведомление, но мне совершенно непонятно откуда взять информацию о приходе нового письма. Можно, конечно, разрешить POP доступ к ящику и проверять его содержимое каждые N секунд или (подсказано @merlin_rterm) можно открыть доступ по IMAP и подцепившись, получать нотификации ([RFC 2177] IMAP 4 IDLE Command). Можно взять Atom feed почтового ящика и каждые M секунд разбирать его скриптом на python'е или применить bash&wget&grep-fu. Ни одно из этих решений не показалось мне достаточно изящным. Я ввёл в гугл парочку запросов, содержавших среди прочих слова «gmail», «api» и «lua», но получил исключительно фигу. Отчаянье моё было столь велико, что я хотел уже бросить всё к чертям и повеситься совратиться в лагерь python'истов, но тут ко мне в голову постучалась светлая мысль: раз google talk показывает нотификации, раз pidgin проверяет почту, значит это как-то связано с протоколом XMPP, известным в народе под именем Jabber, поверх которого Google Talk и реализован! Окрылённый этим откровением я ввёл в гугл «google talk api» и через пару кликов мышью оказался на странице с говорящим названием Gmail Notifications.

    Даже к финским скалам бурым обращаюсь с каламбуром.


    СТАНС и (устар.) станц, станса, (фр. stance от ит. stanza) (лит.). В стихах — строфа, представляющая собой законченный синтаксический период.

    XMPP — это такой забавный протокол, в котором Ромео и Джульета клиенты и серверы обмениваются между собой XML стансами. [RFC 3920] XMPP Core описывает стансы трёх типов: <iq/> (Info/Query), <presence/> (фактически информация о пользователе) и <message/>. Вообще XMPP Core достаточно простой протокол, но мне совершенно не улыбалось ботанить стандарты и возится с разбором XML, TLS, SASL и прочими деталями, и реализовывать всё с нуля, поэтому я вновь открыл гугль и сказал ему «xmpp lua».

    Первая же ссылка привела меня на страницу Verse — lua-библиотеки, выстроенной поверх Str<>phe (названия опять таки с уклоном!), которая в свою очередь является С-библиотекой для работы с XMPP. Strophe берёт на себя всю низкоуровневую работу: соединение (с поддержкой TLS), авторизация (SASL) и разбор XML, а также обработка core станс. Verse предлагает удобный способ поддержки расширений (XEP = XMPP Extension Protocols, раньше известны были как JEP), возможность регистрации обработчиков событий, срабатывающих в момент прихода станс определённой формы.

    Радость мою невозможно было описать никакими стансами… Я быстренько скачал обе библиотеки. Собрал Strophe, попробовал собрать Verse и обломился. Оказалось, что для сборки Verse, нужно особым образом патчить Strophe… Попатчил, пересобрал, пересобрал… Ура, пример работает!

    Гугл, гугл, я — Алеф! Приём, приём!


    Пробую подключится к гуглу:

    conn = verse.connect("mister.aleph@gmail.com/epsilon3", password, handler, "talk.google.com");
    


    mister.aleph@gmail.com/epsilon3 — это мой Jabber ID. Странный суффикс /epsilon3 определяет ресурс. Это позволяет одному mister.aleph@gmail.com зайти в Jabber из нескольких разных мест.

    Запускую скрипт. Получаю фигу. Оказывается по умолчанию Strophe собирается без поддержки TLS, поэтому приходится всё еще раз пересобрать. Благо написано не на С++ с boost::mpl, поэтому не успеваю даже чая испить за время сборки.

    Теперь всё логинится, и я даже вижу как мне приходят стансы <presence/> от моих контактов. Однако меня эти стансы не интересуют, ибо делать полноценный чат я не собираюсь (неполноценный возможно сделаю, но позже). Меня интересуют только стансы описанные в Gmail Notifications JEP.

    Регистрирую в Verse новый протокол с двумя событиями:

    local gmail = { xmlns = "google:mail:notify" };
    verse.protocols.gmail = gmail;
    
    gmail.events = {
      response = {
        { name = "iq"; type = "result"; xmlns = gmail.xmlns };
        mailbox  = "/iq/mailbox";
      };
    
      newmail = {
          { name = "iq"; type = "set" };
    
          id      = "/iq/@id";
          newmail = "/iq/new-mail";
      };
    }
    


    Событие response будет срабатывать тогда, когда сервер будет посылать мне станс-ответ на мой запрос содержимого ящика. В ноде mailbox будут описаны треды, с подробной информацией (отправители, метки, дата последнего сообщения). В обработчике этого события я буду перебирать эти треды и выводить нотификации о новой почте с помощью naughty и показывать в трее общий счетчик непрочитанных писем.

    Событие newmail будет срабатывать тогда, когда сервер присылает мне стансу-уведомление об изменениях в ящике. В ответ на эту стансу я буду посылать стансу-запрос информации о содержимом ящика.

    Собственно полный код можно посмотреть здесь.

    Кстати, в описании Gmail Notifications JEP указано, что можно запрашивать не только непрочитанные сообщений, но вообще делать совершенно произвольный запрос, например, попросить все треды помеченные меткой #lua («label:#lua»).

    Быстро сказка сказывается, да не быстро дело делается


    Запускаю скрипт, получаю парочку попапов и segmentation fault, как только luavm захотела собрать мусор. Похоже Matthew Wild (автор Verse), не зря предупреждает на главной страничке:
    Please note that this is ALPHA status software. It does have crasher bugs, which I am aware of...

    Но не на тех напал, нам русским ненормальным луашникам всё по плечу. Вооружаюсь волшебным valgrind'ом, gdb, бумажкой, двадцатигранным кубиком, чётками, оставшимся с НГ бутыльком коньяка, а также мозгом… Через полчаса segmentation fault пропадает, а память почти перестаёт утекать в неизвестном направлении.

    Оформление


    Дизайнер, иллюстратор или художник из меня никакой, поэтому я вновь обратился к гуглу и обнаружил на сайте Сhris'а Ivarson'а набор разноцветных gmail-овских иконок (красный, синий, зеленый, черный, розовый) в формате ICNS. Эти иконки я перегнал в PNG с помощью утилиты icns2png. Цвет текста я взял с замечательной Daft Punk'овской обоины.

    Итого


    Перекладываю готовый скрипт вместе с иконками в ~/.config/awesome/gmail и добавляю его запуск в rc.lua:



    Победа!

    Некоторые банальные выводы

    • Глаза боятся, а руки делают;
    • Lua — rulezz;
    • Linux пригоден для жизни без скафандра;
    • Если берёте опенсурсную библиотеку, будьте готовы взять напильник;
    • Собака — лучший друг человека. Гугл — лучший друг программиста.
    • Открытые API — rulezz!
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 111

      +3
      Осталось только сделать решение попсовым — завернуть в deb-пакетик :)
        +1
        ну это придётся тогда всё заворачивать, и падучую verse тоже.
        0
        Круто.
          0
          Познавательно, пасиба… p\s: CC Рулит.)
            0
            Спасибо, удружил!
            Побежал компилить.
            О результатах сообщу как только получится :)
              +1
              что именно компилить?
                –2
                Lua под Ubuntu. А потом и бинарник скомпилирую.
                  +2
                  Компилить компиленное — круто!
                    –2
                    ну я ж образно, аля ставить, а потом собирать :)
                      0
                      КОМПИЛИ! СОБИРАЙ!
                  +2
                  какая разница? главное — компилить!
                    +3
                    кажется мсье гентушник %)
                      +4
                      нет, мсье — пыхыпы-быдлокодер
                      давно ничего не компилил :(
                –1
                готовое под FF webmailnotifier.mozdev.org/, радует уже не первый месяц
                  +1
                  а там попапы есть? и если я на одном виртуальном экране нахожусь, а фаерфокс на другом, я этот попап увижу?
                    0
                    нет, показывается исключительно в уголке самого браузера
                    • UFO just landed and posted this here
                      –1
                      Под firefox есть Google toolbar, который уведомляет о новых сообщениях
                      –1
                      Респект! Только зачем скрипты, есть же всяческие аддоны/виджеты к браузерам для этого. Или почту проверяете больше, чем браузите? =)
                        +1
                        ну проблема в том, что у меня Фокс открыт (если и открыт) на отдельном скрине, а я сам сижу в vim/gdb/еще в чем-нибудь на другом.
                        я вот как-то честно не экспериментировал, увижу ли я его попап… ну и кроме-того в трей они, наверное, количество непрочитанных писем пихать не умееют.
                          0
                          Ну если так, тогда понятно. В Gmail Notifier есть только попапы, они хоть и показываются даже при свернутом браузере и активном другом приложении, но только на несколько секунд, так что велик шанс прозевать, если не открыт браузер.
                          +2
                          интересней же самому собрать, нежели пользовать готовое иногда :)
                          0
                          аналог valgrind под windows существует?
                            +1
                            Я слышал люди для решения аналогичных проблем пользуются IBM Rational Purify и BoundsChecker, но сравнить не могу.
                              +1
                              Пурифай — отличная штука. Постоянно на работе использую.
                            –1
                            Gajim показывает нотификации о приходе писем в гмыловский ящик.
                            • UFO just landed and posted this here
                                +19
                                Топик с Того Хабра [x]
                                • UFO just landed and posted this here
                                    +2
                                    Классно пишете, с огоньком, приятно читать!
                                      +2
                                      checkgmail.sf.net — просто волшебная штука. почти перестал открывать гмейл.
                                      к нему бы ещё кликабельные ссылки сделать и поддержку нескольких аккаунтов…
                                        0
                                        Что-нибудь подобное для венды имеется?
                                        0
                                        в checkgmail принцип другой, и с Google Apps не дружит :(
                                          0
                                          с оффсайта:
                                          Supports Gmail hosted domains
                                          Use the -hosted=[hosted domain] the first time you run CheckGmail (if you've run it before, either use a new profile or manually delete the Atom feed line from the preferences file)
                                        0
                                        Написано интересно и понятно, спасибо :)
                                          0
                                          Автор, автор, а вы не пробовали просто использовать IMAP, и настроить уведомления средствами почтовой программы (Thunderbird умеет)? Для вас будет шоком, что ЛЮБОЙ IMAP-сервер умеет делать нотификации — IMAP IDLE
                                            +1
                                            Так интересней.
                                              0
                                              Велосипеды рулят.
                                                +2
                                                для вас будет шоком, но я давным давно отказался от почтовых программ =)

                                                если вы обратите внимание, то вариант с IMAP я рассматривал…
                                                  –1
                                                  Честное слово, не разглядел IMAPа у вас, пока не начал искать по странице.

                                                  А от почтовых програм отказаться… Я не понимаю людей, которые писают кипятком с гугловских сервисов. Мой IMAP-сервер с рукописным Sieve-скриптом для сортировки почты, общими папками сервера (т.е. которые доступны всем пользователям этого сервера) и прочими вкусноястями, из гугла соорудить невозможно.
                                                    +3
                                                    Я кипятком не писаюсь, вас кто-то дезинформировал =) Просто не пользуюсь почтовым клиентом, для тех почтовых задач, которые у меня возникают на данном этапе, достаточно и обычного web-интерфейса.
                                                    0
                                                    А, у вас про IMAP написано

                                                    > Можно, конечно, разрешить POP/IMAP доступ к ящику и проверять его содержимое каждые N секунд.

                                                    Я повторяю, это не нужно делать, это бред. Есть команда IMAP IDLE, которая сообщает серверу, что ты закончил активные операции, просто висишь на проводе, а как у сервера появится почта, он тебе сам сразу сообщит. Не нужно проверять ничего N секунд.
                                                      +2
                                                      сформулировано не корректно, я согласен.
                                                        0
                                                        Да тут формулировка правильная, просто подходит только для POP.

                                                        IMAP — куда более продвинутый протокол, к нему эта хорошо и корректно сформулированная формулировка просто не относится.
                                                          +1
                                                          исправлено.
                                                  –1
                                                  из-за таких статей иногда хочется вернутся на линукс,
                                                  а то на маке уже все есть, причем красивое и самому ничего делать не надо :(
                                                  спасибо
                                                    +4
                                                    Когда-то давно решил такую же проблему для Awesome иным способом.
                                                    Поскольку ящиков у меня много, вынес список ящиков в подменю. Вот как это выглядит:

                                                    Иконка показывает только наличие/отсутствие непрочитанных писем.
                                                    При клике на иконку открывается список ящиков — сразу видно, где есть новые письма, а где нет.
                                                    При клике на ящик он открывается в браузере.
                                                    Не всё реализовано на «чистом lua», поскольку я не являюсь поклонником этого языка — часть написана на Perl.

                                                    Пришлось решить проблему с отображением новых писем для ящика mail.ru, т.к. IMAP'а у них нет, а почту я привык читать на сайте (спасибо Гуглу =). Благо «Stylish» для Firefox позволяет минимализировать интерфейс любого сайта ;)
                                                      0
                                                      А «нотифаев» у меня нет. Хотя прикрутить их — дело двух минут, с помощью того же naughty, но лично мне это не нужно =)
                                                        +2
                                                        прикольно выглядит, правда слишком светло на мой вкус =)
                                                          +1
                                                          Я привык =)
                                                          На самом деле просто сразу же надоел чёрный фон и стандартная тема — сделал себе светлую схему.
                                                          Вырезанный кусок, возможно, плохо смотрится, но в работе (например, vim, или shell) — сплошное удовольствие — уже полгода работаю и доволен =)
                                                            0
                                                            кодом поделитесь? :)
                                                        +2
                                                        А почему Lua? Чем этот язык интересен?

                                                        Алсо, XMonad таки рулит %)
                                                          +2
                                                          Ну вот нравится он мне почему-то, уже лет шесть как мы вместе =)
                                                          Легкий, приятный, гибкий. Синтаксис без «особенностей», легко читается. Отличные возможности мета-извратится.
                                                            0
                                                            Я делал подобное на Питоне:
                                                            dpaste.com/105822/
                                                            0
                                                            Блин, какая крутая вещь! Автор, может продолжите обозревать возможности Awesome и его библиотек? А то интересно увидеть возможности всех этих awful, beatiful, naughty, wicked, etc… А затем и самому полезть разбираться. А то вот чувствую, что надо бросить все и слезть с насиженной бубунты обратно на Арч и ковырять awesome — да все никак себя не настрою на это дело)
                                                            И еще интересно, возможно ли такое сделать для Яндекса)
                                                              0
                                                              Причем как для почты, так и для остальных сервисов (лента, Я.ру, фотки).
                                                                0
                                                                Можно ;)
                                                                Не совсем, правда, красиво, но работать будет.
                                                                  0
                                                                  Ну для почты в чем будет отличие? Вроде же тут тоже бот для XMPP.
                                                                +1
                                                                у меня бубунта, но на ней стоит awesome =)
                                                                0
                                                                Интересно смотрится код. Цветовая гамма приятая, и этот тёмный фон… :)
                                                                  0
                                                                  это тема для gvim и desertEx.
                                                                    0
                                                                    ну а шрифт Майкрософтовский, называется Consolas.
                                                                      +1
                                                                      А что Droid?
                                                                        +1
                                                                        надо будет попробовать.
                                                                        0
                                                                        Не могли бы поделиться своими настройками freetype? У меня никак не получается добиться такого же отображения этого шрифта у себя.
                                                                          0
                                                                          я ничего дополнительно не настраивал, настройки дефолтные убунтувские.

                                                                          если вас интересуют какие-то конфигурационные файлы, скажите названия и я их выложу.
                                                                      0
                                                                      мсье любитель острых ощущений :)
                                                                        +3
                                                                        Не хватает тут таких постов.
                                                                          0
                                                                          Да, это точно… Давно уже хочу перейти на Linux, а такие посты просто обязывают это сделать
                                                                            0
                                                                            Предыдущий пост без иронии.

                                                                            Особенно, если трети статьи не понял (тяжеловато для пользователей окон)
                                                                            0
                                                                            Согласен на все 100%. После такого поста начинаешь «городить свой огород»…
                                                                            0
                                                                            Evo + IMAP для гуглопочты и будет вам счастье при минимуме телодвижений. :)
                                                                              +2
                                                                              Evo == Evolution? мне кажется это слишком тяжеловесное счастье для показа маленького попапа…
                                                                                0
                                                                                Тем более вот у Evolution как раз работа в трее и попапы — не самое сильное явно)
                                                                            • UFO just landed and posted this here
                                                                                +1
                                                                                имхо, годится если письма достаточно редко приходят.

                                                                                кстати, у ОМСов разве нет ограничения на количество перенаправленных писем в день/час?
                                                                                  +2
                                                                                  Казалось бы оригинально… Но причём тут линукс? :)
                                                                                    +3
                                                                                    у меня телефон взорвется если такое сделать, это хорошо например если ждешь от кого-то ответа на днях, то дать адрес другого мыльника и на нем настроить.
                                                                                      0
                                                                                      можно в фильтры прописать адрес от которого ждешь письмо и только его переадрисовывать
                                                                                    +1
                                                                                    Автор — молодец! Аж слезы гордости за русских программистов навернулись.
                                                                                    [пошел читать про lua]
                                                                                      0
                                                                                      За naughty спасибо. Уверенно выкидываем сторонние нотфикаторы…
                                                                                        0
                                                                                        Да. И кстати глубокое имхо, но когда ваш wm коннектится к интернету… Вобщем в этом есть что то не правильное. По сему имхо лучше это обернуть в обычный баш скрипт, дергать по крону и пускать через awesome-client. У самого проверка почты локальная, а всякая погода дергается из кэша, заботливо скачанного курлом. Хотя можно было бы и напрямую. Но по отдельности имхо юниксвейнее
                                                                                          +1
                                                                                          мой WM никуда не коннектится, коннектится отдельный скрипт.
                                                                                            0
                                                                                            Значит все чудесно ^_^
                                                                                          –1
                                                                                          Мда, решение то далеко не треходовое) Но ведь в том же Тандерберде есть уведомления, он издает звук и показывает попап при приходе письма!
                                                                                            0
                                                                                            Ещё один «велосипедист». Но это хорошо — опыт увеличиваеться.
                                                                                              +1
                                                                                              такие задачи решал для conky в текстовом формате: погоду и почту ;)
                                                                                                +1
                                                                                                Однозначно, такие статьи — в избранное!
                                                                                                  –1
                                                                                                  респект! Это- внатуре unix-way
                                                                                                    0
                                                                                                    kcheckgmail… эх…
                                                                                                    0
                                                                                                    А вообще в целом, интересное начинание. Эдак можно силами WM-а сделать и управление MPD (уже видел пару проектов на вики awesome-а) и нотификацию RSS и кучу всего. Блин, надо учиться хоть немного кодить)
                                                                                                    Что посоветуете по Lua?)
                                                                                                      0
                                                                                                      А главная мечта в таком случае — сделать что-нибудь на замену NetworkManager. Функционал 3G/GPRS мне не нужен, но вот хочется нечто такое) Можно было бы присобачить netcfg арчевский, он скоро будет dbus поддерживать (уже есть версия 2.2 альфа). Ух, ну планы)
                                                                                                        0
                                                                                                        я ничего кроме мануала не использовал в начале; плюс уже шесть лет слежу за дискуссиями в lua-l (это официальный список рассылки), это просветляет =)

                                                                                                        говорят, Programming in Lua хорошая книга (особенно второе издание, но оно в электронном виде вроде не доступно)
                                                                                                        0
                                                                                                        Можно таким же способом проверить объем ящика? В мегах или в процентах заполненности?
                                                                                                          +1
                                                                                                          в официальном API вроде ничего такого нет, да и зачем? этот ящик потенциально бесконечный (да и вообще я почти всю почту сразу удаляю) =)
                                                                                                            0
                                                                                                            Есть такая проблема на очень публичных ящиках, где только спама накапливается 7 гигов за две недели и он не успевает убиваться за дефолтные 30 дней… :(
                                                                                                          0
                                                                                                          Я эту проблему решил средствами самого жаббера через транспорт j2j, мой основной аккаунт забирает сообщения о новой почте прямо с Gmail'а, а на него можно логиниццо как на обычный жаббер сервер (кстати можно сообщения отправлять списку контактов в гмыле), так вот, сам гмыл делает рассылку сообщений о новых письмах, и мне в мой пси(жаббус, если на мобильнике) приходит сообщение о новом письме, а там дальше уж как настроено, будет и попап и сообщение в трее, и на мобиле и т.д.
                                                                                                            0
                                                                                                            забыл…

                                                                                                            чтобы подключиццо прямо к гмылу нужно в транспорте j2j или жабберклиенте указать:
                                                                                                            username: %gmail_username%
                                                                                                            password: %gmail_password%
                                                                                                            server: gmail.com
                                                                                                            Domain or IP: talk.google.com
                                                                                                            port: 5222

                                                                                                            после этого:
                                                                                                            — клиент загрузит все активные контакты из гмыла и будет работать с ним как с обычным сервером жаббер
                                                                                                            — транспорт будет показывать контакты в онлайне и принимать нотификации о новых письмах

                                                                                                            автору на заметку, ничего тут фильтровать не нужно, если вы не пользуетесь внутренним чатом гмыла
                                                                                                              +1
                                                                                                              автору на заметку, ничего тут фильтровать не нужно, если вы не пользуетесь внутренним чатом гмыла


                                                                                                              простите, не понял. что именно я фильтрую, чего фильтровать не нужно?
                                                                                                              0
                                                                                                              Ребятаааа! Как вы в awesome раскладку клавиатуры переключаете?
                                                                                                                0
                                                                                                                извините, а вы не посоветуете какие-нибудь хорошие ресурсы по LUA?
                                                                                                                0
                                                                                                                А что у нас с русским в письмах? Как оно будет уведомляться?
                                                                                                                  0
                                                                                                                  усё, окей. там снизу отрезано уведомление о вполне русском сообщении =)
                                                                                                                  0
                                                                                                                  Сам делал такое неделю назад на python(imap) + lua, но без naughty — не надо пока :). Получилось короче и без плясок с либами для lua.

                                                                                                                  а вообще awesome — первый вменяемый тайлинговый wm :)

                                                                                                                  awesome irc — тоже полезный ресурс. RTFM никто даже не сказал

                                                                                                                  Only users with full accounts can post comments. Log in, please.