Материал из Tkabber Wiki.
Ткаббер ЧаВо разделился на несколько статей. В этой статье разбираются глюки и баги, терзающие Ткаббер и его пользователей. Для удобства даны ссылки на другие тематические страницы ЧаВо.
Содержание
- 1 Глюки, возникающие в процессе работы
- 1.1 Общие вопросы
- 1.1.1 Ткаббер и Ufanet
- 1.1.2 Долгая загрузка Ткаббера
- 1.1.3 Ткаббер "виснет" при попытке логина на сервер
- 1.1.4 Пересылка файлов
- 1.1.5 Ткаббер постоянно держит меня в состоянии "отошёл" ("away")
- 1.1.6 Не могу приконнектиться к серверу через прокси
- 1.1.7 Keep alive в Ткаббере — возможно ли?
- 1.1.8 Что с грифельной доской?
- 1.1.9 Ткаббер в упор не видит SSL-сертификат для коннекта к серверу
- 1.1.10 Не могу отредактировать закладку конференции в ростере
- 1.1.11 Ткаббер и iChat
- 1.2 Вопросы, связанные с Линукс
- 1.2.1 Шифрование в Ткаббере: проблемы с gpgme/tclgpgme
- 1.2.2 В Ubuntu не вводятся русские буквы в Ткаббере, chto delat?
- 1.2.3 Ткаббер под X Window падает при попытке показать "странные" символы
- 1.2.4 Не работает вставка по Control-v под X Window
- 1.2.5 В Gentoo не работает сворачивание в трей
- 1.2.6 Fedora 8 и Tcl/Tk 8.5
- 1.2.7 Обновил тикль до 8.5, но Ткаббер по-прежнему запускается с 8.4
- 1.2.8 Userinfo в KDE 4.x
- 1.2.9 Диалоговые окна Tk на многоголовом X11-сервере
- 1.3 Вопросы, связанные с Виндовс
- 1.3.1 В старпаке/старките нет звука/поддержки JPEG,PNG/сжатия
- 1.3.2 Не работает браузер под виндами
- 1.3.3 При клике на URL'е в Ткаббере запускается две Оперы и открывают страницу два раза
- 1.3.4 Странное поведение прокрутки содержимого окна чата колесом мыши
- 1.3.5 Ошибка: wrong # args: should be "zlib option data ?...?", что делать?
- 1.3.6 Windows, дистрибутив от ActiveState — "падения" при нажатии Alt-любая кнопка в главном окне
- 1.3.7 Windows, дистрибутив от ActiveState — "падения" при открытии в фоне окна со смайликом
- 1.3.8 Фатальная ошибка в wish при запуске полноэкранных приложений под Windows
- 1.1 Общие вопросы
- 2 Внешний вид и звук
- 3 А как мне...?
- 4 Всякая всячина
Глюки, возникающие в процессе работы
Общие вопросы
Ткаббер и Ufanet
Вопрос: Почему все мои пользователи в оффлайне??? Пытаюсь подключиться к аське через ЛОКАЛ, и не могу, а через ВНЕШКУ могу. Что за дела???
Ответ: На самом деле Ткаббер тут ни при чём. Это проблема вашего аськиного гейта на Уфанете (как вы его называете, ЛОКАЛ). ВНЕШКА — соединение со стандартным сервером аськи, будет работать до тех пор, пока жива сама аська. Насчёт же ЛОКАЛа обращайтесь к вашему системному администратору (который, кстати, в эксклюзивном интервью нашему журналисту сказал, что джаббер-сервер на Уфанете — его личная инициатива, за которую он, по всей видимости, кроме головной боли, ничего не получает, поэтому сей сервис предоставляется на условиях "as is", то есть: работает — хорошо, не работает — ищите другой сервер). Жаловаться в нашей конференции на ваш ЛОКАЛ бессмысленно. Можете обратиться за дополнительными разъяснениями к следующим людям: xmpp:Rail@jabber.ufanet.ru, xmpp:mircas@jabber.ufanet.ru, а также на конференцию xmpp:chat@conference.jabber.ufanet.ru
Долгая загрузка Ткаббера
Вопрос: Ткаббер жутко долго грузится. Поначалу я даже думал, что он виснет на старте, но как-то раз набрался тепрения и дождался. Потом работает нормально.
Ответ: Посмотрите внимательно, что при этом показывает прогресс-бар сплэш-скрина. Если на нём застыли слова "пользовательский интерфейс", то возможно, дело вот в чём. Если у вас включено кэширование новостей, а самих новостных фидов в ростере — вагон и маленькая тележка, то через некоторое время общее число сообщений может с лёгкостью перевалить за несколько сотен. Естественно, чтобы все их подгрузить из файла, требуется время. Решений несколько:
- отключить кэширование, тогда при закрытии программы новости, которые вы не успели прочитать, пропадут; 1. избавиться от лишних очень активных фидов или хотя бы просматривать и удалять вручную большие списки новостей перед закрытием программы;
- смириться с долгой загрузкой или перегружаться как можно реже;
- проапгрейдить компьютер;
- оптимизировать код. Выбирать вам :)
Ткаббер "виснет" при попытке логина на сервер
Вопрос: Нажимаю "Подключиться" в окне логина и Ткаббер "подвисает"; соединение с сервером не происходит (или происходит, но после указанной паузы). Что делать?
Ответ: Если исключить очень плохое качество связи, которое бывает, например, на GPRS-линках, причин обычно две, и обе они коренятся в том, что Ткаббер в ходе соединения с сервером выполняет запросы к DNS.
Эта статья подробно описывает возможные проблемы с DNS в Ткаббере и методы их решения.
Пересылка файлов
Вопрос: Так работает в Ткаббере пересылка файлов или нет? Мы с другом пробовали сто раз через все доступные протоколы, и ничего не шлётся.
Ответ: Для начала почитайте введение, также в сжатой форме это объяснено в официальной документации Ткаббера (разделы 4.2.12. The Stream Initiation Module и 4.2.13. The Jidlink Module):
- Windows: C:\Program Files\Tkabber\tkabber\doc\tkabber.html
- *nix: /usr/share/doc/tkabber/tkabber.html
Практическая же реализация (для большинства, но не всех случаев) такова.
Зайдите в Настройки → File Transfer и затем по очереди в Jidlink и SI. В Jidlink включите опцию
::ft::ftjl::options(enable)
и отключите
::jidlink::transport(allowed,dtcp-passive)
оставив ::jidlink::transport(allowed,dtcp-active) и ::jidlink::transport(allowed,inband-bytestream).
В SI отключите
::si::transport(allowed,http://jabber.org/protocol/bytestreams)
и оставьте
::si::transport(allowed,http://jabber.org/protocol/ibb)
Не забудьте сохранить каждую изменяемую опцию для следующих сессий. Если всё равно не работает, перечитайте ещё раз теорию (ссылка в начале ответа).
Ткаббер постоянно держит меня в состоянии "отошёл" ("away")
Вопрос: Запускаю Ткаббер и он тут же переходит в состояние "отошёл". Установка руками любого другого статуса тут же обратно меняется Ткаббером на всё тот же "отошёл". Что делать?
Ответ: Причина проста — начиная с версии 0.9.8 в настройках Ткаббера поменялся формат времени, задаваемого для запуска Autoaway. В версиях Ткаббера до 0.9.7 включительно время неактивности пользователя до перехода в состояния "отошёл" и "отошёл давно" задавалось в миллисекундах (стандартная единица измерения временных промежутков для тикля). Начиная с версии 0.9.8 эти интервалы начали задаваться в более логичных единицах измерения — минутах. То есть "новые" версии Ткаббера умножают эти временные интервалы на 60000, чтобы перевести минуты в "тиклевые" миллисекунды. Если происходит неприятность — Ткаббер версии >= 0.9.8 запускается с файлом конфигурации от версии <= 0.9.7, — заданные в конфигурации миллисекунды переводятся... в миллисекунды! Получаются огромные числа, переполняющие 32-битное целое со знаком, и Ткаббер начинает считать, что получившийся интервал времени истёк. Иллюстрация (можете повторить сами в консоли Ткаббера, wish или в tkcon):
% puts [expr 600000*60*1000]
1640261632
% puts [expr 600000*120*1000]
-1014444032
То есть, при тайм-ауте в одну минуту всё бы было хорошо, но как только мы ставим две минуты, появляется ошибка. Модуль Autoaway сравнивает текущее время неактивности со значением тайм-аута, и если тайм-аут меньше, Ткаббер переводится в режим "Отошёл". Как видите, при тайм-ауте две минуты и больше Ткаббер всегда будет считать, что мы "отошли".
Такая проблема существует, в частности, в официальном Ткаббер-паке под Windows версии 0.9.8 и в официальном старпаке под Windows версии 0.9.9.
Решение: Достаточно пойти в настройки плагина AutoAway (Tkabber →
Настройки → AutoAway) и установить там параметры
plugins::autoaway::options(awaytime)
и plugins::autoaway::options(xatime)
в
некоторое разумное количество минут.
Не забудьте сохранить каждую настройку "для текущей и следующих сессий", выбрав соответствующий пункт в меню, вызываемом кнопками "Состояние".
Обратите внимание на то, что под Windows автоэвей несколько глюковат (по-видимому, из-за глюков расширения tclWinidle). Это выражается в том, что при некоторых (так пока и не зафиксированных) условиях Ткаббер ни с того ни с сего переводит вас в состояние "extended away". Если это произошло, вам придётся рестартовать Ткаббер или, если вы готовы пожертвовать работой автоэвея в течение данного сеанса работы, поставьте оба тайм-аута в 0 и сохраните обе настройки "для текущей сессии", после чего выберите вручную нужное вам состояние доступности.
Кардинальным способом борьбы с этим багом является установка Tcl/Tk 8.5, который имеет встроенные средства для отслеживания неактивности пользователя, и Ткаббер (начиная с версии 0.10.0) использует эти средства. Расширение tclWinidle (как и tkXwin под X Window) становится при этом ненужным.
Ещё один кардинальный способ описан тут.
Не могу приконнектиться к серверу через прокси
Вопрос: Не могу приконнектиться к серверу через прокси (аська работает).
Ответ: Вариантов обычно два:
- Кривая настройка прокси-сервера в Ткаббере;
- Прокси-сервер не пропускает соединения методом CONNECT на порты, отличные от
443 (HTTPS) (туда часто направляют "аську"), а Jabber-сервер обычно принимает
соединения на следующие два порта:
- 5222 — поддерживается "plaintext" (соединение без шифрования) и протокол STARTTLS, позволяющий использовать SSL;
- 5223 — только SSL.
Подробное описание обходных манёвров для решения второй проблемы читайте здесь.
Keep alive в Ткаббере — возможно ли?
Вопрос: Psi и Gajim умеют не разрывать соединение или же пересоединяются к серверу при разрыве связи. Ткаббер вроде бы этого не делает. В чём проблема?
Ответ: Точный ответ на этот вопрос затруднён несколькими обстоятельствами:
- Разные люди подразумевают разные вещи под понятием "keep alive";
- Многие не понимают принципов работы протокола TCP (поверх которого "ездит" XMPP (он же Jabber)) и того, как он обрабатывает "внешние" разрывы соединений.
То, что называется "keepalive" в Ткаббере, представляет собой периодическую запись пробела (символа с кодом 0x20) в исходящий XML-поток. С точки зрения синтаксиса и семантики XML это никак не влияет на передачу данных, но зато позволяет удерживать прокси-серверы и NATP-устройства от разрыва соединения из-за его неактивности.
Про настройку этого keepalive читайте в официальной документации.
"Системный keepalive" — на уровне TCP-сокетов — напрямую в Ткаббере не поддерживается (и не будет в обозримом будущем из-за ограничений поддержки TCP-сокетов в тикле), однако, недавно появилась тестовая версия плагина, добавляющего такую поддержку.
Требуется серьёзное целенаправленное тестирование этого плагина на различных платформах. Другими словами, не думайте, что, установив этот плагин, вы разом решите все проблемы с печально известной неспособностью Ткаббера обнаруживать разорвавшиеся соединения, так как:
- Требуется настройка системы для того, чтобы "keepalive на сокетах" делал то, что Вам от него нужно;
- Реакция Ткаббера на разрыв соединения вследствие срабатывания соответствующего механизма keepalive неизвестна.
Сделать: расписать подробно про системный keepalive?
По поводу настройки системы почитайте вот этот трёп между Kostix и j-dreamer, а также README в плагине.
Сделать: вынести этот чатлог в отдельную страницу, облагородив, т.е. он со временем отэкспайрится и будет удалён на сервере
Что с грифельной доской?
Вопрос: Открыл в конфе грифельную доску, теперь не могу её прикончить, она при каждом входе появляется.
Ответ: Всё правильно. "Сообщения" доски выводятся как часть истории разговора в конференции. Вывод: чтобы избавиться от неё, надо затереть историю другими сообщениями, то есть банально поразговаривать. И наоборот, если вам нужно быстро затереть историю малопосещаемой комнаты, где история естественным путём обновляется редко, а тут зашёл спамер или хулиган и наспамил или наматерился, то можно открыть доску и нарисовать чего-нибудь, чтобы нежелательный текст ушёл в туман. Естественно, теперь начнёт доставать доска, но её мы убивать уже умеем ;) Количественные параметры для затирания того и другого предлагается определить самостоятельно.
Ткаббер в упор не видит SSL-сертификат для коннекта к серверу
Вопрос: Указываю путь до каталога с сертификатами, среди которых есть сертификат для коннекта с серверу, но Ткаббер не видит нужный сертификат (например, ругаясь на то, что сертификат сервера самоподписан или имеет в цепочке доверенных сертификатов самоподписанный сертификат).
Ответ: Подробный рассказ про сертификаты ЦС и Ткаббер находится здесь.
Не могу отредактировать закладку конференции в ростере
Вопрос: Пытаюсь отредактировать закладку конференции в списке контактов — например, включить автовход для этой конференции, — однако, в появившемся диалоге могу изменить только "ник" конференции. Что делать?
Ответ: Проблема в том, что помимо закладки, ссылающейся на JID комнаты, у вас в списке контактов есть контакт с таким же JID.
Подробное описание проблемы дано чуть ниже, а метод борьбы с этим недугом один: удалите закладку (через её контекстного меню) — при этом удалится как закладка, так и "замаскированный" ею элемент списка контактов, после чего добавьте нужную конференцию в закладки ещё раз — из меню чата в конференции или из главного меню ("Службы" → "Добавить конференцию в контакты...").
Подробное описание проблемы: Хотя Ткаббер и показывает закладки на конференции в ростере (что удобно для пользователя), физически закладки не находятся в списке контактов пользователя — они хранятся в особом "приватном хранилище" (см. XEP-0048 (historical) и XEP-0049).
Соответственно, если по какой-то причине у вас есть и закладка, и контакт в
списке контактов, ссылающиеся на один и тот же JID (например,
room@conference.server.org
), Ткаббер в некоторых случаях будет глючить
описанным способом: присоединение к конференции через закладку работает, а
попытка её отредактировать вызывает редактор для элемента списка контактов.
Подобная "маскировка" закладки и контакта друг другом может появиться по разным
причинам, например, если вы добавили конференцию с помощью кнопки "Добавить
пользователя в ростер", то есть как обычный контакт (ну или ещё каким извратным
способом), или если комната находится у вас в ростере со времён очень древних
версий Ткаббера, когда ещё не было реализовано редактирование конференций).
Также есть мнение, что подобное может происходить не по вине пользователя и не
по вине Ткаббера, а по вине некоторых других клиентов, которые при создании
закладки на конференцию на самом деле создают элемент списка контактов, или
делают то же самое при каких-то других условиях. Если вы "поймаете" какой-либо
клиент на этом, сообщите нам в
[xmpp:tkabber@conference.jabber.ru](xmpp:tkabber@conference.jabber.ru)
.
Upd: До выхода версии 0.11.0 причиной этого запросто мог служить импорт ростера в Ткаббере — этот механизм был реализован слишком прямолинейно, и, судя по всему, закладки конференций при импорте становились элементами ростера (контактами). В версии 0.11.0 был реализован более "продвинутый" механизм экспорта/импорта списка контактов, который решает эту проблему.
Примечание: Ещё один способ узнать, есть ли у конференции "глюк с маскировкой", состоит в следующем: тултип на закладке должен показать "Подписка: bookmark". Если он показывает "Подписка: none", вы наступили на описываемую проблему, и закладку придётся передобавить.
Ткаббер и iChat
Вопрос: I'm sick and tired of getting a lot of iq-s from some of my contacts that use iChat. Whose balls should I cut off: Apple or Tkabber developers? What can I do with Tkabber (or iChat) meanwhile?
Ответ: Please read the following and take your decision about the balls >;->
[08:37]<Торчёк|work>
IN(1,*@jabbus.org/work):
<iq from='*%ya.ru@ya.jabbus.org/MacBook'
id='iChat_4079FAC1'
type='get'
to='*jabbus.org/work'>
<query node='[http://tkabber.jabber.ru/\#0.10.0-svn-20080105\#8W0f3vwHVN71Gg8Cvp0k6w=='](http://tkabber.jabber.ru/#0.10.0-svn-20080105#8W0f3vwHVN71Gg8Cvp0k6w==')
xmlns='[http://jabber.org/protocol/disco\#info'/](http://jabber.org/protocol/disco#info'/)>
</iq>
OUT(1,*@jabbus.org/work):
<iq id='iChat_4079FAC1'
to='*%ya.ru@ya.jabbus.org/MacBook'
type='error'
xml:lang='en-GB'>
<query node='[http://tkabber.jabber.ru/\#0.10.0-svn-20080105\#8W0f3vwHVN71Gg8Cvp0k6w=='](http://tkabber.jabber.ru/#0.10.0-svn-20080105#8W0f3vwHVN71Gg8Cvp0k6w==')
xmlns='[http://jabber.org/protocol/disco\#info'/](http://jabber.org/protocol/disco#info'/)>
<error type='cancel'
code='405'>
<not-allowed xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
</error>
</iq>
[08:37]<Торчёк|work> кто виноват? ткаббер или ichat маковский?
[08:37]<Торчёк|work> реквесты идут постоянно. 3-4 раза в секунду
[08:54]<Торчёк|work> второй извесный случай с ичатом,
в первый раз грят был тоже ткаббер
[09:36]<teo> Торчёк|work: виноват ichat (в большей степени).
он не реагирует на то, что ему вернули ошибку. ну и ткаббер немного
(в нем неализована поддержка xep0115 не той версии, что понимает ichat)
[09:37]<Торчёк|work> багропорт ичату уже запостили. остаётся только ждать
[09:39]<teo> ага. ждать, пока apple соизволит отреагировать...
[09:39]<toon> хаха
[09:40]<Торчёк|work> проще доделать в ткаббере
[09:41]<teo> надо бы. доделать и отключить нафиг
[09:42]<Торчёк|work> teo: " уточни у него какая версия реализована в ткаббере,
какую нужно реализовать в ichat
я отпишу в их форуме
может хоть к следущему пакету исправлений поправят (но сомневаюсь)"
[09:42]<teo> в ткаббере 1.4
[09:42]<teo> надо будет допилить до 1.5
[10:40]<bigote> btw, I experienced those endless iChat iq requests, too
[10:41]<teo> bigote: everyone did
[10:41]<bigote> they could last hours
[10:42]<bigote> well, at least I can tell LKnight what happend :)
[10:43]<teo> bigote: did you explain him where he lost some gigs of traffic? :)
[10:47]<bigote> he and all his Jabber contacts
[14:29]<kostix> я постил сюда кусок кода в конфиг против тупого айчата
[14:30]<kostix> [http://chatlogs.jabber.ru/tkabber@conference.jabber.ru/2008/02/06.html\#16:56:41](http://chatlogs.jabber.ru/tkabber@conference.jabber.ru/2008/02/06.html#16:56:41)
[14:49]<teo> сегодня закоммичена поддержка капсов 1.5. должно излечить
Вопросы, связанные с Линукс
Шифрование в Ткаббере: проблемы с gpgme/tclgpgme
Не могу скомпилировать tclgpgme
Вопрос: Вот, собственно, сабж...
Ответ: В зависимости от того, какую версию gpgme вы используете и в какой операционной системе работаете, сильно зависит, удастся ли вам подключить шифрование в Ткаббере. Почитайте сначала коротенькую статью об этом. Исходя из этого, ответов может быть несколько.
- Под Windows шифрование работать не будет.
- Под Linux — в зависимости от дистрибутива:
- В Debian в стабильной ветке всё работает без излишних телодвижений (правда, что там будет в Etch'е — не ясно);
- В rpm-based дистрибутивах проблема пока не исследована (даже неизвестно, есть ли она);
- В source-based дистрибутивах проблема, возможно, решится благодаря следующему совету.
[xmpp:pachkov@jabber.ru](xmpp:pachkov@jabber.ru)
рассказывает:
Решил проблему с шифрованием в Ткаббере (под Slackware). Проблема была в том, что tclgpgme под Слакварью собирается, но не работает (с gpgme версий 0.3.13 и 0.3.16). Дело в том, что скрипт configure в tclgpgme не находил gpgme-config. Я просто определил переменную в скрипте после проверок, и всё заработало.
Приведём этот патч на configure тут, дабы идея была понятна:
--- configure 2002-09-25 21:49:46.000000000 +0200
+++ myconfigure 2006-07-12 09:44:17.000000000 +0200
@@ -1868,7 +1868,6 @@
esac
fi
GPGME_CONFIG="$ac_cv_path_GPGME_CONFIG"
+GPGME_CONFIG="/usr/local/bin/gpgme-config"
if test -n "$GPGME_CONFIG"; then
echo "$ac_t""$GPGME_CONFIG" 1>&6
else
То есть просто добавлено прямое присваивание переменной GPGME_CONFIG:
GPGME_CONFIG="/usr/local/bin/gpgme-config"
ниже того кода, который должен эту переменную вычислять, но не делает это по какой-то причине. Естественное уточнение: пишите путь до gpgme-config на вашей системе.
Важное дополнение: С осени 2008 года можно забыть tclgpgme, как страшный сон. Вот тут рассказано, как собрать и прикрутить новый tcl-интерфейс к GnuPG — tclgpg.
Ткаббер валится при вводе gpg-пароля
Вопрос: Если при запуске Ткаббера не вводить пароль сразу, а потом во время работы нажать кнопку Toggle signing (тогда Ткаббер при первой необходимости сам запросит пароль), то обнаруживается такой глюк: если в промежутке между запросом пароля и его вводом пришло сообщение, то при попытке ввести пароль Ткаббер просто валится. Попутно с запросом пароля появляется также сообщение об ошибке в "encryption software". В чём может быть дело?
Ответ: По всей видимости, есть баг в потрохах tclgpgme, и надо его искать, что не очень-то реально. Учитывая общую ситуацию с шифрованием в Ткаббере, выводы напрашиваются неутешительные. Проще сделать всё заново, чем доводить до ума имеющиеся библиотеки. Если у вас есть на это время, способности и желание, намёк должен быть понятен — человечество вас не забудет ;)
Дополнение: С tclgpg этого глюка не наблюдается.
В Ubuntu не вводятся русские буквы в Ткаббере, chto delat?
Вопрос: В Ubuntu не вводятся русские буквы в Ткаббере, chto delat?
Ответ: Это проблема Ubuntu. Она известна в том числе и за пределами Ткаббера.
Решений три:
- Поменять Убунту на Дебиан, раз соответствующие мейнтейнеры не могут даже просто корректно скопировать соответствующие пакеты из "отцовского" дистрибутива.
- Использовать workaround из бага #61057 для запуска Ткаббера.
- Tkabber-KHIM :-D
- В свежих версиях (7.04 и выше) проблемы не наблюдается, то есть надо просто обновиться :-)
Ткаббер под X Window падает при попытке показать "странные" символы
Вопрос: Ткаббер под X Window падает при попытке показать "странные" символы (вроде этого: "•") с ошибкой:
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 45 (X_OpenFont)
...
Ответ: Причина может быть либо в "кривых" шрифтах, которые стоят у вас в системе, либо в "кривизне" сервера шрифтов, либо в "кривизне" X-сервера, который сам "раздаёт" шрифты.
Подробнее читайте тут.
Не работает вставка по Control-v под X Window
Вопрос: В многострочных полях ввода не работает вставка текста из буфера обмена, помещённого туда по Control-c (и другим комбинациям).
Ответ: В текущих стабильных версиях Tk комбинация <Control-KeyPress-v> в многострочных полях ввода (Tk-виджет "text") привязана к Emacs'овскому действию "прокрутить вниз на полстраницы".
Этот баг официально зарегистрирован под номером 605277 (см. багтрекер Tk на http://tcl.sourceforge.net).
Баг исправлен давно, но только в версиях, относящихся к 8.5. Для исправления проблемы в 8.4.x есть два способа:
- Наложить патч из багтрекера и пересобрать Tk;
Обойти проблему, вписав в config.tcl следующую команду:
bind Text <Control-KeyPress-v> {}
Это "отвязывает" Control-v от виджета text и восстанавливает его "более общую" привязку к виртуальному событию <<Paste>> (вставка текста из буфера обмена), которое, в свою очередь, также привязано к Control-v.
Огромное спасибо тиклевому хакеру Joe English за информацию, исправление бага в Tk и предложение "костыля" для Ткаббера.
P.S. Кстати говоря, под "иксами" в Tk-приложениях вставка из буфера всю жизнь прекрасно работала по Control-y.
В Gentoo не работает сворачивание в трей
Вопрос: Что нужно, чтобы в Gentoo Ткаббер мог сворачиваться в трей?
Ответ: Необходимо наличие установленного пакета dev-tcltk/tktray.
Fedora 8 и Tcl/Tk 8.5
Вопрос: Нет поддержки сглаживания шрифтов и/или autoaway в Fedora 8 и Tcl/Tk 8.5. Что делать?
Ответ: Убедиться, что при сборке Tk установлены библиотеки libXft-devel и libXScrnSaver-devel (при установке libX11-devel эти пакеты автоматом не вытягиваются по зависимостям, а Tk спокойно собирается без них).
Обновил тикль до 8.5, но Ткаббер по-прежнему запускается с 8.4
Вопрос: Вот, не знаю, что и делать. Новый тикль в системе есть, а Ткаббер его не видит.
И не увидит, пока вы ему об этом не скажете. Это задачка на сообразительность. Смотрим файл tkabber.tcl: в самом начале есть строчка, перезапускающая Ткаббер "in true way", через интерпретатор wish. Значит, собака порылась в нём. Набираем в консоли
which wish
и получаем, скорее всего, такой ответ: /usr/bin/wish. На этом наше расследование не закончено, делаем
stat /usr/bin/wish
и среди прочих данных видим примерно следующее: File: «/usr/bin/wish» -> «/etc/alternatives/wish». Это символьная ссылка на другой файл. Просмотрев и его статистику, в конце концов выясняем (File: «/etc/alternatives/wish» -> «/usr/bin/wish8.4»), что при запуске Ткаббера по цепочке ссылок запускается старая версия тикля. Чтобы исправить положение вещей, надо удалить /etc/alternatives/wish и создать ссылку заново, чтобы она указывала уже на нужную вам версию исполняемого файла.
sudo rm /etc/alternatives/wish
sudo ln -s /usr/bin/wish8.5 /etc/alternatives/wish
При этом учтите, что отныне все программы, которые запускаются подобным образом (через wish), будут автоматически запускаться с 8.5 версией тикля. Если не хочется тревожить системные файлы, можно поправить сам исполняемый файл Ткаббера, переписав его начало примерно в таком ключе:
#! /bin/sh
/usr/bin/env wish8.5 /path/to/tkabber.tcl -name Tkabber
Отчего происходит такой бардак с версиями тикля? Это не бардак. Дело в том, что при обновлении версии языков программирования старая версия не удаляется, просто отдельно ставится новая, и они живут, друг другу не мешая. Многие (если не все) программы, написанные на скриптовых языках, не имеют проверки на наличие в системе свежей версии интерпретатора, поэтому пользователь должен следить за этим сам. Как альтернативу, можно посоветовать перед установкой новой версии тикля удалить старую (предварительно закрыв все программы, использующие тикль).
Немного подробнее о той же проблеме рассказано тут.
Userinfo в KDE 4.x
Вопрос: Когда вызываю userinfo пользователя, его окошко выглядит как вертикальная палка (то есть, ширина его равна нулю). Приходится это окошко растягивать вручную. Есть ли решение этой проблемы?
Ответ: Да, это баг. Причём, неизвестно, чей — то ли Tk, то ли KDE 4. Как его починить, мы пока не знаем. Решений на данный момент три:
- Поменять KDE 4.x или Ткаббер на что-нибудь менее глюкавое.
- Оставить всё как есть и растягивать окошко вручную.
- <tempestadept> В качестве workaround-а можно в настройках kwin в особых параметрах окон создать правило: для класса (regexp) userinfo_.* Toplevel явно указать начальный размер. (©)
Диалоговые окна Tk на многоголовом X11-сервере
Вопрос: Как центрировать диалоги в пределах одногой физического дисплея на мультиголовых конфигурациях X11-сервера?
Ответ: На данный момент как Tcl/Tk так и ткаббер не поддерживают расширение Xinerama X11-сервера как и TwinView, «из коробки». По этому все диалоговые окна располагаются по центру виртуального дисплея, то-есть примерно между двумя мониторами. Эту проблему можно решить с помощью WM, создавая правила для размещения (геометрии) окон класса "Dialog". Конкретные способы создания правил различны для разных WM:
Awesome-3.4 Добавьте в конфиг rc.lua в секцию правил следующую строку
{ rule = { class = "Dialog" }, callback = awful.placement.centered },
Сделать: Дописать про другие WM
Вопросы, связанные с Виндовс
В старпаке/старките нет звука/поддержки JPEG,PNG/сжатия
Вопрос: В старпаке (или старките) не работает звук. Его включение/выключение ни к чему не приводит. Что делать?
Ответ: Читайте эту статью.
Вопрос: Старпак не показывает фотки в формате JPEG или PNG. Что делать?
Информация про старый старпак находится тут.
Старпак/старкит при старте ищет файлы, подходящие под маску *.kit в двух местах:
- В каталоге, в котором он запущен (то есть "рядом с собой");
- В каталоге своих настроек.
Эти самые kit-файлы — это старкиты, содержащие расширения Tcl/Tk. Вам потребуется старкит с расширением TkImg — img.kit.
Вопрос: Как прикрутить поддержку сжатия к старпаку?
Без переделки старпака эту проблему не решить.
Официальные старпаки не поддерживают сжатие.
Однако, Kostix добавил в старпак версии 0.9.9 под win32 поддержку сжатия и возможность подгружать img.kit, содержащий пакет TkImg. Подробнее читайте здесь.
Старпака 0.10.0 с поддержкой сжатия на данный момент не существует.
Не работает браузер под виндами
Вопрос: Прописал в настройках Ткаббера для браузера (Настройки → Main Interface → webbrowser**) имя исполняемого файла — не работает. Прописал полный путь к нему — то же самое.**
Ответ: Вы перестарались: под Виндовс браузер вызывается автоматически, через DDE. Проследите, чтобы это поле в настройках было пустым. Тем не менее, если вам нужно, чтобы из Ткаббера вызывался альтернативный браузер (не тот, что запускается по умолчанию), укажите полный путь к нему в таком виде (мы типа надеемся, что "ослик" — не основной ваш браузер ;)):
{C:\Program Files\Internet Explorer\iexplore.exe} %s
(путевое имя файла окружено фигурными скобками) или
"C:/Program Files/Internet Explorer/iexplore.exe" %s
(кавычки + прямые слэши).
Или в config.tcl добавить что-то вроде
hook::add finload_hook {
set ::webbrowser "\"C:/Program Files/Internet Explorer/iexplore.exe\" %s"
}
Дополнительное чтение по теме:
- Рассказ о том, как можно указывать путевые имена в тикле;
- Рассказ о том, как можно прострелить себе ногу опцией ::webbrowser.
При клике на URL'е в Ткаббере запускается две Оперы и открывают страницу два раза
Вопрос: У меня Опера. При попытке открыть ссылку из Ткаббера, запускается две копии Оперы и открывают ссылку два раза. Что делать?
Ответ: Баг реализации DDE в Опере. Решением является прописывание полного пути до исполняемого файла этого браузера в настройке "webbrowser" Ткаббера (см. выше).
Странное поведение прокрутки содержимого окна чата колесом мыши
Вопрос: Малейшее движение колесом мыши с целью прокрутить содержимое окна чата вверх или вниз "очищает" окно чата — никакого текста не видно. Другими словами — впечатление такое, что скроллинг колесом мыши обладает чрезмерной чувствительностью.
Ответ: Проблема — в "кривизне" "родных" драйверов вашей мыши. Наиболее часто докладывают о проблемах с многокнопочными мышами A4 Tech. "Кривизна" состоит в том, что драйверы зачем-то реализуют собственный механизм скроллинга колесом, фактически подменяя системный вариант. Этот механизм неправильно работает в некоторых случаях, и Windows-версия библиотеки Tk, реализующей GUI в Ткаббере, — как раз такой случай.
Решений у проблемы два, и их следует попробовать в указанном порядке:
- Поищите в настройках драйвера специальный пункт, отвечающий за отключение дурацкого механизма скроллинга или за включение нормального, системного механизма. Обычно он называется "Use MS Office compatible scroll" у Logitech и "Режим совместимости с MS-IntelliMouse" у A4 Tech.
- Удалите "родной" драйвер из системы и установите обычный системный "драйвер трёхкнопочной мыши с колесом". Нормальный драйвер работает правильно, но "в отместку" вы потеряете возможность использовать 4-ю, 5-ю и прочие кнопки, колёса, рычажки и вентили на вашей мыши.
Говоря проще: попробуйте объяснить драйверу, в чём его ошибка, либо живите с подходящим стандартным драйвером Windows.
Если вы не нашли подходящую настройку драйвера, не поленитесь связаться со службой поддержки производителя вашей мыши: возможно, в новой версии её добавят.
Дополнительное чтение по вопросу: вот, вот и вот.
Конкретные мыши и их настройки
- A4Tech SWOP-48, BW-5, RBW-5. В свойствах мыши вкладка "Настройки" или "Ролик" и опция "Режим совместимости с MS-IntelliMouse" (спасибо Дмитрию Алтухову и Владимиру Кичигину). Смотреть скриншот.
- Genius Netscroll+ Traveler-400DPI/PS2. В свойствах мыши идти на вкладку "Настройки" (Settings) и включить там режим Офиса 97 (97 Office Mode). Смотреть скриншот.
Сделать: ОЧЕНЬ желательно иметь точные описания настройки разных типов глючных "родных" драйверов. Можно даже со скриншотами. Не ленитесь присылать. Если вы выкладываете скриншот сами и хотите внести правку в этот раздел самостоятельно, помните, что страница ЧаВо — одна из самых "тяжёлых" на вики. Давайте лишь текстовую ссылку на изображение (см. код вышеприведённого примера про мышь Genius).
Ошибка: wrong # args: should be "zlib option data ?...?", что делать?
Вопрос: Ткаббер выдаёт ошибку:
wrong # args: should be "zlib option data ?...?"
Что делать?
Ответ: Эта ошибка возникает с некоторыми старыми версиями старпаков при попытке подключиться к серверу с включённой настройкой сжатия потока.
Если вы видите такую ошибку при подключении, значит ваш старпак на самом деле не поддерживает сжатие, хотя он и предоставляет вам такую настройку. Этот "феномен" подробно описан здесь.
Вкратце: сжатие в старпаках не поддерживается, и незвестно, когда будет (и будет ли).
Решений, в принципе, два:
- Взять последний Tkabber-Pack — пакет, который устанавливает в систему микродистрибутив Tcl/Tk и все нужные пакеты (включая поддержку сжатия). Файл инсталлятора "весит" примерно столько же, сколько и файл со старпаком. (Вот — заметка на русском про Ткаббер-пак версии 0.10.0)
- Сделать "каноническую" установку Ткаббера согласно этому документу.
Windows, дистрибутив от ActiveState — "падения" при нажатии Alt-любая кнопка в главном окне
Ответ: Проблема в Tk 8.4.15 и 8.5a6. Откатитесь на 8.4.14, или "докатитесь" до 8.4.16 и 8.5b1, соответственно.
Windows, дистрибутив от ActiveState — "падения" при открытии в фоне окна со смайликом
Ответ: Проблема в Tk 8.4.15 и 8.5a7. Откатитесь на 8.4.14 или "докатитесь" до 8.4.16 и 8.5b1, соответственно.
Фатальная ошибка в wish при запуске полноэкранных приложений под Windows
Вопрос: При запуске какой-либо программы в полноэкранном режиме (будь то игра или банальный FAR), wish валится с ошибкой: Tried to free a color that isn't allocated!
Ответ: Да, эта ошибка появляется при переключении в полноэкранный режим, и дело тут в глубине цвета. Это баг wish, а не Ткаббера, так что и бороться нужно с wish. Баг давно известен, в том числе и на Багтрекере Ткаббера, и гуглением по тексту ошибки легко находятся решения. Самое полное обсосано на официальном сайте Ткаббера: имеется патч на tkWinColor.c (внимание, ни мы, ни автор патча не можем нести и не несём ответственности за его применение!). Другой способ решения проблемы: отконфигурировать программу, чтобы при переключении в fullscreen глубина цвета оставалась такой же, какая установлена на десктопе (либо наоборот).
Кроме того, имейте в виду, что эта проблема вроде бы изжита в Tk 8.5. Однако, это требует проверки. Если вы можете подтвердить или опровергнуть эту информацию, не поленитесь сообщить об этом (здесь или в комнате xmpp:tkabber@conference.jabber.ru).
Внешний вид и звук
Ткаббер ЧаВо/Внешний вид и звук