undroidwishAndroWish sans the borg,a project just for pun. |
Experimental. This is a single-file Tcl/Tk binary for Windows (32 bit, optional 64 bit) and Linux using parts of the AndroWish source tree, in particular the ZIP virtual file system and the SDL/AGG/freetype based X11 emulation for rendering. So far it is a proof of concept which eventually can be extended to run on another fruity smartphone platform. It is built by executing platform dependent shell scripts which are available for Windows, Linux, and other platforms. Ready-made binaries for 32 and 64 bit Windows and Intel Linux are listed on the Downloads page. It is possible to build undroidwish on Debian platforms with ARM processors like the Raspberry Pi or the Beaglebone.
Warning! undroidwish.exe is a Windows 32 bit binary which like other nicely playing portable apps does not write to the registry or otherwise modifies the system. But running it on your Windows PC is at your own risk. It is believed to be a CAREFUL (Click And Run Executable For Unplanned Leisure) thing. Although in the first place it might look like Tk in an X11 server, it provides all the benefits of the underlying AGG/SDL2/freetype based X11 emulation, i.e. anti-aliased rendering of lines, circles, and fonts. It even allows to smoothly zoom the Tk root window by using the mouse wheel combined with the control key.
Wayland. Another build script is provided which allows building undroidwish with the SDL2 Wayland video driver. This is partially tested on the GNOME based Fedora 26-29 Workstation, Debian 9 "Stretch", and CentOS 7.5. As of 2018-02-16 this variant is built with the KMSDRM SDL2 video driver enabled, which allows to run from a console without requiring any display manager infrastructure, provided that the Linux system has decent graphics hardware allowing for kernel mode setting and direct render mode.
FreeBSD and OpenBSD. These are very similar to the Linux version (including almost all extensions) but only partially tested on FreeBSD-11 on x86 processors and OpenBSD-6.2 on amd64 processors.
OpenIndiana Hipster (based on illumos, based on SunOS 5.11). As for FreeBSD with many extensions but only partially tested in a 32 bit enviroment.
MacOS. Alpha versions are available since 2017-09-01, but are only partially tested on MacOS 10.11 (El Capitan) and 10.13 (High Sierra).
Haiku. Partial support for the Haiku operating system is now available thanks to SDL2's video driver architecture. This is still highly experimental.
There are Tk ports one of them is undroidwish which runs on Haiku
Termux. Termux is an Android terminal emulator and Linux environment app that works directly with no rooting or setup required. It even has a decent X11 server. Thus, most infrastructure is available to run Tcl and undroidwish on decent smartphones or tablets.
Raspberry Pi. A Raspberry specific video driver called RPI is available in SDL2 which provides a similar feature set as the KMSDRM driver, i.e. allows to run undroidwish in frame buffer mode. When built for/on the Raspberry this driver is turned on by default, provided a recent Debian 9 (Raspbian) is used as build environment.
jsmpeg Video Driver. This is a special video driver which is described further in jsmpeg SDL Video Driver. It allows to direct the undroidwish display to a page in a modern web browswer, e.g. Firefox, Safari, or Chrome. The feature is available starting with the "Eppur si muove (2019-06-22)" release in most Linux, Windows, and MacOSX variants of undroidwish.
All undroidwish variants have many of the advanced Tcl/Tk extensions from Batteries Included built in: tkpath, tktreectrl, tkimg, and Canvas3D (which requires the display driver to support OpenGL 2.x or better). Tcl-only extensions (without machine specific libraries) like tcllib, tksqlite, and bwidgets are included, too.
Some SDL specific command line options described in Beyond AndroWish can be used to control the size of the Tk root window or its resizability. Other SDL specific things can be controlled at runtime using the sdltk command.
In order to start built in scripts directly (which were baked into the ZIP file system), the script to be executed must be specified on the command line with its path within the embedded ZIP file system. Here are some examples.
The widget demo
undroidwish.exe builtin:sdl2tk8.6/demos/widget
TkSQLite, a graphical frontend to SQLite databases
undroidwish.exe builtin:tksqlite0.5.13/tksqlite.tcl
The PostScript tiger, a tkpath demo
undroidwish.exe builtin:tkpath0.3.3/demos/tiger.tcl
Canvas3D demo, multiple threads
undroidwish.exe builtin:Canvas3d1.2.4/demo/threads.tcl
Canvas3D demo of VR rendering
undroidwish.exe builtin:Canvas3d1.2.4/demo/vr_chick.tcl
Some shortcuts are provided as shown in the table below.
Script URL | Description |
builtin:widget | The widget demo |
builtin:tksqlite | Graphical frontend to SQLite databases |
builtin:imgdemo | Supported image formats |
builtin:tkpdemo | TkPath demo |
builtin:3ddemo | Canvas3D demo |
builtin:tkcon | Tk console |
builtin:treectrl | Tree control widget demo |
builtin:tktable | Table widget demo |
builtin:bugz | See Tk_Bugz in Tcl'ers Wiki, playable with a game pad |
builtin:tkchat | TkChat instant messaging application |
builtin:zint | Demo for ZINT barcode generator |
builtin:sdx | SDX utility |
builtin:dungfork | Read-only /etc browser demo using tcl-augeas |
builtin:vncviewer | Simple VNC viewer using tkvnc |
builtin:notebook | Will Duquette's Notebook App |
builtin:tkmc | Simple clone of Midnight Commander from Tcl'ers wiki |
builtin:zinc-widget | Tkzinc demo |
builtin:tkinspect | Tool to inspect other running Tk applications |
builtin:stardom | Small XML browser/editor |
builtin:helpviewer | tkhtml based help file viewer |
builtin:mpksc | mpexpr based calculator |
builtin:tixtour | Demo of tix widgets |
builtin:tixwidgets | Another demo of tix widgets |
builtin:TDK/checker | vanillawish only: Tcl Dev Kit checker |
builtin:TDK/compiler | vanillawish only: Tcl Dev Kit compiler |
builtin:TDK/debugger | vanillawish only: Tcl Dev Kit debugger |
builtin:TDK/inspector | vanillawish only: Tcl Dev Kit inspector |
builtin:TDK/tape | vanillawish only: Tcl Dev Kit tape |
builtin:TDK/tclapp | vanillawish only: Tcl Dev Kit tclapp |
builtin:TDK/tclsvc | vanillawish only: Tcl Dev Kit tclsvc |
builtin:TDK/vfse | vanillawish only: Tcl Dev Kit vfse |
builtin:tclline | vanillawish only: pure Tcl readline |
builtin:ased | vanillawish only (linux/windows): ASED Tcl/Tk IDE |
builtin:vtcl | vanillawish only (linux/windows): Visual Tcl |
builtin:cwsh | vanillatclsh only: Curses like Tk wish |
builtin:mktclsh | vanillawish only (windows): extract a vanillatclsh |
builtin:critcl | vanillawish (linux): stripped down version of critcl |
builtin:ckua | vanillatclsh only: text mode OPC/UA server/browser |
builtin:tdbcsh | vanillatclsh only: text mode TDBC frontend |
builtin:LUCK | vanillawish: LUCK build system |
builtin:lucktui | vanillatclsh only: text mode LUCK build system/frontend |
builtin:tcled | vanillatclsh only: text mode editor |
builtin:TSB | vanillawish: Taygete Scrap Book, see Tcl'ers wiki |
builtin:fuse | Export the ZIP content of the binary per FUSE mount |
builtin:nagelfar | vanillawish only: static syntax checker |
builtin:dtplite | vanillatclsh only: document processor |