ICQ — средство для быстрого обмена сообщениями, особенно популярное среди пользователей Windows, также может использоваться и из Emacs. В настоящее время существует одна реализация ICQ — eicq, но она может использоваться только с XEmacs. Данная реализация поддерживает следующие возможности:
Поддержку протокола ICQ версии 8 (версия из CVS);
Регистрацию новых пользователей и смену пароля;
Передавать сообщения и URL;
Авторизовывать пользователей, обновлять мета-информацию и получать список контактов;
Преобразовывать список контактов micq и licq в собственный формат;
Изменять привязки клавиш, и писать функции на Emacs Lisp.
К сожалению данная реализация не поддерживает чаты, передачу файлов.
В связи с тем, что я не пользуюсь XEmacs, я не смог протестировать данную реализацию, но судя по документации, она достаточно просто устанавливается и настраивается.
Существует две реализации клиента Yahoo! Chat для Emacs. Первая из них называется ElGyach и доступна с http://www.nongnu.org/elgyach, а вторая называется yod.el и доступна с http://users.starpower.net/marti1/yod.el.html, однако ElGyach имеет больше возможностей по сравнению с yod.el, поэтому я остановлюсь на его описании более подробно.
ElGyach поддерживает следующие возможности:
Сохранение буферов с сообщениями в файлах;
Проверка грамматики;
Подсветка сообщений;
Поддержка шифрования с помощью AES;
Механизм дополнений имен, команд и текста;
Настройка цветов и атрибутов текста;
Одновременное использование разных учетных записей;
История сообщений, по которой можно перемещаться вперед и назад;
Игнорирование сообщений от пользователей;
Интеграция с другими модулями Emacs.
Более подробную информацию вы можете найти на страницах, относящихся к разработке ElGyach.
Для установки ElGyach необходимо скачать его с http://savannah.nongnu.org/projects/elgyach, развернуть и скомпилировать (поскольку для общения с сервером Yahoo, ElGyach использует реализацию на языке С). Вот так будет выглядеть загрузка ElGyach в вашем файле инициализации:
(add-to-list 'load-path "path_to_elgyach") (autoload "gyach" "gyach" "Autoload for ElGyach")
После загрузки вы можете задать необходимые параметры с помощью команд настройки Emacs —
M+x
customize-group
gyach
. Здесь вы можете задать
имя и пароль пользователя Yahoo! Chat, а также имя программы
elgyach, если она стоит в нестандартном
месте.
Для запуска ElGyach используется команда
M+x
gyach
, которая создаст буфер процесса. Вы также можете
использовать несколько процессов ElGyach одновременно. Это
произойдет, если вы перед выполнением команды зададите префикс, вот
так
C+u
M+x
gyach
. Однако вы не можете войти больше чем в один чат, используя одно и то же имя — это ограничение
Yahoo! Chat.
ElGyach поддерживает выполнение различных команд, задаваемых в форме /имя. В настоящее время доступны следующие команды:
/ignore User и /unignore User — для игнорирования сообщений от определенных пользователей, и для отмены этого ограничения;
/highlight User и /unhighlight User — для подсветки сообщений от определенного пользователя, и окончания использования данной настройки;
/version — печатает номер версии ElGyach.
Основным параметром настройки являются имя и пароль
пользователя, которые используются для подключения к Yahoo!
Chat. Эти значения хранятся в переменных
gyach-yahoo-username
и
gyach-yahoo-password
.
Для обеспечения настройки параметров буфера ElGyach
может использоваться код, который будет выполняться с помощью
хука gyach-mode-hook
.
ElGyach легко расширяется. При каждом вызове команды
вида /КОМАНДА, будет вызываться функция
gyach-custom-КОМАНДА
. Таким образом, вы
можете добавить свою функциональность с помощью небольшого
объема кода.
Поддержка AIM в Emacs осуществляется пакетом TNT. Он позволяет обмениваться сообщениями, и участвовать в групповых чатах.
Получить данный пакет можно с его домашней страницы, расположенной по адресу http://tnt.sourceforge.net/. Установка пакета достаточно проста — надо раскрыть архив, и настроить Emacs для его использования. Это выполняется с помощью следующих команд:
(add-to-list 'load-path "path_to_tnt_dir") (require 'tnt)
Вот и все.
Для работы с AIM вам нужно иметь уже зарегистрированное имя. Если у вас его нет, то вы можете зарегистрировать новое имя по адресу http://www.aol.com/aim.
Основная работа с пакетом осуществляется с помощью сочетаний клавиш, что позволяет удобно работать с пакетом. Все команды можно разделить на несколько частей, которые представлены в виде соответствующих разделов.
Подключение к сервису AIM выполняется с помощью
команды tnt-open
(C+x
t o). При подключении вам
необходимо указать ваше имя и пароль, и если все пройдет
нормально, то пакет сообщит о том, что вы подключились к
системе. Чтобы каждый раз не вводить имя и пароль, вы
можете задать их с помощью переменных
tnt-default-username
и
tnt-default-password
. вы также можете
использовать несколько разных имен для входа в
систему. Более подробную информацию вы можете найти в разделе
Настройка.
После подключения, вы можете выполнять стандартные задачи — ведение переговоров, общение в чатах и т.п.
Изменение статуса с "доступен" в "занят" производится
с помощью команды tnt-away-toggle
(или
C+x
t A). вы можете задать
сообщение, которое будет отображаться для пользователей,
которые будут пытаться соединиться с вами, когда вы
находитесь в данном режиме.
Прекращение работы с AIM выполняется с помощью команды
tnt-kill
(C+x
t q).
TNT поддерживает два типа обмена информацией — прямые беседы между двумя пользователями, и общение к чатах.
Для прямого общения используется команда
tnt-im
(или сочетание клавиш
C+x
t i). При этом у вас
запросят имя пользователя с которым вы хотите пообщаться, и
после установления связи, будет открыт буфер, в котором вы
сможете печатать свои сообщения и видеть ответы. Если
пользователь есть в вашем списке пользователей, то вы можете
использовать механизм дополнения для ввода имени.
Для начала общения в чатах используется команда
tnt-join-chat
(или сочетание
C+x
t j). вы можете ввести
имя существующего чата, или ввести новое, и тогда чат будет
создан. Как и в предыдущем случае, создается новый буфер, в
котором и ведутся все переговоры. Для выхода из чата вы
можете использовать tnt-leave-chat
(или
C+x
t l).
В том случае, если кто-то другой присылает вам
приглашение в чат, или сообщение, то вы можете принять его с
помощью tnt-accept
(C+x
t a) или отклонить с
помощью tnt-reject
(C+x
t r) — это может быть
полезным, если вы заняты, или не хотите беседовать с данным
пользователем. В том случае, если вы получаете несколько
сообщений, или приглашений в чат, то они накапливаются в
очереди, в которой их можно просматривать с помощью команд
tnt-next-event
(C+x
t n) — для получения
следующего сообщения, и tnt-prev-event
(C+x
t p) — для получения
предыдущего сообщения.
Вы можете формировать списки друзей, для того, чтобы быстро
набирать их имена. Для просмотра существующего списка
используется команда tnt-show-buddies
(C+x
t b), а для редактирования — команда
tnt-edit-buddies
(C+x
t B). Имена заданные в
этом списке будут использованы для реализации механизма
дополнений в строках ввода, там, где необходим ввод имен
пользователей.
TNT может также работать как мост между AIM и электронной
почтой. Это очень удобно, если вы хотите получать сообщения из
AIM на ваш почтовый адрес. Это выполняется с помощью команды
tnt-toggle-email
(C+x
t M). И для ее работы
нужно задать две переменные
tnt-email-to-pipe-to
и
tnt-email-binary
.
В том случае, если у вас несколько зарегистрированных
имен, то вы можете использовать команду
tnt-switch-user
(C+x
t s) для переключения
между разными именами.
Команда tnt-mute
(C+x
t m) может использоваться
для включения и отключения звуковых сигналов, используемых
TNT для оповещения пользователя.
Настройку TNT можно осуществлять как с помощью стандартных
механизмов настройки Emacs, так и с помощью кода на Emacs Lisp. Для
вызова настройки можно использовать команду
M+x
tnt-customize
, или
M+x
customize-group
tnt
.
TNT позволяет пользователю использовать несколько учетных
записей для использования. Для задания имени и пароля для входа,
сразу после запуска TNT, используются переменные
tnt-default-username
и
tnt-default-password
. А для задания
связей между именами и паролями в учетных записях,
используется ассоциативный список
tnt-username-alist
. Но будьте осторожны с этими переменными — помните, что они хранятся в вашем
файле настройки как обычный текст, и в случае установки
неправильных прав на файл, могут быть прочитаны другими
пользователями.
TNT позволяет настроить проигрывание разных сигналов в
зависимости от разных событий. Настройка сигналов управляется с
помощью переменных
tnt-beep-on-...
, например
tnt-beep-on-incoming-message
. Кроме
этого, вы можете настроить то, с помощью какой программы
будут проигрываться звуковые сигналы. Эти настройки
определяются переменными tnt-sound-exec
и
tnt-sound-exec-args
.
Поддержку сервиса Jabber в настоящее время осуществляют несколько пакетов для Emacs — ejab, который уже не развивается (замороженная версия доступна с http://ejab.sourceforge.net), smyrno, который также почти не развивается, но обладает достаточным набором возможностей (он доступен с http://www.nongnu.org/smyrno/) и Jabber.el, который активно развивается и представляет достаточно полную и расширяемую поддержку протокола Jabber. Поскольку Jabber.el динамично развивается, то я сосредоточусь исключительно на данном пакете.
Пакет требует для своей работы GNU Emacs 21 и Gnus 5.10.x (из него нужно только пара файлов —
sha1-el.el
и
hex-util.el
, так что вы можете их
установить не устанавливая весь Gnus), или XEmacs с поддержкой
Mule, а также установленными пакетами
gnus
, net-utils
и
mule-ucs
. Кроме этого, если установлен
пакет FLIM, то
Jabber.el может использовать его
для поддержки SASL.
Установка пакета достаточно проста — надо просто скачать его дистрибутив с http://emacs-jabber.sourceforge.net, развернуть его и настроить загрузку в стартовом скрипте Emacs'а, например следующими командами:
;; если вы установили jabber.el в нестандартное место (add-to-list 'load-path "path_to_jabber.el_dir") (require 'jabber)
После загрузки пакета, необходимо задать имя
пользователя и сервера, что делается с помощью команды
M+x
jabber-customize
. С помощью этой команды можно и
зарегистрировать нового пользователя, если перед выполнением
команды задать префикс.
После настройки, Jabber.el готов к работе, необходимо только подключиться к выбранному серверу Jabber.
Подключение к серверу выполняется одной командой —
M+x
jabber-connect
, после подключения с помощью
команды
M+x
jabber-send-presence
можно отправить на сервер
уведомление о присутствии. Эта команда дает возможность вам
указать статус присутствия, если вы оставили статус пустым,
то будет установлено значение по умолчанию равное
Online.
Для отключения от сервера Jabber, просто выполните
команду
M+x
jabber-disconnect
, и ваше подключение будет
закрыто.
Jabber.el позволяет вам
изменять состояние вашей доступности. Это можно сделать как
явно, с помощью команды
M+x
jabber-send-presence
, так и программно, с помощью
этой же функции. Кроме этого, вы можете запрограммировать
сервер Jabber на уведомление вас, об изменении статуса
нужного вам человека. Это выполняется с помощью команды
M+x
jabber-send-subscription-request
.
После подключения, пользователю становится доступен буфер roster'а, находясь в котором он может выполняться различные действия. Одно из таких действий —
переговоры (или chatting). Для начала переговоров, нужно
лишь выбрать персону с кем вы будете переговариваться и
набрать C+c C+c, и будет создан буфер с именем
*-jabber-chat-:-ИМЯПЕРСОНЫ-*
, в котором
вы и сможете вести переговоры.
Для подключения к групповому чату пользователь может
использовать команду
M+x
jabber-groupchat-join
, или использовать сочетание
клавиш C+c C+m находясь в буфере roster'а. После
подключения к чату, будет создан буфер с именем
*-jabber-groupchat-:-ИМЯЧАТА-*
, что
позволяет одновременно участвовать в нескольких
обсуждениях. Работа с буфером осуществляется точно так же,
как и при обычных переговорах. Для выхода из группового
чата просто наберите
M+x
jabber-groupchat-leave
.
Кроме этого, если вы являетесь владельцем данного
чата, пакет позволяет произвести его настройку, используя
команду
M+x
jabber-groupchat-get-config
.
Буфер roster'а называется
*-jabber-*
, и содержит в себе список
контактов вашего roster'а. С использованием данного буфера
проводятся все операции, которые требуют указания Jabber ID,
такие как переговоры, групповые и многопользовательские
чаты, получение информации roster'а и работа с
сервисами.
Jabber.el позволяет пользователю получить доступ к большинству возможностей предоставляемых Jabber. Сюда входят — просмотр списка сервисов, поиск в каталогах, регистрация для использования сервисов, а также поддержка набора специализированных команд (ad-hoc).
Для использования каких-либо сервисов, вам сначала нужно их найти. Это может выполняться двумя способами — поиском (discovering) и просмотром (browsing). Первый способ является предпочтительным, поскольку использует новые протоколы. Для поиска сервисов могут использоваться две команды —
M+x
jabber-get-disco-items
и
M+x
jabber-get-disco-info
, которые выдают информацию
либо о конкретном сервисе, либо о сервисах, относящихся к
выбранному сервису. Эти же команды доступны через меню,
которое вызывается сочетанием клавиш
C+c
C+i из
буфера roster'а.
Поиск по сервисам выполняется с помощью команды
M+x
jabber-get-search
, или выбором пункта меню,
отображаемого с помощью сочетания клавиш C+c C+s. После
выполнения запроса, вам будет показана форма поиска, которую
необходимо заполнить для его выполнения.
Регистрация производится аналогично проведению поиска,
только используется команда
M+x
jabber-get-register
. С помощью данного сервиса,
вы можете например, сменить свой пароль, или
зарегистрироваться для использования конкретного
сервиса. Как и в случае с поиском, при регистрации, модуль
отобразит форму регистрации, которую вам необходимо будет
заполнить.
Для работы со специализированными командами,
пользователь сначала должен получить их список,
поддерживаемых сервером. Это выполняется с помощью команды
M+x
jabber-ahc-get-list
. Для выполнения
специализированной команды, используется команда
M+x
jabber-ahc-execute-command
. Специализированные
команды могут использоваться, например, для того, чтобы
удаленно изменить состояние вашего клиента, или другие
вещи.
Настройка клиента выполняется с помощью команды
M+x
jabber-customize
или, что тоже самое, с помощью
команды
M+x
customize-group
jabber
. Переходя по
разделам группы, вы можете настроить как основные параметры,
такие как имя, сервер, так и другие, например уведомления о
событиях, параметры начертаний (faces) и различные
хуки.
Этот процесс является интуитивно-понятным, и поэтому я не буду заострять на нем внимание. Список переменных, которые используются для настройки с помощью этих команд, приведен в руководстве для Jabber.el.
Jabber.el позволяет пользователю расширять возможности пакета, предоставляя возможности по приему и отправке новых типов запросов и ответов, осуществлять доступ к данным соединения и многое другое.
XML, который используется для общения с сервером
jabber, представляется в виде списков, которые создаются
модулем xml.el
— каждый тег представляется в виде
списка, первым элементом которого является символ
представляющий тег, за тем следует список из списков
атрибутов, и затем идут вложенные тэги и содержимое.
Текущее состояние roster'а представляется списком с
именем *jabber-roster*
. В данном списке
можно найти подробную информацию о группах, состоянии
соединения и прочих параметрах.
Подробное описание процесса расширения возможностей пакета приведено в разделе "Hacking and extending" справочной страницы Jabber.el
Судя по информации в Internet, кроме вышеперечисленных модулей, также существует и рудиментарная поддержка служб мгновенного обмена сообщениями MSN. Реализация этого сервиса доступна с http://www.geocities.co.jp/SiliconValley-SanJose/7474/EmacsLisp.html, но страницы написаны на японском языке, и поэтому информации не так уж и много, хотя по скриншоту видно, что клиент работает.