Управление из командной строки не означает, что Gajim имеет консольный интерфейс. Он по-прежнему будет располагаться на рабочем столе в виде окошка. Просто из консоли можно будет отправлять ему какие-либо команды. Собственно, команд поддерживается немного, но для каких-то простейших действий должно хватить.
В состав пакета с Gajim входит консольная утилитка gajim-remote, которая как раз и предназначена для отправки команд основной программе. Если вызвать её без параметров, она покажет список поддерживаемых действий. Вот наиболее интересные:
- check_gajim_running — проверить, запущен ли Gajim (результат — True или False),
- list_accounts — список учётных записей,
- list_contacts [учётные записи] — список контактов в учётных записях,
- contact_info <jid> — информация о пользователе с указанным JID,
- account_info <учётная запись> — показать информацию об одной из учётных записей Gajim,
- add_contact <jid> [учётные записи] — добавить контакт в ростер,
- remove_contact <jid> [учётные записи] — удалить учётную запись из ростера,
- change_status <статус> [сообщение] [учётные записи] — изменить статус с возможностью указания сообщения и учётной записи (если не указать — будет изменен статус всех учётных записей),
- get_status [учётные записи] — получить статус указанных учётных записей,
- get_status_message [учётные записи] — получить сообщение статуса указанных учётных записей,
- get_unread_msgs_number — количество непрочитанных сообщений,
- handle_uri <uri> [учётные записи] — обработать ссылку вида «xmpp://»,
- join_room <комната> [ник] [пароль:] [учётные записи] — присоединиться к конференции,
- send_chat_message <jid> <сообщение> [PGP-ключ] [учётные записи] — отправить сообщение в чат,
- send_file <файл> <jid> [учётные записи] — отправить файл,
- send_groupchat_message <jid> <сообщение> [учётные записи] — отправить сообщение в конференцию,
- send_single_message <jid> <тема> <сообщение> [PGP-ключ] [учётные записи] — отправить одиночное сообщение,
- open_chat <jid> [учётные записи] — открыть чат с указанным контактом,
- start_chat <учётные записи> — открыть чат для заданной учётной записи (появится окно ввода JID),
- toggle_roster_appearance — показать/скрыть окошко ростера.
Для этого в бесконечном цикле будем вызывать gajim-remote, передавая ему при помощи обратных кавычек результат выполнения команды fortunes. Между вызовами поставим паузу 5 минут (5×60=300 с).
while true; do gajim-remote change_status "online" "`fortune`"; sleep 300; doneУ этой команды есть небольшой недостаток — нужно всё время держать терминал открытым. Для того, чтобы решить эту проблему, можно просто записать команду в текстовый файл, а потом запустить следующим образом:
bash changestatus.sh &Амперсанд в конце запустит выполнение скрипта в фоне. Можно также создать правило для cron — тогда вообще не придется что-либо запускать.
Другое возможное применение — отправка кому-то сообщения по расписанию. Например, при помощи такой команды:
echo "gajim-remote send_chat_message user@example.com 'Hello'" | at 10:00Ровно в 10:00 пользователю будет отправлено сообщение «Hello» (если, конечно, Gajim будет в этот момент запущен).
Итак, даже этот небольшой набор команд в сочетании с инструментами командной строки позволяет сделать что-то полезное.
Если работа gajim-remote покажется слишком медленной, можно воспользоваться, например, командой dbus-send или qdbus для отправки сообщения напрямую через D-Bus.
Список предоставляемых функций можно посмотреть при помощи команды
qdbus org.gajim.dbus /org/gajim/dbus/RemoteObjectВызвать же функцию можно так:
qdbus org.gajim.dbus /org/gajim/dbus/RemoteObject toggle_roster_appearanceРаботает намного быстрее gajim-remote, но приходится явно указывать, кому мы шлём команды.
Читать дальше…