Updated 2016-08-03 10:15:39 by Kroc

tkabber.jabber.ru ,written in Tcl, is a free and open-source client for the Jabber instant messaging system

Attributes  edit

Alexey Shchepin <a l e x e y at s e v c o m dot net>
current version
release time

Download  edit

fossil repository
You may have better luck with the latest version in the Fossil repository

Resources  edit

[email protected]
Official Tkabber chatroom. English and Russian are accepted; user bigote also speaks Spanish.
[email protected]
Spanish Tkabber chatroom:
general mailing list
development mailing list

Documentation  edit

Russian Wiki
pretty exhaustive. Content is expected to be translated at least to English in the future.
Spanish Tkabber Site (via archive.org)

Description  edit

A complete implementation of Jabber. Pure Tcl/Tk (uses BWidget, parts of tcllib and optional external packages.

Runs on Unix, Win32 and Mac OS X.

ChangeLog  edit

Version up to 0.11.1 used jabberlib, but verison 1.0 and the current code in the repository uses tclxmpp instead.

Starkits  edit

kostix 2007-05-09: The starkits described here are very outdated and actually using anything below 0.9.9 is just not recommended since some changes made in MUC code of Ejabberd (which is used by the biggest XMPP servers worldwide) rendered Tkabber <= 0.9.8 not suitable for proper working with MUC on such servers.

Also custom starpacks/starkits are known to be too trimmed down and have problems with non-Latin-1 character sets. So, for non-Latin-1 users I recommend using "plain" Tkabber plus Tcl/Tk installation suitable for your platform or any official starpack.

David Zolli 2004-03-30: My tkabber starkit can be downloaded here http://www.zolli.fr/fichiers/tkabber.0.9.7Starkit.zip

This customized version is based on 0.9.7 with new features (gtklook.tcl, some bugs removed by me, SRIV and PT, custom sounds and icons to match wiki chat needs, etc..). It also can source glob matching tls*.kit and/or snack*.kit starkits from launch dir or ~/.tkabber if available. See http://tcl.tk/starkits to get wanted packages (snack is for sound support and tls for SSL).

Official Starpacks are available here [1], they are:
based on 8.4.14;
Linux (libc6) ix86
based on 8.5a4 (so Xft support is here).

Currently there are several starkits Tkabber starpacks can work with:
Snack sound kit
TkImg kit

Starpacks try to load any files matching the *.kit pattern found in the directory from which the starpack is started and also in the Tkabber configuration directory


PT 2003-03-03: The tkabber-pat.kit at [3] is tracking the CVS development of tkabber. It includes a handful of plugins that provide features from tkchat including support for downloading the history from the Tclers chat and support for the /tip, /bug and /google commands. It also supports tkchat colours and the babelfish translation menu that was in tkchat.

kostix 2006-06-25: The Tkabber plugin for tkchat functionality maintained by PT can be downloaded from his stie [4] for use in any Tkabber installation.

Also Tkabber 0.10.0 has this plugin included among its official plugins (it contains some modifications).

Tkabber plugins  edit

Tkabber has over 20 "third-party" (non-official) plugins which are collected here [5]. Unfortunately, due to some bias in the Tkabber community (all these plugins were developed by Russian-speaking people) the page is in Russian. We expect it being translated to English, eventually, so stay tuned.

Connection to jabber

To connect to the jabber network you need to create an account on a public jabber server. If your primary aim is to join the tclers chat, then jabber.org or perhaps amessage.info. There a list of public servers at [6] (if you have to work around a web-proxy see below). Fill in the login dialog with your chosen username and password for the selected server. The resource item doesn't matter but you are advised to use hashed passwords. The other pages can be left with their default settings. If tls is available then a tls tab will be present and you can select Use SSL to use a secure link.

Once you are connected you'll want to join the tcl chat. Select the Services->Join group menu item and provide a nick-name for use in this chatroom and set the group to tcl (the server of this group is tach.tclers.tk). This is a jabber groupchat that is linked to the tcl irc channel. If you prefer there is also a general irc gateway at tcl%irc.freenode.net on server irc.e.jabber.ru.

Kroc 2004-06-28: This also work with #tcl%irc.freenode.net on server irc.jabber.org.uk (easiest to reach than irc.e.jabber.ru). If you can't connect, change your conference nick: maybe someone use the same nick on freenode.

If you have to deal with a web-proxy then it's useful to know that one of the public jabber servers is listening on port 80 and port 443. If you need to use this server, you should create your account on jabber80.com and use SSL and set the SSL port to 443.

Also, jabber.ru has two "special hosts":

  • allports.jabber.ru accepts STARTTLS connections on any port;
  • ssl.jabber.ru accepts "Legacy SSL" connections on port 443.

If you would like to test jabber without creating an account, you can temporarily use [email protected]

kostix: Another solution for dealing with proxies exist: HTTP-polling. AFAIK, Tkabber supports it since 0.9.7. The target server must support this kind of transport plus you should know the port to connect to (usually, it's 5280).

PT: Not many jabber domains support the HTTP polling method. jabber.ru is one that does. To find out you can check for a DNS TXT entry for the _xmppconnect subdomain. eg:
% dig +short _xmppconnect.jabber.ru txt

which gives us the HTTP endpoint to connect to. Google Talk seems to use something else to tunnel its jabber link over HTTP.

Note that DNS TXT record for HTTP-polling is used very rarely. But if the server software is ejabberd then polling URL is likely to be http://hostname:5280/http-poll/

IM transports  edit

The jabber network is especially good at providing connections to other IM networks. If you have an account on ICQ, MSN, AIM or Yahoo then you can still be present on these networks while using Jabber. For instance, to connect to MSN - select the Services->Browser menu item and enter amessage.info as the JID. You should get a tree with various transports shown. Double-click on the register element under your chosen transport and fill in the dialog that results. For MSN your user id is usually the e-mail address you used to create your MS Passport with. Once you have registered you can send messages and open chats to $userid@$transport.amessage.info

LES: Yes, but not if you log in with the jabber.org server because it doesn't support other IM services. I was about to pluck hair trying to make it work with ICQ before I realized that. Check the features available in each server here: [7]. BTW, I still haven't found a server that will support other IM and connect to the Tcl'ers chat. Let me know if you have.

Kroc: jabber.org.uk provides Tcl chatroom access with IRC and IM bridges (check the Discovery screenshot on the bottom of this page).

PT: The screenshot of 0.9.7 version can look a bit like this under Windows at the moment.

Kroc: My 0.9.7 starkit version looks a like this under Linux (Tk 8.5 xft-enabled) at the moment.

jcw: Neat. It might be an idea to think about adaptive functionality: a convention, whereby a starkit which works just fine by itself would discover other packages that enable more functions (both Snack and TLS would be an example here.

If this were done in a generic manner, such adaptive apps could have a user interface to see what sort of things it can deal with, and perhaps even grab them. In a way this is just another packager/downloader, but the key would be that the process is driven from usage (which is VERY different from todays delayed gratification schemes!). It means you can get an adaptive app and make it work for you right away, but if you want more features you can invest some more time to get them.

Another related idea: a server which serves packages to any adaptive app, located either on the same machine or perhaps on the same LAN. So apps could go and check what packages there are on such a "package server" and grab things on package require (every time). Last step: make the package server be a caching server for a bunch of repositories on the internet, and you have a scalable distribution mechanism: deploy-on-demand?

Anyway... I'm straying a bit from the topic of this page.

SRIV: You may be straying from the topic of this page, which we can always move, but, this is a good example of an app that can work without the optional packages if they aren't available. AJB wrote a few line "which" script to find files in your exe path, which I would prefer to use. So, any starkit in your exe path would be available for loading. This makes for simple file placement for beginners on windows or linux, esp if for example, exec'ing the snack.kit would automagically copy itself into the exe path for you.

AJB I posted the which script, which has worked for me in a similar situation.

LV: You may find that you have difficulty getting the starkit mentioned above to use snack.kit. I did - and in fact I included details of the problem on this page, but those details were deleted. Perhaps this comment will be deleted as well. I just gave up on making use of snack.kit. Then I found more fundamental problems trying to get the above mentioned tkabber starkit to work on my sparc solaris 8 machine, and have quit, for the moment, trying to get it to work. I can't tell if my problem is a technical problem, or just a matter of learning the right way to interact with the app.