XwinTox is an experimental Tox client, developed by Sagem
XwinTox can trace its history to a jovial comment made in 2014 by IRIXuser about creating a Tox client called Toxaemia using the Motif graphical toolkit. This was never realised, of course.
Later, Tox developers began discussing the necessity of a 'synchronisation' model for maintaining (at a minimum) one's contact list across several installations of Tox. IRIXuser prepared a whitepaper detailing one possible solution: a server which would act as a proxy to Tox, so to speak, multiple clients accessing it at separate times or even in parallel while the server facilitated their sharing of a single contacts list and connection model.
A year later, in 2015, Sagem began work to realise the design which the whitepaper had put forward. Development began on the 9th of June with the laying of groundwork for the unique process mode, where libToxCore communicaton was in a process other than that which hosted the GUI, and where SunRPC served as the method of the intercommunication between the two processes.
Just one week on from the project's inception, it became possible to send and receive messages and to send friend requests. On the 20th of June, XwinTox DR1 was released; a day later, DR2 was released, which added groupchat support.
The limitations of the seperated-process model also became clear as several releases of XwinTox quickly appeared; after identifying the faults in the model, XwinTox Frameworks 2 was designed, which introduced a radically modular model for the seperation of core, GUI, and Tox core communication. Implementation of XwinTox Frameworks 2 began on the 6th of July.
XwinTox primarily differentiates itself from other clients through these features:
- Modular design, seperating the Module Manager, libToxCore communication, and GUI.
- Extensive plugin interface, allowing any level of flexibility desired, with the ability to trade this for security.
- First-class library for developing XwinTox features safely in Forth.
- Clean C++ interface for C++ plugin development, as well as for export to languages which can bind against it, like Lua.
- Simple C API for exporting the XwinTox plugin interface to other languages.
- Generic, minimal, yet comprehensive design, with an emphasis on correctness, security, and idiomatic behaviour.
- POSIX platforms as first-class citizens, with support for other platforms on a best-effort basis.
- Clean and usable GUI written with the lightweight FLTK toolkit.
These unique features aside, it offers support for standard Tox operations - chat, file-transfer, avatars, group-chats, and so on.
XwinTox stable builds are published on its its releases page.
Stable builds include a script titled `run.sh` for running XwinTox.
Unstable builds, available on Jenkins, are run with ../cmrun.sh from within the `bld` folder.