Tcl (Tool Command Language) is a very powerful but easy to learn dynamic programming language, suitable for a very wide range of uses, including web and desktop applications, networking, administration, testing and many more. Open source and business-friendly, Tcl is a mature yet evolving language that is truly cross platform, easily deployed and highly extensible.
Tk is a graphical user interface toolkit that takes developing desktop applications to a higher level than conventional approaches. Tk is the standard GUI not only for Tcl, but for many other dynamic languages, and can produce rich, native applications that run unchanged across Windows, Mac OS X, Linux and more.
AndroWish allows to run desktop Tcl and Tk programs almost unaltered on the Android Platform while it opens the door to script a rich feature set of a mobile platform. Its sibling undroidwish uses the same code base and offers a similar feature set on various desktop and embedded platforms.
Tcl/Tk 8.6 manual,
ble, borg, dmtx, modbus, muzic, rfcomm, sdltk, snap7, tclcan, topcua, usbserial, uvc, wmf, v4l2, zbar, zipfs,
list of extensions, list of releases, environment, undroidwish, undroidwish command line switches
PDF booklet for eBook readers, excerpt of this wiki
|Development||AndroWish SDK, building#1, building#2, building#3, examples|
- Native Tcl/Tk 8.6 port for Android (version 2.3.3 or above) available for ARM and x86 processors.
- Top goal: execute existing Tcl/Tk scripts on Android without modification.
- Based on Tim Baker's earlier SDLTk project.
- X11 emulation based on AGG (Anti-Grain-Geometry) and SDL 2.0.
- Provides anti-aliased rendering of lines, circles, arcs.
- Font rendering using freetype font engine. Starting with the "Back to the Future (2015-10-21)" release, Unicode 8.0 is fully supported and Emojis can be displayed (and input with the on-screen keyboard on newer Android devices).
- Includes the 3D canvas widget which uses an OpenGL to OpenGLES 1.1 emulation for drawing on the Android platform.
- Includes the tkpath widget, an enhanced canvas with SVG like capabilities, anti-aliased rendering, alpha channel, and TrueType outline fonts.
- Mounts its constituting APK (Android package) using a built-in ZIP virtual file system as a memory mapped file.
- "Batteries Included" packaging like TclKits, i.e. many ready-to-use Tcl extensions are already bundled.
- Some Android specific facilities are exposed through SDL and usable with the sdltk command.
- Tcl commands are available to use even more Android specific facilities: borg command, ble command, rfcomm command, usbserial command.
- Some Android specific things are exposed through Environment Variables.
- A MIDI sound package is built in and described in Muzic MIDI sound package.
- An experimental rendering mode allows to use it with VR headsets like Google's cardboard.
- Many example scripts are built into the AndroWish package.
- Building AndroWish requires the Android SDK and Android NDK. A detailed description by Harald Oehlmann is available in Build custom Androwish.
- A new approach of bundling Tcl scripts with the AndroWish infrastructure is described in AndroWish SDK.
- Testing and debugging Tcl scripts on an Android device can be carried out from a development system using tkconclient. Files can be transferred using a SSH/SFTP connection as described in tkconclient. More tips can be found in Test and debug strategies on AndroWish.
- There are certain Limitations of AndroWish.
- Support for generating bar codes using ZINT and decoding bar codes using the ZBar bar code reader, and data matrix codes using the libdmtx library. See description of zbar command and dmtx command.
- Beneath and Beyond AndroWish are components in the source tree which can be recompiled for other platforms like the Raspberry Pi and even Windows.
- Slides (PDF) from EuroTcl2014.
- Slides (PDF) from Tcl2014.
- Slides (PDF) from EuroTcl2015.
- Slides (PDF) from EuroTcl2016.
- Slides (PDF) from EuroTcl2018.
- Slides (PDF) from EuroTcl2019.
The current AndroWish-debug.apk can be downloaded here (about 36 MByte, requires "install from unknown sources" in Android settings). Prehistoric versions are still available here.