IM tips/ru

This page shows some examples on how to configure awesome for use with certain IM clients.

CenterIM
CenterIM терминально ориентированная программа IM поддерживающая кучу протоколов.

Finch
Терминальный месенджер, являющийся альтернативой Pidgin. Он использует существующие файлы конфигурации Pidgin и библиотеку libpurple. Это особенно удобно, если вы переходите с других оконных менеджеров и/или имеете уже настроенный Pidgin.

Великолепное руководство для начинающих.

Pidgin
Настройка Pidgin была опубликована пользователем Сперанский

В Awesome работа с этим распространенным мессенджером станет удивительно приятной и удобной! Для этого нам нужно:

1. Настроить схему отображения клиентов на выбранном тэге; 2. Назначить Pidgn выбранный тэг по умолчанию; 3. Присвоить окнам чатов статус slave по умолчанию (что позволит списку контактов оставаться всегда в мастер-зоне).

Настройка тегов
Для начала определимся со схемами, небольшая часть раздела layouts: layouts = {   awful.layout.suit.floating, awful.layout.suit.tile, -- в данном случае нас интересует именно эта схема ... } В нашем примере закрепляем за Pidgin тег 4:

-- {{{ Tags -- Define a tag table which hold all screen tags. tags = { names = {"1", "2", "3", "4", "5", "6",}, layout = {layouts[2], layouts[2], layouts[4], layouts[2], layouts[4], layouts[2]} } for s = 1, screen.count do      -- Each screen has its own tag table. tags[s] = awful.tag(tags.names, s, tags.layout) awful.tag.setncol(2, tags[s][4])                        -- эта и следующая строчка нужна для Pidgin awful.tag.setproperty(tags[s][4], "mwfact", 0.20)       -- здесь мы устанавливаем ширину списка контактов в 20% от ширины экрана end

Правила
В правилах (rule) для поиска конкретного приложения или его свойств, вы можете использовать вместе свойства class и role, который можно узнать запустив: xprop | grep -i class xprop | grep -i role Более подробно о настройке правил(rule) вы можете ознакомиться на странице Разбираем правила(rules)

Для окна списка контактов Pidgin свойство role имеет значение buddy_list, для окон чатов- conversation. Добавляя приведенный ниже код в ваш rc.lua, вы определяете открытие окна списка контактов в тэге 4, и открытие окна чата в тэге 4 и пометкой его как slave, что будет переносить его сразу в стэк-зону. { rule = { class = "Pidgin", role = "buddy_list"}, properties = { tag = tags[1][4] } }, { rule = { class = "Pidgin", role = "conversation"}, properties = { tag = tags[1][4]}, callback = awful.client.setslave },

Уведомления на ярлыке тега
По умолчанию в Pidgin не устанавлены уровни срочности (urgent hints) в его окнах при появлении новых сообщений. Но вы можете включить эту возможность используя стандратный плагин: перейдите в Средства -> Модули (или нажмите Ctrl-U) -> Уведомления о сообщениях ->и в его настройках включите Установить подсказку СРОЧНО в оконном менеджере. У меня в системе ярлык тега при поступлении сообщения подсвечивается красным цветом.

Gajim
В последних версиях Gajim появилось много полезных возможностей для использования в тайлинговых оконных менеджерах; он может держать список контактов и чаты в одном окне (как это сдлеано в Tkabber). Для включения этой функции перейдите: Preferences -> General -> Window behaviour и выберите: Single window for everything.

Если по какой то причине, вы хотите разделить список контактов и чат, далее приведены несколько советов с которых можно начать. Во первых вам лучше будет выделить весь тег для Gajim - хотя он и поддерживает табулированные окна, когда вы открвате сервис поиска, передачи файлов, вывода информации о пользователя и т.д. они могут довольно быстро загромоздить весь экран.

Настройки тегов
Однажды выделив тег для Gajim вы можете настроить пользовательский mwfact (мастер фактор ширины) в цикле создания тегов, чтобы зарезервировать узкое пространство для списка контактов. Я (User:anrxc) имею разрешение 1280x800 и вычислил, что 0.13 является оптимальным значением для схемы tile (где 'N' это номер тега):

awful.tag.setproperty(tags[s][N], "mwfact", 0.13)

Правила(rules)
Свойства тегов работают отлично, если вы укажите setslave, поэтому чат и другие окна не смогут захватить пространство предназначенное для списка контактов. Если вы решите выделить тег для Gajim вам также будет необходимы правила которые будут автоматически перемещать все окна Gajim на этот тег. Мы можем решить эту проблему используя таблицу в awful.rules.rules (где 'S' это номер экрана и 'N' номер тега):

{ rule      = { class = "Gajim.py" }, properties = { tag  = tags[S][N] }, callback  = awful.client.setslave },

Настройки тегов
Я (User:DsTr) использую следующие настройки тегов (где 'N' это номер тега):

awful.tag.setncol(2, tags[s][N]) awful.tag.setnmaster (1, tags[s][N]) awful.tag.setmwfact (0.2, tags[s][N])

Правила:

{ rule = { class = "psi" }, properties = { tag = tags[s][N] } }, { rule = { class = "Qutim" }, properties = { tag = tags[s][N] } },

Управление signal/hook
if c.class == "psi" and not c.name:find("Psi") then awful.client.setslave(c) end if c.class == "Qutim" and not c.role:find("contactlist") then awful.client.setslave(c) end

В последих версиях awesome3 можно использовать "новые" сигналы

Дополнительные rule
В качестве альтернативы испльзования 'manage' signal добавьте второе правило после описанного выше:

{ rule_any = { class = { "psi", "Psi" } }, except = { instance = "main" }, callback = awful.client.setslave },

Это сделает все окна Psi вторичными, исключая список контактов. Это может быть намного более эффективно, так как код с 'manage' signal запускается намного чаще чем проверяются правила.

Freetalk
Для freetalk можно использовать хук, как это (требуется название окон wmctrl и freetalk для содержания "freetalk"):

(add-hook! ft-message-receive-hook     (lambda (time from nickname message) (system "for w in $(wmctrl -l|grep freetalk|awk '{print $4}'); do wmctrl -r $w -b add,demands_attention; done")))

P.S. Тем не менее, интересно, существует ли лучшее решение.