Version 29 of TkXext

Updated 2006-07-20 00:10:12

TkXext is an extension to Tcl/Tk that provides the abilities to embed foreign applications (based on their title), record events to a script, and playback that script, and various other useful things related to these features.

  • Download: http://www.xmission.com/~georgeps/implementation/software/TkXext
  • What: TkXext
  • Description: Tk extension that can be used to automate applications for software testing, or application embedding.
  • Version: 3.6.9
  • Requires: X11 XTEST (usually part of the record module in XFree86)
  • Licensing: BSD/Tcl
  • Updated: Apr 17, 2006
  • Contact: george AT xmission DOT com

Partial Changes file:

3.6.9 - Tue Apr 11, 2006

I added TkXext.delete.or.kill for sending the WM_DELETE_WINDOW message if the client supports it, or calling XKillClient if it doesn't.

I made TkXext use Tk's X error handler.

I cleaned up and improved the window find.c code. It now finds windows properly in Whim always. I also tested it in TWM.

I improved the embed_firefox.tcl example a great deal.

I upgraded the version number in all 3 places. We need a better mechanism for doing this I think.

3.6.8 - Mon Apr 10, 2006

I added "root" string handling to TkXext_StringToWindow. Now all of the TkXext commands understand root.

I fixed a minor bug (proactively) that I noticed in init.c.

- Tcl_InitStubs (interp, TCL_VERSION, 0); + if (NULL == Tcl_InitStubs (interp, TCL_VERSION, 0)) + return TCL_ERROR;

and so on. Tcl_InitStubs turns into a Tk_PkgRequire when -USE_TCL_STUBS is not present during a build. Tk is similar in this regard.

I fixed a tickmakefile bug that resulted in TkXext.so always building. The solution was to use concat rather than list.

I fixed the pkgIndex.tcl version for the more pedantic 8.5a4 package mechanism.

I updated the package revision in the build.conf and build.conf8.5 examples.


TkXext is X-based; it's available only for Unix.

(more accurately, it's available as source, and good luck figuring out how to compile it under windows to work with Exceed [L1 ] or Reflection X [L2 ]... (do they even provide SDKs?) But if you do work it out, by all means let George know about it.)

George Peter Staplin: I didn't hear from you about any problems. I'd be glad to help you, so please let me know what problems you ran into with Exceed or Reflections/X. BTW I'll add a configure option for X11 header and library directories, because I would imagine you have problems related to that. When I originally wrote the configure script I didn't plan on supporting many systems.

(problems? no, I was just commenting that it was theoretically possible, and saying 'good luck' to whoever tries it... while I do have access to both of the above-named products, they are not part of my development enviroment. My comment about letting you know is because I'm sure you'd like to hear about it if someone does do that, and so that you can add any necessary stuff to your makefile to support that configuration. I note with some amusement that after I added my comment yesterday, I revised it slightly to correct a product name and add URL for Reflection X, and your adding of your response managed to zap my revision.)

escargo: What about Cygwin? I'm running the Blackbox Window Manager [L3 ] using Cygwin/XFree86 [L4 ] on Cygwin [L5 ].

George Peter Staplin: It probably would work under Cygwin's XFree86. I like Cygwin and their XFree86 port (used it for a while in NT 4), but for whatever reason the installer has a tendency to segfault in Windows XP Home. If it's fixed I may see what's needed (if anything) to make it work.

escargo: I am using Cygwin on Windows XP Professional. (I use the Blackbox Window Manager there; it makes people stare at my laptop, since it is obviously not Windows.) The only problems I had with setup were finding a reliable location on the internet to download from.

Here is a copy of the source and a binary shared library compiled on Slackware Linux 7.2 using Tcl/Tk 8.4a1. [L6 ] It compiled cleanly and worked great for me. I used it to embed the BRX web browser window into a frame inside a page in an Iwidget tabbed notebook.


JMN 2006-07-20 This built ok on FreeBSD-6.1-RELEASE, but I had to run 'brandelf -t Linux TkXext.so'. It also seemed a little big.. ~900KB.. so I ran 'strip --strip-unneeded' on it too and it shrank down to 15K.. I assume that won't cause any problems?

It seems to work just fine so far anyway - so thanks for the nice work! I'm using it to reparent qemu virtual machines. Unfortunately qemu doesn't seem to have an option to change it's window title. It's always just "QEMU". Is there any way to iterate over window titles to find window ids?

I also can't work out how to 'unparent' an application.. can that be done with TkXext at the moment?


See also: Record and replay system for Tcl/Tk


[ Category Package | Category GUI ]