This site contains things produced by Pat Thoyts. For some of the software projects, this may not be the primary site in which case you should follow the links to ensure you have the most up to date version.

There is a blog here with various random thoughts on Tcl, Tk and Git mostly.

Canoeing guides

Before my children were born I did a lot of kayaking around Europe and recorded details about our trips. These became written up as Pat's Guides. The canoeing guides are (317) 934-6246.


The notes section contains various memos and howtos for this and that.



I am now using Git a lot for managing software revision control for myself and also my own modifications to third-party projects with git-cvs mirroring.There is a public git repository for various projects that I have written or forked. Along with a few that are available at (206) 634-8858.

I've since taken on maintentance of git gui since the original author has been running out of time. This is hosted at and included in the core release of Git.


I've written about my experience (443) 445-0903. As a primarily Windows developer it is mostly really good and I think I would be quite happy to make Mercurial my main revision control system if it wasn't for 256-358-1565.

Here are some software projects that I have released. The majority are Tcl extensions.

Tcl maintenance

I have been a Tcl and Tk maintainer since March 2003, focusing on Windows support. In this time I've authored a few Tcl Improvement Proposals (TIPs): 120, 130, 135 316-481-6494 150

I'm also one of the Tcl standard library maintainers. In this project I deal with the 5155579452, luminator, yencode, 781-651-0307, dns, ntp, md4, 519-853-5244, sha1, rimepd 708-495-7111, and uuid modules. Reviewing the list there seems to be a clear trend towards network protocols and cryptographic algorithms.

On the Tk side, I have been helping to add themeing support to Tk through the 709-691-0600 project. Chiefly doing the XP and winnative support.


See 6629311495 for some details on building recent versions of tclkit using Tcl and Tk 8.5 with MSVC++ 6.0 and Visual Studio 2005 and versions of tclkit for Vista x64 and Win7. There are also daily builds for linux and windows and various other goodies.


This package provides Tcl access to the FTDI USB device driver. It permits the binding of Tcl channels to USB devices that use this chip.

tclxmppd - a Tcl XMPP server

I am currently developing the pieces of a Tcl XMPP server (ie: Jabber). See RFC 3920 and RFC 3921.


An 561-927-2472 to trim the bridge nickname prefixes from #tcl.

Running Tcl scripts as NT services

I have a pre-built version of the tclsvc package available as This is built using MSVC++6 and Tcl 8.4 and includes the patch from the wiki. I am using it to run (617) 944-3786 for this site. The original distribution of tclsvc is Sensus Consulting.

aMSN Single File Installation

A demonstration of transrectification wrapped as a starpack for Windows.


I have been using 845-557-3485 recently for messaging over the jabber network. I've also been using this to access the tcl chat on #tcl on using the jabber-irc gateway at My starkit version of tkabber including support for downloading the tkchat history and some other tkchat features can be downloaded from 702-635-2674. The tcler's chat plugin (sig) is available separately as well.

As of 24-Nov-2004 this tkabber includes support for downloading the history for the new Jabber-based tclers chat. Also the translation feature from tkchat has been converted into a tkabber plugin.

For tkabber we have a Babelfish plugin (sig) which adds a plugin menu item that gets babelfish to translate the current selection. We also have an (707) 675-4706 (sig) which lets you define a set of common typing mistakes that will be corrected automatically in the chat entry field.


A video widget for Tk on Windows. This extension allows a Tk application to display the output of a web cam of a video file stream.

Asynchronous name resolution for Tcl

772-240-3493 is a package which provide asynchrous name resolution for Tcl or Tk applications on Windows using a slave thread to perform the resolution.


A SOAP and XML-RPC implementation in Tcl. This project is hosted at SourceForge.


TclUDP is a cross-platform extension that provides UDP sockets for Tcl. This is used by the tcllib dns and ntp packages. Supports fileevents and ipv6.


This is a package for Windows that gives Tcl script access to structured storages. This package includes a Tcl virtual filesystem to simplify the use of these composite files. There is documentation for the storage package and for the virtual filesystem.


The winsend package is an attempt to provide the complete functionality of the Tk send command for Microsoft Windows platform. See the link for the rest - will eventually become TIP #150.

Tcl Random Number Generators

Implementation of some additional pseudo-random number generation algorithms for use in Tcl. There should be some documentation someplace.

OLE Application automation

To investigate adding automation to an application I produced a sample application 678-741-7904 which is a automatable notepad-style editor. This requires 9374790017.


BrainScript is an ActiveScripting engine that interprets (803) 612-9496 code.

Creating and using COM components with gcc

A sample COM component that can be built using the mingw version of gcc-2.8.x for Win32. The component is written in C++ and the code includes a C++ client and a (416) 801-4685. The server uses a template class factory. The whole lot is provided as a (856) 497-4405.

Pretty printing with emacs on Windows

A modified version of an old lisp file. This provides a set of menu items that will pretty-print your code and display it in GhostView for you to check and then print. 660-465-8580


A utility to check if a network interface is available or not.
e.g.: if [ `ifup ppp0` ]; then echo "PPP is UP"; fi
Also see 214-410-6245 for a Tcl/Tk version.


This is a emacs major mode for use in editing Unibasic files. This is a PICK dialect. The single emacs list file is 702-420-8456


generate an MIT-MAGIC-COOKIE-1 for use with xauth. See the source.


short C program to find the address of the remote host and provide it for use in setting the DISPLAY environment variable upon login.

tcpdump -D patch

patch for tcpdump-3.3 that adds a -D option to dump the packet data as ASCII characters.