Tkabber Wiki

Смайлики и аватары
Login

Смайлики и аватары

Материал из Tkabber Wiki

Содержание

Предупреждение

Информация в этом разделе написана, исходя из возможностей Ткаббера 0.10.0 и выше; если у вас более старая версия, — вам сюда.

Смайлики

40iN_KoS Нет в русском языке слов,
которые могут передать мое настроение..

40iN_KoS но есть идеаматика..

40iN_KoS *CRAZY*

AmeNO нет у меня в клиенте смайлов,
которые могут передать твое настроение..

Цитата с башорга.

"Официальное" название этих "улыбаек" в XMPP — "эмоциконки" (от EMOTion ICONs), посему везде, где используется термин "эмоциконка", можно читать "смайлик"; обратное также верно.

Работа с эмоциконками

Комбинация <Alt-E> в окне ввода чата открывает менюшку, в которой можно выбрать любой смайлик из подключённой схемы. Об этом и о многом другом, кстати, рассказано в пункте меню Помощь → Краткая справка.

Примечание: На самом деле есть по меньшей мере три аргумента против такого подхода:

Управление эмоциконками

Наборы эмоциконок можно менять на лету при помощи графического интерфейса настроек — так же как это делается для наборов иконок интерфейса (pixmaps themes): настройка находится в группе Chat → Emoticons и называется ::plugins::emoticons::options(theme).

Всегда присутствует одна специальная тема с названием "Нет" ("None") — её выбор (с сохранением) отключает показ смайликов.

Ткаббер при запуске ищет наборы иконок в двух местах:

  1. Каталоге emoticons, находящемся в каталоге с кодом Ткаббера;
  2. Каталоге emoticons, находящемся в каталоге настроек Ткаббера.

Поэтому для добавления своего набора эмоциконок в Ткаббер:

Во-вторых, можно подключать наборы эмоциконок "по старинке": при помощи соответствующей команды в файле конфигурации. Этот способ не приветствуется, особенно — для использования новичками. Команда указывается, например, так:

hook::add postload_hook {
    ::plugins::emoticons::load_dir "Путь_до_каталога_с_набором_иконок"
}

Обратите внимание, что начиная с версии 0.10.0 пространство имён ::plugins::emoticons, содержащее команды для работы с эмоциконками, "потеряло" лишнюю букву "e", которую оно имело в более ранних версиях, когда называлось ::plugins::emoteicons. В настоящее время Ткаббер поддерживает старое название для совместимости, но в следующем релизе этот "костылёк" будет выброшен, поэтому подумайте об этом заранее.

Имейте в виду, что если вам нужно сослаться в файле конфигурации на каталог настроек Ткаббера, наиболее разумно использовать специальную переменную Ткаббера — $::configdir.

Заодно ответим на пару других достаточно часто возникающих вопросов:

  1. Нет, Ткаббер не может увидеть новый набор без перезапуска. В качестве "хака" можете попробовать выполнить в консоли Ткаббера команду

    ::plugins::emoticons::enable_subsystem
    

    которая, помимо всего прочего, пересканирует каталоги с наборами эмоциконок, но желаемое действие этой команды, естественно, не гарантируется.

  2. Нет, выбрать набор эмоциконок "руками" из произвольного места нельзя (так же, как и набор иконок интерфейса, к примеру). Если всё же вам это очень нужно, можете либо указать прямую команду загрузки набора эмоциконок в файле конфиурации, либо можете попробовать использовать символические ссылки, "линкуя" каталоги с наборами эмоциконок из произвольного каталога в один из известных ткабберу, например, в Unix:

    ln -s /usr/local/share/my-smile-packs/uglyfaces ~/.tkabber/emoticons/uglyfaces
    

    Ситуация в Windows несколько сложнее; подробности изложены тут.

  3. Стабильный ткаббер 0.10.0 не умеет грузить ".jisp"-файлы напрямую. Сначала их нужно распаковать — на самом деле это обычные zip-архивы.

Готовые комплекты смайликов

Комплекты анимированных смайликов

  1. Emoticons-tz.zip (202 kB)

Исходник: игра Timezero.

Количество: 90.

Автор комплекта: xmpp:roz@jabber.ru.

  1. Big pack.zip (520 kB)

Количество: 132.

Автор комплекта: xmpp:kellin@jabber.ru.

Примечание: смайлики анимированные, и ощутимо забивают процессор даже когда не используются (просто запущена программа с подключёнными смайликами). При вызове же окна по <Alt-E> процессор забивается на все 100%. Просьба знающим людям посмотреть, что там такое может быть.

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

Archimed

Комплект emoticons-bombusmod

Эти смайлики от бомбуса перепакованы для Ткаббера камрадом SnAkE (xmpp:3XXL@jabber.ru).

93 штуки, 39 Кб.

Исправленный набор смайликов "от пуза"

Исправленная версия комплекта "puzazBox".

Lknight исправил ошибки в icondef.xml и добавил мнемонику :-E, которая ссылается на devil.gif.

66 штук, 38 Кб.

Комплект в стиле "колобки": Big Pack

Big Pack — большой пак смайлов в стиле "колобки" также перепакован из "бомбусмодовских" смайлов aka Tasha.

Очень симпатично вышло, на мой взгляд. Эмоций много: 136 штук. Пак весит 162 кб.

Идея создания: xmpp:artru@jabber.ru; и, собственно, человек, который долго не соглашался их подточить для Ткаббера и после длительных уговоров таки согласился. Спасибо ему: xmpp:CSander@xmpp.ru.

Пак выложил Русский.

Комплект окончательный

Teh ultimate emoticon pack — пак с блекджеком и пр. Выполнен в духе минимализма и любви к литературному русскому языку.

Набор из черного и белого шрифта (как на скрине) + немного поправлен icondef.xml.

Полное искоренение смайликов

Выберите тему смайликов с названием "Нет" ("None" в англ. варианте) и сохраните настройку — смайлики начнут показываться "как есть" — в виде своих текстовых мнемоник.

Клонирование смайликов

Задача: сделать так, чтобы некоторые смайлики, для которых в любимом наборе нет картинок, всё-таки рисовались картинками.

Решение: "мнемоники" смайлов связаны с соответствующими картинками при помощи массива ::emoticons::emoticons. Ключом (индексом) массива является мнемоника смайлика, а значением — его картинка. Знание этого позволит нам "клонировать" смайлики. Помещаем в config.tcl такой код:

hook::add finload_hook {
    namespace eval ::emoticons {
        variable emoticons
        set orig :-)
        set dest =)
        set emoticons($dest) $emoticons($orig)
    }
}

Сие заклинание связывает мнемонику =) с картинкой от мнемоники :-).

Внимание: если у вас в конфиге прописана загрузка своего смайл-пака, то обсуждаемый код должен идти после команды загрузки (т.к. она меняет содержимое массива со смайликами). Можно поместить их в один finload_hook, лишь бы "клонирование" шло последним.

Вынимание: исходный смайлик, мнемоника которого помещается в переменную orig, обязан иметь картинку, иначе ваш конфиг взорвётся с шумом и дымом при старте Ткаббера.

Внимание в версиях 0.9.x везде вместо "emoticons" нужно писать "emoteicons".

Массовое клонирование

Данный подход был изобретён для 0.9.x с целью обрабатывать "ROTFL/LOL" смайлики типа :-))))))))))))))).

Начиная с 0.10.0 данная проблема решается проще — путём включения опции ::plugins::emoticons::options(handle_lol) в настройках эмоциконок.

Если у вас 0.9.x, читайте здесь.

Анимированные смайлы

Поддержка анимированных эмоциконок всегда была и является "нелюбимым ребёнком" в Ткаббере (наравне с аватарами). Причина в том, что анимированные картинки очень сильно затрудняют их обработку, поскольку на самом деле они значительно ближе к видеопотокам, чем к картинкам. Поскольку поддержка анимированных гифов отсутствует в библиотеках Tk и Img, которые Ткаббер использует для поддержки изображений, обработка анигифов требует достаточно извращённых приседаний со стороны разработчиков. До тех пор, пока кто-нибудь не напишет для Ткаббера спец. код для работы с картинками, который будет прозрачно обрабатывать анигифы так же, как и нормальные картинки, ситуация навряд ли изменится.

С другой стороны, поддержка анигифов в Ткаббере, в принципе, есть — она реализована в виде стандартного внешнего плагина aniemoticons. Если вы не знаете как устанавливать плагины Ткаббера, почитайте начало этой статьи.

Аватары

Подключение своей аватары

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

if {[file exists  $::configdir/avatar.gif]} {
    avatar::load_file $::configdir/avatar.gif
} else {
    avatar::load_file $::rootdir/pixmaps/default/tkabber/tkabber-logo.gif
}

Как нетрудно заметить, этот код проверяет, имеется ли файл avatar.gif в директории, имя которой содержится в переменной $::configdir, и если его не находит, грузит логотип Ткаббера. Конечно, никто вас не заставляет называть ваш аватар именно так и класть именно туда. Но не забудьте написать путь в соответствии с местоположением вашего файла.

При выборе своей аватары помните, что графический файл может быть только формата gif. Не делайте аватару больших размеров — это не фотография. Постарайтесь уложиться в 5 килобайт, такие картинки и так будут грузится долго. И вообще, берите пример с аватары Bigote.

Если конфиг у вас был изначально пустым, необходимо заключить строчку, грузящую аватару (ну или весь вышеприведённый код), в хук:

hook::add finload_hook {
    avatar::load_file $::configdir/avatar.gif
}

Теперь, объявив аватару (Службы → Расширения → Аватара → Объявление), вы можете быть уверенным, что клиент, поддерживающий её просмотр, её увидит. Проверить это можно, заглянув в собственную персональную информацию, находясь в какой-нибудь конференции (при редактировании персональной инфы аватара не видна). Помимо прочих должна появиться вкладка "Аватара".

Объявление и "расшаривание" аватары можно тоже прописать в конфиг:

set avatar::options(announce)   1
set avatar::options(share)      1

Но вот вопрос: а сам Ткаббер может показывать нам чужие аватары? Краткий ответ: может. Длинный: надо немного потрудиться.

Просмотр аватары собеседника

Если у человека подключена аватара, то её можно увидеть в персональной инфе.

Если же вы хотите видеть аватару собеседника в окне чата, то:

  1. Хак от Badlop. Небольшое изменение файла chat.tcl покажет аватару в окне чата.
  2. Патч от Archimed — расширение возможностей хака от Badlope. Аватары автоматически масштабируются под размер выделенной области, поддержка прозрачности, поддержка анимированных аватаров.

Ссылки