Tkabber dependencies availability (new version)

This page is still in development

Some clarifications

Please note well that if you ended up viewing this page while just wondering about how to try Tkabber for the first time, or you are looking at something easy to install, please better consider using "packaged" versions (i.e. "all-in-one" packages containing everything necessary to run Tkabber) which can be found here and here.
The information on this page is intended for those who want to either live on the bleeding edge of development, want to participate in the development, or whose system misses some pre-packaged Tcl/Tk extension that is useful for Tkabber.

Tkabber dependencies explained

Essentially, software packages of which Tkabber can make use are divided into these two basic categories:

  • Required packages.
  • Packages providing additional capabilities.

Required packages must be available to Tkabber for it to be able to work; without any of them Tkabber won't even start up.

Like many other Tcl programs, Tkabber adapts itself to the set of available packages at runtime so the set of additional features Tkabber provides to the user depends on the set of available additional packages which can be used by Tkabber. Such packages usually interface Tkabber to some system features not directly available in neither Tcl nor Tk (such as support for the UDP network protocol) or to some popular third-party libraries (like OpenSSL to support data stream protection).

Othe other hand, some of the additional packages are considered "highly recommended" since they provide features that are either essential to make Tkabber a compliant XMPP client (e.g., SASL authentication) or just provide a recommended way of working (e.g., usage of the TLS protocol to protect client-server conversations from eavesdropping).

All three groups of packages will be listed in turn, from the most important to the least.

Notes on Tcl/Tk distributions

Please note that while all the packages Tkabber can use are free software and thus are primarily distributed in the form of source code tarballs, this doesn't mean you necessarily need to build them by hand — most popular Unix-like systems contain many of the listed packages as a part of their corresponding distributions.
This means when you come across a package among those listed below you think you want to get, first try to use the searching facilities of your package subsystem to look up the needed package.

Users of Debian and its derivatives (such as Ubuntu) may want to use the private repository of Sergei Golovan — current maintainer of Tkabber; this repository contains all packages Tkabber can possibly use on Unix-like systems built for Debian (i386 and amd64 architectures). Read more on this subject below.

Windows and Mac OS platforms are different in this respect since none of them supports Tcl/Tk and its extentions out-of-the-box. The solution to this are third-party "batteries included" Tcl/Tk distrbutions. The de-facto standard distribution in this field (and, actually, the only one known at this moment) is the freeware package called "ActiveTcl" distributed by ActiveState Corporation.
Installing this package on the systems mentioned above is the recommended way to go.

Required packages

Tkabber is written in the Tcl programming language, so you must have a Tcl engine to run it. Tcl source code is available from Tcl/Tk project site.
Tk is the GUI toolkit for Tcl. Its sources are on the Tcl/Tk project site.
This is a "Standard Tcl library" — a bunch of plain-Tcl packages. Available on the Tcllib project site.
This package contains additional GUI widgets not found in Tk. It's written in plain Tcl and doesn't require building. It's available on the Tcllib project site.

Additional packages

The packages are listed by their functions rather by their names; each function is named as if was prepended by the "Support for..." clause.

Recommended additional packages

SASL authentication
DNS queries via UDP
When logging to a XMPP server Tkabber needs to perform several complex DNS lookups; for this it uses the dns package from Tcllib. Unfortunally, since Tcl core doesn't have direct support for UDP, dns will resort to TCP queries which are banned by some braindead ISPs. To help this install either of these two packages:

  • TclUDP is a cross-platform package providing UDP support for Tcl. It's available from the TclUDP project site.
  • ceptcl is a Unix-only package fully exporting Unix concept of "communication endpoints" to the Tcl layer, including UDP support. It's available from its author's site.

The dns package will pick any of the packages listed above automatically and then will perform DNS queries using UDP.

Stream protection via TLS/SSL
Provided by the tls package available from tls project site.

This package, in turn, depends on OpenSSL.


  • Win32 binary package available from the tls project site is linked statically against the OpenSSL library, so you don't need to install OpenSSL if you use it.
  • ActiveTcl includes both tls and required OpenSSL shared libraries starting from version 8.4.16 (also see below).

Miscellaneous additional packages

Encryption and signing of messages (PGP)
User idle condition tracking (auto-away)
Popular image formats (JPEG, PNG, etc)
Stream compression
Stream compression uzing zlib is provided using two packages: tclmore and ztcl.
Sound notifications
System tray (system notification area) icon
Application icons (Windows only)
JISP packages of pixmap sets

Notes on ActiveState Tcl/Tk distribution

  • tls package is only included starting from version 8.4.16 (actually, form 8.4.15, but it had a bug rendered this package unusable without some hacks).
  • Version 8.5.0 contains almost no third-party Tcl/Tk packages but provides a tool (called "teacup") to install them from the ActiveState repository.
  • The following packages are missing from ActiveTcl: winico, tclmore, ztcl.
  • TclUDP package appeared in version 8.5.0 (not included, but installable, see above).

Sergei Golovan's unofficial Debian repository

Syndicate content